Changeset 224
- Timestamp:
- 02/24/07 14:25:05 (1 year ago)
- Files:
-
- 06/libkombilo/cpptest.cpp (modified) (2 diffs)
- 06/libkombilo/search.cpp (modified) (11 diffs)
- 06/libkombilo/search.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
06/libkombilo/cpptest.cpp
r223 r224 56 56 // ------------------- set up search pattern ---------------------------------------- 57 57 58 Pattern p(CENTER_PATTERN, 1 3, 2, 2, ".XXO");58 Pattern p(CENTER_PATTERN, 19, 2, 2, ".XXO", "D..F"); 59 59 60 60 // Pattern p(2,2,4,4, 19, 3, 3, ".X.XXXXOX", vector<MoveNC>()); // "fixed anchor" … … 92 92 // for(vector<string>::iterator it = res.begin(); it != res.end(); it++) 93 93 // printf("%s\n", it->c_str()); 94 for(int i=0; i<gl.size(); i++) printf("%s\n", gl.currentEntryAsString(i).c_str());94 // for(int i=0; i<gl.size(); i++) printf("%s\n", gl.currentEntryAsString(i).c_str()); 95 95 96 96 // ------------------- print some statistics ------------------------------------------ 06/libkombilo/search.cpp
r223 r224 182 182 sizeY = 0; 183 183 boardsize = 0; 184 } 185 186 187 Pattern::Pattern(int type, int BOARDSIZE, int sX, int sY, char* iPos) { 184 contLabels = 0; 185 } 186 187 188 Pattern::Pattern(int type, int BOARDSIZE, int sX, int sY, char* iPos, char* CONTLABELS) { 188 189 flip = 0; 189 190 colorSwitch = 0; … … 191 192 sizeY = sY; 192 193 boardsize = BOARDSIZE; 194 if (CONTLABELS) { 195 contLabels = new char[sizeX * sizeY]; 196 for(int i=0; i<sizeX*sizeY; i++) contLabels[i] = CONTLABELS[i]; 197 } else contLabels = 0; 193 198 194 199 if (type == CORNER_NW_PATTERN || type == FULLBOARD_PATTERN) { … … 234 239 235 240 Pattern::Pattern(int type, int BOARDSIZE, int sX, int sY, 236 char* iPos, vector<MoveNC> CONTLIST ) {241 char* iPos, vector<MoveNC> CONTLIST, char* CONTLABELS) { 237 242 flip = 0; 238 243 colorSwitch = 0; … … 240 245 sizeY = sY; 241 246 boardsize = BOARDSIZE; 247 if (CONTLABELS) { 248 contLabels = new char[sizeX * sizeY]; 249 for(int i=0; i<sizeX*sizeY; i++) contLabels[i] = CONTLABELS[i]; 250 } else contLabels = 0; 242 251 243 252 if (type == CORNER_NW_PATTERN || type == FULLBOARD_PATTERN) { … … 285 294 286 295 Pattern::Pattern(int le, int ri, int to, int bo, int BOARDSIZE, int sX, int sY, 287 char* iPos, const vector<MoveNC>& CONTLIST ) throw(PatternError) {296 char* iPos, const vector<MoveNC>& CONTLIST, char* CONTLABELS) throw(PatternError) { 288 297 // check whether anchor rectangle is valid 289 298 if (le < 0 || ri+sX > BOARDSIZE || to < 0 || bo+sY > BOARDSIZE || ri < le || bo < to) throw PatternError(); … … 300 309 sizeX = sX; 301 310 sizeY = sY; 311 if (CONTLABELS) { 312 contLabels = new char[sizeX * sizeY]; 313 for(int i=0; i<sizeX*sizeY; i++) contLabels[i] = CONTLABELS[i]; 314 } else contLabels = 0; 302 315 303 316 initialPos = new char[sizeX * sizeY]; … … 314 327 if (initialPos) delete [] initialPos; 315 328 if (finalPos) delete [] finalPos; 329 if (contLabels) delete [] contLabels; 316 330 } 317 331 … … 329 343 initialPos = new char[sizeX*sizeY]; 330 344 finalPos = new char[sizeX*sizeY]; 345 if (p.contLabels) contLabels = new char[sizeX*sizeY]; 346 else contLabels = 0; 331 347 for(int i=0; i<sizeX*sizeY; i++) { 332 348 initialPos[i] = p.initialPos[i]; 333 349 finalPos[i] = p.finalPos[i]; 350 if (p.contLabels) contLabels[i] = p.contLabels[i]; 334 351 } 335 352 contList = p.contList; … … 350 367 if (initialPos) delete [] initialPos; 351 368 if (finalPos) delete [] finalPos; 369 if (contLabels) delete [] contLabels; 352 370 353 371 initialPos = new char[sizeX*sizeY]; 354 372 finalPos = new char[sizeX*sizeY]; 373 if (p.contLabels) contLabels = new char[sizeX*sizeY]; 374 else contLabels = 0; 355 375 for(int i=0; i<sizeX*sizeY; i++) { 356 376 initialPos[i] = p.initialPos[i]; 357 377 finalPos[i] = p.finalPos[i]; 378 if (p.contLabels) contLabels[i] = p.contLabels[i]; 358 379 } 359 380 contList = p.contList; … … 380 401 initialPos = new char[sizeX*sizeY]; 381 402 finalPos = new char[sizeX*sizeY]; 403 if (p.contLabels) contLabels = new char[sizeX*sizeY]; 404 else contLabels = 0; 382 405 for(int i=0; i<sizeX*sizeY; i++) { 383 406 initialPos[i] = p.initialPos[i]; 384 407 finalPos[i] = p.finalPos[i]; 408 if (p.contLabels) contLabels[i] = p.contLabels[i]; 385 409 } 386 410 contList = p.contList; … … 753 777 unsigned int labelIndex = 0; 754 778 755 // FIXME assign labels which are already in the SGF file 779 // assign labels which are in the contLabels array passed to the original pattern 780 // (these will usually be labels "already present in the SGF file") 756 781 782 if (pattern.contLabels) { 783 for(int i=0; i<pattern.sizeX*pattern.sizeY; i++) { 784 if (pattern.contLabels[i] != '.') { 785 labels[i] = pattern.contLabels[i]; 786 unsigned int j = labelList.find(pattern.contLabels[i]); 787 if (j != string::npos) labelList.erase(j,1); 788 } 789 } 790 } 791 757 792 // now give labels to the remaining points, starting with the one with 758 793 // most hits 06/libkombilo/search.h
r223 r224 97 97 char* initialPos; 98 98 char* finalPos; 99 char* contLabels; 99 100 std::vector<MoveNC> contList; 100 101 102 // Pattern constructors 103 // 104 // Note: the char*'s iPos and CONTLABELS will be free'ed by the Pattern class. 105 101 106 Pattern(); 102 Pattern(int le, int ri, int to, int bo, int BOARDSIZE, int sX, int sY, char* iPos, const std::vector<MoveNC>& CONTLIST ) throw(PatternError);103 Pattern(int type, int BOARDSIZE, int sX, int sY, char* iPos, std::vector<MoveNC> CONTLIST );104 Pattern(int type, int BOARDSIZE, int sX, int sY, char* iPos );107 Pattern(int le, int ri, int to, int bo, int BOARDSIZE, int sX, int sY, char* iPos, const std::vector<MoveNC>& CONTLIST, char* CONTLABELS = 0) throw(PatternError); 108 Pattern(int type, int BOARDSIZE, int sX, int sY, char* iPos, std::vector<MoveNC> CONTLIST, char* CONTLABELS = 0); 109 Pattern(int type, int BOARDSIZE, int sX, int sY, char* iPos, char* CONTLABELS = 0); 105 110 Pattern(const Pattern& p); 106 111 ~Pattern();
