Ejemplo n.º 1
0
    int AclReader::read(const std::string& fn, boost::shared_ptr<AclData> d) {
        fileName = fn;
        lineNumber = 0;
        char buff[1024];
        std::ifstream ifs(fn.c_str(), std::ios_base::in);
        if (!ifs.good()) {
            errorStream << "Unable to open ACL file \"" << fn << "\": eof=" << (ifs.eof()?"T":"F") << "; fail=" << (ifs.fail()?"T":"F") << "; bad=" << (ifs.bad()?"T":"F");
            return -1;
        }
        // Propagate nonzero per-user max connection setting from CLI
        if (cliMaxConnPerUser > 0) {
            connQuotaRulesExist = true;
            (*connQuota)[AclData::ACL_KEYWORD_ALL] = cliMaxConnPerUser;
        }
        // Propagate nonzero per-user max queue setting from CLI
        if (cliMaxQueuesPerUser > 0) {
            queueQuotaRulesExist = true;
            (*queueQuota)[AclData::ACL_KEYWORD_ALL] = cliMaxQueuesPerUser;
        }
        // Loop to process the Acl file
        try {
            bool err = false;
            while (ifs.good()) {
                ifs.getline(buff, 1024);
                lineNumber++;
                if (std::strlen(buff) > 0 && buff[0] != '#') // Ignore blank lines and comments
                    err |= !processLine(buff);
            }
            if (!ifs.eof())
            {
                errorStream << "Unable to read ACL file \"" << fn << "\": eof=" << (ifs.eof()?"T":"F") << "; fail=" << (ifs.fail()?"T":"F") << "; bad=" << (ifs.bad()?"T":"F");
                ifs.close();
                return -2;
            }
            ifs.close();
            if (err) return -3;
            QPID_LOG(notice, "ACL: Read file \"" <<  fn << "\"");
        } catch (const std::exception& e) {
            errorStream << "Unable to read ACL file \"" << fn << "\": " << e.what();
            ifs.close();
            return -4;
        } catch (...) {
            errorStream << "Unable to read ACL file \"" << fn << "\": Unknown exception";
            ifs.close();
            return -5;
        }
        printNames();
        printRules();
        printQuotas(AclData::ACL_KEYWORD_QUOTA_CONNECTIONS, connQuota);
        printQuotas(AclData::ACL_KEYWORD_QUOTA_QUEUES, queueQuota);
        loadDecisionData(d);

        return 0;
    }
Ejemplo n.º 2
0
/**
* @brief	Prints the rules table which is stored in the rules table attribute.
*
* @return	TRUE for success, FALSE for failure.
*/
Bool showRules(void)
{
	int rulesTableAttrFile = 0;
	char * rulesBuffer = NULL;
	ssize_t bytesRead = 0;

	/* Allocating memory for the rules table buffer */
	rulesBuffer = malloc(PAGE_SIZE);
	if (rulesBuffer == NULL)
	{
		printf("Failed allocating memory for the rules table buffer.\n");
		return FALSE;
	}

	/* Opening the rules table attribute file */
	rulesTableAttrFile = open(RULES_TABLE_ATTR_PATH, O_RDONLY);
	if (rulesTableAttrFile == -1)
	{
		printf("Error in opening the rules table attribute file for read: %s\n", strerror(errno));
		free(rulesBuffer);
		return FALSE;
	}

	/* Reading the rules table buffer */
	bytesRead = read(rulesTableAttrFile, (void *)rulesBuffer, PAGE_SIZE - 1);
	if (bytesRead == -1)
	{
		printf("Error in reading from the rules table attribute file: %s\n", strerror(errno));
		close(rulesTableAttrFile);
		free(rulesBuffer);
		return FALSE;
	}
	close(rulesTableAttrFile);

	/* Printing the rules */
	printRules(rulesBuffer);
	free(rulesBuffer);
	return TRUE;
}
Ejemplo n.º 3
0
State onMainMenu(Game* game) {
	int choice = 0;
	char cmd[255];
	char userInput[255];
	cmd[0] = 0;

	/* Print initial Main Menu */
	printMainMenu(game);

	/* get choices: Possible choices are New Game, Load Game, Set up board, How to play */
	choice = getInput();

	/* Added by Cesar 1/26/2014 */
	/* handling the cases mentioned above */
	switch(choice){
	case 0:
		/* Start a new game */
		return NewGame;
	case 1:
		/* Load an old game */
		printf("Enter the file name you want to load: ");
		scanf("%s", userInput);
		printf("\n");
		fseek(stdin,0,SEEK_END);		
		loadGame(game, userInput);
		return NewGame;
	case 2:
		/* Setup custom board */
		
		while(cmd[0]!='0')
		{
			/*
			printf("Enter the file name you want to save \n");
			scanf("%s", userInput);
			saveLog(game, userInput);
			fseek(stdin,0,SEEK_END);
			*/
			printBoard(game);
			printf("Please input move to move piece (input 0 to start game): ");
			getGameInput(cmd);
			printf("\n");
			directMoveNotation(game, cmd);
		}
		return NewGame;
	case 3:
		/* How to play */
		printRules();
		return MainMenu;
	case 4:
		/* Reset board/game */
		resetGame(game);
		printf("Board/game has been reset.\n\n");
		return MainMenu;
	case 5:
		/* displays help */
		help();
		return MainMenu;
	case 9:
		return Exit;
	default:
		return MainMenu;
	}
	/* end code added by Cesar */

	/* old code, commented out on 1/26/2014
	switch(choice) {
	case 0:
		return NewGame;
	case 1:
		loadGame(game);
		return NewGame;
	case 2:
		game->setting->allowRedo ^= 1;
		return MainMenu;
	case 3:
		game->setting->allowIllegalMove ^= 1;
		return MainMenu;
	case 4:
		selectOpponent(game);
		return MainMenu;
	case 5:
		selectDifficulty(game);
		return MainMenu;
	case 6:
		return Exit;
	default:
		return MainMenu;
		}
		End old code */
	
}
Ejemplo n.º 4
0
int main(){

std::cout<<"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * "<<std::endl;
std::cout<<"Ce programme permettra de réaliser des opérations floues sur une base de faits et une base de règles à l'aide d'un fuzzifier"<<std::endl;
std::cout<<"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * "<<std::endl;
std::cout<<"                                                                                                                            "<<std::endl;


char* filename;
//std::cout<<"Entrer le nom d'un fichier texte à analyser pour créer la base de faits"<<std::endl;
//std::cin>>filename;
//std::cout<<"Génération de la base de faits à base du fichier texte spécifié ... "<<std::endl;

//on parse les fichiers texte
std::vector<Fait> Faits = Parser_faits("faits.txt");

//on parse les regeles
std::vector<Rule> Rules = Parser_rules("rules.txt");

//update de la base de faits en prenant en compte la base de rules (MAJ de l'énoncé)

Faits = updateFaits(Faits, Rules);


//fonction MAJ1 de l'énoncé: créé la liste des métarègles et update les faits avec la
// std::vector<Rule> MetaRules = updateMeta(Faits, Rules);
// on verra plus tard pour les metaregles




//check à l'écran la base de faits

printFaits(Faits);
sleep(5);


printRules(Rules);
sleep(5);



//on créé notre matrice de transition entre les valeurs :
//     AB   B   TB
// AB  1    1   1
// B   0.7  1   1
// TB  0.3  0.8 1

std::vector<std::vector<double>> TransMatrix = {{1.,1.,1.},{0.7,1.,1.},{0.3,0.8,1.}};

// Créer la liste de conclusion à évaluer

std::vector<EvalConcl> EvalConcls = EvalFunction(Faits, Rules, TransMatrix);

std::cout << "Travail de fuzzification en cours ..." << std::endl;
sleep(5);

std::cout<< "Affiche des conclusions et de leur évaluations: "<<std::endl;
std::cout<< "************************************************" << std::endl;

//Affichage des conclusions évaluées
for(std::vector<EvalConcl>::iterator ite=EvalConcls.begin();ite!=EvalConcls.end();++ite){
	std::cout<<"Conclusion :"<<std::get<0>(ite->first)<<std::endl;
	std::cout<<"Et l'évaluation pour cette conclusion est : " << ite->second << std::endl;
	std::cout<< "                                      " << std::endl;


}




//on créé nos vecteurs de valeur de fait
double listB[] = {0.001,0.005,0.005,0.01,0.1,0.3,0.4,0.6,0.8,0.9,1.0};
std::vector<double> uB (11);
std::vector<double> uTB(11);

uB[0]=0.001;
uB[1]=0.005;
uB[2]=0.005;
uB[3]=0.01;
uB[4]=0.1;
uB[5]=0.3;
uB[6]=0.4;
uB[7]=0.6;
uB[8]=0.8;
uB[9]=0.9;
uB[10]=1.0;


//it=uTB.begin(;)
for( std::vector<double>::iterator it = uB.begin() ; it != uB.end(); ++it){
	double value = *it;
	uTB.push_back(value*value);
	//std::cout<<uTB.back()<<std::endl;
}

/*
std::tuple<std::string, std::string, double> line;
std::vector<std::tuple<std::string, std::string, double>> parsed_file;
 parsed_file.emplace_back("test","test",0);
std::cout<< std::get<0>(parsed_file[0]) << std::get<1>(parsed_file[0]) << std::get<2>(parsed_file[0]) << std::endl ;
*/


return 0;
}
Ejemplo n.º 5
0
Transformer::Transformer(string configFilename, bool showRules)
{
  // load configuration file
  cerr << "Loading configuration file: ";
  loadConfig(configFilename);
  cerr << "done" << endl;

  string line;

  // import binary rules
  if (rules2Filename.length() > 0)
  {
    cerr << "Loading binary rules: ";
    if (baseDir != "") rules2Filename = baseDir + "/" + rules2Filename;
    ifstream rules2File(rules2Filename.c_str());
    if (!rules2File) printError("binary rules file `" + rules2Filename + "' could not be found");
    
    ruleCount = 0;
    while (getline(rules2File, line))
    {
      if (line[0] != '%')
      {
	loadRule(line, 2);
	if (ruleCount % 10000 == 0) cerr << '.';    // progress meter
      }
    }
    cerr << ' ' << ruleCount << " binary rules loaded" << endl;
    rules2File.close();

    useRules2 = true;  // enable binary rules
  }

  // import 3+-ary rules
  if (rules3plusFilename.length() > 0)
  {
    cerr << "Loading 3+-ary rules: ";
    if (baseDir != "") rules3plusFilename = baseDir + "/" + rules3plusFilename;
    ifstream rules3plusFile(rules3plusFilename.c_str());
    if (!rules3plusFile) printError("3+-ary rules file `" + rules3plusFilename + "' could not be found");

    ruleCount = 0;
    while (getline(rules3plusFile, line))
    {
      if (line[0] != '%')
      {
	loadRule(line, 3);
	if (ruleCount % 10000 == 0) cerr << '.';    // progress meter
      }
    }
    cerr << ' ' << ruleCount << " 3+-ary rules loaded" << endl;
    rules3plusFile.close();

    useRules3plus = true;  // enable 3+-ary rules
  }
 
  if (showRules)
  {
    cout << "[BINARY RULES]" << endl;
    printRules(2);
    cout << endl;

    cout << "[3+-ARY RULES]" << endl;
    printRules(3);
    cout << endl;
  }
}