| 300 | */ |
| 301 | |
| 302 | void initfg(ParserState* pp) { |
| 303 | if (!pp->hadError) |
| 304 | pp->fg->init(pp->intvars.size(), |
| 305 | pp->boolvars.size(), |
| 306 | pp->setvars.size(), |
| 307 | pp->floatvars.size()); |
| 308 | |
| 309 | for (unsigned int i=0; i<pp->intvars.size(); i++) { |
| 310 | if (!pp->hadError) { |
| 311 | try { |
| 312 | pp->fg->newIntVar(static_cast<IntVarSpec*>(pp->intvars[i].second)); |
| 313 | } catch (Gecode::FlatZinc::Error& e) { |
| 314 | yyerror(pp, e.toString().c_str()); |
| 315 | } |
| 316 | } |
| 317 | delete pp->intvars[i].second; |
| 318 | pp->intvars[i].second = NULL; |
| 319 | } |
| 320 | for (unsigned int i=0; i<pp->boolvars.size(); i++) { |
| 321 | if (!pp->hadError) { |
| 322 | try { |
| 323 | pp->fg->newBoolVar( |
| 324 | static_cast<BoolVarSpec*>(pp->boolvars[i].second)); |
| 325 | } catch (Gecode::FlatZinc::Error& e) { |
| 326 | yyerror(pp, e.toString().c_str()); |
| 327 | } |
| 328 | } |
| 329 | delete pp->boolvars[i].second; |
| 330 | pp->boolvars[i].second = NULL; |
| 331 | } |
| 332 | for (unsigned int i=0; i<pp->setvars.size(); i++) { |
| 333 | if (!pp->hadError) { |
| 334 | try { |
| 335 | pp->fg->newSetVar(static_cast<SetVarSpec*>(pp->setvars[i].second)); |
| 336 | } catch (Gecode::FlatZinc::Error& e) { |
| 337 | yyerror(pp, e.toString().c_str()); |
| 338 | } |
| 339 | } |
| 340 | delete pp->setvars[i].second; |
| 341 | pp->setvars[i].second = NULL; |
| 342 | } |
| 343 | for (unsigned int i=0; i<pp->floatvars.size(); i++) { |
| 344 | if (!pp->hadError) { |
| 345 | try { |
| 346 | pp->fg->newFloatVar( |
| 347 | static_cast<FloatVarSpec*>(pp->floatvars[i].second)); |
| 348 | } catch (Gecode::FlatZinc::Error& e) { |
| 349 | yyerror(pp, e.toString().c_str()); |
| 350 | } |
| 351 | } |
| 352 | delete pp->floatvars[i].second; |
| 353 | pp->floatvars[i].second = NULL; |
| 354 | } |
| 355 | if (!pp->hadError) { |
| 356 | int iv_size = pp->sol_int.size() * 2; |
| 357 | iv_size += pp->last_val_int.size(); |
| 358 | iv_size += pp->uniform_int.size(); |
| 359 | iv_size += (pp->status_idx >= 0) ? 1 : 0; |
no test coverage detected