Ejemplo n.º 1
0
void test_CTypedPtrMap()
{
    typedef ::CTypedPtrMap< ::CMapStringToPtr, ::CString, int *> rng_t;
    boost::function_requires< boost::ForwardRangeConcept<rng_t> >();

    rng_t rng;
    ::CString o0(_T('a')), o1(_T('c')), o2(_T('f')), o3(_T('q')), o4(_T('g'));
    int d0, d1, d2, d3, d4;
    std::map< ::CString, int * > data;
    data[o0] = &d0, data[o1] = &d1, data[o2] = &d2, data[o3] = &d3, data[o4] = &d4;

    BOOST_CHECK( brdm::test_init_map(rng, data) );
    BOOST_CHECK( ::test_mfc_map(rng, data) );
    BOOST_CHECK( brdm::test_emptiness(rng) );
}
Ejemplo n.º 2
0
TEST(Obis, Obis_strparsing) {
	Obis o1(0x1, 0x1, 97, 97, 0xff, 0xff); // 97 = SC_F
	Obis o2("1-1:F.F");
	ASSERT_EQ(o1, o2);

	Obis o3(0x1, 0x1, 96, 98, 0xff, 0xff); // 96 = SC_C, 98 = SC_L
	Obis o4("1-1:C.L");
	ASSERT_EQ(o3, o4);

	Obis o5(0x1, 0x1, 96, 99, 0xff, 0xff); // 96 = SC_C, 99 = SC_P
	Obis o6("1-1:C.P");
	ASSERT_EQ(o5, o6);

	ASSERT_THROW(Obis o7("1-1:x:y"), vz::VZException);
	Obis o8("power-l1");
	ASSERT_EQ(Obis("1-0:21.7"), o8);

}
Ejemplo n.º 3
0
TEST(Obis, Obis_extStrParsing) {
	Obis o1(0xff, 0xff, 0x0, 0x0, 0x0, 0xff);
	Obis o2("0.0.0");
	ASSERT_EQ(o1, o2) << o1.toString( )<< o2.toString();
	ASSERT_EQ(o1.toString(), o2.toString());

	Obis o3(0xff, 0xff, 0x1, 0x2, 0x3, 0xff);
	Obis o4("1.2.3");
	ASSERT_EQ(o3, o4);
	ASSERT_EQ(o3.toString(), o4.toString());

	Obis o5(0xff, 0xff, 0x61, 0x61, 0xff, 0xff);
	Obis o6("F.F");
	ASSERT_EQ(o5, o6);

	Obis o7(0xff, 0xff, 0x0, 0x0, 0x2, 0xff);
	Obis o8("0.0.2");
	ASSERT_EQ(o7, o8);

	// this should throw an exception as hex codes are not valid inside obis codes.
	ASSERT_THROW(Obis o10("1.8.0*FF"), vz::VZException);
	ASSERT_THROW(Obis o10("1.8.0*F1"), vz::VZException);
}
Ejemplo n.º 4
0
    /** HopperScreen, OnInit:
     *  Detailed description.
     *  @param argc TODO
     * @param argv TODO
     * @return TODO
     */
    bool HopperScreen::OnInit( int argc, char* argv[] ){
        // Master()->GetMainCanvas();
        CMainCanvas* m_pMainCanvas = Master()->GetMainCanvas();

        //m_pBackground = CCanvas::CreateRGBCompatible(NULL, 1024, 768 - 320);
        //m_pBackground = CCanvas::CreateRGBCompatible(NULL, NULL, NULL);
        // Todo: c:\program files\graphviz 2.28\bin\LIBFREETYPE-6.DLL copy from DEPS
        m_pArialfont = m_Loader.FL_LOADFONT("Fonts/ARIAL.TTF", 24);
        //m_pArialfont =
        // TTF_OpenFont("E:/Projects/C++/Humbug/projects/Humbug/Resources/Fonts/ARIAL.TTF", 24);
        mcol = CColor::White();
        SDL_Surface* tmpfsurf = ( m_Loader.FL_LOADIMG("Intro/HopperScreenBg.png") );

        //SDL_SetColorKey(tmpfsurf, SDL_TRUE, 0xff00ff);
        //SDL_SetColorKey(m_pMainCanvas->GetSurface(), SDL_TRUE, 0xff00ff);
        //SDL_SetSurfaceAlphaMod(tmpfsurf, 0);
        //SDL_SetSurfaceAlphaMod(m_pMainCanvas->GetSurface(), 128);
        m_pBackground.reset( new CCanvas( tmpfsurf ) );

        //CCanvas tmpCanvas( tmpfsurf );
        m_Loader.FreeLast();

        //m_pMainCanvas->Blit(m_pMainCanvas->GetDimension(), tmpCanvas, tmpCanvas.GetDimension());
        //m_pBackground->Blit(m_pBackground->GetDimension(), tmpCanvas, tmpCanvas.GetDimension());
        m_pMainCanvas->AddUpdateRect( m_pBackground->GetDimension() );

        //"\r\n"
        CColor m_colText = CColor::White();
        std::ostringstream outstring;
        outstring << "Jedzia";
        outstring << " .................... ";
        outstring << "328.123.847";

        CText* text = new CText(m_pArialfont, outstring.str(), m_colText);

        //const boost::function<void(CCanvas*, int)> textMo = mtextfloat;
        //text->AddAnimator(boost::ref( mtextfloat ));
        text->AddAnimator( WavyTextFloat(64) );
        m_pScrollText.reset(text);

        // ### Sprites ###
        m_pSprEye = new CSprite(m_Loader, "Sprites/male_sprites.png", m_pMainCanvas, CPoint(64, 0),
                CRectangle(0, 0, 64, 64) );
        m_pSprMgr->AddSprite(m_pSprEye, "mytag", hspriv::EyeMover(160, 8));
        //m_pSprMgr->AddSprite(m_pSprEye, boost::ref( pimpl_->eyemover ) );
        //m_pSprMgr->AddSprite(m_pSprEye);
        CSprite* m_pSprWormler = new CSprite(m_Loader, "Sprites/wormtiles.png", m_pMainCanvas, CPoint(0, 64),
                CRectangle(0, 0, 256, 64) );
        m_pSprWormler->SetColorAndAlpha(0xff00ff, 128);
        m_pSprMgr->AddSprite(m_pSprWormler, "mytag", hspriv::EyeMover(260, 40));

        //_CrtSetBreakAlloc(pimpl_->allocReqNum+4);
        //_crtBreakAlloc = pimpl_->allocReqNum+4;

        shost::ScriptHost shost;
        //shost.RunScript2(m_Loader.FL_LOADASSTRING("Lua/hello.lua"));
        // shost.RunScript(m_Loader.FL_LOADASSTRING("Lua/funcret.lua"));
        //shost.RunScript4(m_Loader.FL_LOADASSTRING("Lua/iowrite.lua"));
        //shost.RunScript(m_Loader.FL_LOADASSTRING("Lua/globalclass.lua"));
        //shost.RunScript6( m_Loader.FL_LOADASSTRING("Lua/globalclass.lua") );
		//shost.RunScript7( m_Loader.FL_LOADASSTRING("Lua/--FREE--.lua") );

		typedef shost::LuaScript<int, double, double> ScriptType;
		ScriptType::Script s = shost.generate<int, double, double>( m_Loader.FL_LOADASSTRING(
			"Lua/sprite1.lua"), "Ticks", "X", "Y" );
		pimpl_->script = s;

        world.FPS = CApplication::FramesCap();
        CRectangle screenRect = m_pMainCanvas->GetDimension();
        world.ScreenX = screenRect.GetW();
        world.ScreenY = screenRect.GetH();

		// Todo maybe an functor to initialize more global stuff
		(*s->AddStatic(world))("World")
			.def("greet", &greetHopper)
			.def_readonly("FPS", &World::FPS)
			.def_readonly("ScreenX", &World::ScreenX)
			.def_readonly("ScreenY", &World::ScreenY);



		ScriptType::Script sprInit = shost.generate<int, double, double>( m_Loader.FL_LOADASSTRING(
			"Sprites/male_sprites.spr"), "Ticks", "X", "Y" );
		//ScriptType::Script sprInit = shost.generate<int, double, double>( m_Loader.FL_LOADASSTRING(
		//	"Sprites/male_sprites.spr"), "Ticks", "X", "Y" );

		TestClass st(12,99);

		(*sprInit->AddStatic(st))("TestClass", "tc")
			.def(luabind::constructor<std::vector<int> >())
			.def(luabind::constructor<int, int>())
			.def("get", &TestClass::get);

		//boost::shared_ptr<shost::LuaScript::register_binder<SpriteFrame >>& bla=
		int xyz = 55;

		typedef shost::LuaVarCapsule<luabind::class_<SpriteFrame>> SprCapsule;
		SprCapsule maleSpriteCap = shost::makeFarm(sprInit,
		(*sprInit->Register<SpriteFrame>())("SpriteFrame")
			.def(luabind::constructor<int, int>())
			.def("X", &SpriteFrame::X)
			.def("Y", &SpriteFrame::Y));

		(*sprInit->Register<SpriteMovieOld>())("SpriteMovieOld")
			.def(luabind::constructor<std::string, SpriteFrame>())
			.def("X", &SpriteMovieOld::X)
			.def("Y", &SpriteMovieOld::Y);

		(*sprInit->Register<SpriteMovie>())("SpriteMovie")
			.def(luabind::constructor<std::string, std::vector<SpriteFrame>>())
			.def("X", &SpriteMovie::X)
			.def("Y", &SpriteMovie::Y);

		//luabind::class_<SpriteFrame>& xasd = maleSpriteCap.Value();
		//SprCapsule::ObjType mmy(1,2);
		//mmy.X();

		/*luabind::module(sprInit->L())
			[
				luabind::class_<TestClass>("TestClass_")
				.def(luabind::constructor<std::vector<int> >())
				.def(luabind::constructor<int, int>())
				.def("get", &TestClass::get)
			];*/


		int success = sprInit->run_script(99);

		luabind::object o3(luabind::globals(sprInit->L())["tcx"]);
		if (o3)
		{
			// is_valid
			// ...

			int luatype = luabind::type(o3);
			if (luabind::type(o3) == LUA_TUSERDATA)
			{
				TestClass otherValue = luabind::object_cast<TestClass>(o3);
				int abc = 4;
				abc++;
			}
		}

		SpriteFrame otherValue2(0,0);
		bool success3 = maleSpriteCap.GetLuaValue("spf", otherValue2);
		SpriteFrame otherValuex = maleSpriteCap.GetLuaValue("spf");

		SpriteFrame otherValue3(0,0);
		bool fsuccess = sprInit->GetLuaValue<SpriteFrame>("spf", otherValue3);

		luabind::object o4(luabind::globals(sprInit->L())["spf"]);
		if (o4)
		{
			// is_valid
			// ...

			int luatype = luabind::type(o4);
			if (luabind::type(o4) == LUA_TUSERDATA)
			{
				SpriteFrame otherValue = luabind::object_cast<SpriteFrame>(o4);
				int abc = 4;
				abc++;
			}
		}




		//SpriteMovie otherValue3(0,0);
		//fsuccess = sprInit->GetLuaValue<SpriteMovie>("spMovie", otherValue3);
		SpriteMovieOld smovieOld = sprInit->GetLuaValue<SpriteMovieOld>("spMovieOld");
		SpriteMovie smovie = sprInit->GetLuaValue<SpriteMovie>("spMovie");

		//int *x = new int(666);

        return Screen::OnInit(argc, argv);
    } // OnInit
Ejemplo n.º 5
0
static void TestOctet()
{
  const char *str = "A test of octet strings...!@@#$%^&*()_+|~{}:,./<>?";
  OctetStr o1;
  ACE_ASSERT(o1.valid() == 1);
  ACE_ASSERT(o1.length() == 0);
  ACE_ASSERT(o1.data() != (unsigned char *)0);
  ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o1(\"\") [%s]\n",
    o1.to_string()));
  o1.set_data((SmiBYTE *)str);
  ACE_ASSERT(!ACE_OS::strcmp(str, (char *)o1.data()));
  ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o1(\"str\") [%s]\n",
    o1.to_string()));

  OctetStr o2(str);
  ACE_ASSERT(o2.valid() == 1);
  ACE_ASSERT(o2.data() != (unsigned char *)0);
  ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o2(\"str\") [%s]\n",
    o2.to_string()));

  OctetStr o3(str, 4);  // test setting less than full string length
  ACE_ASSERT(o3.valid() == 1);
  ACE_ASSERT(o3.length() == 4);
  ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o3(\"A te\") [%s]\n",
    o3.to_string()));

  OctetStr o4(o3);  // test setting less than full string length
  ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o4(\"A te\") [%s]\n",
    o4.to_string()));
  ACE_ASSERT(o4.valid() == 1);
  ACE_ASSERT(o4.length() == 4);

  OctetStr o5;
  o5 = str;
  ACE_ASSERT(o5.valid() == 1);
  ACE_ASSERT(o5.length() == ACE_OS::strlen(str));
  ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o5(\"str\") [%s]\n",
    o5.to_string()));

  OctetStr o6;
  o6 = o5;
  ACE_ASSERT(o6.valid() == 1);
  ACE_ASSERT(o5.length() == o6.length());
  ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o6(\"str\") [%s]\n",
    o6.to_string()));

  o6 += o3;
  o6 = "";
  o6 += str;
  o6 += '#';
  ACE_ASSERT(o6[0] == (SmiBYTE) 'A');
  ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o6(\"str\") [%s]\n",
    o6.to_string()));

   ACE_ASSERT(!(o3 < o3));
   ACE_ASSERT(!(o3 > o3));
   ACE_ASSERT(o3 >= o3);
   ACE_ASSERT(o3 <= o3);
   ACE_ASSERT(o3 == o3);
   ACE_ASSERT(!(o3 != o3));

}
Ejemplo n.º 6
0
int main(int argc) {


  seal::PluginManager::get()->initialise();
  pool::URIParser p;
  p.parse();
  
  pool::IFileCatalog lcat;
  pool::IFileCatalog * cat = &lcat;
  cat->setWriteCatalog(p.contactstring());
  cat->connect();

  cat->start();
  
  
  pool::IDataSvc *svc = pool::DataSvcFactory::instance(cat);
  // Define the policy for the implicit file handling
  pool::DatabaseConnectionPolicy policy;
  policy.setWriteModeForNonExisting(pool::DatabaseConnectionPolicy::CREATE);
  // policy.setWriteModeForExisting(pool::DatabaseConnectionPolicy::OVERWRITE);
  policy.setWriteModeForExisting(pool::DatabaseConnectionPolicy::UPDATE);
  svc->session().setDefaultConnectionPolicy(policy);


  svc->transaction().start(pool::ITransaction::UPDATE);
  pool::Ref<NavigationTests::AS> as(svc, new NavigationTests::AS);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    as.markWrite(place);
  }
  as->p.t=new NavigationTests::BT;
  as->p.t->k = 3;

  // svc->transaction().start(pool::ITransaction::UPDATE);
  pool::Ref<NavigationTests::T2> o1(svc, new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    o1.markWrite(place);
  }
  pool::Ref<NavigationTests::T2> o2(svc, new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    o2.markWrite(place);
  }
  pool::Ref<NavigationTests::T2> o3(svc, new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    o3.markWrite(place);
  }
  pool::Ref<NavigationTests::T2> o5(svc, new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    o5.markWrite(place);
  }
  pool::Ref<NavigationTests::K> o4(svc, new NavigationTests::K);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "K", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    o4.markWrite(place);
  }
  o3->bs.push_back(o1);
  o3->bs.push_back(o2);
  o3->bs.push_back(o5);
  o5->bs.push_back(o2);

  std::cout << "vec size " << o3->bs.size() << std::endl;

  // svc->cacheSvc().resetCache();
  o1.reset();
  std::cout << "o1 " << o1.toString() << std::endl;
  std::cout << "o1 o " << o1.isOpen() <<std:: endl;
  std::cout << "o1 p " << o1.isNull() << std::endl;
  std::cout << "o2 p " << o2.isNull() << std::endl;
  svc->transaction().commit();
  svc->session().disconnectAll();
  svc->cacheSvc().resetCache();

  svc->transaction().start(pool::ITransaction::UPDATE);
  // std::cout << "o1 p " << o1.isNull() << std::endl;
  std::cout << "o1 " << o1.toString() << std::endl;
  std::cout << "o1 o " << o1.isOpen() <<std:: endl;
  std::cout << "o1 p " << o1.isNull() << std::endl;
  o1.markDelete();  
  o1.reset();
  std::cout << "after delete and reset" << std::endl;
  std::cout << "o1 " << o1.toString() << std::endl;
  std::cout << "o1 o " << o1.isOpen() <<std:: endl;
  std::cout << "o1 p " << o1.isNull() << std::endl;
  std::cout << "o2 d " << o2.toString() << std::endl;
  std::cout << "o2 t " << o2.token() << std::endl;
  std::cout << "o2 p " << o2.isNull() << std::endl;
  svc->transaction().commit();
  svc->session().disconnectAll();

  svc->transaction().start(pool::ITransaction::UPDATE);
  std::cout << "vec size " << o3->bs.size() << std::endl;
  std::cout << "here we do not die anymore..." << std::endl;
  std::cout << "o2 d " << o2.toString() << std::endl;
  std::cout << "o2 t " << o2.token() << std::endl;
  std::cout << "o2 p " << o2.isNull() << std::endl;
  pool::Ref<NavigationTests::T2> o22 = o2;
  svc->transaction().commit();
  svc->session().disconnectAll();

  svc->cacheSvc().resetCache();

  svc->transaction().start(pool::ITransaction::UPDATE);
  std::cout << "vec size " << o3->bs.size() << std::endl;
  o3->bs.push_back(o5);
  o3.markUpdate();
  std::cout << "vec size " << o3->bs.size() << std::endl;
  svc->transaction().commit();
  if (argc>1) svc->session().disconnectAll();
  svc->cacheSvc().resetCache();
  svc->transaction().start(pool::ITransaction::UPDATE);
  std::cout << "vec size " << o3->bs.size() << std::endl;
  o3->bs.push_back(o5);
  std::cout << "vec size " << o3->bs.size() << std::endl;
  o3.markUpdate();
  svc->transaction().commit();
  svc->session().disconnectAll();

  svc->cacheSvc().resetCache();


  svc->transaction().start(pool::ITransaction::UPDATE);
  std::cout << "o1 d " << o1.toString() << std::endl;
  std::cout << "o1 t " << o1.token() << std::endl;
  std::cout << "o1 p " << o1.isNull() << std::endl;
  std::cout << "o2 d " << o2.toString() << std::endl;
  std::cout << "o2 t " << o2.token() << std::endl;
  std::cout << "o2 p " << o2.isNull() << std::endl;  /// this is true???
  svc->transaction().commit();
  svc->session().disconnectAll();

  try {
    svc->transaction().start(pool::ITransaction::UPDATE);
    std::cout << "o2 d " << o2.toString() << std::endl;
    std::cout << "o2 t " << o2.token() << std::endl;
    std::cout << "o2 p " << o2.isNull() << std::endl;
    o2.markUpdate();
    std::cout << "after update 1" << std::endl;
    o2.markDelete();  
    std::cout << "after delete 1" << std::endl;
    o2.markUpdate(); 
    std::cout << "after update 2" << std::endl;
    o2.markDelete();  
    std::cout << "after delete 2" << std::endl;
    o22.markDelete();  
    std::cout << "after delete 22" << std::endl;
    o3.markDelete();  
    std::cout << "after delete 3" << std::endl;
    pool::Ref<NavigationTests::T2> ol(svc, new NavigationTests::T2);
    {
      pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
      // This will also register the file. For this to occur, the placement object must use a PFN.
      ol.markWrite(place);
  }
    svc->transaction().commit();
    svc->session().disconnectAll();
  }
  catch(const seal::Error& er){
    std::cout << "caught seal exception " << std::endl;
    std::cerr << er.explainSelf();
    std::cerr << std::endl;
    svc->transaction().commit();
    svc->session().disconnectAll();
   }


  svc->transaction().start(pool::ITransaction::UPDATE);
  pool::Ref<NavigationTests::T2> oA(svc,new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    oA.markWrite(place);
  }
  svc->transaction().commit();
  svc->session().disconnectAll();

  svc->transaction().start(pool::ITransaction::UPDATE);
  oA.markDelete();
  pool::Ref<NavigationTests::T2> oB(svc,new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    oB.markWrite(place);
  }
  oA = oB;
  svc->transaction().commit();
  svc->session().disconnectAll();
  try {
    svc->transaction().start(pool::ITransaction::UPDATE);
    oA.markDelete();  
    std::cout << "after delete A" << std::endl;
     svc->transaction().commit();
    svc->session().disconnectAll();
  }
  catch(const seal::Error& er){
    std::cout << "caught seal exception " << std::endl;
    std::cerr << er.explainSelf();
    std::cerr << std::endl;
    svc->transaction().commit();
    svc->session().disconnectAll();
   }

  try {
    svc->transaction().start(pool::ITransaction::UPDATE);
    o5.markDelete();  
    std::cout << "after delete 5" << std::endl;
    o3.markDelete();  
    std::cout << "after delete 3 2" << std::endl;
    svc->transaction().commit();
    svc->session().disconnectAll();
  }
  catch(const seal::Error& er){
    std::cout << "OK! caught seal exception " << std::endl;
    std::cerr << er.explainSelf();
    std::cerr << std::endl;
    svc->transaction().commit();
    svc->session().disconnectAll();
   }

  try {
    svc->transaction().start(pool::ITransaction::READ);
    pool::Ref<NavigationTests::T2> h2;
    std::cout << "before is open" <<std:: endl;
    std::cout <<  h2.isOpen() <<std:: endl;
    std::cout << "before reset" <<std:: endl;
    h2.reset();
    svc->transaction().commit();
    svc->session().disconnectAll();
   }
  catch(const seal::Error& er){
    std::cout << "caught seal exception " << std::endl;
    std::cerr << er.explainSelf();
    std::cerr << std::endl;
    svc->transaction().commit();
    svc->session().disconnectAll();
  }


  cat->commit();

  delete svc;
  

}
Ejemplo n.º 7
0
int cpp_main(int, char * [])
{
  be::endian_log = false;

  //  make sure some simple things work

  be::big_int32_t o1(1);
  be::big_int32_t o2(2L);
  be::big_int32_t o3(3LL);
  be::big_int64_t o4(1);

  //  use cases; if BOOST_ENDIAN_LOG is defined, will output to clog info on
  //  what overloads and conversions are actually being performed.

  be::endian_log = true;

  std::clog << "set up test values\n";
  be::big_int32_t      big(12345);
  be::little_uint16_t  little_u(10);
  be::big_int64_t      result;

  // this is the use case that is so irritating that it caused the endian
  // constructors to be made non-explicit
  std::clog << "\nf(1234) where f(big_int32_t)\n";
  f_big_int32_ut(1234);

  std::clog << "\nresult = big\n";
  result = big;

  std::clog << "\nresult = +big\n";
  result = +big;

  std::clog << "\nresult = -big\n";
  result = -big;

  std::clog << "\n++big\n";
  ++big;

  std::clog << "\nresult = big++\n";
  result = big++;

  std::clog << "\n--big\n";
  --big;

  std::clog << "\nbig--\n";
  big--;

  std::clog << "\nresult = big * big\n";
  result = big * big;

  std::clog << "\nresult = big * big\n";
  result = big * big;

  std::clog << "\nresult = big * little_u\n";
  result = big * little_u;

  std::clog << "\nbig *= little_u\n";
  big *= little_u;

  std::clog << "\nresult = little_u * big\n";
  result = little_u * big;

  std::clog << "\nresult = big * 5\n";
  result = big * 5;

  std::clog << "\nbig *= 5\n";
  big *= 5;

  std::clog << "\nresult = 5 * big\n";
  result = 5 * big;

  std::clog << "\nresult = little_u * 5\n";
  result = little_u * 5;

  std::clog << "\nresult = 5 * little_u\n";
  result = 5 * little_u;

  std::clog << "\nresult = 5 * 10\n";
  result = 5 * 10;
  std::clog << "\n";

  //  test from Roland Schwarz that detected ambiguities; these ambiguities
  //  were eliminated by BOOST_ENDIAN_MINIMAL_COVER_OPERATORS
  unsigned u;
  be::little_uint32_t u1;
  be::little_uint32_t u2;

  u = 9;
  u1 = 1;
  std::clog << "\nu2 = u1 + u\n";
  u2 = u1 + u;
  std::clog << "\n";

  // variations to detect ambiguities

  be::little_uint32_t u3 = u1 + 5;
  u3 = u1 + 5u;

  if (u1 == 5)
    {}
  if (u1 == 5u)
    {}

  u1 += 5;
  u1 += 5u;

  u2 = u1 + 5;
  u2 = u1 + 5u;

  //  one more wrinkle
  be::little_uint16_t u4(3);
  u4 = 3;
  std::clog << "\nu2 = u1 + u4\n";
  u2 = u1 + u4;
  std::clog << "\n";

  be::endian_log = false;

  test_inserter_and_extractor();
    
  //  perform the indicated test on ~60*60 operand types

  op_test<default_construct>();
  op_test<construct>();  // includes copy construction
  op_test<initialize>();
  op_test<assign>();
  op_test<relational>();
  op_test<op_plus>();
  op_test<op_star>();

  return boost::report_errors();
}
Ejemplo n.º 8
0
int main(int argc, char **argv){
    Operand o1(6);
    Operand o2(8);
    Operand o3(4);
    Operand o4(5);
    Operand o5(3);
    Mult m(&o1,&o2);
    Add a(&m,&o3);
    Add a2(&o2,&o3);
    Sqr sq(&a2);
    Div div(&m,&o3);
    Add a3(&div,&o4);
    Sqr sq2(&o5);
    Sub sub(&a3,&sq2);
    std::cout<<a.evaluate()<<std::endl;
    std::cout<<sq.evaluate()<<std::endl;
    std::cout<<sub.evaluate()<<std::endl<<std::endl;
    
    InsertSort iSort;
    Lcontainer lcon(&iSort);
    lcon.add_element(&o1);
    lcon.add_element(&sub);
    lcon.add_element(&div);
    lcon.add_element(&sq2);
    lcon.add_element(&m);
    std::cout<<lcon.at(0)->evaluate()<<std::endl;
    std::cout<<lcon.at(1)->evaluate()<<std::endl<<std::endl;

    lcon.print();
    std::cout<<std::endl;

    lcon.swap(0,1);
    lcon.print();
    std::cout<<std::endl;

    std::cout<<"Sorting list with ascending insertion sort"<<std::endl;
    lcon.sort();
    lcon.print();
    std::cout<<std::endl;


    std::cout<<"Sorting list with descending bubble sort"<<std::endl;
    BubbleSort bSort;
    lcon.set_sort_function(&bSort);
    lcon.sort();
    lcon.print();
    std::cout<<std::endl;

    Vcontainer vcon(&iSort);
    vcon.add_element(&a2);
    vcon.add_element(&sq2);
    vcon.add_element(&m);
    vcon.add_element(&div);
    vcon.add_element(&a3);
    vcon.add_element(&a);

    std::cout<<"Sorting vector with ascending insertion sort"<<std::endl;
    vcon.sort();
    vcon.print();
    std::cout<<std::endl;

    std::cout<<"Sorting vector with descending bubble sort"<<std::endl;
    vcon.set_sort_function(&bSort);
    vcon.sort();
    vcon.print();
    std::cout<<std::endl;

}
Ejemplo n.º 9
0
int main()
{
  bi::endian_log = false;

  //  make sure some simple things work

  bi::big32_t o1(1);
  bi::big32_t o2(2L);
  bi::big32_t o3(3LL);
  bi::big64_t o4(1);

  //  use cases; if BOOST_ENDIAN_LOG is defined, will output to clog info on
  //  what overloads and conversions are actually being performed.

  bi::endian_log = true;

  std::clog << "set up test values\n";
  bi::big32_t      big(12345);
  bi::ulittle16_t  ulittle(10);
  bi::big64_t      result;


  std::clog << "\nresult = +big\n";
  result = +big;

  std::clog << "\nresult = -big\n";
  result = -big;

  std::clog << "\n++big\n";
  ++big;

  std::clog << "\nresult = big++\n";
  result = big++;

  std::clog << "\n--big\n";
  --big;

  std::clog << "\nbig--\n";
  big--;

  std::clog << "\nresult = big * big\n";
  result = big * big;

  std::clog << "\nresult = big * big\n";
  result = big * big;

  std::clog << "\nresult = big * ulittle\n";
  result = big * ulittle;

  std::clog << "\nbig *= ulittle\n";
  big *= ulittle;

  std::clog << "\nresult = ulittle * big\n";
  result = ulittle * big;

  std::clog << "\nresult = big * 5\n";
  result = big * 5;

  std::clog << "\nbig *= 5\n";
  big *= 5;

  std::clog << "\nresult = 5 * big\n";
  result = 5 * big;

  std::clog << "\nresult = ulittle * 5\n";
  result = ulittle * 5;

  std::clog << "\nresult = 5 * ulittle\n";
  result = 5 * ulittle;

  std::clog << "\nresult = 5 * 10\n";
  result = 5 * 10;
  std::clog << "\n";

  bi::endian_log = false;

  //  test from Roland Schwarz that detected ambiguities
  unsigned u;
  bi::ulittle32_t u1;
  bi::ulittle32_t u2;

  u = 1;
  u1 = 1;
  u2 = u1 + u;

  //  one more wrinkle
  bi::ulittle16_t u3(3);
  u3 = 3;
  u2 = u1 + u3;
    
  //  perform the indicated test on ~60*60 operand types

  op_test<default_construct>();
  op_test<construct>();  // includes copy construction
  op_test<initialize>();
  op_test<assign>();
  op_test<relational>();
  op_test<op_plus>();
  op_test<op_star>();

  return 0;
}
/*  
 * START THE VM 
 */
void startVM(Vm* vm)
{
    vm->PC = 0;

    while (charArrayToInt(0,2,vm->IR) != 99)
    {
        nextInstruction(vm);

        switch (charArrayToInt(0,2,vm->IR)) 
        {
            case 0:
                o0(vm);
                break;
            case 1: 
                o1(vm);
                break;
            case 2:
                o2(vm);
                break;
            case 3:
                o3(vm);
                break;
            case 4:
                o4(vm);
                break;
            case 5:
                o5(vm);
                break;
            case 6:
                o6(vm);
                break;
            case 7:
                o7(vm);
                break;
            case 8:
                o8(vm);
                break;
            case 9:
                o9(vm);
                break;
            case 10:
                o10(vm);
                break;
            case 11:
                o11(vm);
                break;
            case 12:
                o12(vm);
                break;
            case 13:
                o13(vm);
                break;
            case 14:
                o14(vm);
                break;
            case 15:
                o15(vm);
                break;
            case 16:
                o16(vm);
                break;
            case 17:
                o17(vm);
                break;
            case 18:
                o18(vm);
                break;
            case 19:
                o19(vm);
                break;
            case 20:
                o20(vm);
                break;
            case 21:
                o21(vm);
                break;
            case 22:
                o22(vm);
                break;
            case 23:
                o23(vm);
                break;
            case 24:
                o24(vm);
                break;
            case 25:
                o25(vm);
                break;
            case 26:
                o26(vm);
                break;
            case 27:
                o27(vm);
                break;
            case 28:
                o28(vm);
                break;
            case 29:
                o29(vm);
                break;
            case 30:
                o30(vm);
                break;
            case 31:
                o31(vm);
                break;
            case 32:
                o32(vm);
                break;
            case 33:
                o33(vm);
                break;
            case 34:
                o34(vm);
                break;
            case 35:
                o35(vm);
                break;
            case 99:
                o99(vm);
                break;
            default:
                // Code
                break;
        }
        displayVmFinal(vm);
    }
}
Ejemplo n.º 11
0
int main(int argc, const char* argv[])
{
	try
	{
		//init park
		Park disneyWorld("Disney World",10,15,100);
		//init operators
		Operator o1(Person("Keren", 19, 1.85));
		Operator o2(Person("Daniel", 21, 1.75));
		Operator o3(Person("Amir", 26, 1.60));
		Operator o4(Person("Eytan", 28, 1.80));

		disneyWorld += o1;
		disneyWorld += o2;
		disneyWorld += o3;
		disneyWorld += o4;
		
		//init facilities
		bool ageTypes[] = {true, true, false};
		WaterSlide waterSlide(Facility("KAMIKAZA", 2 , ageTypes, &o1), 800);
		ageTypes[2] = true;
		RollerCoaster rollerCoasterA(Facility("BALERINE", 30, ageTypes, &o2), 4, 0);
		ageTypes[0] = false;
		RollerCoaster rollerCoasterB(Facility("ANACONDA", 16, ageTypes, &o3), 30, 2);
		ageTypes[2] = false;
		Facility f("HYDRA", 12, ageTypes, &o4);
		WaterRollerCoaster waterRollerCoaster(WaterSlide(f,1000), RollerCoaster(f, 40, 7));

		disneyWorld += waterSlide;
		disneyWorld += rollerCoasterA;
		disneyWorld += rollerCoasterB;
		disneyWorld += waterRollerCoaster;

		//create persons to enter park
		Person p1("Adam",13,1.25);
		Person p2("Adir", 21, 1.55);
		Person p3("Adi", 27, 1.68);
		Person p4("Adva", 72, 1.45);

		Guest& g1 = disneyWorld.buyTicket(p1, Guest::CHILD, Guest::THRILLED,"09/09/2015");
		Guest& g2 = disneyWorld.buyTicket(p2, Guest::ADULT, Guest::HAPPY,"09/09/2015" ,true);
		Guest& g3 = disneyWorld.buyTicket(p3, Guest::ADULT, Guest::HAPPY,"08/09/2015");
		Guest& g4 = disneyWorld.buyTicket(p4, Guest::CHILD, Guest::AFRAID,"05/09/2015");

		//add guest to facility
		waterSlide += g1;
		waterSlide += g2;
		waterSlide.start(); //start() should remove all guests

		waterSlide += g3;
		waterSlide += g4;
		waterSlide.start();

		rollerCoasterA += g1;
		rollerCoasterA += g2;
		rollerCoasterA += g3;
		rollerCoasterA += g4;

		waterRollerCoaster += g1;
		waterRollerCoaster += g2;
		waterRollerCoaster += g3;
		waterRollerCoaster += g4;

		cout << disneyWorld << endl;
		rollerCoasterA.start();
		waterRollerCoaster.start();
		cout << disneyWorld << endl;
	}
	catch(const char* msg)
	{
		cout << "Problem occured..." << endl;
		cout << msg << endl;
		cout << "Finishing.." << endl;
	}
}