xlsxio_read_sharedstrings.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef INCLUDED_XLSXIO_READ_SHAREDSTRINGS_H
  2. #define INCLUDED_XLSXIO_READ_SHAREDSTRINGS_H
  3. #include <stdint.h>
  4. #include <expat.h>
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. struct sharedstringlist {
  9. XML_Char** strings;
  10. size_t numstrings;
  11. };
  12. struct sharedstringlist* sharedstringlist_create ();
  13. void sharedstringlist_destroy (struct sharedstringlist* sharedstrings);
  14. size_t sharedstringlist_size (struct sharedstringlist* sharedstrings);
  15. int sharedstringlist_add_buffer (struct sharedstringlist* sharedstrings, const XML_Char* data, size_t datalen);
  16. int sharedstringlist_add_string (struct sharedstringlist* sharedstrings, const XML_Char* data);
  17. const XML_Char* sharedstringlist_get (struct sharedstringlist* sharedstrings, size_t index);
  18. ////////////////////////////////////////////////////////////////////////
  19. struct shared_strings_callback_data {
  20. XML_Parser xmlparser;
  21. struct sharedstringlist* sharedstrings;
  22. int insst;
  23. int insi;
  24. int intext;
  25. XML_Char* text;
  26. size_t textlen;
  27. XML_Char* skiptag; //tag to skip
  28. size_t skiptagcount; //nesting level for current tag to skip
  29. XML_StartElementHandler skip_start; //start handler to set after skipping
  30. XML_EndElementHandler skip_end; //end handler to set after skipping
  31. XML_CharacterDataHandler skip_data; //data handler to set after skipping
  32. };
  33. void shared_strings_callback_data_initialize (struct shared_strings_callback_data* data, struct sharedstringlist* sharedstrings);
  34. void shared_strings_callback_data_cleanup (struct shared_strings_callback_data* data);
  35. void shared_strings_callback_skip_tag_start (void* callbackdata, const XML_Char* name, const XML_Char** atts);
  36. void shared_strings_callback_skip_tag_end (void* callbackdata, const XML_Char* name);
  37. void shared_strings_callback_find_sharedstringtable_start (void* callbackdata, const XML_Char* name, const XML_Char** atts);
  38. void shared_strings_callback_find_sharedstringtable_end (void* callbackdata, const XML_Char* name);
  39. void shared_strings_callback_find_shared_stringitem_start (void* callbackdata, const XML_Char* name, const XML_Char** atts);
  40. void shared_strings_callback_find_shared_stringitem_end (void* callbackdata, const XML_Char* name);
  41. void shared_strings_callback_find_shared_string_start (void* callbackdata, const XML_Char* name, const XML_Char** atts);
  42. void shared_strings_callback_find_shared_string_end (void* callbackdata, const XML_Char* name);
  43. void shared_strings_callback_string_data (void* callbackdata, const XML_Char* buf, int buflen);
  44. #ifdef __cplusplus
  45. }
  46. #endif
  47. #endif