17 #include "EXIParser.h"
18 #include "stringManipulate.h"
23 #define INPUT_BUFFER_SIZE 200
24 #define MAX_PREFIXES 10
48 static void destroyElement(
struct element* el);
51 static char lookupPrefix(
struct appData* aData,
String ns,
unsigned char* prxHit,
unsigned char* prefixIndex);
56 static errorCode sample_fatalError(
const errorCode code,
const char* msg,
void* app_data);
57 static errorCode sample_startDocument(
void* app_data);
58 static errorCode sample_endDocument(
void* app_data);
60 static errorCode sample_endElement(
void* app_data);
66 static errorCode sample_booleanData(
boolean bool_val,
void* app_data);
68 static errorCode sample_binaryData(
const char* binary_val,
Index nbytes,
void* app_data);
69 static errorCode sample_qnameData(
const QName qname,
void* app_data);
98 if(outOfBandOpts && opts !=
NULL)
146 static errorCode sample_fatalError(
const errorCode code,
const char* msg,
void* app_data)
148 printf(
"\n%d : FATAL ERROR: %s\n", code, msg);
152 static errorCode sample_startDocument(
void* app_data)
158 printf(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
163 static errorCode sample_endDocument(
void* app_data)
188 unsigned char prefixIndex = 0;
189 unsigned char prxHit = 1;
194 error = lookupPrefix(appD, *qname.
uri, &prxHit, &prefixIndex);
198 sprintf(appD->
nameBuf,
"p%d:", prefixIndex);
215 sprintf(appD->
nameBuf,
" xmlns:p%d=\"", prefixIndex);
227 static errorCode sample_endElement(
void* app_data)
239 el = pop(&(appD->
stack));
240 printf(
"</%s>\n", el->
name);
314 return sample_floatData(value, app_data);
325 sprintf(tmp_buf,
"%lld", (
long long int) int_val);
326 printf(
"%s", tmp_buf);
333 sprintf(tmp_buf,
"%lld", (
long long int) int_val);
334 printf(
"%s", tmp_buf);
342 sprintf(tmp_buf,
"%lld", (
long long int) int_val);
343 printf(
"%s", tmp_buf);
352 sprintf(tmp_buf,
"%lld", (
long long int) int_val);
353 printf(
"%s", tmp_buf);
360 static errorCode sample_booleanData(
boolean bool_val,
void* app_data)
418 sprintf(tmp_buf,
"%lldE%d", (
long long int) fl_val.mantissa, fl_val.exponent);
419 printf(
"%s", tmp_buf);
426 sprintf(tmp_buf,
"%lldE%d", (
long long int) fl_val.mantissa, fl_val.exponent);
427 printf(
"%s", tmp_buf);
435 sprintf(tmp_buf,
"%lldE%d", (
long long int) fl_val.mantissa, fl_val.exponent);
436 printf(
"%s", tmp_buf);
445 sprintf(tmp_buf,
"%lldE%d", (
long long int) fl_val.mantissa, fl_val.exponent);
446 printf(
"%s", tmp_buf);
470 tmpfValue = tmpfValue / 10;
472 for(i = 0; i < dt_val.
fSecs.
offset + 1 - digitNum; i++)
475 sprintf(fsecBuf + 1 + i,
"%d", dt_val.
fSecs.
value);
488 sprintf(tzBuf + 1,
"%02d", dt_val.
TimeZone/64);
490 sprintf(tzBuf + 4,
"%02d", dt_val.
TimeZone%64);
502 printf(
"%04d-%02d-%02dT%02d:%02d:%02d%s%s", dt_val.
dateTime.tm_year + 1900,
505 dt_val.
dateTime.tm_sec, fsecBuf, tzBuf);
512 printf(
"%04d-%02d-%02dT%02d:%02d:%02d%s%s", dt_val.
dateTime.tm_year + 1900,
515 dt_val.
dateTime.tm_sec, fsecBuf, tzBuf);
523 printf(
"%04d-%02d-%02dT%02d:%02d:%02d%s%s", dt_val.
dateTime.tm_year + 1900,
526 dt_val.
dateTime.tm_sec, fsecBuf, tzBuf);
535 printf(
"%04d-%02d-%02dT%02d:%02d:%02d%s%s", dt_val.
dateTime.tm_year + 1900,
538 dt_val.
dateTime.tm_sec, fsecBuf, tzBuf);
545 static errorCode sample_binaryData(
const char* binary_val,
Index nbytes,
void* app_data)
553 printf(
"[binary: %d bytes]", (
int) nbytes);
560 printf(
"[binary: %d bytes]", (
int) nbytes);
568 printf(
"[binary: %d bytes]", (
int) nbytes);
577 printf(
"[binary: %d bytes]", (
int) nbytes);
584 static errorCode sample_qnameData(
const QName qname,
void* app_data)
651 *stack = (*stack)->
next;
659 el = malloc(
sizeof(
struct element));
663 el->
name = malloc(strlen(name)+1);
666 strcpy(el->
name, name);
670 static void destroyElement(
struct element* el)
677 static char lookupPrefix(
struct appData* aData,
String ns,
unsigned char* prxHit,
unsigned char* prefixIndex)