Changeset 1127 for XIOS/dev/branch_yushan/src/parse_expr/yacc_parser.yacc
- Timestamp:
- 05/05/17 16:51:58 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan/src/parse_expr/yacc_parser.yacc
r1037 r1127 15 15 } 16 16 17 IFilterExprNode* parsed; 18 std::string globalInputText; 19 size_t globalReadOffset = 0; 20 17 static IFilterExprNode* parsed; 18 static std::string globalInputText; 19 static std::string *globalInputText_ptr = 0; 20 static size_t globalReadOffset = 0; 21 #pragma omp threadprivate(parsed, globalInputText_ptr, globalReadOffset) 22 21 23 int readInputForLexer(char* buffer, size_t* numBytesRead, size_t maxBytesToRead) 22 24 { 25 if(globalInputText_ptr == 0) globalInputText_ptr = new std::string; 23 26 size_t numBytesToRead = maxBytesToRead; 24 size_t bytesRemaining = globalInputText.length()-globalReadOffset; 27 //size_t bytesRemaining = globalInputText.length()-globalReadOffset; 28 size_t bytesRemaining = (*globalInputText_ptr).length()-globalReadOffset; 25 29 size_t i; 26 30 if (numBytesToRead > bytesRemaining) numBytesToRead = bytesRemaining; 27 for (i = 0; i < numBytesToRead; i++) buffer[i] = globalInputText.c_str()[globalReadOffset + i]; 31 //for (i = 0; i < numBytesToRead; i++) buffer[i] = globalInputText.c_str()[globalReadOffset + i]; 32 for (i = 0; i < numBytesToRead; i++) buffer[i] = (*globalInputText_ptr).c_str()[globalReadOffset + i]; 28 33 *numBytesRead = numBytesToRead; 29 34 globalReadOffset += numBytesToRead; … … 131 136 IFilterExprNode* parseExpr(const string& strExpr) 132 137 { 133 globalInputText = strExpr; 134 globalReadOffset = 0; 135 yyparse(); 138 #pragma omp critical (_parser) 139 { 140 //globalInputText = strExpr; 141 if(globalInputText_ptr == 0) globalInputText_ptr = new std::string; 142 (*globalInputText_ptr).assign (strExpr); 143 globalReadOffset = 0; 144 yyparse(); 145 } 136 146 return parsed; 137 147 }
Note: See TracChangeset
for help on using the changeset viewer.