Mass++ Common Libraries v2.7.5
 All Classes Namespaces Files Functions Variables Enumerations Macros
ConversionTool.h
Go to the documentation of this file.
1 
12 #ifndef __KOME_CORE_CONVERSION_TOOL_H__
13 #define __KOME_CORE_CONVERSION_TOOL_H__
14 
15 
16 #include <string>
17 
18 
19 // macro
20 #define GET_ID_NAME( id, idArray ) \
21  kome::core::ConversionTool::getIdName( \
22  id, \
23  idArray, \
24  sizeof( idArray ) / sizeof( kome::core::IDInfo ) \
25  );
26 
27 #define CONVERT_FROM_ARRAY( key, defaultValue, conversionArray ) \
28  kome::core::ConversionTool::convert( \
29  key, \
30  defaultValue, \
31  conversionArray, \
32  sizeof( conversionArray ) / sizeof( conversionArray[ 0 ] ) \
33  );
34 
35 #define INVERT_FROM_ARRAY( key, defaultValue, conversionArray ) \
36  kome::core::ConversionTool::invert( \
37  key, \
38  defaultValue, \
39  conversionArray, \
40  sizeof( conversionArray ) / sizeof( conversionArray[ 0 ] ) \
41  );
42 
43 // class
44 namespace kome {
45  namespace core {
46 
51  struct IDInfo {
53  int id;
55  const char* name;
56  };
57 
58 
63  template< typename S, typename T > struct ConversionElement {
64  S key;
65  T value;
66  };
67 
72  class CORE_TOOLKITS_CLASS ConversionTool {
73  public:
86  static std::string getIdName(
87  const int id,
88  IDInfo* idInfoArray,
89  const unsigned int arraySize
90  );
91 
106  template< typename S, typename T >
107  static T convert(
108  const S key,
109  const T dfVal,
110  ConversionElement< S, T >* elementArray,
111  int arraySize
112  ) {
113  // check arguments
114  if( elementArray == NULL || arraySize <= 0 ) {
115  return dfVal;
116  }
117 
118  // search
119  for( int i = 0; i < arraySize; i++ ) {
120  if( key == elementArray[ i ].key ) {
121  return elementArray[ i ].value;
122  }
123  }
124 
125  return dfVal;
126  }
127 
142  template< typename S, typename T >
143  static S invert(
144  const T key,
145  const S dfVal,
146  ConversionElement< S, T >* elementArray,
147  int arraySize
148  ) {
149  // check arguments
150  if( elementArray == NULL || arraySize <= 0 ) {
151  return dfVal;
152  }
153 
154  // search
155  for( int i = 0; i < arraySize; i++ ) {
156  if( key == elementArray[ i ].value ) {
157  return elementArray[ i ].key;
158  }
159  }
160 
161  return dfVal;
162  }
163  };
164  }
165 }
166 
167 #endif // __KOME_CORE_CONVERSION_TOOL_H__
static T convert(const S key, const T dfVal, ConversionElement< S, T > *elementArray, int arraySize)
gets converted value from key ( S -> T )
const char * name
the class that has some functions for convert
#define NULL
Definition: CoreMacros.h:18
static S invert(const T key, const S dfVal, ConversionElement< S, T > *elementArray, int arraySize)
gets converted value from key ( T -> S )