Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/new_class_id/src/lib/util/loading/load_param_class_description.h @ 9776

Last change on this file since 9776 was 9776, checked in by bensch, 18 years ago

doxy

File size: 3.2 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific:
12   main-programmer: Benjamin Grauer
13   co-programmer: ...
14*/
15
16/*!
17 * @file load_param_class_description.h
18 * A Class and macro-functions, that makes our lives easy to load-in parameters
19 */
20
21#ifndef _LOAD_PARAM_CLASS_DESCRIPTION_H
22#define _LOAD_PARAM_CLASS_DESCRIPTION_H
23
24#include "load_param_description.h"
25#include "class_id.h"
26#include <map>
27#include <set>
28// Forward Declaration //
29class MultiType;
30
31//! A class for descriptions of a loadable module
32class LoadParamClassDescription
33{
34public:
35  LoadParamClassDescription(const std::string& className = "");
36
37  //! Compares a LoadParamClassDescription with a String.
38  bool operator==(const std::string& className) const { return this->_className == className; };
39  //! Compares two LoadParamClassDescription with each other
40  bool operator==(const LoadParamClassDescription& classDescr) const { return this->_className == classDescr._className; };
41  //! Compares two LoadParamClassDescription with each other, using the less operator
42  bool operator<(const LoadParamClassDescription& classDescr) const { return this->_className < classDescr._className; }
43
44
45  static void describeClass(const ClassID& classID,
46                            const std::string& paramName,
47                            const std::string& descriptionText);
48  static void setValuesOf(const ClassID& classID,
49                          const std::string& paramName,
50                          unsigned int paramCount,
51                          const MultiType* const defaultValues,
52                          bool retVal = false);
53
54  /** @param createThem: if the Parameters should be created/stored. */
55  static void createDescriptions(bool createThem) { _createParametersDescription = createThem; };
56  /** @returns if the Parameters are created/stored. */
57  static bool createsDescriptions() { return _createParametersDescription; };
58
59  static void deleteAllDescriptions();
60
61  static void printAll(const std::string& fileName = "");
62
63private:
64  //! A Type definition for the Map of Class Descriptions
65  typedef std::map<ClassID, LoadParamClassDescription>  ClassDescriptionMap;
66  //! A type definition for the Map of Parameter Descriptions inside of Class-descriptions.
67  typedef std::map<std::string, LoadParamDescription>   ParamDescriptionMap;
68
69private:
70  static ParamDescriptionMap::iterator getParamDescription(const ClassID& classID, const std::string& paramName);
71
72private:
73
74  static bool                                  _createParametersDescription;  //!< if parameter-description should be enabled globally.
75
76  static ClassDescriptionMap                   _classList;              //!< a list, that stores all the loadable classes. (after one instance has been loaded)
77
78private:
79  std::string                                  _className;              //!< name of the class
80  ParamDescriptionMap                          _parameters;             //!< List of parameters this class knows.
81};
82
83#endif /* _LOAD_PARAM_CLASS_DESCRIPTION_H */
Note: See TracBrowser for help on using the repository browser.