Unit
Biblioteca utilitária para facilitar o tratamento de unidades
unitManager.h
Go to the documentation of this file.
1 /************************************************************************
2 **
3 ** Copyright (C) 2012 K2FS Sistemas e Projetos Ltd.
4 ** All rights reserved.
5 **
6 ** This file is part of the "Pdm version 2" library and should not
7 ** be included in other softwares without written permission of K2
8 ** Sistemas. It is provided AS IS, with NO WARRANTY OF ANY KIND,
9 ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
10 ** A PARTICULAR PURPOSE.
11 **
12 ** Contact information: www.k2sistemas.com.br
13 **
14 ************************************************************************/
15 
26 #ifndef _UNIT_MANAGER_H_
27 #define _UNIT_MANAGER_H_
28 
29 #include <QStringList>
30 #include <QMap>
31 #include <QPair>
32 #include <QMutex>
33 #include <udunits2.h>
34 
35 #include "unitConfig.h"
36 #include "unitConverter.h"
37 
39 class UNIT_API_EXPORT UnitManager
40 {
41 public:
42  ~UnitManager();
43 
44  static UnitManager* instance();
45 
46  bool init(QString configPath, QString unitsDatabase, QString unitsConfigScript,
47  bool checkUnitDatabase, QString& err);
48 
49  const Unit& getUnit(QString name, bool normalize);
50  const UnitConverter& getConverter(const Unit& srcUnit, const Unit& destUnit);
51 
52  int numCategories() const;
53  QString categoryName (int category) const;
54  QStringList categorySymbols(int category) const;
55 
56 private:
57  UnitManager();
58 
59  bool initUnitDatabase(QString configPath, QString unitsDatabase, QString& err);
60  bool initCategories (QString configPath, QString unitsConfigScript, QString& err);
61  bool initCategorySiMapping(bool checkDatabase, QString& err);
62 
63  void printCategoryList() const;
64  void printCategoryMapping() const;
65 
66  ut_system* _unitSystem;
68 
71 
72 #ifdef UNIT_USE_THREADS
73  QMutex _unitSystemMutex;
75 #endif
76 
81 
84 };
85 
86 
87 #endif
QList< QPair< QString, QStringList > > _categoryData
Lista armazenando para cada categoria uma tupla contendo seu nome e uma lista de unidades padrão asso...
Definition: unitManager.h:80
Classe singleton responsável por gerenciar os tipos de unidades e categorias disponíveis.
Definition: unitManager.h:39
QMap< QString, int > _categorySiTypes
Mapa associando unidades Si básicas com as categorias cadastradas.
Definition: unitManager.h:83
Declaration of usefull configuration definitions.
Classe responsável por identificar e agrupar tipos de unidades.
Definition: unit.h:41
QMap< QString, Unit > _unitCache
Cache de unidades já processadas.
Definition: unitManager.h:67
Classe responsável pela conversão de unidades entre valores numéricos.
Definition: unitConverter.h:32
Definicao da classe UnitConverter.
ut_system * _unitSystem
Sistema de unidades utilizado.
Definition: unitManager.h:66
QMap< QPair< QString, QString >, UnitConverter > _convCache
Cache de conversores de unidade.
Definition: unitManager.h:70