Changeset 9215


Ignore:
Timestamp:
2005-02-28T16:00:11+13:00 (19 years ago)
Author:
kjdon
Message:

changed from using global vars to passing in the user data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/src/colservr/expat_document.cpp

    r9188 r9215  
    1818
    1919struct resultpack {
    20   text_t text;
    21   text_t current_section;
     20  text_t *current_text;
     21  text_t section_num;
     22  text_t section_level;
     23  bool store_text;
    2224};
    23 
    24 text_t current_text;
    25 text_t section_num;
    26 text_t section_level;
    27 
    28 bool store_text = false;
    2925
    3026
     
    3228startElement(void *userData, const char *name, const char **attributes)
    3329{
     30  resultpack * rpack_ptr = (resultpack*)userData;
    3431  text_t element_name = (char*)name;
    35   if (element_name == section_level) {
     32  if (element_name == rpack_ptr->section_level) {
    3633    text_t id_att = (char *)get_attribute(attributes,"gs2:id");
    37     if (id_att == section_num) {
    38       store_text = true;
     34    if (id_att == rpack_ptr->section_num) {
     35      rpack_ptr->store_text = true;
    3936    }
    4037   
     
    4542endElement(void *userData, const char *name)
    4643{
     44  resultpack * rpack_ptr = (resultpack*)userData;
    4745  text_t element_name = (char*)name;
    48   if (element_name == section_level) {
    49     if (store_text == true) {
     46  if (element_name == rpack_ptr->section_level) {
     47    if (rpack_ptr->store_text == true) {
    5048      // we have finished now, can we quit this??
    51       store_text = false;
     49      rpack_ptr->store_text = false;
    5250    }
    5351  }
     
    5755static void XMLCALL
    5856characterData(void *userData, const char * text, int len) {
    59   if  (store_text) {
    60     current_text.appendcarr(text, len);
     57  resultpack * rpack_ptr = (resultpack*)userData;
     58  if  (rpack_ptr->store_text) {
     59    rpack_ptr->current_text->appendcarr(text, len);
    6160  }
    6261}
    6362int expat_document(const text_t &filename, const text_t &sec_level, const text_t &sec_num, text_t & doc_content){
    6463
     64  text_t current_text;
    6565  current_text.clear();
    66   text_t current_section;
    67   resultpack rpack = { doc_content, current_section };
    68  
    69   section_num = sec_num;
    70   section_level = sec_level;
     66  text_t section_num = sec_num;
     67  text_t section_level = sec_level;
     68 
     69
     70  resultpack rpack = { &current_text, section_num, section_level, false};
     71  //cerr << "sec num = "<<sec_num<<", sec level="<<sec_level<<", filename="<<filename<<endl;
    7172  text_t doc_text;
    7273  read_file(filename, doc_text);
Note: See TracChangeset for help on using the changeset viewer.