Esta función es una ampliación de la posibilidad proporcionada por la función de implementación cpiWriteBuffer() existente que proporciona la codificación y el juego de caracteres codificado en que se debe representar el mensaje de salida cuando el analizador serializa el árbol de elementos en una corriente de bits de salida. Si la serialización no es necesaria, por ejemplo cuando la salida se basa en una corriente de bits de entrada y no se ha modificado el árbol, el intermediario no invocará esta función de implementación. Si esta función de implementación se proporciona en la estructura CPI_VFT, no se puede especificar cpiWriteBuffer() ni cpiWriteBufferFormatted(), porque la función cpiDefineParserClass() fallará con un códigos de retorno de CCI_INVALID_IMPL_FUNCTION.
Definida en | Tipo | Miembro |
CPI_VFT | Condicional | iFpWriteBufferEncoded |
int cpiWriteBufferEncoded( CciParser* parser, CciContext* context, int encoding, int ccsid);
Tamaño en bytes de los datos añadidos a la corriente de bits del almacenamiento intermedio.
Este ejemplo se ha tomado del archivo de analizador de ejemplo BipSampPluginParser.c (líneas 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 *)"Algunos datos de prueba", 14); return cpiBufferSize(0, parser) - initialSize; }