Exemplo n.º 1
0
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;
    }
Exemplo n.º 2
0
Game::~Game()
{
    delete watch;
    delete possibilities;
    delete verHints;
    delete horHints;
    delete puzzle;
    deleteRules();
}
Exemplo n.º 3
0
void controls_delete(void)
//
//  Input:   none
//  Output:  none
//  Purpose: deletes all control rules.
//
{
   if ( RuleCount == 0 ) return;
   deleteActionList();
   deleteRules();
}
Exemplo n.º 4
0
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);
}
Exemplo n.º 5
0
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;
}
Exemplo n.º 6
0
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;
}
Exemplo n.º 7
0
RuleBasedTimeZone::~RuleBasedTimeZone() {
    deleteTransitions();
    deleteRules();
}
Exemplo n.º 8
0
CInputFilter::~CInputFilter()
{
	setPrimaryClient(NULL);
	deleteRules(m_ruleList);
}
Exemplo n.º 9
0
	KeyMagicKeyboard::~KeyMagicKeyboard() {
		deleteRules();
		m_infos.clear();
	}
Exemplo n.º 10
0
	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;
	}