| 82 | } |
| 83 | |
| 84 | bool OriginAnyParser::parse() |
| 85 | { |
| 86 | #ifdef GENERATE_CODE_FOR_LOG |
| 87 | // append progress in log file |
| 88 | logfile = fopen("opjfile.log", "a"); |
| 89 | #endif // GENERATE_CODE_FOR_LOG |
| 90 | |
| 91 | // get length of file: |
| 92 | file.seekg(0, ios_base::end); |
| 93 | d_file_size = file.tellg(); |
| 94 | file.seekg(0, ios_base::beg); |
| 95 | |
| 96 | LOG_PRINT(logfile, "File size: %" PRId64 "\n", d_file_size) |
| 97 | |
| 98 | // get file and program version, check it is a valid file |
| 99 | readFileVersion(); |
| 100 | if (parseError > 1) |
| 101 | return false; |
| 102 | curpos = file.tellg(); |
| 103 | LOG_PRINT(logfile, "Now at %" PRId64 " [0x%" PRIx64 "]\n", curpos, curpos) |
| 104 | |
| 105 | // get global header |
| 106 | readGlobalHeader(); |
| 107 | if (parseError > 1) |
| 108 | return false; |
| 109 | curpos = file.tellg(); |
| 110 | LOG_PRINT(logfile, "Now at %" PRId64 " [0x%" PRIx64 "]\n", curpos, curpos) |
| 111 | |
| 112 | // get dataset list |
| 113 | unsigned int dataset_list_size = 0; |
| 114 | objectIndex = 0; // use it to count DataSets |
| 115 | |
| 116 | LOG_PRINT(logfile, "Reading Data sets ...\n") |
| 117 | while (true) { |
| 118 | if (!readDataSetElement()) |
| 119 | break; |
| 120 | dataset_list_size++; |
| 121 | } |
| 122 | if (parseError > 1) |
| 123 | return false; |
| 124 | LOG_PRINT(logfile, " ... done. Data sets: %u\n", dataset_list_size) |
| 125 | curpos = file.tellg(); |
| 126 | LOG_PRINT(logfile, "Now at %" PRId64 " [0x%" PRIx64 "], file size %" PRId64 "\n", curpos, |
| 127 | curpos, d_file_size) |
| 128 | |
| 129 | for (unsigned int i = 0; i < spreadSheets.size(); ++i) { |
| 130 | if (spreadSheets[i].sheets > 1) { |
| 131 | LOG_PRINT(logfile, " CONVERT SPREADSHEET \"%s\" to EXCEL\n", |
| 132 | spreadSheets[i].name.c_str()); |
| 133 | convertSpreadToExcel(i); |
| 134 | --i; |
| 135 | } |
| 136 | } |
| 137 | |
| 138 | // get window list |
| 139 | unsigned int window_list_size = 0; |
| 140 | objectIndex = 0; // reset it to count Windows (except Notes) |
| 141 | |