Changeset 6ba9ba for src/Actions/Action_impl_header.hpp
- Timestamp:
- Jun 13, 2012, 5:39:24 PM (13 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 2aad5a
- Parents:
- ab2ebe
- git-author:
- Frederik Heber <heber@…> (06/05/12 14:59:10)
- git-committer:
- Frederik Heber <heber@…> (06/13/12 17:39:24)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/Action_impl_header.hpp
rab2ebe r6ba9ba 14 14 #include <boost/preprocessor/comparison/equal.hpp> 15 15 #include <boost/preprocessor/comparison/not_equal.hpp> 16 #include <boost/preprocessor/control/expr_if.hpp> 16 17 #include <boost/preprocessor/control/if.hpp> 17 18 #include <boost/preprocessor/debug/assert.hpp> 18 19 #include <boost/preprocessor/iteration/local.hpp> 20 #include <boost/preprocessor/list/adt.hpp> 19 21 #include <boost/preprocessor/punctuation/comma_if.hpp> 22 #include <boost/preprocessor/punctuation/paren.hpp> 20 23 #include <boost/preprocessor/repetition/repeat.hpp> 21 24 #include <boost/preprocessor/seq/elem.hpp> … … 49 52 #define MAXPARAMTYPES BOOST_PP_SEQ_SIZE(paramtypes) 50 53 #endif 54 #ifndef paramdefaults 55 #define MAXPARAMDEFAULTS 0 56 // this is required for valid_print "else part" 57 #define sequencer(z,n,data) \ 58 BOOST_PP_SEQ_PUSH_BACK( data, NOPARAM_DEFAULT) 59 #define paramdefaults BOOST_PP_REPEAT( MAXPARAMTYPES, sequencer, BOOST_PP_SEQ_NIL ) 60 #else 61 #define MAXPARAMDEFAULTS BOOST_PP_SEQ_SIZE(paramdefaults) 62 #endif 63 #define PARAM_DEFAULT(x) \ 64 (x, BOOST_PP_NIL) 51 65 52 66 // check user has given name and category … … 79 93 #endif 80 94 81 // check if paramdefaults is given, otherwise fill list with NO DEFAULT95 // check if paramdefaults is given, otherwise fill list with NOPARAM_DEFAULT 82 96 // this does not work: paramdefaults has to be completely defined before 83 97 // being used within option_print (used as an array there and not as 84 98 // some function call still to be expanded) 85 //#define paramdefaults (NO DEFAULT)99 //#define paramdefaults (NOPARAM_DEFAULT) 86 100 //#define tempvalue(z,n,value) 87 // BOOST_PP_CAT(value,(NO DEFAULT))101 // BOOST_PP_CAT(value,(NOPARAM_DEFAULT)) 88 102 //BOOST_PP_REPEAT(tempvalue, MAXPARAMTYPES, paramdefaults) 89 103 //#undef tempvalue … … 112 126 113 127 // prints Options.insert 114 #ifdef paramdefaults115 128 #define option_print(z,n,unused, unused2) \ 116 129 tester = Options. insert (\ … … 120 133 BOOST_PP_SEQ_ELEM(n, paramtokens), \ 121 134 &typeid( BOOST_PP_SEQ_ELEM(n, paramtypes) ), \ 122 BOOST_PP_SEQ_ELEM(n, paramdescriptions), \ 123 std::string( BOOST_PP_SEQ_ELEM(n, paramdefaults) ) )\ 135 BOOST_PP_SEQ_ELEM(n, paramdescriptions) \ 136 BOOST_PP_COMMA_IF( BOOST_PP_NOT( BOOST_PP_LIST_IS_NIL( BOOST_PP_SEQ_ELEM(n, paramdefaults) ) ) ) \ 137 BOOST_PP_EXPR_IF( \ 138 BOOST_PP_NOT( BOOST_PP_LIST_IS_NIL( BOOST_PP_SEQ_ELEM(n, paramdefaults) ) ), \ 139 toString BOOST_PP_LPAREN() \ 140 BOOST_PP_LIST_FIRST( BOOST_PP_SEQ_ELEM(n, paramdefaults) )) \ 141 BOOST_PP_RPAREN() \ 142 )\ 124 143 )\ 125 144 ); \ 126 145 ASSERT(tester.second, "ActionTrait<ACTION>::ActionTrait<ACTION>() option token present twice!"); 127 #else128 #define option_print(z,n,unused, unused2) \129 tester = Options. insert (\130 std::pair< std::string, OptionTrait *> ( \131 BOOST_PP_SEQ_ELEM(n, paramtokens), \132 new OptionTrait(\133 BOOST_PP_SEQ_ELEM(n, paramtokens), \134 &typeid( BOOST_PP_SEQ_ELEM(n, paramtypes) ), \135 BOOST_PP_SEQ_ELEM(n, paramdescriptions), \136 NODEFAULT )\137 )\138 ); \139 ASSERT(tester.second, "ActionTrait<ACTION>::ActionTrait<ACTION>() option token present twice!");140 #endif141 146 142 147 namespace MoleCuilder { … … 242 247 #undef paramdefaults 243 248 #undef MAXPARAMTYPES 249 #undef MAXPARAMDEFAULTS 244 250 #undef statetypes 245 251 #undef statereferences 246 252 #undef MAXSTATETYPES 253 #undef PARAM_DEFAULT 247 254 248 255 #undef option_print 256 #undef sequencer 249 257 #undef type_print 250 258 #undef type_list
Note:
See TracChangeset
for help on using the changeset viewer.