A type holding a formatting hint. The interpretation of precision depends on fmt: For integral types (i.e. Fmt::kDec, Fmt::kOct, Fmt::kHex, Fmt::kBin), precision is interpreted as the minimum number of digits to output, similar to e.g. std::printf("%.7d"). For the floating-point specifiers Fmt::kDecFloat, Fmt::kEngFloat and Fmt::kHexFloat, precision denotes the exact number of digits to be shown after the decimal point; for Fmt::kAutoFloat, precision denotes the number of significant digits to be shown according to the rules of the std::printf "%g" specifier. If fmt is Fmt::kDefault, the precision field is ignored, and an implementation-defined formatting is applied. For integral types, if precision is 0, it is interpreted the same as if it was 1. For convenience, there are helper functions to create specific instances of this struct. The helper functions should be used instead of creating instances manually.
Serve como dica de formatação para controlar o formato de representação e a precisão na saída de valores de log.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: ae5714d3cea4ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve como dica de formatação para controlar o formato de representação e a precisão na saída de valores de log.
A estrutura ara::log::Format serve como dica de formatação no sistema de logging e agrupa o especificador de formato fmt ([SWS_LOG_00225]) com a especificação de precisão precision ([SWS_LOG_00226]). As instâncias devem preferencialmente ser criadas por meio das funções auxiliares disponibilizadas, sendo que a avaliação de precision distingue, dependendo do tipo de formato, entre o número mínimo de dígitos para números inteiros e casas decimais para números de ponto flutuante. Para tipos inteiros, uma precisão igual a zero é tratada como um, enquanto o campo sob Fmt::kDefault é totalmente ignorado.
Contexto
A estrutura de dados ara::log::Format serve no framework de logging da AUTOSAR Adaptive Platform como dica de formatação para a saída de valores formatados. Para isso, ela agrupa duas propriedades centrais: a especificação de formato fmt do tipo de enumeração Fmt ([SWS_LOG_00225]) bem como a precisão correspondente precision como std::uint16_t ([SWS_LOG_00226]). Os parceiros de interação são os componentes de saída e fluxos de formatação do módulo de logging, além da lógica de aplicação que gera mensagens de log com saída de texto formatada. Interpretação: As funções auxiliares mencionadas na especificação para instanciação devem residir diretamente no módulo ara::log, a fim de fornecer formatações padronizadas. Pergunta Q-1c465e69c99359fa (aberta)
Ciclo de vida
Como estrutura de dados final (struct Format final), ara::log::Format não possui máquina de estados interna nem transições de fase complexas. Embora os atributos estejam declarados como variáveis públicas ([SWS_LOG_00225], [SWS_LOG_00226]), a especificação exige expressamente não criar instâncias manualmente, utilizando, em vez disso, as funções auxiliares disponibilizadas. Os exemplares são tipicamente objetos de valor de vida curta, transmitidos por cópia ou referência a streams de log. Interpretação: Como a estrutura não apresenta sincronização interna, cópias e acessos de leitura concorrentes entre limites de threads devem ser thread-safe, enquanto acessos modificadores precisam ser sincronizados externamente. Pergunta Q-bd0f1147e9472c19 (aberta)
Caminho de utilização
O uso típico abrange a definição do especificador de formato fmt ([SWS_LOG_00225]) e a indicação da precisão desejada precision ([SWS_LOG_00226]). A avaliação de precision orienta-se pelo tipo selecionado em fmt:
Tipos inteiros: Para Fmt::kDec, Fmt::kOct, Fmt::kHex e Fmt::kBin, precision designa o número mínimo de dígitos a serem exibidos, de forma análoga à formatação via std::printf("%.7d").
Tipos de ponto flutuante com representação em ponto fixo e exponencial: Em Fmt::kDecFloat, Fmt::kEngFloat e Fmt::kHexFloat, precision define o número exato de casas decimais.
Representação automática de ponto flutuante: Sob Fmt::kAutoFloat, precision define o número de dígitos significativos de acordo com as regras do especificador de formato %g em std::printf.
Formatação padrão: Se fmt contiver o valor Fmt::kDefault, a indicação em precision é ignorada e uma formatação dependente da implementação é aplicada.
Diagrama de atividades: Lógica de ramificação para avaliação de precision em função de fmt. Fontes: [SWS_LOG_00225], [SWS_LOG_00226]
Cenários de erro
A estrutura não define códigos de erro ou exceções; em vez disso, casos limítrofes são tratados de maneira tolerante a falhas e determinística. Em identificadores de formato inteiros (Fmt::kDec, Fmt::kOct, Fmt::kHex, Fmt::kBin), um valor de precision = 0 ([SWS_LOG_00226]) é avaliado de forma semanticamente idêntica a um valor de 1, a fim de evitar saídas vazias. Caso fmt seja definido como Fmt::kDefault ([SWS_LOG_00225]), um valor configurado em precision não resulta em um estado de erro, sendo silenciosamente descartado.
Este guia baseia-se nas diretrizes da especificação para o módulo de logging da AUTOSAR Adaptive Platform R25-11.
Diagrama de classes UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão