Essa função é uma extensão da capacidade fornecida pela função de implementação cpiWriteBuffer() existente que fornece a codificação e o conjunto de caracteres codificado no qual a mensagem de saída deve ser representada quando o analisador serializar sua árvore de elementos para um fluxo de bits de saída. Se a serialização não for necessária, por exemplo, quando a saída baseada tiver como base um fluxo de bits de entrada e a árvore não tiver sido modificada, essa função de implementação não será chamada pelo intermediário. Se essa função de implementação for fornecida na estrutura CPI_VFT, nem cpiWriteBuffer() nem cpiWriteBufferFormatted() podem ser especificados, porque a função cpiDefineParserClass() falhará com um código de retorno de CCI_INVALID_IMPL_FUNCTION.
Definido em | Type | Membro |
CPI_VFT | Condicional | iFpWriteBufferEncoded |
int cpiWriteBufferEncoded( CciParser* parser, CciContext* context, int encoding, int ccsid);
O tamanho em bytes dos dados anexados ao fluxo de bits no buffer.
Este exemplo foi tirado do arquivo do analisador de amostra BipSampPluginParser.c (linhas 612 a 642):
int cpiWriteBufferEncoded( CciParser* parser, CciContext* context, int encoding, int ccsid ){ PARSER_CONTEXT_ST* pc = (PARSER_CONTEXT_ST *)context ; int initialSize = 0; int rc = 0; const void* a; CciByte b; initialSize = cpiBufferSize(&rc, parser); a = cpiBufferPointer(&rc, parser); b = cpiBufferByte(&rc, parser, 0); cpiAppendToBuffer(&rc, parser, (char *)"Some test data", 14); return cpiBufferSize(0, parser) - initialSize; }