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 el árbol no se ha modificado, el intermediario no llama a esta función de implementación. Si esta función de implementación se proporciona en la estructura CPI_VFT, no puede especificar cpiWriteBuffer() ni cpiWriteBufferFormatted(); si lo hace, la función cpiDefineParserClass() falla con un código de retorno 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:
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;
}