cpiCreateAndInitializeElement

Finalidade

Cria um elemento de sintaxe, de propriedade do analisador especificado, que não é conectado a uma árvore de sintaxe. O elemento é parcialmente inicializado com os valores dos parâmetros type, name, firstChildComplete e lastChildComplete.

Sintaxe

CciElement* cpiCreateAndInitializeElement(
int*            returnCode,
CciParser*      parser,
CciElementType  type,
const CciChar*  name,
CciBool         firstChildComplete,
CciBool         lastChildComplete);

Parâmetros

returnCode
Recebe o código de retorno da função (saída).Os possíveis códigos de retorno são:
  • CCI_SUCCESS
  • CCI_EXCEPTION
  • CCI_FAILURE
  • CCI_INV_PARSER_OBJECT
parser
Especifica o endereço do objeto do analisador (entrada). Esse endereço é transmitido ao analisador como um parâmetro da função de implementação cpiCreateContext.
type
Especifica o tipo do elemento que está sendo criado (entrada).
name
Especifica um nome descritivo para o elemento (entrada).
firstChildComplete
Especifica um valor para o sinalizador firstChildComplete do elemento de sintaxe (entrada).
lastChildComplete
Especifica um valor para o sinalizador lastChildComplete do elemento de sintaxe (entrada).

Valores de Retorno

Se for bem-sucedido, o endereço do novo objeto de elemento é retornado. Caso contrário, um valor de zero (CCI_NULL_ADDR) é retornado e returnCode indica a razão do erro.

Amostra

/* Avançar até o final do valor */
while (pc->iCurrentCharacter != quoteChar) {
advance( (PARSER_CONTEXT_ST *)context, parser );
}
/* Obter um ponteiro para o final da marcação */
endMarker = (char*)pc->iBuffer+(int)pc->iIndex;
/* Calcular o tamanho da tag */
markedSize = (size_t)endMarker-(int)startMarker;
/* Converter o valor do atributo para o formato do intermediário */
data = CciNString((char *)startMarker, markedSize, pc->iCcsid);
/* Criar um novo elemento nome-valor para o atributo */
newElement = cpiCreateAndInitializeElement(&rc, parser, type, name);
cpiSetElementType(&rc, newElement, CCI_ELEMENT_TYPE_NAME_VALUE);
cpiSetElementName(&rc, newElement, data);
if (pc->trace) {
const char * mbData = mbString(data, pc->iCcsid);
fprintf(pc->tracefile, "PLUGIN: Created new NAMEVALUE element;
object=0x%x type=0x%x name=",
newElement, CCI_ELEMENT_TYPE_NAME_VALUE);
fprintf(pc->tracefile, "%s\n", mbData);
fflush(pc->tracefile);
free((void *)mbData);
}
/* Liberar a memória criada em CciNString() */
free((void *)data);
Conceitos relacionados
Analisadores Definidos pelo Usuário
Extensões Definidas pelo Usuário
Tarefas relacionadas
Criando um Analisador em C
Referências relacionadas
cpiCreateElement
Funções de Utilitários do Analisador C
Notices | Trademarks | Downloads | Library | Support | Feedback
Copyright IBM Corporation 1999, 2006 Last updated: 5월 25, 2006
as08390_