// N.B. getFlagStrNoEx() does not set val, but merely modifies it. Thus, // val must be initialized before using getFlagStrNoEx(). The intention of // this is to simplify modifying a flags field from a default value. bool Settings::getFlagStrNoEx(const std::string &name, u32 &val, FlagDesc *flagdesc) const { try { u32 flags, flagmask; flags = getFlagStr(name, flagdesc, &flagmask); val &= ~flagmask; val |= flags; return true; } catch (SettingNotFoundException &e) { return false; } }
void Cell::destroyCell () { if (getFlagStr() != INVALID_STR) { if (_rhs != NULL) { if (getRhsDim() > 1) delete[] _rhs; else delete _rhs; _rhs = NULL; } if (_detwindow != NULL) { delete[] _detwindow; _detwindow = NULL; } if (getFlagStr() == STR_ANCHOR) { if (_anchor != NULL) { for (int i = 0; i < getAnchorDim(); i++) { if (getAnchor()[i].array != NULL) { delete[] getAnchor()[i].array; getAnchor()[i].array = NULL; } } delete[] _anchor; _anchor = NULL; } if (_score != NULL) { for (int i = 0; i < getScoreDim(); i++) { if (_score[i] != NULL) { cvReleaseMat (&_score[i]); _score[i] = NULL; } } delete[] _score; _score = NULL; } } if (_Ix != NULL) { for (int i = 0; i < getIxDim(); i++) { if (_Ix[i] != NULL) { cvReleaseMat (&_Ix[i]); _Ix[i] = NULL; } } delete[] _Ix; _Ix = NULL; } if (_Iy != NULL) { for (int i = 0; i < getIyDim(); i++) { if (_Iy[i] != NULL) { cvReleaseMat (&_Iy[i]); _Iy[i] = NULL; } } delete[]_Iy; _Iy = NULL; } } setFlagStr (INVALID_STR); }