| 44 |  | #include <iostream> | 
| 45 |  | #include <set> | 
| 46 |  | #include <fstream> | 
| 47 | + | #include <sstream> | 
| 48 |  | #include "utils/StringTokenizer.hpp" | 
| 49 |  | #include "utils/Trim.hpp" | 
| 50 | + | #include "utils/OOPSEException.hpp" | 
| 51 | + | #include "utils/simError.h" | 
| 52 | + |  | 
| 53 | + |  | 
| 54 |  | /** | 
| 55 |  | * @class SimplePreprocessor | 
| 56 |  | * @brief A simple preprocessor. | 
| 57 | < | * @note only support #include #ifdef, #ifndef, #endif, #define and #undef, c-like multiple line | 
| 58 | < | *  comment is not support, macro substitude is not support. | 
| 57 | > | * @note only supports #include #ifdef, #ifndef, #endif, #define and #undef, c-like multiple line | 
| 58 | > | *  comment is not supported, macro substitute is not supported. | 
| 59 |  | */ | 
| 60 |  | namespace oopse { | 
| 61 |  | class SimplePreprocessor { | 
| 71 |  | private: | 
| 72 |  | bool doPreprocess(const std::string& filename, ostream& os, std::set<std::string>& defineSet, std::stack<bool>& ifStates) { | 
| 73 |  | std::ifstream input(filename.c_str()); | 
| 74 | < |  | 
| 74 | > | if (!input.is_open()) { | 
| 75 | > | std::stringstream ss; | 
| 76 | > | ss << "Can not open " << filename << " for preprocessing\n"; | 
| 77 | > |  | 
| 78 | > | sprintf(painCave.errMsg, | 
| 79 | > | "Can not open (%s) for processing. \n" | 
| 80 | > | "\tPlease check md file name syntax.\n", filename.c_str()); | 
| 81 | > |  | 
| 82 | > | painCave.isFatal = 1; | 
| 83 | > | simError(); | 
| 84 | > |  | 
| 85 | > | throw OOPSEException(ss.str()); | 
| 86 | > | } | 
| 87 |  | int lineNo =1; | 
| 88 |  | os << "#line " << lineNo << " \"" << filename << "\"\n"; | 
| 89 |  | while(input.getline(buffer, bufferSize)) { | 
| 135 |  | } | 
| 136 |  | os << std::endl; | 
| 137 |  | } else { | 
| 138 | < | std::cout << tokens[0] << " is not support" << std::endl; | 
| 138 | > | std::cout << tokens[0] << " is not supported (yet)." << std::endl; | 
| 139 |  | return false; | 
| 140 |  | } | 
| 141 |  | }else { |