bool lemmatiseFile(const char * OneWordPerLineFile,const char * rulefile,const char * resultFile) { buffer Buffer; if(!readRules(rulefile,&Buffer)) return false; FILE * OWPLF = fopen(OneWordPerLineFile,"rb"); ++openfiles; if(!OWPLF) { deleteRules(); return false; } FILE * rf = fopen(resultFile,"wb"); ++openfiles; if(!rf) { --openfiles; fclose(OWPLF); deleteRules(); return false; } fseek(OWPLF, 0, SEEK_END); long wend = ftell(OWPLF); fseek(OWPLF, 0, SEEK_SET); char * wbuf = new char[(size_t)(wend + 1)]; if (wbuf && wend > 0) { if (fread(wbuf, 1, (size_t)wend, OWPLF) != (size_t)wend) return 0; wbuf[wend] = '\0'; } char * q; for(char * p = wbuf;(q = strchr(p,'\n')) != 0;p = q + 1) { *q = 0; for(char * r = q - 1;r >= p && (*r == '\r' || *r == ' ' || *r == '\t');--r) *r = 0; fprintf(rf,"%s\n",applyRules(p,&Buffer)); } delete [] wbuf; deleteRules(); --openfiles; fclose(rf); --openfiles; fclose(OWPLF); return true; }
Game::~Game() { delete watch; delete possibilities; delete verHints; delete horHints; delete puzzle; deleteRules(); }
void controls_delete(void) // // Input: none // Output: none // Purpose: deletes all control rules. // { if ( RuleCount == 0 ) return; deleteActionList(); deleteRules(); }
void CInputFilter::copyRules(const CRuleList& rules) { CRuleList newRules; for (CRuleList::const_iterator i = rules.begin(); i != rules.end(); ++i) { CCondition* cond = i->first->clone(); CAction* action = i->second->clone(); newRules.push_back(std::make_pair(cond, action)); } m_ruleList.swap(newRules); deleteRules(newRules); }
RuleBasedTimeZone& RuleBasedTimeZone::operator=(const RuleBasedTimeZone& right) { if (*this != right) { BasicTimeZone::operator=(right); deleteRules(); fInitialRule = right.fInitialRule->clone(); fHistoricRules = copyRules(right.fHistoricRules); fFinalRules = copyRules(right.fFinalRules); deleteTransitions(); fUpToDate = FALSE; } return *this; }
void Game::genPuzzle() { pleaseWait(); int horRules, verRules; do { if (rules.size() > 0) deleteRules(); ::genPuzzle(solvedPuzzle, rules); getHintsQty(rules, verRules, horRules); } while ((horRules > 24) || (verRules > 15)); memcpy(savedSolvedPuzzle, solvedPuzzle, sizeof(solvedPuzzle)); savedRules = rules; hinted = false; }
RuleBasedTimeZone::~RuleBasedTimeZone() { deleteTransitions(); deleteRules(); }
CInputFilter::~CInputFilter() { setPrimaryClient(NULL); deleteRules(m_ruleList); }
KeyMagicKeyboard::~KeyMagicKeyboard() { deleteRules(); m_infos.clear(); }
bool KeyMagicKeyboard::loadKeyboardFile(const char * szPath) { FileHeader fh; FILE * hFile; BinaryRuleList rules; BinaryStringList strings; hFile = fopen(szPath, "rb"); if (!hFile){ PERROR("Cannot open keyboard file : %s\n", szPath); return false; } if (ReadHeader(hFile, &fh) == false) { PERROR("Fail to load keyboard file : %s\n", szPath); fclose(hFile); return false; } m_layoutOptions = fh.layoutOptions; if (m_verbose) { m_logger->log("autoBksp=%x\n", m_layoutOptions.autoBksp); m_logger->log("eat=%x\n", m_layoutOptions.eat); m_logger->log("posBased=%x\n", m_layoutOptions.posBased); m_logger->log("trackCaps=%x\n", m_layoutOptions.trackCaps); } m_strings.clear(); deleteRules(); m_infos.clear(); for (int i = 0; i < fh.stringCount; i++) { short sLength; fread(&sLength, sizeof(short), 1, hFile); unsigned short * local_buf = new unsigned short[sLength+1]; local_buf[sLength]='\0'; fread(local_buf, sLength * sizeof(unsigned short), 1, hFile); strings.push_back(local_buf); } for (int i = 0; i < fh.infoCount; i++) { int id; short sLength; fread(&id, sizeof(int), 1, hFile); fread(&sLength, sizeof(short), 1, hFile); char * local_buf = new char[sLength + 1]; local_buf[sLength]='\0'; fread(local_buf, sLength * sizeof(char), 1, hFile); m_infos[id].SetData(local_buf, sLength); delete[] local_buf; } for (int i = 0; i < fh.ruleCount; i++) { BinaryRule Rule; short sLength; fread(&sLength, sizeof(short), 1, hFile); unsigned short * ruleBinaryIn = new unsigned short[sLength+1]; ruleBinaryIn[sLength]='\0'; fread(ruleBinaryIn, sLength * sizeof(short), 1, hFile); fread(&sLength, sizeof(short), 1, hFile); unsigned short * ruleBinaryOut = new unsigned short[sLength+1]; ruleBinaryOut[sLength]='\0'; fread(ruleBinaryOut, sLength * sizeof(short), 1, hFile); Rule.SetInRule(ruleBinaryIn); Rule.SetOutRule(ruleBinaryOut); rules.push_back(Rule); delete[] ruleBinaryIn; delete[] ruleBinaryOut; } //Convert variable to pure string. Originally, variables are binary arrays containing inline index variablesToStrings(&strings, &m_strings); binaryRulesToManagedRules(&rules, &m_rules); std::sort(m_rules.begin(), m_rules.end()); std::reverse(m_rules.begin(), m_rules.end()); if (m_verbose) { m_logger->log("strings;%d==%d\n", strings.size(), m_strings.size()); m_logger->log("rules;%d==%d\n", rules.size(), m_rules.size()); m_logger->log("|----rules-start----|\n"); for (RuleList::iterator i = m_rules.begin(); i != m_rules.end(); i++) { RuleInfo rule = *i; std::string * s; if (i != m_rules.begin()) { m_logger->log(",\n"); } m_logger->log("|---index=%d---|\n{\n", rule.getRuleIndex()); s = rule.description(); m_logger->log(s->c_str()); m_logger->log("}"); delete s; } m_logger->log("\n|----rules-end----|\n"); } fclose(hFile); for (BinaryStringList::iterator i = strings.begin(); i != strings.end(); i++) { delete[] *i; } rules.clear(); return true; }