commore  1.0.6-SNAPSHOT
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
C_Compatibility.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2009 CANTOR
3 //
4 
5 #ifndef CMR_C_COMPATIBILITY_INCLUDED
6 #define CMR_C_COMPATIBILITY_INCLUDED
7 
8 #include <stdio.h>
9 
10 #include "Commore.h"
11 #include "Symbol.h"
12 #include "AString.h"
13 #include "String.h"
14 #include "Time.h"
15 #include "Blob.h"
16 #include "StringBuffer.h"
17 #include "List.h"
18 #include "Array.h"
19 #include "Tuple.h"
20 
21 #ifdef WIN32
22 // on Windows, compatibility is maximum with __stdcall: support also VB, ...
23 #define CMRC_API __stdcall
24 #else
25 #define CMRC_API
26 #endif
27 
28 extern "C" {
29 
30  // ======================================================================
31  // STANDARDS CODE COMMORE
32  // ======================================================================
33 
34  const long CMR_C_OK = commore::CMR_OK;
36 
40 
44 
45 
46 
47 
48 
49  // ======================================================================
50  // CMR_C types
51  // ======================================================================
52 
53  // List & Iterator Type
54  typedef void* CMR_C_LIST_BOOL;
55  typedef void* CMR_C_ITERATOR_BOOL;
56 
57  typedef void* CMR_C_LIST_INT;
58  typedef void* CMR_C_ITERATOR_INT;
59 
60  typedef void* CMR_C_LIST_LONG;
61  typedef void* CMR_C_ITERATOR_LONG;
62 
63  typedef void* CMR_C_LIST_FLOAT;
64  typedef void* CMR_C_ITERATOR_FLOAT;
65 
66  typedef void* CMR_C_LIST_DOUBLE;
67  typedef void* CMR_C_ITERATOR_DOUBLE;
68 
69  typedef void* CMR_C_LIST_ASTRING; // char*
70  typedef void* CMR_C_ITERATOR_ASTRING;
71 
72  typedef void* CMR_C_LIST_STRING; // wchar_t*
73  typedef void* CMR_C_ITERATOR_STRING;
74 
75  typedef void* CMR_C_LIST_BLOB;
76  typedef void* CMR_C_ITERATOR_BLOB;
77 
78  typedef void* CMR_C_LIST_TIMEDATE;
79  typedef void* CMR_C_ITERATOR_TIMEDATE;
80 
81  typedef void* CMR_C_LIST_TIMEPERIOD;
83 
84  // Array Type
85  typedef void* CMR_C_ARRAY_INT;
86  typedef void* CMR_C_ARRAY_LONG;
87  typedef void* CMR_C_ARRAY_FLOAT;
88  typedef void* CMR_C_ARRAY_DOUBLE;
89 
90  // Complex Type
91  typedef void* CMR_C_BLOB;
92  typedef void* CMR_C_TIMEDATE;
93  typedef void* CMR_C_TIMEPERIOD;
94  typedef void* CMR_C_TUPLE;
95 
96 
97 
98  // ======================================================================
99  // Macros
100  // ======================================================================
101 #define LIST_FUNC(listName, iteratorName, T) \
102  CMREXD CMR_C_##listName CMRC_API CMRC_##listName##_create(); \
103  CMREXD void CMRC_API CMRC_##listName##_delete(CMR_C_##listName l); \
104  CMREXD void CMRC_API CMRC_##listName##_clear(CMR_C_##listName l); \
105  CMREXD void CMRC_API CMRC_##listName##_add(CMR_C_##listName l, T v); \
106  CMREXD CMR_C_##iteratorName CMRC_API CMRC_##listName##_begin(CMR_C_##listName l); \
107  CMREXD void CMRC_API CMRC_##iteratorName##_delete(CMR_C_##iteratorName it); \
108  CMREXD T CMRC_API CMRC_##iteratorName##_get(CMR_C_##iteratorName it); \
109  CMREXD bool CMRC_API CMRC_##iteratorName##_next(CMR_C_##iteratorName it); \
110  CMREXD bool CMRC_API CMRC_##iteratorName##_more(CMR_C_##iteratorName it); \
111 
112 #define FCT_ARRAY(ArrayName, T) \
113  CMREXD CMR_C_##ArrayName CMRC_API CMRC_##ArrayName##_create(); \
114  CMREXD void CMRC_API CMRC_##ArrayName##_delete(CMR_C_##ArrayName l); \
115  CMREXD T CMRC_API CMRC_##ArrayName##_get(CMR_C_##ArrayName l, int index, T v); \
116  CMREXD void CMRC_API CMRC_##ArrayName##_set(CMR_C_##ArrayName l, int index, T v);\
117  CMREXD size_t CMRC_API CMRC_##ArrayName##_size(CMR_C_##ArrayName l, T v);\
118  CMREXD void CMRC_API CMRC_##ArrayName##_add(CMR_C_##ArrayName l, T v);
119 
120  // ======================================================================
121  // Functions
122  // ======================================================================
123 
124  // --------------------- Function to manipulate a list
125  LIST_FUNC(LIST_BOOL, ITERATOR_BOOL, bool);
126  LIST_FUNC(LIST_INT, ITERATOR_INT, int);
127  LIST_FUNC(LIST_LONG, ITERATOR_LONG, long);
128  LIST_FUNC(LIST_FLOAT, ITERATOR_FLOAT, float);
129  LIST_FUNC(LIST_DOUBLE, ITERATOR_DOUBLE, double);
130  LIST_FUNC(LIST_ASTRING, ITERATOR_ASTRING, const char*);
131  LIST_FUNC(LIST_STRING, ITERATOR_STRING, const wchar_t*);
132  LIST_FUNC(LIST_BLOB, ITERATOR_BLOB, CMR_C_BLOB);
133  LIST_FUNC(LIST_TIMEDATE, ITERATOR_TIMEDATE, CMR_C_TIMEDATE);
134  LIST_FUNC(LIST_TIMEPERIOD, ITERATOR_TIMEPERIOD, CMR_C_TIMEPERIOD);
135 
136  // --------------------- Function to manipulate arraies
137  FCT_ARRAY(ARRAY_INT, commore::Int)
138  FCT_ARRAY(ARRAY_LONG, commore::Long)
139  FCT_ARRAY(ARRAY_FLOAT, commore::Float)
140  FCT_ARRAY(ARRAY_DOUBLE, commore::Double)
141 
142  // --------------------- Function to manipulate a blob
143  CMREXD CMR_C_BLOB CMRC_API CMRC_BLOB_create(char* content, size_t size, size_t allocated_size);
144  CMREXD void CMRC_API CMRC_BLOB_delete(CMR_C_BLOB blob);
145  CMREXD char* CMRC_API CMRC_BLOB_set(CMR_C_BLOB blob, const char* content, size_t size, size_t allocated_size);
146  CMREXD const char* CMRC_API CMRC_BLOB_get_content(CMR_C_BLOB blob);
147  CMREXD size_t CMRC_API CMRC_BLOB_get_size(CMR_C_BLOB blob);
148  CMREXD void CMRC_API CMRC_BLOB_clear(CMR_C_BLOB blob);
149 
150  // --------------------- Function to manipulate a timedate
151  CMREXD CMR_C_TIMEDATE CMRC_API CMRC_TIMEDATE_create(int year, int month, int day, int hour, int min, int second, int mums);
152  CMREXD void CMRC_API CMRC_TIMEDATE_delete(CMR_C_TIMEDATE timeDate);
153  CMREXD CMR_C_TIMEDATE CMRC_API CMRC_TIMEDATE_now();
154  CMREXD CMR_C_TIMEPERIOD CMRC_API CMRC_TIMEDATE_get_time(CMR_C_TIMEDATE timeDate);
155  CMREXD int CMRC_API CMRC_TIMEDATE_get_year(CMR_C_TIMEDATE timeDate);
156  CMREXD int CMRC_API CMRC_TIMEDATE_get_month(CMR_C_TIMEDATE timeDate);
157  CMREXD int CMRC_API CMRC_TIMEDATE_get_day(CMR_C_TIMEDATE timeDate);
158  CMREXD int CMRC_API CMRC_TIMEDATE_get_hour(CMR_C_TIMEDATE timeDate);
159  CMREXD int CMRC_API CMRC_TIMEDATE_get_minute(CMR_C_TIMEDATE timeDate);
160  CMREXD int CMRC_API CMRC_TIMEDATE_get_second(CMR_C_TIMEDATE timeDate);
161  CMREXD int CMRC_API CMRC_TIMEDATE_get_millisecond(CMR_C_TIMEDATE timeDate);
162  CMREXD int CMRC_API CMRC_TIMEDATE_get_microsecond(CMR_C_TIMEDATE timeDate);
163 
164  // --------------------- Function to manipulate a timeperiod
165  CMREXD CMR_C_TIMEPERIOD CMRC_API CMRC_TIMEPERIOD_create(long seconds);
166  CMREXD void CMRC_API CMRC_TIMEPERIOD_delete(CMR_C_TIMEPERIOD timePeriod);
167  CMREXD long CMRC_API CMRC_TIMEPERIOD_to_days(CMR_C_TIMEPERIOD timePeriod);
168  CMREXD long CMRC_API CMRC_TIMEPERIOD_to_hours(CMR_C_TIMEPERIOD timePeriod);
169  CMREXD long CMRC_API CMRC_TIMEPERIOD_to_minutes(CMR_C_TIMEPERIOD timePeriod);
170  CMREXD long CMRC_API CMRC_TIMEPERIOD_to_seconds(CMR_C_TIMEPERIOD timePeriod);
171  CMREXD long CMRC_API CMRC_TIMEPERIOD_days(CMR_C_TIMEPERIOD timePeriod);
172  CMREXD long CMRC_API CMRC_TIMEPERIOD_hours(CMR_C_TIMEPERIOD timePeriod);
173  CMREXD long CMRC_API CMRC_TIMEPERIOD_minutes(CMR_C_TIMEPERIOD timePeriod);
174  CMREXD long CMRC_API CMRC_TIMEPERIOD_seconds(CMR_C_TIMEPERIOD timePeriod);
175  CMREXD long CMRC_API CMRC_TIMEPERIOD_microseconds(CMR_C_TIMEPERIOD timePeriod);
176  CMREXD long CMRC_API CMRC_TIMEPERIOD_milliseconds(CMR_C_TIMEPERIOD timePeriod);
177 
178  // --------------------- Function to manipulate a Tuple
179  CMREXD int CMRC_API CMRC_TUPLE_copy(CMR_C_TUPLE src, CMR_C_TUPLE dst);
180  CMREXD int CMRC_API CMRC_TUPLE_splice(CMR_C_TUPLE src, CMR_C_TUPLE dst);
181 
182 } // extern "C"
183 
184 #endif
void * CMR_C_LIST_TIMEPERIOD
Definition: C_Compatibility.h:81
void * CMR_C_LIST_FLOAT
Definition: C_Compatibility.h:63
CMREXD long CMRC_API CMRC_TIMEPERIOD_to_hours(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:250
CMREXD long CMRC_API CMRC_TIMEPERIOD_to_days(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:244
void * CMR_C_ARRAY_DOUBLE
Definition: C_Compatibility.h:88
CMREXD CMR_C_TIMEDATE CMRC_API CMRC_TIMEDATE_create(int year, int month, int day, int hour, int min, int second, int mums)
Definition: C_Compatibility.cpp:162
CMREXD CMR_C_TIMEPERIOD CMRC_API CMRC_TIMEPERIOD_create(long seconds)
Definition: C_Compatibility.cpp:232
CMREXD long CMRC_API CMRC_TIMEPERIOD_days(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:267
CMREXD long CMRC_API CMRC_TIMEPERIOD_to_seconds(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:262
CMREXD int CMRC_API CMRC_TIMEDATE_get_microsecond(CMR_C_TIMEDATE timeDate)
Definition: C_Compatibility.cpp:224
#define CMRC_API
Definition: C_Compatibility.h:25
CMREXD CMR_C_BLOB CMRC_API CMRC_BLOB_create(char *content, size_t size, size_t allocated_size)
Definition: C_Compatibility.cpp:123
CMREXD int CMRC_API CMRC_TIMEDATE_get_month(CMR_C_TIMEDATE timeDate)
Definition: C_Compatibility.cpp:192
CMREXD long CMRC_API CMRC_TIMEPERIOD_hours(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:272
const long CMR_GENERIC_ERROR
Definition: Commore.h:18
CMREXD long CMRC_API CMRC_TIMEPERIOD_milliseconds(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:293
const long CMR_NOT_FOUND
Definition: Commore.h:19
void * CMR_C_ITERATOR_BOOL
Definition: C_Compatibility.h:55
void * CMR_C_ARRAY_FLOAT
Definition: C_Compatibility.h:87
double Double
Definition: Type.h:46
void * CMR_C_ITERATOR_STRING
Definition: C_Compatibility.h:73
CMREXD int CMRC_API CMRC_TUPLE_splice(CMR_C_TUPLE src, CMR_C_TUPLE dst)
Definition: C_Compatibility.cpp:309
CMREXD int CMRC_API CMRC_TIMEDATE_get_year(CMR_C_TIMEDATE timeDate)
Definition: C_Compatibility.cpp:186
CMREXD long CMRC_API CMRC_TIMEPERIOD_to_minutes(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:256
void * CMR_C_ITERATOR_INT
Definition: C_Compatibility.h:58
#define CMREXD
Definition: Compiler.h:22
const long CMR_C_ALREADY_EXIST
Definition: C_Compatibility.h:41
CMREXD void CMRC_API CMRC_BLOB_delete(CMR_C_BLOB blob)
Definition: C_Compatibility.cpp:129
void * CMR_C_BLOB
Definition: C_Compatibility.h:91
#define FCT_ARRAY(ArrayName, T)
Definition: C_Compatibility.h:112
const long CMR_INVALID_ANSWER
Definition: Commore.h:24
void * CMR_C_ITERATOR_TIMEPERIOD
Definition: C_Compatibility.h:82
CMREXD int CMRC_API CMRC_TIMEDATE_get_second(CMR_C_TIMEDATE timeDate)
Definition: C_Compatibility.cpp:214
CMREXD int CMRC_API CMRC_TIMEDATE_get_minute(CMR_C_TIMEDATE timeDate)
Definition: C_Compatibility.cpp:209
CMREXD void CMRC_API CMRC_TIMEDATE_delete(CMR_C_TIMEDATE timeDate)
Definition: C_Compatibility.cpp:169
Definition: Time.h:247
void * CMR_C_TUPLE
Definition: C_Compatibility.h:94
const long CMR_NOOP
Definition: Commore.h:16
void * CMR_C_LIST_TIMEDATE
Definition: C_Compatibility.h:78
void * CMR_C_LIST_LONG
Definition: C_Compatibility.h:60
void * CMR_C_LIST_BLOB
Definition: C_Compatibility.h:75
void * CMR_C_TIMEPERIOD
Definition: C_Compatibility.h:93
const long CMR_C_END_OF_DATA
Definition: C_Compatibility.h:42
int Int
Definition: Type.h:37
void * CMR_C_ARRAY_INT
Definition: C_Compatibility.h:85
const long CMR_C_INVALID_ANSWER
Definition: C_Compatibility.h:43
CMREXD int CMRC_API CMRC_TIMEDATE_get_day(CMR_C_TIMEDATE timeDate)
Definition: C_Compatibility.cpp:198
const long CMR_END_OF_DATA
Definition: Commore.h:23
void * CMR_C_LIST_STRING
Definition: C_Compatibility.h:72
CMREXD int CMRC_API CMRC_TIMEDATE_get_hour(CMR_C_TIMEDATE timeDate)
Definition: C_Compatibility.cpp:204
CMREXD size_t CMRC_API CMRC_BLOB_get_size(CMR_C_BLOB blob)
Definition: C_Compatibility.cpp:147
const long CMR_C_OK
Definition: C_Compatibility.h:34
void * CMR_C_LIST_INT
Definition: C_Compatibility.h:57
CMREXD int CMRC_API CMRC_TIMEDATE_get_millisecond(CMR_C_TIMEDATE timeDate)
Definition: C_Compatibility.cpp:219
void * CMR_C_ITERATOR_DOUBLE
Definition: C_Compatibility.h:67
const long CMR_C_NOOP
Definition: C_Compatibility.h:35
CMREXD void CMRC_API CMRC_BLOB_clear(CMR_C_BLOB blob)
Definition: C_Compatibility.cpp:153
CMREXD int CMRC_API CMRC_TUPLE_copy(CMR_C_TUPLE src, CMR_C_TUPLE dst)
Definition: C_Compatibility.cpp:301
float Float
Definition: Type.h:45
CMREXD long CMRC_API CMRC_TIMEPERIOD_minutes(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:277
void * CMR_C_ITERATOR_FLOAT
Definition: C_Compatibility.h:64
long long Long
Definition: Type.h:43
CMREXD CMR_C_TIMEDATE CMRC_API CMRC_TIMEDATE_now()
Definition: C_Compatibility.cpp:175
CMREXD long CMRC_API CMRC_TIMEPERIOD_microseconds(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:288
void * CMR_C_ARRAY_LONG
Definition: C_Compatibility.h:86
CMREXD void CMRC_API CMRC_TIMEPERIOD_delete(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:238
CMREXD const char *CMRC_API CMRC_BLOB_get_content(CMR_C_BLOB blob)
Definition: C_Compatibility.cpp:141
const long CMR_C_NOT_IMPLEMENTED
Definition: C_Compatibility.h:39
void * CMR_C_ITERATOR_BLOB
Definition: C_Compatibility.h:76
CMREXD long CMRC_API CMRC_TIMEPERIOD_seconds(CMR_C_TIMEPERIOD timePeriod)
Definition: C_Compatibility.cpp:283
const long CMR_OK
Definition: Commore.h:15
void * CMR_C_ITERATOR_LONG
Definition: C_Compatibility.h:61
void * CMR_C_ITERATOR_TIMEDATE
Definition: C_Compatibility.h:79
const long CMR_C_GENERIC_ERROR
Definition: C_Compatibility.h:37
void * CMR_C_LIST_BOOL
Definition: C_Compatibility.h:54
void * CMR_C_LIST_ASTRING
Definition: C_Compatibility.h:69
void * CMR_C_ITERATOR_ASTRING
Definition: C_Compatibility.h:70
CMREXD CMR_C_TIMEPERIOD CMRC_API CMRC_TIMEDATE_get_time(CMR_C_TIMEDATE timeDate)
Definition: C_Compatibility.cpp:180
const long CMR_NOT_IMPLEMENTED
Definition: Commore.h:20
void * CMR_C_TIMEDATE
Definition: C_Compatibility.h:92
void * CMR_C_LIST_DOUBLE
Definition: C_Compatibility.h:66
const long CMR_C_NOT_FOUND
Definition: C_Compatibility.h:38
CMREXD char *CMRC_API CMRC_BLOB_set(CMR_C_BLOB blob, const char *content, size_t size, size_t allocated_size)
Definition: C_Compatibility.cpp:135
#define LIST_FUNC(listName, iteratorName, T)
Definition: C_Compatibility.h:101
const long CMR_ALREADY_EXIST
Definition: Commore.h:22