| 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 |  * @file functors_list.h | 
|---|
| 14 |  * all the Different types of Functions one can include | 
|---|
| 15 | */ | 
|---|
| 16 |  | 
|---|
| 17 | /** | 
|---|
| 18 |    useable FunctionParameters are: | 
|---|
| 19 |    l_INT:       int | 
|---|
| 20 |    l_LONG:      long | 
|---|
| 21 |    l_SHORT:     short | 
|---|
| 22 |    l_FLOAT:     float | 
|---|
| 23 |    l_STRING:    const char* | 
|---|
| 24 |    l_XML_ELEM:  TiXmlElement* | 
|---|
| 25 |  */ | 
|---|
| 26 |  | 
|---|
| 27 | #ifndef __FUNCTOR_PARAMETERS__ | 
|---|
| 28 | #define __FUNCTOR_PARAMETERS__ | 
|---|
| 29 |  | 
|---|
| 30 | //! defines the maximum count of arguments function pointers might have | 
|---|
| 31 | #define FUNCTOR_MAX_ARGUMENTS                5 | 
|---|
| 32 |  | 
|---|
| 33 | typedef enum | 
|---|
| 34 | { | 
|---|
| 35 |   ParameterNull    = 0, | 
|---|
| 36 |   ParameterBool    = 1, | 
|---|
| 37 |   ParameterChar    = 2, | 
|---|
| 38 |   ParameterString  = 4, | 
|---|
| 39 |   ParameterInt     = 8, | 
|---|
| 40 |   ParameterUInt    = 16, | 
|---|
| 41 |   ParameterFloat   = 32, | 
|---|
| 42 |   ParameterLong    = 64, | 
|---|
| 43 |   ParameterXML     = 128, | 
|---|
| 44 |   /* ... */ | 
|---|
| 45 | } ParameterType; | 
|---|
| 46 |  | 
|---|
| 47 |  | 
|---|
| 48 | #define l_BOOL_TYPE        bool                 //!< The type of an BOOL | 
|---|
| 49 | #define l_BOOL_FUNC        isBool               //!< The function to call to parse BOOL | 
|---|
| 50 | #define l_BOOL_NAME        "bool"               //!< The name of an BOOL | 
|---|
| 51 | #define l_BOOL_PARAM       ParameterBool        //!< the type of the parameter BOOL | 
|---|
| 52 | #define l_BOOL_DEFAULT     false                //!< a default Value for an BOOL | 
|---|
| 53 |  | 
|---|
| 54 |  | 
|---|
| 55 | #define l_INT_TYPE         int                  //!< The type of an INT | 
|---|
| 56 | #define l_INT_FUNC         isInt                //!< The function to call to parse INT | 
|---|
| 57 | #define l_INT_NAME         "int"                //!< The name of an INT | 
|---|
| 58 | #define l_INT_PARAM        ParameterInt         //!< the type of the parameter INT | 
|---|
| 59 | #define l_INT_DEFAULT      0                    //!< a default Value for an INT | 
|---|
| 60 |  | 
|---|
| 61 | #define l_UINT_TYPE        unsigned int         //!< The type of an UINT | 
|---|
| 62 | #define l_UINT_FUNC        isInt                //!< The function to call to parse UINT | 
|---|
| 63 | #define l_UINT_NAME        "unsigned int"       //!< The name of an UINT | 
|---|
| 64 | #define l_UINT_PARAM        ParameterUInt       //!< the type of the parameter UINT | 
|---|
| 65 | #define l_UINT_DEFAULT     0                    //!< a default Value for an UINT | 
|---|
| 66 |  | 
|---|
| 67 | #define l_LONG_TYPE        long                 //!< The type of a LONG | 
|---|
| 68 | #define l_LONG_FUNC        isInt                //!< The function to parse a LONG | 
|---|
| 69 | #define l_LONG_NAME        "long"               //!< The name of a LONG | 
|---|
| 70 | #define l_LONG_PARAM       ParameterLong        //!< the type of the parameter LONG | 
|---|
| 71 | #define l_LONG_DEFAULT     0                    //!< a default Value for a LONG | 
|---|
| 72 |  | 
|---|
| 73 | // #define l_SHORT_TYPE       short                //!< The type of a SHORT | 
|---|
| 74 | // #define l_SHORT_FUNC       atoi                 //!< The function to parse a SHORT | 
|---|
| 75 | // #define l_SHORT_NAME       "short"              //!< The name of a SHORT | 
|---|
| 76 | //#define l_SHORT_PARAM       ParameterShort       //!< the type of the parameter SHORT | 
|---|
| 77 | // #define l_SHORT_DEFAULT    0                    //!< a default Value for a SHORT | 
|---|
| 78 |  | 
|---|
| 79 | #define l_FLOAT_TYPE       float                //!< The type of a FLOAT | 
|---|
| 80 | #define l_FLOAT_FUNC       isFloat              //!< The function to parse a FLOAT | 
|---|
| 81 | #define l_FLOAT_NAME       "float"              //!< The name of a FLOAT | 
|---|
| 82 | #define l_FLOAT_PARAM      ParameterFloat       //!< the type of the parameter FLOAT | 
|---|
| 83 | #define l_FLOAT_DEFAULT    0.0                  //!< a default Value for a FLOAT | 
|---|
| 84 |  | 
|---|
| 85 | //#define l_VECTOR_TYPE      const Vector&        //!< The type of a VECTOR | 
|---|
| 86 | //#define l_VECTOR_FUNC      isVector             //!< The function to parse a VECTOR | 
|---|
| 87 | //#define l_VECTOR_NAME      "Vector[x/y/z]"      //!< The name of a VECTOR | 
|---|
| 88 | //#define l_VECTOR_DEFAULT   Vector(0,0,0)        //!< Default value for a VECTOR | 
|---|
| 89 |  | 
|---|
| 90 | #define l_STRING_TYPE      const char*          //!< The type of a STRING | 
|---|
| 91 | #define l_STRING_FUNC      isString             //!< The function to parse a STRING | 
|---|
| 92 | #define l_STRING_NAME      "string"             //!< The name of a STRING | 
|---|
| 93 | #define l_STRING_PARAM     ParameterString      //!< the type of the parameter STRING | 
|---|
| 94 | #define l_STRING_DEFAULT   ""                   //!< a default Value for an STRING | 
|---|
| 95 |  | 
|---|
| 96 | #define l_XML_ELEM_TYPE    const TiXmlElement*  //!< The type of an XML_ELEM | 
|---|
| 97 | #define l_XML_ELEM_FUNC                         //!< The function to parse an XML_ELEM | 
|---|
| 98 | #define l_XML_ELEM_NAME    "XML"                //!< The name of an XML_ELEM | 
|---|
| 99 | //#define l_XML_ELEM_PARAM   Parameter            //!< the type of the parameter XML_ELEM | 
|---|
| 100 | #define l_XML_ELEM_DEFAULT NULL                 //!< The dafault Value for an XML_ELEM | 
|---|
| 101 |  | 
|---|
| 102 | #endif /* __FUNCTOR_PARAMETERS__ */ | 
|---|
| 103 |  | 
|---|
| 104 |  | 
|---|
| 105 | #ifdef FUNCTOR_LIST | 
|---|
| 106 |  | 
|---|
| 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 |  | 
|---|
| 155 |  | 
|---|
| 156 | #endif /* FUNCTOR_LIST */ | 
|---|