1 /* 2 * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. 3 * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved. 4 * Redistribution and modifications are permitted subject to BSD license. 5 */ 6 #ifndef _XER_SUPPORT_H_ 7 #define _XER_SUPPORT_H_ 8 9 #include "asn1/asn1c/asn_system.h" /* Platform-specific types */ 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 /* 16 * Types of data transferred to the application. 17 */ 18 typedef enum { 19 PXML_TEXT, /* Plain text between XML tags. */ 20 PXML_TAG, /* A tag, starting with '<'. */ 21 PXML_COMMENT, /* An XML comment, including "<!--" and "-->". */ 22 /* 23 * The following chunk types are reported if the chunk 24 * terminates the specified XML element. 25 */ 26 PXML_TAG_END, /* Tag ended */ 27 PXML_COMMENT_END /* Comment ended */ 28 } pxml_chunk_type_e; 29 30 /* 31 * Callback function that is called by the parser when parsed data is 32 * available. The _opaque is the pointer to a field containing opaque user 33 * data specified in pxml_create() call. The chunk type is _type and the text 34 * data is the piece of buffer identified by _bufid (as supplied to 35 * pxml_feed() call) starting at offset _offset and of _size bytes size. 36 * The chunk is NOT '\0'-terminated. 37 */ 38 typedef int (pxml_callback_f)(pxml_chunk_type_e _type, 39 const void *_chunk_data, size_t _chunk_size, void *_key); 40 41 /* 42 * Parse the given buffer as it were a chunk of XML data. 43 * Invoke the specified callback each time the meaninful data is found. 44 * This function returns number of bytes consumed from the bufer. 45 * It will always be lesser than or equal to the specified _size. 46 * The next invocation of this function must account the difference. 47 */ 48 ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, 49 pxml_callback_f *cb, void *_key); 50 51 #ifdef __cplusplus 52 } 53 #endif 54 55 #endif /* _XER_SUPPORT_H_ */ 56