Esempio n. 1
0
// Command-line options overriding file options
TEST(param,CmdlineOverride)
{
    //create a file name
    std::string pfilename(alps::testing::temporary_filename("pfile.ini."));
    
    // Generate INI file
    {
        std::ofstream pfile(pfilename.c_str());
        pfile <<
            "param1 = 111\n"
            "param2 = 222\n";
    }

    // Imitate the command line args
    const char* argv[]={"THIS_PROGRAM",         // argv[0]
                        pfilename.c_str(),      // filename is the 1st argument
                        "--param1=999",         // override param1
                        "--param3=333",         // one more parameter
                        "--trigger_opt" };      // a trigger option  
    const int argc=sizeof(argv)/sizeof(*argv);
    
    alps::params p(argc, argv);
    p.
        define<int>("param1","Parameter 1").
        define<int>("param2","Parameter 2").
        define<int>("param3","Parameter 3").
        define("trigger_opt","Trigger param");

    EXPECT_EQ(999,p["param1"]);
    EXPECT_EQ(222,p["param2"]);
    EXPECT_EQ(333,p["param3"]);
    EXPECT_TRUE(bool(p["trigger_opt"]));
}
Esempio n. 2
0
bool MidPlayer::load_sierra_ins(const std::string& fname)
{
    boost::filesystem::path pfilename(fname);
    auto basename = pfilename.stem().string().substr(0, 3);
    pfilename.remove_filename() /= basename + "patch.003";

    FileStream f(pfilename.string());
    if(!f)
        return false;

    f.seekrel(2);
    m_stins = 0;
    for(int i = 0; i < 2; i++)
    {
        for(int k = 0; k < 48; k++)
        {
            int l = i * 48 + k;
            logger->trace(L4CXX_LOCATION, "%2d: ", l);
            unsigned char ins[28];
            f.read(ins, 28);

            m_myInsBank[l][0] = (ins[9] * 0x80) + (ins[10] * 0x40) + (ins[5] * 0x20) +
                (ins[11] * 0x10) + ins[1]; //1=ins5
            m_myInsBank[l][1] =
                (ins[22] * 0x80) + (ins[23] * 0x40) + (ins[18] * 0x20) +
                (ins[24] * 0x10) + ins[14]; //1=ins18

            m_myInsBank[l][2] = (ins[0] << 6) + ins[8];
            m_myInsBank[l][3] = (ins[13] << 6) + ins[21];

            m_myInsBank[l][4] = (ins[3] << 4) + ins[6];
            m_myInsBank[l][5] = (ins[16] << 4) + ins[19];
            m_myInsBank[l][6] = (ins[4] << 4) + ins[7];
            m_myInsBank[l][7] = (ins[17] << 4) + ins[20];

            m_myInsBank[l][8] = ins[26];
            m_myInsBank[l][9] = ins[27];

            m_myInsBank[l][10] = ((ins[2] << 1)) + (1 - (ins[12] & 1));
            //(ins[12] ? 0:1)+((ins[2]<<1));

            for(auto j = 0; j < 11; j++)
                logger->trace(L4CXX_LOCATION, "%02X ", int(m_myInsBank[l][j]));
            m_stins++;
        }
        f.seekrel(2);
    }

    m_sMyInsBank = m_myInsBank;
    return true;
}
Esempio n. 3
0
alps::params get_file_param(const std::string& name1, const std::string& name2, T val1, T val2)
{
    //create a file name
    std::string pfilename(alps::temporary_filename("pfile")+".ini");
    // Generate INI file
    {
        std::ofstream pfile(pfilename.c_str());
        pfile
                << name1 << " = " << val1 << "\n"
                << name2 << " = " << val2 << "\n";
    }
    const char* argv[] = { "this program", pfilename.c_str() };
    const int argc=sizeof(argv)/sizeof(*argv);
    return alps::params(argc,argv);
}
Esempio n. 4
0
// Repeated parameters in the INI file
TEST(param,RepeatingInFile) {
    //create a file name
  std::string pfilename(alps::testing::temporary_filename("pfile.ini."));

   // Generate INI file
   {
     std::ofstream pfile(pfilename.c_str());
     pfile <<
         "parname = 1\n"
         "parname = 2\n";
   }

   // Imitate the command line args
   const char* argv[]={"THIS_PROGRAM", pfilename.c_str()};
   const int argc=sizeof(argv)/sizeof(*argv);

   //define the parameters
   alps::params p(argc,argv);
   p.description("This is a test program").
       define<int>("parname","repeated parameter");

   EXPECT_THROW(p["parname"],boost::program_options::multiple_occurrences);
}