Importando de C: Recursos Suportados

Esta seção descreve os padrões que o importador C utiliza ao mapear tipos de dados C para tipos de dados MRM.

A tabela a seguir mostra como as definições em C influenciam as definições do esquema XML no modelo de mensagem. Observe que alguns tipos xsd têm '-' depois do tipo. Isso indica que é um tipo simples anônimo baseado nesse tipo. Para cadeias, a finalidade do tipo anônimo é incluir uma restrição de comprimento; para tipos numéricos, a finalidade é incluir uma restrição de valor mínima e/ou máxima.

Os seguintes tipos de dados estão fora do escopo do importador C:

Tipo de Dados em C Tipo Lógico Notas
Char xsd:string - length=1
Char[10] xsd:string- length=10
Char[10][3] xsd:string - length=3
Char[10][3][6] xsd:string - length=6
Unsigned Char xsd:unsignedByte  
Unsigned Char[2] xsd:unsignedByte  
Signed Char xsd:byte  
Signed Char[2] xsd:byte  
Int xsd:int  
Int[2] xsd:int  
Int[2][3] xsd:int  
Unsigned Int xsd:unsignedInt  
Short xsd:short  
Unsigned Short xsd:unsignedShort  
Long xsd:int  
Long Long Int xsd:long  
Float xsd:float  
Double xsd:double  
Long Double (consulte a nota 1) xsd:double  
<qualquer tipo de ponteiro> xsd:hexBinary- length=(consulte a nota 2)
<qualquer enum>   (consulte a nota 3)

A tabela a seguir mostra como as definições em C influenciam as características físicas de CWF dos elementos gerados no modelo da mensagem.

Tipo de Dados em C Tipo Físico de CWF Características de Comprimento de CWF Outras Características de CWF
Char Fixed Length Contagem de Comprimento = 1

Unidades de Comprimento = Bytes

 
Char[10] Fixed Length Contagem de Comprimento = 10

Unidades de Comprimento = Bytes

Alinhamento à esquerda
Char[10][3] Fixed Length Contagem de Comprimento = 3

Contagem de Repetição = 10

Unidades de Comprimento = bytes

Alinhamento à esquerda
Char[10][3][6] Fixed Length Contagem de Comprimento = 6

Contagem de Repetição = 30

Unidades de Comprimento = bytes

Alinhamento à esquerda
Unsigned Char Inteiro Length Count = 1 Signed = no
Unsigned Char[2] Inteiro Contagem de Comprimento = 1

Repeat Count = 2

Signed = no
Signed Char Inteiro Length Count = 1 Signed = yes
Signed Char[2] Inteiro Contagem de Comprimento = 1

Repeat Count = 2

Signed = yes
Int Inteiro Length Count = 4 Signed = yes
Int[2] Inteiro Length Count = 4

Repeat Count = 2

Signed = yes
Int[2][3] Inteiro Length Count = 4

Contagem de Repetição = 6

Signed = yes
Unsigned Int Inteiro Length Count = 4 Signed = no
Short Inteiro Contagem de Comprimento =2 Signed = yes
Unsigned Short Inteiro Contagem de Comprimento =2 Signed = no
Long Inteiro Contagem de Comprimento = 4 (consulte a nota 4) Signed = yes
Long Long Int Inteiro Length Count = 8 Signed = yes
Float Float Length Count = 4  
Double Float Length Count = 8  
Long Double (consulte a nota 1) Float Length Count = 8  
<qualquer tipo de ponteiro>   (consulte a nota 2)  
<qualquer enum> Inteiro (consulte a nota 3)  
Notes:
  1. Não defina o valor da opção do importador C size of long double como 128 bits.Ele não será importado com êxito. Utilize o padrão de 64 bits.
  2. A contagem de comprimento é afetada pela opção do importador C de Tamanho de Endereço da seguinte forma:
    • Para 32 bits, contagem do comprimento de CWF = 4 bytes.
    • Para 64 bits, contagem do comprimento de CWF = 8 bytes.
  3. O tipo e comprimento de um enum é afetado pela opção do importador C Tamanho de Enum, da seguinte forma:
    • Para 1: Tipo lógico = xsd:byte, Tipo físico de CWF = Inteiro, contagem do comprimento de CWF = 1 byte.
    • Para 2: Tipo lógico = xsd:short, Tipo físico de CWF = Inteiro, contagem do comprimento de CWF = 2 bytes.
    • Para 4: Tipo lógico = xsd:int, tipo físico de CWF = Inteiro, contagem do comprimento de CWF = 4 bytes.
    • Para Compact: É escolhida a menor representação na qual a enumeração se encaixa.
  4. O comprimento de um long é afetado pela opção do importador C do Tamanho do Endereço da seguinte forma:
    • Para 32 bits: contagem do comprimento de CWF = 4 bytes.
    • Para 64 bits: contagem do comprimento de CWF = 8 bytes.
  5. Os nomes de elementos conflitantes com as palavras-chave da linguagem Java são modificados prefixando-os com um único caractere de sublinhado.
  6. A palavra-chave _Packed não é suportada. Apenas declarações C ANSI são suportadas.
  7. O tipo de dados C long long não é suportado.
  8. As extensões orientadas a objetos C++ não são suportadas. Apenas declarações C ANSI são suportadas.
  9. Os ponteiros serão importados como xsd:integer com contagem de comprimento CWF definida como 4.
  10. As estruturas C recursivas não são suportadas. Se a estrutura aninhada contiver uma estrutura com um nome que é o mesmo que a estrutura pai, a importação é realizada mas as definições lógicas não estão corretas. Para evitar esse problema, assegure que o nome da estrutura aninhada não seja o mesmo que aquele da estrutura externa ou pai.

Conceitos relacionados
Modelagem de Mensagens
O Modelo de Mensagem

Tarefas relacionadas
Desenvolvendo Modelos de Mensagens
Trabalhando com um Arquivo de Definição de Mensagem
Trabalhando com Objetos de Modelo de Mensagem

Referências relacionadas
Informações de Referência do Modelo de Mensagens
Propriedades do Objeto de Modelo de Mensagem