cpiParseBufferEncoded

Finalidad

Esta función es una extensión de la posibilidad proporcionada por la función de implementación cpiParseBuffer() existente, que ofrece la codificación y el juego de caracteres codificado en los que se representa el mensaje de entrada. Si esta función de implementación se proporciona en la estructura CPI_VFT, no podrá especificarse ni cpiParseBuffer() ni cpiParseBufferFormatted(), porque la función cpiDefineParserClass() fallará con un código de retorno de CCI_INVALID_IMPL_FUNCTION.

Definida en Tipo Miembro
CPI_VFT Condicional iFpParseBufferEncoded

Sintaxis

int cpiParseBufferEncoded(
  CciParser*   parser,
  CciContext*  context,
  int          encoding,
  int          ccsid); 

Parámetros

parser
Dirección del objeto de analizador (entrada).
context
Dirección del contexto de plug-in (entrada).
encoding
Codificación del almacenamiento intermedio de mensajes (entrada).
ccsid
CCSID del almacenamiento intermedio de mensajes (entrada).

Valores de retorno

El tamaño (en bytes) de la parte restante del almacenamiento intermedio de mensajes de la que se apropia el analizador.

Ejemplo

Este ejemplo se ha tomado del archivo de analizador de ejemplo BipSampPluginParser.c (de la línea 428 a la 466):

int cpiParseBufferEncoded(
  CciParser*  parser,
  CciContext* context,
  int         encoding,
  int         ccsid
){
  PARSER_CONTEXT_ST* pc = (PARSER_CONTEXT_ST *)context ;
  int                rc;

  /* Obtener un puntero al almacenamiento intermedio de mensajes y    */
  /* establecer el desplazamiento                                     */
  pc->iBuffer = (void *)cpiBufferPointer(&rc, parser);
  pc->iIndex = 0;

  /* Guardar el formato del almacenamiento intermedio                 */
  pc->iEncoding = encoding;
  pc->iCcsid = ccsid;

  /* Guardar el tamaño del almacenamiento intermedio                  */
  pc->iSize = cpiBufferSize(&rc, parser);

  /* Preparar el primer byte de la corriente de datos                 */
  pc->iCurrentCharacter = cpiBufferByte(&rc, parser, pc->iIndex);

  /* Establecer el elemento actual en el elemento raíz                */
  pc->iCurrentElement = cpiRootElement(&rc, parser);

  /* Restablecer distintivo para garantizar que el análisis esté      */
  /* restablecido correctamente                                       */
  pc->iInTag = 0;

  if (pc->trace) {
    fprintf(pc->tracefile, "PLUGIN: <- cpiParseBufferEncoded() 
    retvalue=%d\n", pc->iSize);
    fflush(pc->tracefile);
  }

Conceptos relacionados
Analizadores definidos por el usuario
Extensiones definidas por el usuario

Tareas relacionadas
Creación de un analizador en C

Referencia relacionada
cpiParseBuffer
cpiParseBufferFormatted
Funciones de implementación de analizador