Exemplo n.º 1
0
TEST(StatRepo, SingletonsAreTheSame)
{
	auto repo = StatRepo::Instance("namespace");
	auto repo1 = StatRepo::Instance();

	EXPECT_EQ(repo.get(), repo1.get());

	EXPECT_EQ(repo->_namespace(), "namespace");
	EXPECT_EQ(repo1->_namespace(), "namespace");
}
Exemplo n.º 2
0
/** HasNamespaces **/
Namespace& Namespace::addNamespace(string name) {
	Namespace _namespace(name, *this);
	this->_namespaces.insert( pair<string, Namespace>(name, _namespace) );
	return this->getNamespace(name);
}
Exemplo n.º 3
0
int main(int argc, char ** argv)
{
    ::diagnostics::Logging_Config::init();
    
    if(argc < 2){
	usage();
	return 1;
    }

    ::std::string root_dir("");
    ::std::string _namespace("");
    ::std::string include_prefix("");
    ::std::string formula = ("");
    bool include_type = false;
    ::std::string bool_str("false");
    ::std::string pos_nfa("Pos_Nfa");
    ::std::string neg_nfa("Neg_Nfa");
    ::std::string classname("");
            
    while(argc > 1 && argv[1][0] == '-'){
	switch(argv[1][1]){
        case 'r': 
            root_dir = argv[2];
            --argc;
            ++argv;
            break;
        case 'n':
            _namespace = argv[2];
            --argc;
            ++argv;		
            break;
        case 'p':
            include_prefix = argv[2];
            --argc;
            ++argv;		
            break;
        case 'i':
            bool_str = argv[2];
            --argc;
            ++argv;		
            break;
        case 'c':
            classname = argv[2];
            pos_nfa = "";
            neg_nfa = "";
            pos_nfa = "Pos_" + classname;
            neg_nfa = "Neg_" + classname;
            --argc;
            ++argv;
            break;
        case 'f':
            formula = argv[2];
            --argc;
            ++argv;		
            break;
        default: usage();
            break;
	}
	--argc;
	++argv;
    }

    if(formula == ""){
	::std::cout << "You must specify a formula! Exiting..." << ::std::endl;
	return 1;
    }

    if(bool_str == "true")
	include_type = true;
        
    typedef ::ltl2fsm::Graphviz_Representation Representation_t;
    typedef ::ltl2fsm::Ltl_To_Nfa_Pair_Module<Representation_t> Ltl_To_Nfa_Pair_Module_t;
    typedef ::ltl2fsm::Nfa_To_Cpp_Module<Representation_t> Nfa_To_Cpp_Module_t;
    
    Ltl_To_Nfa_Pair_Module_t ltl_to_nfa_pair_module;
    Ltl_To_Nfa_Pair_Module_t::Nfa_Pair_t nfa_pair;
    Nfa_To_Cpp_Module_t nfa_to_cpp_module;
    
    try{

	nfa_pair = ltl_to_nfa_pair_module.execute(formula);
    }
    catch( ::ltl2fsm::Invalid_Ltl_Syntax const & ils){
	::std::cout << ils.what() << ::std::endl;
	return 1;
    }
    catch( ::ltl2fsm::Fork_Error const & fe ){
	::std::cout << fe.what() << ::std::endl;
	return 1;
    }

    if(root_dir != ""){
	::std::string root_dir_pos_nfa = root_dir + pos_nfa;
	::std::ofstream pos_nfa_cpp((root_dir_pos_nfa + ".cpp").c_str());
        ::std::ofstream pos_nfa_hpp((root_dir_pos_nfa + ".hpp").c_str());
	nfa_to_cpp_module.execute(*nfa_pair.first, 
				  pos_nfa_cpp,
                                  pos_nfa_hpp,
                                  pos_nfa,
                                  _namespace,
				  include_prefix,
                                  formula,
				  include_type);
	
	::std::string root_dir_neg_nfa = root_dir + neg_nfa;
	::std::ofstream neg_nfa_cpp((root_dir_neg_nfa + ".cpp").c_str());
	::std::ofstream neg_nfa_hpp((root_dir_neg_nfa + ".hpp").c_str());
	nfa_to_cpp_module.execute(*nfa_pair.second, 
				  neg_nfa_cpp,
                                  neg_nfa_hpp,
                                  neg_nfa,
                                  _namespace,
				  include_prefix,
                                  ::std::string("!(" + formula + ")"),
				  include_type);
    }
    else{
	nfa_to_cpp_module.execute(*nfa_pair.first, 
				  ::std::cout,
                                  ::std::cout,
				  pos_nfa,
				  _namespace,
				  include_prefix,
                                  formula,
				  include_type);
	
	nfa_to_cpp_module.execute(*nfa_pair.second, 
				  ::std::cout,
                                  ::std::cout,
				  neg_nfa,
				  _namespace,
				  include_prefix,
                                  ::std::string("!(" + formula + ")"),
				  include_type);
    }
            
    return 0;
}