Changeset 1686 for XIOS/dev/dev_olga/src/parse_expr
- Timestamp:
- 07/31/19 13:51:01 (5 years ago)
- Location:
- XIOS/dev/dev_olga/src/parse_expr
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/parse_expr/filter_expr_node.cpp
r1577 r1686 12 12 13 13 14 std::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField ) const14 std::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 15 15 { 16 16 std::shared_ptr<COutputPin> outputPin; … … 40 40 << "Use the keyword \"this\" if you want to reference the input data sent to this field."); 41 41 42 field->buildFilterGraph(gc, false); 42 // field->buildFilterGraph(gc, false); 43 field->buildFilterGraph(gc, false, start_graph, end_graph); 43 44 outputPin = field->getInstantDataFilter(); 44 45 } … … 55 56 56 57 57 std::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField ) const58 std::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 58 59 { 59 60 std::shared_ptr<COutputPin> outputPin; … … 104 105 } 105 106 106 std::shared_ptr<COutputPin> CFilterUnaryOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 107 { 107 std::shared_ptr<COutputPin> CFilterUnaryOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 108 { 109 std::shared_ptr<COutputPin> ch = child->reduce(gc, thisField, start_graph, end_graph); 110 108 111 std::shared_ptr<CUnaryArithmeticFilter> filter(new CUnaryArithmeticFilter(gc, opId)); 109 child->reduce(gc, thisField)->connectOutput(filter, 0); 112 ch->connectOutput(filter, 0); 113 114 (filter->parent_filters).resize(1); 115 (filter->parent_filters)[0] = ch; 116 117 filter->tag = ch->tag; 118 filter->start_graph = ch->start_graph; 119 filter->end_graph = ch->end_graph; 120 filter->field = &thisField; 121 122 110 123 return filter; 111 124 } … … 121 134 } 122 135 123 std::shared_ptr<COutputPin> CFilterScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 124 { 136 std::shared_ptr<COutputPin> CFilterScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 137 { 138 std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 125 139 std::shared_ptr<CScalarFieldArithmeticFilter> filter(new CScalarFieldArithmeticFilter(gc, opId, child1->reduce())); 126 child2->reduce(gc, thisField)->connectOutput(filter, 0); 140 ch2->connectOutput(filter, 0); 141 142 (filter->parent_filters).resize(1); 143 (filter->parent_filters)[0] = ch2; 144 145 filter->tag = ch2->tag; 146 filter->start_graph = ch2->start_graph; 147 filter->end_graph = ch2->end_graph; 148 filter->field = &thisField; 149 127 150 return filter; 128 151 } … … 138 161 } 139 162 140 std::shared_ptr<COutputPin> CFilterFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 141 { 163 std::shared_ptr<COutputPin> CFilterFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 164 { 165 std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 166 142 167 std::shared_ptr<CFieldScalarArithmeticFilter> filter(new CFieldScalarArithmeticFilter(gc, opId, child2->reduce())); 143 child1->reduce(gc, thisField)->connectOutput(filter, 0); 168 ch1->connectOutput(filter, 0); 169 170 (filter->parent_filters).resize(1); 171 (filter->parent_filters)[0] = ch1; 172 173 filter->tag = ch1->tag; 174 filter->start_graph = ch1->start_graph; 175 filter->end_graph = ch1->end_graph; 176 filter->field = &thisField; 177 144 178 return filter; 145 179 } … … 155 189 } 156 190 157 std::shared_ptr<COutputPin> CFilterFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 158 { 191 std::shared_ptr<COutputPin> CFilterFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 192 { 193 std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 194 std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 195 159 196 std::shared_ptr<CFieldFieldArithmeticFilter> filter(new CFieldFieldArithmeticFilter(gc, opId)); 160 child1->reduce(gc, thisField)->connectOutput(filter, 0); 161 child2->reduce(gc, thisField)->connectOutput(filter, 1); 197 ch1->connectOutput(filter, 0); 198 ch2->connectOutput(filter, 1); 199 200 (filter->parent_filters).resize(2); 201 (filter->parent_filters)[0] = ch1; 202 (filter->parent_filters)[1] = ch2; 203 204 filter->tag = (ch1->tag || ch2->tag); 205 filter->start_graph = ch1->tag? ch1->start_graph : (ch2->tag? ch2->start_graph: -1); 206 filter->end_graph = ch1->tag? ch1->end_graph : (ch2->tag? ch2->end_graph: -1); 207 208 filter->field = &thisField; 209 210 162 211 return filter; 163 212 } … … 177 226 } 178 227 179 std::shared_ptr<COutputPin> CFilterScalarScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 180 { 228 std::shared_ptr<COutputPin> CFilterScalarScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 229 { 230 std::shared_ptr<COutputPin> ch3 = child3->reduce(gc, thisField, start_graph, end_graph); 231 181 232 std::shared_ptr<CScalarScalarFieldArithmeticFilter> filter(new CScalarScalarFieldArithmeticFilter(gc, opId, child1->reduce(),child2->reduce())); 182 child3->reduce(gc, thisField)->connectOutput(filter, 0); 233 ch3->connectOutput(filter, 0); 234 235 (filter->parent_filters).resize(1); 236 (filter->parent_filters)[0] = ch3; 237 238 filter->tag = ch3->tag; 239 filter->start_graph = ch3->start_graph; 240 filter->end_graph = ch3->end_graph; 241 filter->field = &thisField; 242 183 243 return filter; 184 244 } … … 196 256 } 197 257 198 std::shared_ptr<COutputPin> CFilterScalarFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 199 { 258 std::shared_ptr<COutputPin> CFilterScalarFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 259 { 260 std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 261 200 262 std::shared_ptr<CScalarFieldScalarArithmeticFilter> filter(new CScalarFieldScalarArithmeticFilter(gc, opId, child1->reduce(),child3->reduce())); 201 child2->reduce(gc, thisField)->connectOutput(filter, 0); 263 ch2->connectOutput(filter, 0); 264 265 (filter->parent_filters).resize(1); 266 (filter->parent_filters)[0] = ch2; 267 268 filter->tag = ch2->tag; 269 filter->start_graph = ch2->start_graph; 270 filter->end_graph = ch2->end_graph; 271 filter->field = &thisField; 272 202 273 return filter; 203 274 } … … 215 286 } 216 287 217 std::shared_ptr<COutputPin> CFilterScalarFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 218 { 288 std::shared_ptr<COutputPin> CFilterScalarFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 289 { 290 std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 291 std::shared_ptr<COutputPin> ch3 = child3->reduce(gc, thisField, start_graph, end_graph); 292 219 293 std::shared_ptr<CScalarFieldFieldArithmeticFilter> filter(new CScalarFieldFieldArithmeticFilter(gc, opId, child1->reduce())); 220 child2->reduce(gc, thisField)->connectOutput(filter, 0); 221 child3->reduce(gc, thisField)->connectOutput(filter, 1); 294 ch2->connectOutput(filter, 0); 295 ch3->connectOutput(filter, 1); 296 297 (filter->parent_filters).resize(2); 298 (filter->parent_filters)[0] = ch2; 299 (filter->parent_filters)[1] = ch3; 300 301 filter->tag = (ch3->tag || ch2->tag); 302 filter->start_graph = ch3->tag? ch3->start_graph : (ch2->tag? ch2->start_graph: -1); 303 filter->end_graph = ch3->tag? ch3->end_graph : (ch2->tag? ch2->end_graph: -1); 304 filter->field = &thisField; 305 222 306 return filter; 223 307 } … … 236 320 } 237 321 238 std::shared_ptr<COutputPin> CFilterFieldScalarScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 239 { 322 std::shared_ptr<COutputPin> CFilterFieldScalarScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 323 { 324 std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 325 240 326 std::shared_ptr<CFieldScalarScalarArithmeticFilter> filter(new CFieldScalarScalarArithmeticFilter(gc, opId, child2->reduce(),child3->reduce())); 241 child1->reduce(gc, thisField)->connectOutput(filter, 0); 327 ch1->connectOutput(filter, 0); 328 329 (filter->parent_filters).resize(1); 330 (filter->parent_filters)[0] = ch1; 331 332 filter->tag = ch1->tag; 333 filter->start_graph = ch1->start_graph; 334 filter->end_graph = ch1->end_graph; 335 filter->field = &thisField; 336 242 337 return filter; 243 338 } … … 256 351 } 257 352 258 std::shared_ptr<COutputPin> CFilterFieldScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 259 { 353 std::shared_ptr<COutputPin> CFilterFieldScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 354 { 355 std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 356 std::shared_ptr<COutputPin> ch3 = child3->reduce(gc, thisField, start_graph, end_graph); 357 260 358 std::shared_ptr<CFieldScalarFieldArithmeticFilter> filter(new CFieldScalarFieldArithmeticFilter(gc, opId, child2->reduce())); 261 child1->reduce(gc, thisField)->connectOutput(filter, 0); 262 child3->reduce(gc, thisField)->connectOutput(filter, 1); 359 ch1->connectOutput(filter, 0); 360 ch3->connectOutput(filter, 1); 361 362 (filter->parent_filters).resize(2); 363 (filter->parent_filters)[0] = ch1; 364 (filter->parent_filters)[1] = ch3; 365 366 filter->tag = (ch3->tag || ch1->tag); 367 filter->start_graph = ch3->tag? ch3->start_graph : (ch1->tag? ch1->start_graph: -1); 368 filter->end_graph = ch3->tag? ch3->end_graph : (ch1->tag? ch1->end_graph: -1); 369 filter->field = &thisField; 370 263 371 return filter; 264 372 } … … 277 385 } 278 386 279 std::shared_ptr<COutputPin> CFilterFieldFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 280 { 387 std::shared_ptr<COutputPin> CFilterFieldFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 388 { 389 std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 390 std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 391 281 392 std::shared_ptr<CFieldFieldScalarArithmeticFilter> filter(new CFieldFieldScalarArithmeticFilter(gc, opId, child3->reduce())); 282 child1->reduce(gc, thisField)->connectOutput(filter, 0); 283 child2->reduce(gc, thisField)->connectOutput(filter, 1); 393 ch1->connectOutput(filter, 0); 394 ch2->connectOutput(filter, 1); 395 396 (filter->parent_filters).resize(2); 397 (filter->parent_filters)[0] = ch1; 398 (filter->parent_filters)[1] = ch2; 399 400 filter->tag = (ch2->tag || ch1->tag); 401 filter->start_graph = ch2->tag? ch2->start_graph : (ch1->tag? ch1->start_graph: -1); 402 filter->end_graph = ch2->tag? ch2->end_graph : (ch1->tag? ch1->end_graph: -1); 403 filter->field = &thisField; 284 404 return filter; 285 405 } … … 297 417 } 298 418 299 std::shared_ptr<COutputPin> CFilterFieldFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 300 { 419 std::shared_ptr<COutputPin> CFilterFieldFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 420 { 421 std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 422 std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 423 std::shared_ptr<COutputPin> ch3 = child3->reduce(gc, thisField, start_graph, end_graph); 424 301 425 std::shared_ptr<CFieldFieldFieldArithmeticFilter> filter(new CFieldFieldFieldArithmeticFilter(gc, opId)); 302 child1->reduce(gc, thisField)->connectOutput(filter, 0); 303 child2->reduce(gc, thisField)->connectOutput(filter, 1); 304 child3->reduce(gc, thisField)->connectOutput(filter, 2); 426 std::cout<<"std::shared_ptr<CFieldFieldFieldArithmeticFilter> filter(new CFieldFieldFieldArithmeticFilter(gc, opId))" <<std::endl; 427 ch1->connectOutput(filter, 0); 428 ch2->connectOutput(filter, 1); 429 ch3->connectOutput(filter, 2); 430 431 (filter->parent_filters).resize(3); 432 (filter->parent_filters)[0] = ch1; 433 (filter->parent_filters)[1] = ch2; 434 (filter->parent_filters)[2] = ch3; 435 436 437 filter->tag = (ch1->tag || ch1->tag || ch3->tag); 438 filter->start_graph = ch1->tag? ch1->start_graph : (ch2->tag? ch2->start_graph: (ch3->tag? ch3->start_graph: -1)); 439 filter->end_graph = ch1->tag? ch1->end_graph : (ch2->tag? ch2->end_graph: (ch3->tag? ch3->end_graph: -1)); 440 filter->field = &thisField; 441 442 305 443 return filter; 306 444 } -
XIOS/dev/dev_olga/src/parse_expr/filter_expr_node.hpp
r1542 r1686 5 5 #include <boost/smart_ptr/scoped_ptr.hpp> 6 6 #include "scalar_expr_node.hpp" 7 8 #include "duration.hpp" 7 9 8 10 namespace xios … … 25 27 * \return the output pin of the filter producing the result of the expression 26 28 */ 27 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const = 0;29 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const = 0; 28 30 }; 29 31 … … 42 44 CFilterFieldExprNode(const std::string& fieldId); 43 45 44 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;46 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 45 47 46 48 private: … … 63 65 CFilterTemporalFieldExprNode(const std::string& fieldId); 64 66 65 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;67 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 66 68 67 69 private: … … 86 88 CFilterUnaryOpExprNode(const std::string& opId, IFilterExprNode* child); 87 89 88 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;90 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 89 91 90 92 private: … … 111 113 CFilterScalarFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2); 112 114 113 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;115 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 114 116 115 117 private: … … 137 139 CFilterFieldScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2); 138 140 139 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;141 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 140 142 141 143 private: … … 162 164 CFilterFieldFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2); 163 165 164 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;166 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 165 167 166 168 private: … … 190 192 CFilterScalarScalarFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IScalarExprNode* child2, IFilterExprNode* child3); 191 193 192 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;194 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 193 195 194 196 private: … … 219 221 CFilterScalarFieldScalarOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2, IScalarExprNode* child3); 220 222 221 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;223 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 222 224 223 225 private: … … 248 250 CFilterScalarFieldFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2, IFilterExprNode* child3); 249 251 250 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;252 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 251 253 252 254 private: … … 278 280 CFilterFieldScalarScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2, IScalarExprNode* child3); 279 281 280 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;282 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 281 283 282 284 private: … … 307 309 CFilterFieldScalarFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2, IFilterExprNode* child3); 308 310 309 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;311 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 310 312 311 313 private: … … 335 337 CFilterFieldFieldScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2, IScalarExprNode* child3); 336 338 337 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;339 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 338 340 339 341 private: … … 364 366 CFilterFieldFieldFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2, IFilterExprNode* child3); 365 367 366 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField ) const;368 virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField, Time start_graph=-1, Time end_graph=-1) const; 367 369 368 370 private: -
XIOS/dev/dev_olga/src/parse_expr/yacc_parser.cpp
r1158 r1686 70 70 #include "exception.hpp" 71 71 72 #include "yacc_var.hpp" 73 72 74 using namespace std; 73 75 using namespace xios; … … 84 86 size_t globalReadOffset = 0; 85 87 88 std::string *xios::yacc_globalInputText_ptr = 0; 89 86 90 int readInputForLexer(char* buffer, size_t* numBytesRead, size_t maxBytesToRead) 87 91 { 92 yacc_globalInputText_ptr = &globalInputText; 93 //*yacc_globalInputText_ptr = globalInputText; 94 95 std::cout<<"========= yacc_globalInputText_ptr = "<<*yacc_globalInputText_ptr<<std::endl; 96 88 97 size_t numBytesToRead = maxBytesToRead; 89 98 size_t bytesRemaining = globalInputText.length()-globalReadOffset;
Note: See TracChangeset
for help on using the changeset viewer.