Changeset 37a67f for src/UIElements


Ignore:
Timestamp:
Jun 11, 2015, 11:21:41 PM (10 years ago)
Author:
Frederik Heber <heber@…>
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:
08d042
Parents:
043598
git-author:
Frederik Heber <heber@…> (05/17/15 13:50:53)
git-committer:
Frederik Heber <heber@…> (06/11/15 23:21:41)
Message:

Replaced Query.. class and query..() function declarations in Dialog.. by boost preprocessor magic.

  • this removes a lot of copy&paste code.
Location:
src/UIElements
Files:
3 added
8 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/CommandLineUI/CommandLineDialog.hpp

    r043598 r37a67f  
    3434
    3535  virtual void queryEmpty(const std::string ="", const std::string = "");
    36   virtual void queryInt(Parameter<int> &, const std::string ="", const std::string = "");
    37   virtual void queryInts(Parameter<std::vector<int> > &, const std::string ="", const std::string = "");
    38   virtual void queryUnsignedInt(Parameter<unsigned int> &, const std::string ="", const std::string = "");
    39   virtual void queryUnsignedInts(Parameter<std::vector<unsigned int> > &, const std::string ="", const std::string = "");
    40   virtual void queryBoolean(Parameter<bool> &, const std::string ="", const std::string = "");
    41   virtual void queryString(Parameter<std::string> &, const std::string ="", const std::string = "");
    42   virtual void queryStrings(Parameter<std::vector<std::string> > &, const std::string ="", const std::string = "");
    43   virtual void queryDouble(Parameter<double> &, const std::string ="", const std::string = "");
    44   virtual void queryDoubles(Parameter<std::vector<double> > &, const std::string ="", const std::string = "");
    45   virtual void queryAtom(Parameter<const atom *> &, const std::string ="", const std::string = "");
    46   virtual void queryAtoms(Parameter<std::vector<const atom *> > &, const std::string ="", const std::string = "");
    47   virtual void queryMolecule(Parameter<const molecule *> &, const std::string ="", const std::string = "");
    48   virtual void queryMolecules(Parameter<std::vector<const molecule *> > &, const std::string ="", const std::string = "");
    49   virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = "");
    50   virtual void queryVectors(Parameter<std::vector<Vector> > &, const std::string ="", const std::string = "");
    51   virtual void queryRealSpaceMatrix(Parameter<RealSpaceMatrix> &, const std::string ="", const std::string = "");
    52   virtual void queryElement(Parameter<const element *> &, const std::string ="", const std::string = "");
    53   virtual void queryElements(Parameter<std::vector<const element *> > &, const std::string ="", const std::string = "");
    54   virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = "");
    55   virtual void queryFiles(Parameter<std::vector< boost::filesystem::path> > &, const std::string ="", const std::string = "");
    56   virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = "");
    57   virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = "");
    5836
    59   // specialized stuff for command line queries
    60   // all placed into Query/CommandLineQuery.hpp
    61   // !please adhere to alphabetical ordering!
     37protected:
    6238
    63   class AtomCommandLineQuery;
    64   class AtomsCommandLineQuery;
    65   class BooleanCommandLineQuery;
    66   class DoubleCommandLineQuery;
    67   class DoublesCommandLineQuery;
    68   class ElementCommandLineQuery;
    69   class ElementsCommandLineQuery;
    7039  class EmptyCommandLineQuery;
    71   class FileCommandLineQuery;
    72   class FilesCommandLineQuery;
    73   class IntCommandLineQuery;
    74   class IntsCommandLineQuery;
    75   class KeyValuePairCommandLineQuery;
    76   class KeyValuePairsCommandLineQuery;
    77   class MoleculeCommandLineQuery;
    78   class MoleculesCommandLineQuery;
    79   class RealSpaceMatrixCommandLineQuery;
    80   class StringCommandLineQuery;
    81   class StringsCommandLineQuery;
    82   class UnsignedIntCommandLineQuery;
    83   class UnsignedIntsCommandLineQuery;
    84   class VectorCommandLineQuery;
    85   class VectorsCommandLineQuery;
     40
     41  /** With the following boost::preprocessor code we generate virtual function
     42   * definitions and forward declarations for all desired query types in the
     43   * CommandLineUI specialization of class Dialog.
     44   */
     45#include "UIElements/GlobalListOfParameterQueries.hpp"
     46#include "UIElements/Dialog_impl_pre.hpp"
     47
     48  #include <boost/preprocessor/facilities/empty.hpp>
     49
     50  // iterate over all parameter query types for query declarations
     51  #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
     52  #define SUFFIX BOOST_PP_EMPTY()
     53  #define BOOST_PP_LOCAL_MACRO(n) dialog_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type)
     54  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMETERTOKENS-1)
     55  #include BOOST_PP_LOCAL_ITERATE()
     56  #undef dialog_declaration
     57  #undef SUFFIX
     58  #endif
     59
     60  // iterate over all parameter query types for forward declarations
     61  #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
     62  #define BOOST_PP_LOCAL_MACRO(n) forward_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, CommandLineQuery)
     63  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMETERTOKENS-1)
     64  #include BOOST_PP_LOCAL_ITERATE()
     65  #undef forward_declaration
     66  #endif
     67
     68#include "Dialog_impl_undef.hpp"
     69  /* End of preprocessor code piece */
     70
    8671};
    8772
  • src/UIElements/CommandLineUI/Query/CommandLineQuery.hpp

    r043598 r37a67f  
    2424};
    2525
    26 class CommandLineDialog::IntCommandLineQuery : public Dialog::TQuery<int> {
    27 public:
    28   IntCommandLineQuery(Parameter<int> &_param, const std::string &_title, const std::string &_description = "");
    29   virtual ~IntCommandLineQuery();
    30   virtual bool handle();
    31 };
     26  /** With the following boost::preprocessor code we generate forward declarations
     27   * of query class for all desired query types in the Qt specialization class of
     28   * Dialog.
     29   */
     30#include "UIElements/GlobalListOfParameterQueries.hpp"
     31#include "UIElements/Dialog_impl_pre.hpp"
    3232
    33 class CommandLineDialog::IntsCommandLineQuery : public Dialog::TQuery<std::vector<int> > {
    34 public:
    35   IntsCommandLineQuery(Parameter<std::vector<int> > &_param, const std::string &_title, const std::string &_description = "");
    36   virtual ~IntsCommandLineQuery();
    37   virtual bool handle();
    38 };
     33  #include <boost/preprocessor/facilities/empty.hpp>
    3934
    40 class CommandLineDialog::UnsignedIntCommandLineQuery : public Dialog::TQuery<unsigned int> {
    41 public:
    42   UnsignedIntCommandLineQuery(Parameter<unsigned int> &_param, const std::string &_title, const std::string &_description = "");
    43   virtual ~UnsignedIntCommandLineQuery();
    44   virtual bool handle();
    45 };
     35  // iterate over all parameter query types for forward declarations
     36  #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
     37  #define BOOST_PP_LOCAL_MACRO(n) queryclass_definition(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type, CommandLine)
     38  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMETERTOKENS-1)
     39  #include BOOST_PP_LOCAL_ITERATE()
     40  #undef queryclass_definition
     41  #endif
    4642
    47 class CommandLineDialog::UnsignedIntsCommandLineQuery : public Dialog::TQuery<std::vector<unsigned int> > {
    48 public:
    49   UnsignedIntsCommandLineQuery(Parameter<std::vector<unsigned int> > &_param, const std::string &_title, const std::string &_description = "");
    50   virtual ~UnsignedIntsCommandLineQuery();
    51   virtual bool handle();
    52 };
     43#include "Dialog_impl_undef.hpp"
     44  /* End of preprocessor code piece */
    5345
    54 class CommandLineDialog::BooleanCommandLineQuery : public Dialog::TQuery<bool> {
    55 public:
    56   BooleanCommandLineQuery(Parameter<bool> &_param, const std::string &_title, const std::string &_description = "");
    57   virtual ~BooleanCommandLineQuery();
    58   virtual bool handle();
    59 };
    60 
    61 class CommandLineDialog::DoubleCommandLineQuery : public Dialog::TQuery<double> {
    62 public:
    63   DoubleCommandLineQuery(Parameter<double> &_param, const std::string &_title, const std::string &_description = "");
    64   virtual ~DoubleCommandLineQuery();
    65   virtual bool handle();
    66 };
    67 
    68 class CommandLineDialog::DoublesCommandLineQuery : public Dialog::TQuery<std::vector<double> > {
    69 public:
    70   DoublesCommandLineQuery(Parameter<std::vector<double> > &_param, const std::string &_title, const std::string &_description = "");
    71   virtual ~DoublesCommandLineQuery();
    72   virtual bool handle();
    73 };
    74 
    75 class CommandLineDialog::StringCommandLineQuery : public Dialog::TQuery<std::string> {
    76 public:
    77   StringCommandLineQuery(Parameter<std::string> &_param, const std::string &_title, const std::string &_description = "");
    78   virtual ~StringCommandLineQuery();
    79   virtual bool handle();
    80 };
    81 
    82 class CommandLineDialog::StringsCommandLineQuery : public Dialog::TQuery<std::vector<std::string> > {
    83 public:
    84   StringsCommandLineQuery(Parameter<std::vector<std::string> > &_param, const std::string &_title, const std::string &_description = "");
    85   virtual ~StringsCommandLineQuery();
    86   virtual bool handle();
    87 };
    88 
    89 class CommandLineDialog::AtomCommandLineQuery : public Dialog::TQuery<const atom *> {
    90 public:
    91   AtomCommandLineQuery(Parameter<const atom *> &_param, const std::string &_title, const std::string &_description = "");
    92   virtual ~AtomCommandLineQuery();
    93   virtual bool handle();
    94 };
    95 
    96 class CommandLineDialog::AtomsCommandLineQuery : public Dialog::TQuery<std::vector<const atom*> > {
    97 public:
    98   AtomsCommandLineQuery(Parameter<std::vector<const atom *> > &_param, const std::string &_title, const std::string &_description = "");
    99   virtual ~AtomsCommandLineQuery();
    100   virtual bool handle();
    101 };
    102 
    103 class CommandLineDialog::MoleculeCommandLineQuery : public Dialog::TQuery<const molecule *> {
    104 public:
    105   MoleculeCommandLineQuery(Parameter<const molecule *> &_param, const std::string &_title, const std::string &_description = "");
    106   virtual ~MoleculeCommandLineQuery();
    107   virtual bool handle();
    108 };
    109 
    110 class CommandLineDialog::MoleculesCommandLineQuery : public Dialog::TQuery<std::vector<const molecule*> > {
    111 public:
    112   MoleculesCommandLineQuery(Parameter<std::vector<const molecule *> > &_param, const std::string &_title, const std::string &_description = "");
    113   virtual ~MoleculesCommandLineQuery();
    114   virtual bool handle();
    115 };
    116 
    117 class CommandLineDialog::VectorCommandLineQuery : public Dialog::TQuery<Vector> {
    118 public:
    119   VectorCommandLineQuery(Parameter<Vector> &_param, const std::string &_title, const std::string &_description = "");
    120   virtual ~VectorCommandLineQuery();
    121   virtual bool handle();
    122 };
    123 
    124 class CommandLineDialog::VectorsCommandLineQuery : public Dialog::TQuery<std::vector<Vector> > {
    125 public:
    126   VectorsCommandLineQuery(Parameter<std::vector<Vector> > &_param, const std::string &_title, const std::string &_description = "");
    127   virtual ~VectorsCommandLineQuery();
    128   virtual bool handle();
    129 };
    130 
    131 class CommandLineDialog::RealSpaceMatrixCommandLineQuery : public Dialog::TQuery<RealSpaceMatrix> {
    132 public:
    133   RealSpaceMatrixCommandLineQuery(Parameter<RealSpaceMatrix> &_param, const std::string &_title, const std::string &_description = "");
    134   virtual ~RealSpaceMatrixCommandLineQuery();
    135   virtual bool handle();
    136 };
    137 
    138 class CommandLineDialog::ElementCommandLineQuery : public Dialog::TQuery<const element *> {
    139 public:
    140   ElementCommandLineQuery(Parameter<const element *> &_param, const std::string &_title, const std::string &_description = "");
    141   virtual ~ElementCommandLineQuery();
    142   virtual bool handle();
    143 };
    144 
    145 class CommandLineDialog::ElementsCommandLineQuery : public Dialog::TQuery<std::vector<const element *> > {
    146 public:
    147   ElementsCommandLineQuery(Parameter<std::vector<const element *> > &_param, const std::string &_title, const std::string &_description = "");
    148   virtual ~ElementsCommandLineQuery();
    149   virtual bool handle();
    150 };
    151 
    152 class CommandLineDialog::FileCommandLineQuery : public Dialog::TQuery<boost::filesystem::path> {
    153 public:
    154   FileCommandLineQuery(Parameter<boost::filesystem::path> &_param, const std::string &_title, const std::string &_description = "");
    155   virtual ~FileCommandLineQuery();
    156   virtual bool handle();
    157 };
    158 
    159 class CommandLineDialog::FilesCommandLineQuery : public Dialog::TQuery<std::vector<boost::filesystem::path> > {
    160 public:
    161   FilesCommandLineQuery(Parameter<std::vector< boost::filesystem::path> > &param, const std::string &_title, const std::string &_description = "");
    162   virtual ~FilesCommandLineQuery();
    163   virtual bool handle();
    164 };
    165 
    166 class CommandLineDialog::KeyValuePairCommandLineQuery : public Dialog::TQuery<KeyValuePair> {
    167 public:
    168   KeyValuePairCommandLineQuery(Parameter<KeyValuePair> &_param, const std::string &_title, const std::string &_description = "");
    169   virtual ~KeyValuePairCommandLineQuery();
    170   virtual bool handle();
    171 };
    172 
    173 class CommandLineDialog::KeyValuePairsCommandLineQuery : public Dialog::TQuery<std::vector<KeyValuePair> > {
    174 public:
    175   KeyValuePairsCommandLineQuery(Parameter<std::vector<KeyValuePair> > &_param, const std::string &_title, const std::string &_description = "");
    176   virtual ~KeyValuePairsCommandLineQuery();
    177   virtual bool handle();
    178 };
    17946
    18047#endif /* COMMANDLINEQUERY_HPP_ */
  • src/UIElements/Dialog.cpp

    r043598 r37a67f  
    135135}*/
    136136
    137 template <> void Dialog::query<bool>(Parameter<bool> &param, const std::string title, const std::string description)
    138 {
    139   queryBoolean(param, title, description);
    140 }
     137/** With the following boost::preprocessor code we generate template
     138 * specializations for each desired query types in the abstract class Dialog.
     139 */
     140#include "UIElements/GlobalListOfParameterQueries.hpp"
     141#include "UIElements/Dialog_impl_pre.hpp"
    141142
    142 template <> void Dialog::query<int>(Parameter<int> &param, const std::string title, const std::string description)
    143 {
    144   queryInt(param, title, description);
    145 }
     143  // print a template body
     144  #define dialog_definition(z,n,TOKENLIST,TYPELIST) \
     145  template <> void Dialog::query< \
     146    BOOST_PP_SEQ_ELEM(n, TYPELIST) \
     147  >(Parameter< \
     148    BOOST_PP_SEQ_ELEM(n, TYPELIST) \
     149  > &param, const std::string title, const std::string description) { \
     150  BOOST_PP_CAT(query, BOOST_PP_SEQ_ELEM(n, TOKENLIST)) \
     151  (param, title, description); }
    146152
    147 template <> void Dialog::query< std::vector<int> >(Parameter<std::vector<int> > &param, const std::string title, const std::string description)
    148 {
    149   queryInts(param, title, description);
    150 }
     153  // print template specialization for every query type
     154  #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
     155  #define BOOST_PP_LOCAL_MACRO(n) dialog_definition(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type)
     156  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMETERTOKENS-1)
     157  #include BOOST_PP_LOCAL_ITERATE()
     158  #endif
    151159
    152 template <> void Dialog::query<unsigned int>(Parameter<unsigned int> &param, const std::string title, const std::string description)
    153 {
    154   queryUnsignedInt(param, title, description);
    155 }
     160  #undef dialog_definition
    156161
    157 template <> void Dialog::query< std::vector<unsigned int> >(Parameter<std::vector<unsigned int> > &param, const std::string title, const std::string description)
    158 {
    159   queryUnsignedInts(param, title, description);
    160 }
     162#include "Dialog_impl_undef.hpp"
     163/* End of preprocessor code piece */
    161164
    162 template <> void Dialog::query<double>(Parameter<double> &param, const std::string title, const std::string description)
    163 {
    164   queryDouble(param, title, description);
    165 }
    166 
    167 template <> void Dialog::query< std::vector<double> >(Parameter<std::vector<double> > &param, const std::string title, const std::string description)
    168 {
    169   queryDoubles(param, title, description);
    170 }
    171 
    172 template <> void Dialog::query<std::string>(Parameter<std::string> &param, const std::string title, const std::string description)
    173 {
    174   queryString(param, title, description);
    175 }
    176 
    177 template <> void Dialog::query< std::vector<std::string> >(Parameter<std::vector<std::string> > &param, const std::string title, const std::string description)
    178 {
    179   queryStrings(param, title, description);
    180 }
    181 
    182 template <> void Dialog::query<const atom *>(Parameter<const atom *> &param, const std::string title, const std::string description)
    183 {
    184   queryAtom(param, title, description);
    185 }
    186 
    187 template <> void Dialog::query< std::vector<const atom *> >(Parameter<std::vector<const atom *> > &param, const std::string title, const std::string description)
    188 {
    189   queryAtoms(param, title, description);
    190 }
    191 
    192 template <> void Dialog::query<const molecule *>(Parameter<const molecule *> &param, const std::string title, const std::string description)
    193 {
    194   queryMolecule(param, title, description);
    195 }
    196 
    197 template <> void Dialog::query< std::vector<const molecule *> >(Parameter<std::vector<const molecule *> > &param, const std::string title, const std::string description)
    198 {
    199   queryMolecules(param, title, description);
    200 }
    201 
    202 template <> void Dialog::query<Vector>(Parameter<Vector> &param, const std::string title, const std::string description)
    203 {
    204   queryVector(param, title, description);
    205 }
    206 
    207 template <> void Dialog::query< std::vector<Vector> >(Parameter<std::vector<Vector> > &param, const std::string title, const std::string description)
    208 {
    209   queryVectors(param, title, description);
    210 }
    211 
    212 template <> void Dialog::query<RealSpaceMatrix>(Parameter<RealSpaceMatrix> &param, const std::string title, const std::string description)
    213 {
    214   queryRealSpaceMatrix(param, title, description);
    215 }
    216 
    217 template <> void Dialog::query<const element *>(Parameter<const element *> &param, const std::string title, const std::string description)
    218 {
    219   queryElement(param, title, description);
    220 }
    221 
    222 template <> void Dialog::query< std::vector<const element *> >(Parameter<std::vector<const element *> > &param, const std::string title, const std::string description)
    223 {
    224   queryElements(param, title, description);
    225 }
    226 
    227 template <> void Dialog::query< boost::filesystem::path >(Parameter<boost::filesystem::path> &param, const std::string title, const std::string description)
    228 {
    229   queryFile(param, title, description);
    230 }
    231 
    232 template <> void Dialog::query< std::vector<boost::filesystem::path> >(Parameter<std::vector< boost::filesystem::path> > &param, const std::string title, const std::string description)
    233 {
    234   queryFiles(param, title, description);
    235 }
    236 
    237 template <> void Dialog::query< KeyValuePair >(Parameter<KeyValuePair> &param, const std::string title, const std::string description)
    238 {
    239   queryKeyValuePair(param, title, description);
    240 }
    241 
    242 template <> void Dialog::query< std::vector<KeyValuePair> >(Parameter< std::vector<KeyValuePair> > &param, const std::string title, const std::string description)
    243 {
    244   queryKeyValuePairs(param, title, description);
    245 }
     165//template <> void Dialog::query< std::vector<KeyValuePair> >(Parameter< std::vector<KeyValuePair> > &param, const std::string title, const std::string description)
     166//{
     167//  queryKeyValuePairs(param, title, description);
     168//}
    246169
    247170/************************** Query Infrastructure ************************/
  • src/UIElements/Dialog.hpp

    r043598 r37a67f  
    132132 * Due to the three present UI interfaces we have to add a specific Query for each, here
    133133 * is a list:
    134  *   -# add ValueStorage::setCurrentValue() and ValueStorage::queryCurrentValue() for
    135  *      both types
    136  *   -# add Dialog::query...()
    137  *   -# add Dialog::query<>() specialization calling the above function
    138  *   -# add CommandLineDialog::query...(), TextDialog::query...(), and QtDialog::query...(),
    139  *      i.e. for each of the three interface
    140  *   -# add empty definition DummyDialog::query...() to the stub for Action unittests in DummUI.hpp.
    141  *   -# add Dialog::...Query class with tmp value of desired type
     134 *   -# add a token (i.e. a unique name for the query parameter) and its type to the
     135 *      global list in \ref GlobalListOfParameterQueries.hpp. This will via boost
     136 *      preprocessor magic add definitions and some intermediatr template specializations.
     137 *   -# add a specialization for each of the UI interfaces of Dialog::...Query class.
     138 *   -# add class declaration of QtDialog::...Query in \ref QtQuery.hpp
    142139 *   -# add CommandLineDialog::...Query, TextDialog::...Query, QtDialog::...Query
    143  *   -# you probably also need a QtDialog::...QueryPipe() to handle the signal/slot stuff,
    144  *      Qt's moc does not like nested classes. Hence, this has to go extra.
    145  *   -# TypeEnumContainer add new type to query
     140 *   -# TypeEnumContainer add new type to query. Make the Type name match with the token
    146141 *   -# CommandLineParser::AddOptionToParser() add new type to query
    147142 *   -# CommandLineParser_valdiates.[ch]pp: If given above as a new type
    148143 *      program_options::value, define and implement a validate() function here.
     144 *
     145 * Note that the Empty..Query is always specificly present as it has not type and thus
     146 * does not fit into the preprocessor magic scheme (on the plus side it also serves
     147 * as a kind of visualization of what the preprocessor actually does).
    149148 *
    150149 */
     
    158157
    159158  virtual void queryEmpty(const std::string ="", const std::string = "")=0;
    160   virtual void queryBoolean(Parameter<bool> &, const std::string ="", const std::string = "")=0;
    161   virtual void queryInt(Parameter<int> &, const std::string ="", const std::string = "")=0;
    162   virtual void queryInts(Parameter<std::vector<int> > &, const std::string ="", const std::string = "")=0;
    163   virtual void queryUnsignedInt(Parameter<unsigned int> &, const std::string ="", const std::string = "")=0;
    164   virtual void queryUnsignedInts(Parameter<std::vector<unsigned int> > &, const std::string ="", const std::string = "")=0;
    165   virtual void queryDouble(Parameter<double> &, const std::string ="", const std::string = "")=0;
    166   virtual void queryDoubles(Parameter<std::vector<double> > &, const std::string ="", const std::string = "")=0;
    167   virtual void queryString(Parameter<std::string> &, const std::string ="", const std::string = "")=0;
    168   virtual void queryStrings(Parameter<std::vector<std::string> > &, const std::string ="", const std::string = "")=0;
    169   virtual void queryAtom(Parameter<const atom *> &, const std::string = "", const std::string = "")=0;
    170   virtual void queryAtoms(Parameter<std::vector<const atom *> > &, const std::string = "", const std::string = "")=0;
    171   virtual void queryMolecule(Parameter<const molecule *> &, const std::string ="", const std::string = "")=0;
    172   virtual void queryMolecules(Parameter<std::vector<const molecule *> > &, const std::string ="", const std::string = "")=0;
    173   virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = "")=0;
    174   virtual void queryVectors(Parameter<std::vector<Vector> > &, const std::string ="", const std::string = "")=0;
    175   virtual void queryRealSpaceMatrix(Parameter<RealSpaceMatrix> &, const std::string ="", const std::string = "")=0;
    176   virtual void queryElement(Parameter<const element *> &, const std::string ="", const std::string = "")=0;
    177   virtual void queryElements(Parameter<std::vector<const element *> > &, const std::string ="", const std::string = "")=0;
    178   virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = "")=0;
    179   virtual void queryFiles(Parameter< std::vector<boost::filesystem::path> > &, const std::string ="", const std::string = "")=0;
    180   virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = "")=0;
    181   virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = "")=0;
     159
     160  /** With the following boost::preprocessor code we generate virtual function
     161   * definitions for all desired query types in the abstract class Dialog.
     162   */
     163#include "UIElements/GlobalListOfParameterQueries.hpp"
     164#include "UIElements/Dialog_impl_pre.hpp"
     165
     166  // iterate over all parameter query types
     167  #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
     168  #define SUFFIX =0
     169  #define BOOST_PP_LOCAL_MACRO(n) dialog_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type)
     170  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMETERTOKENS-1)
     171  #include BOOST_PP_LOCAL_ITERATE()
     172  #undef dialog_declaration
     173  #undef SUFFIX
     174  #endif
     175
     176#include "Dialog_impl_undef.hpp"
     177  /* End of preprocessor code piece */
    182178
    183179  virtual bool display();
     
    286282};
    287283
    288 
    289284#endif /* DIALOG_HPP_ */
  • src/UIElements/Makefile.am

    r043598 r37a67f  
    140140  ${VIEWHEADER} \
    141141  UIElements/Dialog.hpp \
     142  UIElements/Dialog_impl_pre.hpp \
     143  UIElements/Dialog_impl_undef.hpp \
     144  UIElements/GlobalListOfParameterQueries.hpp \
    142145  UIElements/MainWindow.hpp
    143146
  • src/UIElements/Qt4/QtDialog.hpp

    r043598 r37a67f  
    3535
    3636  virtual void queryEmpty(const std::string ="", const std::string = "");
    37   virtual void queryBoolean(Parameter<bool> &, const std::string ="", const std::string = "");
    38   virtual void queryInt(Parameter<int> &, const std::string ="", const std::string = "");
    39   virtual void queryInts(Parameter<std::vector<int> > &, const std::string ="", const std::string = "");
    40   virtual void queryUnsignedInt(Parameter<unsigned int> &, const std::string ="", const std::string = "");
    41   virtual void queryUnsignedInts(Parameter<std::vector<unsigned int> > &, const std::string ="", const std::string = "");
    42   virtual void queryDouble(Parameter<double> &, const std::string ="", const std::string = "");
    43   virtual void queryDoubles(Parameter<std::vector<double> > &, const std::string ="", const std::string = "");
    44   virtual void queryString(Parameter<std::string> &, const std::string ="", const std::string = "");
    45   virtual void queryStrings(Parameter<std::vector<std::string> > &, const std::string ="", const std::string = "");
    46   virtual void queryAtom(Parameter<const atom *> &, const std::string ="", const std::string = "");
    47   virtual void queryAtoms(Parameter<std::vector<const atom *> > &, const std::string ="", const std::string = "");
    48   virtual void queryMolecule(Parameter<const molecule *> &, const std::string ="", const std::string = "");
    49   virtual void queryMolecules(Parameter<std::vector<const molecule *> > &, const std::string ="", const std::string = "");
    50   virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = "");
    51   virtual void queryVectors(Parameter<std::vector<Vector> > &, const std::string ="", const std::string = "");
    52   virtual void queryRealSpaceMatrix(Parameter<RealSpaceMatrix> &, const std::string ="", const std::string = "");
    53   virtual void queryElement(Parameter<const element *> &, const std::string ="", const std::string = "");
    54   virtual void queryElements(Parameter<std::vector<const element *> > &, const std::string ="", const std::string = "");
    55   virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = "");
    56   virtual void queryFiles(Parameter<std::vector< boost::filesystem::path> > &, const std::string ="", const std::string = "");
    57   virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = "");
    58   virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = "");
     37
     38  /** With the following boost::preprocessor code we generate virtual function
     39   * definitions for all desired query types in the abstract class Dialog.
     40   */
     41#include "UIElements/GlobalListOfParameterQueries.hpp"
     42#include "UIElements/Dialog_impl_pre.hpp"
     43
     44  #include <boost/preprocessor/facilities/empty.hpp>
     45
     46  // iterate over all parameter query types
     47  #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
     48  #define SUFFIX BOOST_PP_EMPTY()
     49  #define BOOST_PP_LOCAL_MACRO(n) dialog_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type)
     50  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMETERTOKENS-1)
     51  #include BOOST_PP_LOCAL_ITERATE()
     52  #undef dialog_declaration
     53  #undef SUFFIX
     54  #endif
     55
     56#include "Dialog_impl_undef.hpp"
     57  /* End of preprocessor code piece */
    5958
    6059  virtual bool display();
     
    6362
    6463protected:
    65   class AtomQtQuery;
    66   class AtomsQtQuery;
    67   class BooleanQtQuery;
    68   class RealSpaceMatrixQtQuery;
    69   class DoubleQtQuery;
    70   class DoublesQtQuery;
    71   class ElementQtQuery;
    72   class ElementsQtQuery;
     64
    7365  class EmptyQtQuery;
    74   class FileQtQuery;
    75   class FilesQtQuery;
    76   class IntQtQuery;
    77   class IntsQtQuery;
    78   class KeyValuePairQtQuery;
    79   class KeyValuePairsQtQuery;
    80   class MoleculeQtQuery;
    81   class MoleculesQtQuery;
    82   class StringQtQuery;
    83   class StringsQtQuery;
    84   class UnsignedIntQtQuery;
    85   class UnsignedIntsQtQuery;
    86   class VectorQtQuery;
    87   class VectorsQtQuery;
     66
     67  /** With the following boost::preprocessor code we generate forward declarations
     68   * of query class for all desired query types in the Qt specialization class of
     69   * Dialog.
     70   */
     71#include "UIElements/GlobalListOfParameterQueries.hpp"
     72#include "UIElements/Dialog_impl_pre.hpp"
     73
     74  #include <boost/preprocessor/facilities/empty.hpp>
     75
     76  // iterate over all parameter query types for forward declarations
     77  #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
     78  #define BOOST_PP_LOCAL_MACRO(n) forward_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, QtQuery)
     79  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMETERTOKENS-1)
     80  #include BOOST_PP_LOCAL_ITERATE()
     81  #undef forward_declaration
     82  #endif
     83
     84#include "Dialog_impl_undef.hpp"
     85  /* End of preprocessor code piece */
    8886
    8987private:
  • src/UIElements/TextUI/Query/TextQuery.hpp

    r043598 r37a67f  
    1717#include "TextUI/TextDialog.hpp"
    1818
    19 class TextDialog::AtomTextQuery : public Dialog::TQuery<const atom *> {
    20 public:
    21   AtomTextQuery(Parameter<const atom *> &, const std::string &_title, const std::string &_description = NULL);
    22   virtual ~AtomTextQuery();
    23   virtual bool handle();
    24 };
    25 
    26 class TextDialog::AtomsTextQuery : public Dialog::TQuery<std::vector<const atom *> > {
    27 public:
    28   AtomsTextQuery(Parameter<std::vector<const atom *> > &, const std::string &_title, const std::string &_description = NULL);
    29   virtual ~AtomsTextQuery();
    30   virtual bool handle();
    31 };
    32 
    33 class TextDialog::BooleanTextQuery : public Dialog::TQuery<bool> {
    34 public:
    35   BooleanTextQuery(Parameter<bool> &, const std::string &_title, const std::string &_description = NULL);
    36   virtual ~BooleanTextQuery();
    37   virtual bool handle();
    38 };
    39 
    40 class TextDialog::RealSpaceMatrixTextQuery : public Dialog::TQuery<RealSpaceMatrix> {
    41 public:
    42   RealSpaceMatrixTextQuery(Parameter<RealSpaceMatrix> &, const std::string &_title, const std::string &_description = NULL);
    43   virtual ~RealSpaceMatrixTextQuery();
    44   virtual bool handle();
    45 };
    46 
    47 class TextDialog::DoubleTextQuery : public Dialog::TQuery<double> {
    48 public:
    49   DoubleTextQuery(Parameter<double> &, const std::string &_title, const std::string &_description = NULL);
    50   virtual ~DoubleTextQuery();
    51   virtual bool handle();
    52 };
    53 
    54 class TextDialog::DoublesTextQuery : public Dialog::TQuery<std::vector<double> > {
    55 public:
    56   DoublesTextQuery(Parameter<std::vector<double> > &, const std::string &_title, const std::string &_description = NULL);
    57   virtual ~DoublesTextQuery();
    58   virtual bool handle();
    59 };
    60 
    61 class TextDialog::ElementTextQuery : public Dialog::TQuery<const element *> {
    62 public:
    63   ElementTextQuery(Parameter<const element *> &, const std::string &_title, const std::string &_description = NULL);
    64   virtual ~ElementTextQuery();
    65   virtual bool handle();
    66 };
    67 
    68 class TextDialog::ElementsTextQuery : public Dialog::TQuery<std::vector<const element *> > {
    69 public:
    70   ElementsTextQuery(Parameter<std::vector<const element *> > &, const std::string &_title, const std::string &_description = NULL);
    71   virtual ~ElementsTextQuery();
    72   virtual bool handle();
    73 };
    74 
    7519class TextDialog::EmptyTextQuery : public Dialog::EmptyQuery {
    7620public:
     
    8024};
    8125
    82 class TextDialog::FileTextQuery : public Dialog::TQuery<boost::filesystem::path> {
    83 public:
    84   FileTextQuery(Parameter<boost::filesystem::path> &, const std::string &_title, const std::string &_description = NULL);
    85   virtual ~FileTextQuery();
    86   virtual bool handle();
    87 };
    8826
    89 class TextDialog::FilesTextQuery : public Dialog::TQuery<std::vector<boost::filesystem::path> > {
    90 public:
    91   FilesTextQuery(Parameter<std::vector< boost::filesystem::path> > &param, const std::string &_title, const std::string &_description = NULL);
    92   virtual ~FilesTextQuery();
    93   virtual bool handle();
    94 };
     27  /** With the following boost::preprocessor code we generate forward declarations
     28   * of query class for all desired query types in the Qt specialization class of
     29   * Dialog.
     30   */
     31#include "UIElements/GlobalListOfParameterQueries.hpp"
     32#include "UIElements/Dialog_impl_pre.hpp"
    9533
    96 class TextDialog::IntTextQuery : public Dialog::TQuery<int> {
    97 public:
    98   IntTextQuery(Parameter<int> &, const std::string &_title, const std::string &_description = NULL);
    99   virtual ~IntTextQuery();
    100   virtual bool handle();
    101 };
     34  #include <boost/preprocessor/facilities/empty.hpp>
    10235
    103 class TextDialog::IntsTextQuery : public Dialog::TQuery<std::vector<int> > {
    104 public:
    105   IntsTextQuery(Parameter<std::vector<int> > &, const std::string &_title, const std::string &_description = NULL);
    106   virtual ~IntsTextQuery();
    107   virtual bool handle();
    108 };
     36  // iterate over all parameter query types for forward declarations
     37  #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
     38  #define BOOST_PP_LOCAL_MACRO(n) queryclass_definition(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type, Text)
     39  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMETERTOKENS-1)
     40  #include BOOST_PP_LOCAL_ITERATE()
     41  #undef queryclass_definition
     42  #endif
    10943
    110 class TextDialog::KeyValuePairTextQuery : public Dialog::TQuery<KeyValuePair> {
    111 public:
    112   KeyValuePairTextQuery(Parameter<KeyValuePair> &, const std::string &_title, const std::string &_description = NULL);
    113   virtual ~KeyValuePairTextQuery();
    114   virtual bool handle();
    115 };
     44#include "Dialog_impl_undef.hpp"
     45  /* End of preprocessor code piece */
    11646
    117 class TextDialog::KeyValuePairsTextQuery : public Dialog::TQuery<std::vector<KeyValuePair> > {
    118 public:
    119   KeyValuePairsTextQuery(Parameter<std::vector<KeyValuePair> > &, const std::string &_title, const std::string &_description = NULL);
    120   virtual ~KeyValuePairsTextQuery();
    121   virtual bool handle();
    122 };
    123 
    124 class TextDialog::MoleculeTextQuery : public Dialog::TQuery<const molecule *> {
    125 public:
    126   MoleculeTextQuery(Parameter<const molecule *> &, const std::string &_title, const std::string &_description = NULL);
    127   virtual ~MoleculeTextQuery();
    128   virtual bool handle();
    129 };
    130 
    131 class TextDialog::MoleculesTextQuery : public Dialog::TQuery<std::vector<const molecule *> > {
    132 public:
    133   MoleculesTextQuery(Parameter<std::vector<const molecule *> > &, const std::string &_title, const std::string &_description = NULL);
    134   virtual ~MoleculesTextQuery();
    135   virtual bool handle();
    136 };
    137 
    138 class TextDialog::StringTextQuery : public Dialog::TQuery<std::string> {
    139 public:
    140   StringTextQuery(Parameter<std::string> &, const std::string &_title, const std::string &_description = NULL);
    141   virtual ~StringTextQuery();
    142   virtual bool handle();
    143 };
    144 
    145 class TextDialog::StringsTextQuery : public Dialog::TQuery<std::vector<std::string> > {
    146 public:
    147   StringsTextQuery(Parameter<std::vector<std::string> > &, const std::string &_title, const std::string &_description = NULL);
    148   virtual ~StringsTextQuery();
    149   virtual bool handle();
    150 };
    151 
    152 class TextDialog::UnsignedIntTextQuery : public Dialog::TQuery<unsigned int> {
    153 public:
    154   UnsignedIntTextQuery(Parameter<unsigned int> &, const std::string &_title, const std::string &_description = NULL);
    155   virtual ~UnsignedIntTextQuery();
    156   virtual bool handle();
    157 };
    158 
    159 class TextDialog::UnsignedIntsTextQuery : public Dialog::TQuery<std::vector<unsigned int> > {
    160 public:
    161   UnsignedIntsTextQuery(Parameter<std::vector<unsigned int> > &, const std::string &_title, const std::string &_description = NULL);
    162   virtual ~UnsignedIntsTextQuery();
    163   virtual bool handle();
    164 };
    165 
    166 class TextDialog::VectorTextQuery : public Dialog::TQuery<Vector> {
    167 public:
    168   VectorTextQuery(Parameter<Vector> &, const std::string &_title, const std::string &_description = NULL);
    169   virtual ~VectorTextQuery();
    170   virtual bool handle();
    171 };
    172 
    173 class TextDialog::VectorsTextQuery : public Dialog::TQuery<std::vector<Vector> > {
    174 public:
    175   VectorsTextQuery(Parameter<std::vector<Vector> > &, const std::string &_title, const std::string &_description = NULL);
    176   virtual ~VectorsTextQuery();
    177   virtual bool handle();
    178 };
    17947
    18048#endif /* TEXTQUERY_HPP_ */
  • src/UIElements/TextUI/TextDialog.hpp

    r043598 r37a67f  
    3333
    3434  virtual void queryEmpty(const std::string ="", const std::string = "");
    35   virtual void queryBoolean(Parameter<bool> &, const std::string ="", const std::string = "");
    36   virtual void queryInt(Parameter<int> &, const std::string ="", const std::string = "");
    37   virtual void queryInts(Parameter<std::vector<int> > &, const std::string ="", const std::string = "");
    38   virtual void queryUnsignedInt(Parameter<unsigned int> &, const std::string ="", const std::string = "");
    39   virtual void queryUnsignedInts(Parameter<std::vector<unsigned int> > &, const std::string ="", const std::string = "");
    40   virtual void queryString(Parameter<std::string> &, const std::string ="", const std::string = "");
    41   virtual void queryStrings(Parameter<std::vector<std::string> > &, const std::string ="", const std::string = "");
    42   virtual void queryDouble(Parameter<double> &, const std::string ="", const std::string = "");
    43   virtual void queryDoubles(Parameter<std::vector<double> > &, const std::string ="", const std::string = "");
    44   virtual void queryAtom(Parameter<const atom *> &, const std::string = "",std::string = "");
    45   virtual void queryAtoms(Parameter<std::vector<const atom *> > &, const std::string = "",std::string = "");
    46   virtual void queryMolecule(Parameter<const molecule *> &, const std::string = "",std::string = "");
    47   virtual void queryMolecules(Parameter<std::vector<const molecule *> > &, const std::string = "",std::string = "");
    48   virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = "");
    49   virtual void queryVectors(Parameter<std::vector<Vector> > &, const std::string ="", const std::string = "");
    50   virtual void queryRealSpaceMatrix(Parameter<RealSpaceMatrix> &, const std::string ="", const std::string = "");
    51   virtual void queryElement(Parameter<const element *> &, const std::string ="", const std::string = "");
    52   virtual void queryElements(Parameter<std::vector<const element *> > &, const std::string ="", const std::string = "");
    53   virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = "");
    54   virtual void queryFiles(Parameter<std::vector<boost::filesystem::path> > &, const std::string ="", const std::string = "");
    55   virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = "");
    56   virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = "");
     35
     36  /** With the following boost::preprocessor code we generate virtual function
     37   * definitions for all desired query types in the abstract class Dialog.
     38   */
     39#include "UIElements/GlobalListOfParameterQueries.hpp"
     40#include "UIElements/Dialog_impl_pre.hpp"
     41
     42  #include <boost/preprocessor/facilities/empty.hpp>
     43
     44  // iterate over all parameter query types
     45  #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
     46  #define SUFFIX BOOST_PP_EMPTY()
     47  #define BOOST_PP_LOCAL_MACRO(n) dialog_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, GLOBALLISTOFPARAMETERQUERIES_Type)
     48  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMETERTOKENS-1)
     49  #include BOOST_PP_LOCAL_ITERATE()
     50  #undef dialog_declaration
     51  #undef SUFFIX
     52  #endif
     53
     54#include "Dialog_impl_undef.hpp"
     55  /* End of preprocessor code piece */
    5756
    5857protected:
    59   // specialized stuff for text queries
    60   // all placed into Query/TextQuery.hpp
    61   // !please adhere to alphabetical ordering!
    62   class AtomTextQuery;
    63   class AtomsTextQuery;
    64   class BooleanTextQuery;
    65   class DoubleTextQuery;
    66   class DoublesTextQuery;
    67   class ElementTextQuery;
    68   class ElementsTextQuery;
     58
    6959  class EmptyTextQuery;
    70   class FileTextQuery;
    71   class FilesTextQuery;
    72   class IntTextQuery;
    73   class IntsTextQuery;
    74   class KeyValuePairTextQuery;
    75   class KeyValuePairsTextQuery;
    76   class MoleculeTextQuery;
    77   class MoleculesTextQuery;
    78   class RealSpaceMatrixTextQuery;
    79   class StringTextQuery;
    80   class StringsTextQuery;
    81   class UnsignedIntTextQuery;
    82   class UnsignedIntsTextQuery;
    83   class VectorTextQuery;
    84   class VectorsTextQuery;
     60
     61  /** With the following boost::preprocessor code we generate forward declarations
     62   * of query class for all desired query types in the Qt specialization class of
     63   * Dialog.
     64   */
     65#include "UIElements/GlobalListOfParameterQueries.hpp"
     66#include "UIElements/Dialog_impl_pre.hpp"
     67
     68  #include <boost/preprocessor/facilities/empty.hpp>
     69
     70  // iterate over all parameter query types for forward declarations
     71  #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
     72  #define BOOST_PP_LOCAL_MACRO(n) forward_declaration(~, n, GLOBALLISTOFPARAMETERQUERIES_Token, TextQuery)
     73  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMETERTOKENS-1)
     74  #include BOOST_PP_LOCAL_ITERATE()
     75  #undef forward_declaration
     76  #endif
     77
     78#include "Dialog_impl_undef.hpp"
     79  /* End of preprocessor code piece */
     80
    8581};
    8682
Note: See TracChangeset for help on using the changeset viewer.