Class representing Function Group defined in meta-model (ARXML). An instance of this class will represent Function Group defined inside meta-model (ARXML). This class is intended to be an implementation specific representation, of information inside meta-model. Once created based on ARXML path, its internal value stays bounded to it for entire lifetime of a object.
Representa um grupo funcional definido no metamodelo AUTOSAR para identificação tipada em tempo de execução.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: de9017db52cfProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Representa um grupo funcional definido no metamodelo AUTOSAR para identificação tipada em tempo de execução.
A classe serve como representação em tempo de execução específica da implementação de um grupo de funções definido no metamodelo AUTOSAR. A sua instanciação ocorre exclusivamente por meio de um especificador de instância da porta de grupo de funções [SWS_EM_02586], a cujo caminho o objeto permanece rigidamente vinculado durante toda a sua vida útil. Para evitar problemas na alocação de recursos, a classe não é copiável, mas suporta semântica de movimento segura contra exceções [SWS_EM_02328]. Por meio de operadores de comparação, é possível determinar se duas instâncias mapeiam o mesmo elemento do metamodelo.
Contexto
A classe ara::exec::FunctionGroup atua no módulo da Adaptive Platform exec (Execution Management) como representação de um grupo de funções definido no metamodelo AUTOSAR (ARXML). Uma instância desta classe fornece uma abstração específica da implementação das informações armazenadas no metamodelo. De acordo com a especificação, o valor interno de um objeto permanece rigidamente vinculado a este elemento do metamodelo durante toda a sua vida útil, após a sua criação com base no caminho ARXML.
O componente de software aplicador (State Client), o especificador de instância (ara::core::InstanceSpecifier) e o metamodelo subjacente surgem como parceiros de interação essenciais. A associação com a configuração do sistema ocorre especificamente por meio de um InstanceSpecifier, que referencia o RPortPrototype de um StateClientInterface[SWS_EM_02586]. Assim, a classe permite que processos e instâncias de controle referenciem grupos de funções de forma tipada e verifiquem a identidade, sem precisar lidar diretamente com caminhos ou descrições de modelo não estruturados.
Diagrama de contexto: Integração da classe ara::exec::FunctionGroup entre especificação de porta e metamodelo. Fontes: [SWS_EM_02586].
Ciclo de vida
A criação e o gerenciamento de objetos ara::exec::FunctionGroup seguem regras rígidas quanto ao gerenciamento de recursos e à integridade de memória. Um construtor padrão sem parâmetros foi explicitamente excluído (= delete) [SWS_EM_02321]. Em vez disso, uma instância é obrigatoriamente instanciada por meio do construtor regular, passando uma referência constante para um ara::core::InstanceSpecifier[SWS_EM_02586]. Este construtor é declarado como seguro contra exceções (noexcept) e seguro para threads (thread-safe).
Em relação à posse e ao processo de cópia, a classe é projetada como um tipo de dados apenas de movimentação (move-only). Tanto o construtor de cópia [SWS_EM_02322] quanto o operador de atribuição por cópia [SWS_EM_02327] foram excluídos para excluir, desde o início, potenciais conflitos e problemas em tempo de execução na atribuição de recursos internos durante operações de cópia. O repasse ou a reorganização de instâncias só é possível por meio de operações de movimentação: o construtor de movimento [SWS_EM_02328] e o operador de atribuição por movimento [SWS_EM_02329] permitem a transferência eficiente de posse para um objeto novo ou existente. Interpretação: em uma operação de movimentação, o objeto de destino deve assumir perfeitamente a vinculação ao elemento do metamodelo, enquanto a instância de origem é colocada em um estado válido, mas não especificado. Pergunta Q-99b40860db69ffe6 (aberta)
A destruição ocorre de forma determinística por meio do destrutor [SWS_EM_02266], que também é definido como seguro contra exceções (noexcept). Enquanto a construção por meio de um InstanceSpecifier[SWS_EM_02586] é thread-safe, as operações de movimento [SWS_EM_02328], [SWS_EM_02329], bem como o destrutor [SWS_EM_02266], são especificados como não seguros para threads (not thread-safe). Se múltiplos fluxos de execução acessarem a mesma instância simultaneamente, será necessária uma sincronização no nível da aplicação.
Caminho de utilização
O uso regular de ara::exec::FunctionGroup inclui tipicamente a seguinte sequência de etapas de trabalho:
Fornecimento do identificador de porta: a aplicação identifica a porta de interface de estado desejada com base no seu caminho no modelo, sob a forma de um ara::core::InstanceSpecifier.
Instanciação: por meio do construtor parametrizado, a instância de FunctionGroup é criada e rigidamente vinculada ao elemento do metamodelo da porta de destino [SWS_EM_02586].
Verificação de identidade e comparação: no âmbito de consultas de estado ou validações, duas instâncias podem ser comparadas por meio dos operadores relacionais operator==[SWS_EM_02267] ou operator!=[SWS_EM_02268]. Uma comparação retorna true (no operador de igualdade) precisamente se ambas as instâncias representarem exatamente o mesmo elemento no metamodelo ARXML. Ambos os operadores são thread-safe e seguros contra exceções.
Deslocamento ou limpeza: caso o objeto deva ser transferido para estruturas de contêiner ou repassado entre módulos, isso ocorre via semântica de movimento [SWS_EM_02328], [SWS_EM_02329]. Se o objeto sair do seu escopo, o destrutor [SWS_EM_02266] libera todas as vinculações associadas.
Cenários de erro
No domínio dos cenários de falha, a interface destaca-se por um design rígido e de prevenção de erros:
Operações de cópia não permitidas: tentativas de duplicar instâncias por meio do construtor de cópia [SWS_EM_02322] ou do operador de atribuição por cópia [SWS_EM_02327] levam imediatamente a um erro de compilação (compile-time error).
Identificador de instância ausente: uma inicialização incompleta sem referência ao metamodelo é impedida, pois o construtor sem parâmetros foi excluído [SWS_EM_02321].
Segurança contra exceções (exception safety): todos os métodos declarados da classe — nomeadamente a construção por meio de um especificador de instância [SWS_EM_02586], operações de movimentação [SWS_EM_02328], [SWS_EM_02329], operadores de comparação [SWS_EM_02267], [SWS_EM_02268] e destrutor [SWS_EM_02266] — são declarados como noexcept e não lançam exceções C++.
Concorrência inválida: como as operações de movimento e o destrutor não são thread-safe, acessos paralelos não coordenados levam a comportamento indefinido (condições de corrida), o que deve ser evitado no nível do chamador por meio de mecanismos de sincronização.
Este guia foi curado por um assistente de IA com base na especificação AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão