+ case STATE_PRE_INIT:
+ r->sheet_index = -1;
+ if (0 == xmlStrcasecmp (name, _xml("gnm:SheetNameIndex")) &&
+ XML_READER_TYPE_ELEMENT == r->node_type)
+ {
+ r->state = STATE_SHEET_COUNT;
+ r->spreadsheet.sheets = 0;
+ }
+ break;
+
+ case STATE_SHEET_COUNT:
+ if (0 == xmlStrcasecmp (name, _xml("gnm:SheetName")) &&
+ XML_READER_TYPE_ELEMENT == r->node_type)
+ {
+ struct sheet_detail *sd ;
+ r->spreadsheet.sheets++;
+ r->sheets = xrealloc (r->sheets, r->spreadsheet.sheets * sizeof *r->sheets);
+ sd = &r->sheets[r->spreadsheet.sheets - 1];
+ sd->start_col = sd->stop_col = sd->start_row = sd->stop_row = -1;
+ sd->offset = -1;
+ }
+ else if (0 == xmlStrcasecmp (name, _xml("gnm:SheetNameIndex")) &&
+ XML_READER_TYPE_END_ELEMENT == r->node_type)
+ {
+ r->state = STATE_INIT;
+ }
+ else if (XML_READER_TYPE_TEXT == r->node_type)
+ {
+ r->sheets [r->spreadsheet.sheets - 1].name = xmlTextReaderValue (r->xtr);
+ }
+ break;
+