void chrono_duration() { std::chrono::microseconds mic(3300); // mic == 3300 microseconds. std::chrono::nanoseconds nano = mic; // nano == 3300000 // as we can see we have the assign operator overloaded to do the conversion // however, this cannot convert from a HIGHer resolution measure to a LOWER resolution. // for example: /* std::chrono::milliseconds milli = mic; */ // this won't compile, because "mic" is HIGHER resolution precision than "milli" // so, we need a chrono duration_cast std::chrono::milliseconds milli; milli = std::chrono::duration_cast<std::chrono::milliseconds>(mic); // cast microseconds type to a lower resolution milliseconds type // now milli == 3 milliseconds, ( we lose precision ) }
/*---------------------------------------------------------------------------*/ static void aead(const uint8_t* nonce, uint8_t* m, uint8_t m_len, const uint8_t* a, uint8_t a_len, uint8_t *result, uint8_t mic_len, int forward) { if(!forward) { /* decrypt */ ctr(nonce, m, m_len); } mic(nonce, m, m_len, a, a_len, result, mic_len); if(forward) { /* encrypt */ ctr(nonce, m, m_len); } }
//--------------------------------------------------------------------------- std::vector<boost::shared_ptr<TFormMachine> > CreateMachines( TFormSimStagecraftMain * const formParent, const int level) { std::vector<boost::shared_ptr<TFormMachine> > machines; switch (level) { case 1: { boost::shared_ptr<TFormMachine> m1( new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> m2( new TFormPar64(0,formParent)); machines.push_back(m1); machines.push_back(m2); } break; case 2: { boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> speaker(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> mic(new TFormShureSm58(0,formParent)); machines.push_back(mic); machines.push_back(speaker); machines.push_back(wallSocket220); } break; case 3: { boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> speaker1(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> speaker2(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> mic(new TFormShureSm58(0,formParent)); boost::shared_ptr<TFormMachine> triplet(new TFormTriplet(0,formParent)); boost::shared_ptr<TFormMachine> soundTable(new TFormSimpleSound1(0,formParent)); machines.push_back(speaker1); machines.push_back(mic); machines.push_back(speaker2); machines.push_back(wallSocket220); machines.push_back(soundTable); machines.push_back(triplet); } break; case 4: { boost::shared_ptr<TFormMachine> dimmerpack(new TFormDimblockV3(0,formParent)); boost::shared_ptr<TFormMachine> lighttable(new TFormSimpleShine1(0,formParent)); boost::shared_ptr<TFormMachine> wallSocketPower(new TFormWallSocketPower(0,formParent)); boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> par64_1(new TFormPar64(0,formParent)); boost::shared_ptr<TFormMachine> par64_2(new TFormPar64(0,formParent)); boost::shared_ptr<TFormMachine> par64_3(new TFormPar64(0,formParent)); boost::shared_ptr<TFormMachine> par64_4(new TFormPar64(0,formParent)); boost::shared_ptr<TFormMachine> par64_5(new TFormPar64(0,formParent)); machines.push_back(wallSocketPower); machines.push_back(dimmerpack); machines.push_back(wallSocket220); machines.push_back(par64_1); machines.push_back(lighttable); machines.push_back(par64_2); machines.push_back(par64_3); machines.push_back(par64_4); machines.push_back(par64_5); } break; case 5: { boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> speaker1(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> speaker2(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> mic1(new TFormShureSm58(0,formParent)); boost::shared_ptr<TFormMachine> mic2(new TFormShureSm58(0,formParent)); boost::shared_ptr<TFormMachine> triplet(new TFormTriplet(0,formParent)); boost::shared_ptr<TFormMachine> soundTable(new TFormSimpleSound2(0,formParent)); machines.push_back(mic1); machines.push_back(triplet); machines.push_back(mic2); machines.push_back(speaker1); machines.push_back(soundTable); machines.push_back(speaker2); machines.push_back(wallSocket220); } break; case 6: { boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> mic1(new TFormShureSm58(0,formParent)); boost::shared_ptr<TFormMachine> speaker1(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> triplet(new TFormTriplet(0,formParent)); boost::shared_ptr<TFormMachine> soundTable3(new TFormSimpleSound3(0,formParent)); machines.push_back(mic1); machines.push_back(speaker1); machines.push_back(wallSocket220); machines.push_back(triplet); machines.push_back(soundTable3); } break; case 7: { boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> mic1(new TFormShureSm58(0,formParent)); boost::shared_ptr<TFormMachine> mic2(new TFormShureSm58(0,formParent)); boost::shared_ptr<TFormMachine> mic3(new TFormShureSm58(0,formParent)); boost::shared_ptr<TFormMachine> speaker1(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> speaker2(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> speaker3(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> speaker4(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> octlet(new TFormOctlet(0,formParent)); boost::shared_ptr<TFormMachine> soundTable3(new TFormSimpleSound3(0,formParent)); machines.push_back(mic1); machines.push_back(mic2); machines.push_back(mic3); machines.push_back(octlet); machines.push_back(speaker1); machines.push_back(speaker2); machines.push_back(speaker3); machines.push_back(speaker4); machines.push_back(wallSocket220); machines.push_back(soundTable3); } break; case 8: { //Put a CD on speakers without using a soundtable boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> speaker1(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> octlet(new TFormOctlet(0,formParent)); boost::shared_ptr<TFormCdPlayer> cdPlayer(new TFormCdPlayer(0,formParent)); boost::shared_ptr<TFormTransitionPieceJackMaleTwoCinchFemale> transitionPiece( new TFormTransitionPieceJackMaleTwoCinchFemale(0,formParent)); machines.push_back(octlet); machines.push_back(speaker1); machines.push_back(wallSocket220); machines.push_back(cdPlayer); machines.push_back(transitionPiece); } break; case 9: { //Put a CD on speakers with using a soundtable boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> speaker1(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> octlet(new TFormOctlet(0,formParent)); boost::shared_ptr<TFormCdPlayer> cdPlayer(new TFormCdPlayer(0,formParent)); boost::shared_ptr<TFormMachine> soundTable4(new TFormSimpleSound4(0,formParent)); machines.push_back(octlet); machines.push_back(speaker1); machines.push_back(cdPlayer); machines.push_back(wallSocket220); machines.push_back(soundTable4); } break; case 10: { //Record a CD on MD play boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> speaker1(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> octlet(new TFormOctlet(0,formParent)); //boost::shared_ptr<TFormMachine> soundTable4(new TFormSimpleSound4(0,formParent)); boost::shared_ptr<TFormMdPlayer> mdPlayer(new TFormMdPlayer(0,formParent)); boost::shared_ptr<TFormCdPlayer> cdPlayer(new TFormCdPlayer(0,formParent)); boost::shared_ptr<TFormTransitionPieceJackMaleTwoCinchFemale> transitionPiece( new TFormTransitionPieceJackMaleTwoCinchFemale(0,formParent)); machines.push_back(octlet); machines.push_back(speaker1); machines.push_back(wallSocket220); //machines.push_back(soundTable4); machines.push_back(mdPlayer); machines.push_back(transitionPiece); machines.push_back(cdPlayer); } break; case 11: { //Record a CD and microphone on MD play boost::shared_ptr<TFormMachine> mic1(new TFormShureSm58(0,formParent)); boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> speaker1(new TFormRcf322A(0,formParent)); boost::shared_ptr<TFormMachine> octlet(new TFormOctlet(0,formParent)); boost::shared_ptr<TFormMachine> soundTable4(new TFormSimpleSound4(0,formParent)); boost::shared_ptr<TFormMdPlayer> mdPlayer(new TFormMdPlayer(0,formParent)); //boost::shared_ptr<TFormCdPlayer> cdPlayer(new TFormCdPlayer(0,formParent)); boost::shared_ptr<TFormTransitionPieceJackMaleTwoCinchFemale> transitionPiece( new TFormTransitionPieceJackMaleTwoCinchFemale(0,formParent)); machines.push_back(wallSocket220); machines.push_back(speaker1); machines.push_back(octlet); machines.push_back(mic1); machines.push_back(soundTable4); machines.push_back(transitionPiece); //machines.push_back(cdPlayer); machines.push_back(mdPlayer); } break; case 12: { //Level 12: Learn to use the crossfader boost::shared_ptr<TFormMachine> dimmerpack(new TFormDimblockV3(0,formParent)); boost::shared_ptr<TFormMachine> lighttable(new TFormSimpleShine2(0,formParent)); boost::shared_ptr<TFormMachine> wallSocketPower(new TFormWallSocketPower(0,formParent)); boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> par64_1(new TFormPar64(0,formParent)); boost::shared_ptr<TFormMachine> par64_2(new TFormPar64(0,formParent)); boost::shared_ptr<TFormMachine> par64_3(new TFormPar64(0,formParent)); boost::shared_ptr<TFormMachine> par64_4(new TFormPar64(0,formParent)); boost::shared_ptr<TFormMachine> par64_5(new TFormPar64(0,formParent)); machines.push_back(wallSocketPower); machines.push_back(dimmerpack); machines.push_back(wallSocket220); machines.push_back(par64_1); machines.push_back(lighttable); machines.push_back(par64_2); machines.push_back(par64_3); machines.push_back(par64_4); machines.push_back(par64_5); } break; case 13: { boost::shared_ptr<TFormMachine> wallSocket220(new TFormWallSocket220(0,formParent)); boost::shared_ptr<TFormMachine> mic(new TFormShureSm58(0,formParent)); boost::shared_ptr<TFormMachine> speaker(new TFormRcfEvent3000(0,formParent)); boost::shared_ptr<TFormMachine> amplifier(new TFormEasyAmp(0,formParent)); machines.push_back(mic); machines.push_back(speaker); machines.push_back(wallSocket220); machines.push_back(amplifier); } break; default: //Do nothing break; } return machines; }