Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/defs/functor_list.h @ 5370

Last change on this file since 5370 was 5332, checked in by bensch, 19 years ago

orxonox/trunk: minor cleanup (speed-issue) in LoadClassDescription, using enum insted of String, faster, more reliable

File size: 6.1 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
12
13/*!
14 * @file functors_list.h
15 * all the Different types of Functions one can include
16*/
17
18/**
19   useable FunctionParameters are:
20   l_INT:       int
21   l_LONG:      long
22   l_SHORT:     short
23   l_FLOAT:     float
24   l_STRING:    const char*
25   l_XML_ELEM:  TiXmlElement*
26 */
27
28#ifndef __FUNCTOR_PARAMETERS__
29#define __FUNCTOR_PARAMETERS__
30
31//! defines the maximum count of arguments function pointers might have
32#define FUNCTOR_MAX_ARGUMENTS                5
33
34typedef enum
35{
36  ParameterNull    = 0,
37  ParameterBool    = 1,
38  ParameterChar    = 2,
39  ParameterString  = 4,
40  ParameterInt     = 8,
41  ParameterUInt    = 16,
42  ParameterFloat   = 32,
43  ParameterLong    = 64,
44  ParameterXML     = 128,
45  /* ... */
46} ParameterType;
47
48
49#define l_BOOL_TYPE        bool                 //!< The type of an BOOL
50#define l_BOOL_FUNC        isBool               //!< The function to call to parse BOOL
51#define l_BOOL_NAME        "bool"               //!< The name of an BOOL
52#define l_BOOL_PARAM       ParameterBool        //!< the type of the parameter BOOL
53#define l_BOOL_DEFAULT     false                //!< a default Value for an BOOL
54
55
56#define l_INT_TYPE         int                  //!< The type of an INT
57#define l_INT_FUNC         isInt                //!< The function to call to parse INT
58#define l_INT_NAME         "int"                //!< The name of an INT
59#define l_INT_PARAM        ParameterInt         //!< the type of the parameter INT
60#define l_INT_DEFAULT      0                    //!< a default Value for an INT
61
62#define l_UINT_TYPE        unsigned int         //!< The type of an UINT
63#define l_UINT_FUNC        isInt                //!< The function to call to parse UINT
64#define l_UINT_NAME        "unsigned int"       //!< The name of an UINT
65#define l_UINT_PARAM        ParameterUInt       //!< the type of the parameter UINT
66#define l_UINT_DEFAULT     0                    //!< a default Value for an UINT
67
68#define l_LONG_TYPE        long                 //!< The type of a LONG
69#define l_LONG_FUNC        isInt                //!< The function to parse a LONG
70#define l_LONG_NAME        "long"               //!< The name of a LONG
71#define l_LONG_PARAM       ParameterLong        //!< the type of the parameter LONG
72#define l_LONG_DEFAULT     0                    //!< a default Value for a LONG
73
74// #define l_SHORT_TYPE       short                //!< The type of a SHORT
75// #define l_SHORT_FUNC       atoi                 //!< The function to parse a SHORT
76// #define l_SHORT_NAME       "short"              //!< The name of a SHORT
77//#define l_SHORT_PARAM       ParameterShort       //!< the type of the parameter SHORT
78// #define l_SHORT_DEFAULT    0                    //!< a default Value for a SHORT
79
80#define l_FLOAT_TYPE       float                //!< The type of a FLOAT
81#define l_FLOAT_FUNC       isFloat              //!< The function to parse a FLOAT
82#define l_FLOAT_NAME       "float"              //!< The name of a FLOAT
83#define l_FLOAT_PARAM      ParameterFloat       //!< the type of the parameter FLOAT
84#define l_FLOAT_DEFAULT    0.0                  //!< a default Value for a FLOAT
85
86//#define l_VECTOR_TYPE      const Vector&        //!< The type of a VECTOR
87//#define l_VECTOR_FUNC      isVector             //!< The function to parse a VECTOR
88//#define l_VECTOR_NAME      "Vector[x/y/z]"      //!< The name of a VECTOR
89//#define l_VECTOR_DEFAULT   Vector(0,0,0)        //!< Default value for a VECTOR
90
91#define l_STRING_TYPE      const char*          //!< The type of a STRING
92#define l_STRING_FUNC      isString             //!< The function to parse a STRING
93#define l_STRING_NAME      "string"             //!< The name of a STRING
94#define l_STRING_PARAM     ParameterString      //!< the type of the parameter STRING
95#define l_STRING_DEFAULT   ""                   //!< a default Value for an STRING
96
97#define l_XML_ELEM_TYPE    const TiXmlElement*  //!< The type of an XML_ELEM
98#define l_XML_ELEM_FUNC                         //!< The function to parse an XML_ELEM
99#define l_XML_ELEM_NAME    "XML"                //!< The name of an XML_ELEM
100//#define l_XML_ELEM_PARAM   Parameter            //!< the type of the parameter XML_ELEM
101#define l_XML_ELEM_DEFAULT NULL                 //!< The dafault Value for an XML_ELEM
102
103#endif /* __FUNCTOR_PARAMETERS__ */
104
105
106#ifdef FUNCTOR_LIST
107  FUNCTOR_LIST(0)();
108  //! makes functions with one string
109  FUNCTOR_LIST(1)(l_STRING);
110  //! makes functions with two strings
111  FUNCTOR_LIST(2)(l_STRING, l_STRING);
112  //! makes functions with three strings
113  FUNCTOR_LIST(3)(l_STRING, l_STRING, l_STRING);
114  //! makes functions with four strings
115  FUNCTOR_LIST(4)(l_STRING, l_STRING, l_STRING, l_STRING);
116
117  //! makes functions with one bool
118  FUNCTOR_LIST(1)(l_BOOL);
119
120  //! makes functions with one int
121  FUNCTOR_LIST(1)(l_INT);
122  //! makes functions with two ints
123  FUNCTOR_LIST(2)(l_INT, l_INT);
124  //! makes functions with three ints
125  FUNCTOR_LIST(3)(l_INT, l_INT, l_INT);
126  //! makes functions with four ints
127  FUNCTOR_LIST(4)(l_INT, l_INT, l_INT, l_INT);
128
129
130  //! makes functions with one unsigned int
131  FUNCTOR_LIST(1)(l_UINT);
132  //! makes functions with two unsigned ints
133  FUNCTOR_LIST(2)(l_UINT, l_UINT);
134  //! makes functions with three unsigned ints
135  FUNCTOR_LIST(3)(l_UINT, l_UINT, l_UINT);
136  //! makes functions with four unsigned ints
137  FUNCTOR_LIST(4)(l_UINT, l_UINT, l_UINT, l_UINT);
138
139  //! makes functions with one float
140  FUNCTOR_LIST(1)(l_FLOAT);
141  //! makes functions with two floats
142  FUNCTOR_LIST(2)(l_FLOAT, l_FLOAT);
143  //! makes functions with three floats
144  FUNCTOR_LIST(3)(l_FLOAT, l_FLOAT, l_FLOAT);
145  //! makes functions with four floats
146  FUNCTOR_LIST(4)(l_FLOAT, l_FLOAT, l_FLOAT, l_FLOAT);
147  //! makes functions with four floats
148  FUNCTOR_LIST(5)(l_FLOAT, l_FLOAT, l_FLOAT, l_FLOAT, l_FLOAT);
149
150  //! mixed values:
151  FUNCTOR_LIST(2)(l_STRING, l_FLOAT);
152  FUNCTOR_LIST(2)(l_UINT, l_LONG);
153  FUNCTOR_LIST(2)(l_STRING, l_UINT);
154#endif /* FUNCTOR_LIST */
Note: See TracBrowser for help on using the repository browser.