![]() |
Unit
Biblioteca utilitária para facilitar o tratamento de unidades
|
Classe responsável por identificar e agrupar tipos de unidades. More...
#include <unit.h>
Classes | |
struct | UnitWrapper |
Estrutura auxiliar para uso interno por Unit. More... | |
Public Member Functions | |
Unit () | |
Construtor default. | |
Unit (QString unitName, bool normalize=false) | |
Constroi um Unit a partir do nome do tipo de dado. More... | |
~Unit () | |
Destrutor. | |
bool | isKnown () const |
Retorna true se a unidade é conhecida e pode ser convertida para outras unidades de mesma grandeza. | |
bool | isUnknown () const |
Retorna true se a unidade é desconhecida e não pode ser convertida. | |
int | category () const |
Retorna o identificador da categoria ao qual a unidade pertence, ou 0 se a unidade não pertencer a nenhuma categoria. More... | |
QString | name () const |
Retorna o nome utilizado para construir a unidade. | |
QString | siConv () const |
Retorna uma string padronizada com o fator de conversão e a unidade SI equivalente a esta unidade, ou o valor de name() se a unidade for desconhecida. More... | |
QString | siBase () const |
Retorna a grandeza SI associada a esta unidade. | |
bool | operator== (const Unit &o) const |
Operador de igualdade. | |
bool | operator!= (const Unit &o) const |
Operador de desigualdade. | |
bool | equal (const Unit &o) const |
Retorna true se a unidades forem iguais. | |
UnitConverter | getConverter (const Unit &destUnit) const |
Retorna um conversor para tranformar valores da unidade atual para a unidade recebida como parâmetro. More... | |
bool | canConvertTo (const Unit &destUnit) const |
Retorna true se a unidade atual for conversível para a unidade recebida como parâmetro. | |
double | convertTo (double val, const Unit &destUnit, bool *ok=NULL) const |
Converte o valor recebido da unidade atual para a unidade de destino. More... | |
void | print () const |
Função auxiliar que imprime o conteúdo de uma unidade. Auxilio a debug e logging. | |
Static Public Member Functions | |
static UnitConverter * | converter (const Unit &srcUnit, const Unit &dstUnit, bool *compatible=NULL) |
Função auxiliar usada para criar um conversor entre srcUnit e dstUnit. More... | |
Private Types | |
typedef QSharedPointer< UnitWrapper > | SharedUnitWrapper |
Tipo auxiliar para uso interno. SharedPointer para um UnitWrapper. | |
Private Member Functions | |
Unit (SharedUnitWrapper udunit, int category, QString name, QString siconv) | |
Construtor privado utilizado por UnitManager para criar unidades. More... | |
ut_unit * | udunit () const |
Retorna a representação da unidade para a biblioteca UDUNITS. More... | |
void | setCategory (int cat) |
Altera a categoria da unidade. Usada por UnitManager. | |
Static Private Member Functions | |
static QString | extractSiBase (QString unit) |
Extrai a unidade base de uma unidade formatada pela lib UDUNITS, removendo multiplicadores e offsets. Retorna "" se não conseguiu extrair. | |
Private Attributes | |
SharedUnitWrapper | _udunit |
Representação da unidade "carregada". Shared pointer permite a cópia de unidades. | |
int | _unitCategory |
Categoria (grupo) da unidade. | |
QString | _unitName |
Nome com o qual a unidade foi construída. | |
QString | _siConv |
Conversão da unidade para o SI. | |
Friends | |
class | UnitConverter |
class | UnitManager |
Classe responsável por identificar e agrupar tipos de unidades.
Unidades são construídas a partir da expressão que representa esta unidade (ex: kg.m/s2, g/cc, darcy, ...). Quando um objeto é construído, utiliza a biblioteca UDUNITS para verificar se a unidade é conhecida.
Se a unidade for conhecida, esta terá uma conversão para unidades SI padronizada e poderá ser usada em conversões. Caso contrário, não poderá ser usada em conversões.
O nome original usado para construir a unidade é retornado por name().
Cada tipo de unidade pode estar associado a uma categoria. A categoria de uma unidade pode ser extraida através da função category(). Categorias podem ser utilizadas para obter, junto ao UnitManager, uma lista de unidades padrão para as quais a unidade atual pode ser convertida.
A função getConverter() retorna um objeto que pode ser utilizado para converter valores para outra unidade.
A função canConvertTo() indica se a unidade atual é conversível para uma outra unidade passada como parâmetro. Utilize a função convertTo() para converter um valor da unidade atual para outra. Se for efetuar a conversão múltiplas vezes, o uso de getConverter() será mais eficiente.
Unit::Unit | ( | QString | name, |
bool | normalize = false |
||
) |
Constroi um Unit a partir do nome do tipo de dado.
Se o nome recebido não corresponder a nenhuma das opções existentes cria uma unidade que não pode ser convertida. Utilize as funções isKnown() ou isUnknown() para descobrir se a unidade passada a este construtor foi reconhecida ou não.
name | Nome da unidade desejada |
normalize | Se true (default), indica que se a unidade for igual a alguma das unidades cadastradas para a categoria, o nome recebido deve ser transformado no nome "normalizado" (padrão) desta unidade. Ex: m*s = s*m = m.s Se "m.s" for uma unidade cadastrada para a categoria de velocidade, transforma "m*s" em "m.s" |
|
private |
Construtor privado utilizado por UnitManager para criar unidades.
Apenas seta todos os atributos internos da unidade
|
inline |
Retorna o identificador da categoria ao qual a unidade pertence, ou 0 se a unidade não pertencer a nenhuma categoria.
Categorias podem ser utilizadas para obter, junto ao UnitManager, uma lista de unidades padrão para as quais a unidade atual pode ser convertida
|
static |
Função auxiliar usada para criar um conversor entre srcUnit e dstUnit.
Se ambas as unidades recebidas forem válidas, conhecidas, diferentes e conversíveis entre si, retorna um novo conversor alocado pela função e que deve ser deletado pelo chamador da função. Caso contrário retorna NULL.
Se ambas as unidades existirem mas não forem conversíveis entre si, além de retornar NULL, seta compatible (se esta for diferente de NULL) para false. Caso contrário, compatible será setado para true, o que significa que esta função considera que unidades vazias são compatíveis com qualquer outra unidade. Além disso, unidades desconhecidas são compatíveis apenas com elas próprias.
Repare que compatible == true e conversor retornado == NULL indica que não é necessário conversor para transformar um valor de srcUnit em dstUnit.
double Unit::convertTo | ( | double | val, |
const Unit & | destUnit, | ||
bool * | ok = NULL |
||
) | const |
Converte o valor recebido da unidade atual para a unidade de destino.
val | Valor a ser convertido |
destUnit | Unidade para a qual o valor deve ser convertido |
ok | Se diferente de NULL, recebe booleano indicando se a conversão foi efetuada com sucesso ou não |
UnitConverter Unit::getConverter | ( | const Unit & | destUnit | ) | const |
Retorna um conversor para tranformar valores da unidade atual para a unidade recebida como parâmetro.
Se as unidades forem incompatíveis ou não existirem parâmetros de conversão cadastrados entre as unidades, retorna um conversor inválido. Utilize a função UnitConverter::isValid() para verificar.
|
inline |
Retorna uma string padronizada com o fator de conversão e a unidade SI equivalente a esta unidade, ou o valor de name() se a unidade for desconhecida.
Se duas unidades possuem o mesmo valor de siConv, então estas unidades são iguais, mesmo que seus nomes sejam diferentes (ex: m.s <--> s.m <--> m*s)
|
inlineprivate |
Retorna a representação da unidade para a biblioteca UDUNITS.
Chamadas a esta função devem estar protegidas por isKnown(). Assume que _udunit está preenchido. Valor retornado não deve ser deletado ou armazenado em outro objeto