Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

dataserver_register_orig.h

Go to the documentation of this file.
00001 //**************************************************************************
00002 #ifndef _DATASERVER_REGISTER2_ORIG_H_
00003 #define _DATASERVER_REGISTER2_ORIG_H_
00004 //**************************************************************************
00005 #include "dataserver.h"
00006 //**************************************************************************
00007 #define REGISTER2_DATA_BLOCK() int DataServer::RegisterExternal(char *keyword, RemoteSocket *C, int &error_flag, bool register_flag)
00008 
00009 #define REGISTER2_KEYWORD_INFO(key,desc,elemsize,numelems,perm,var) {\
00010         if (register_flag) \
00011                 RegisterKey(key, desc, keyType(var), elemsize, numelems, perm, &(var)); }
00012 
00013 #define REGISTER2_KEYWORD_INFO_NO_PTR(key,desc,elemsize,numelems,perm,var) {\
00014         if (register_flag) \
00015                 RegisterKey(key, desc, keyType(var), elemsize, numelems, perm); }
00016 
00017 #define REGISTER2_DATA(key,perm,data) {\
00018         REGISTER2_KEYWORD_INFO(key, GENERIC_DATA, sizeof(data), 1, perm, data); \
00019         if (!strcmp(keyword, key)) {\
00020                 error_flag = 0; \
00021                 Wait(key); \
00022                 C->SendVar<int>(sizeof(data)); \
00023                 C->SendBytes(sizeof(data), &data);\
00024                 Post(key); \
00025                 return 1; } \
00026         if (!strcmp(perm, "rw")) \
00027         if (!strcmp(keyword, "R" key)) {\
00028                 error_flag = 2; \
00029                 Wait(key); \
00030                 C->SendVar<int>(sizeof(data)); \
00031                 C->RecvBytes(sizeof(data), &(data)); \
00032                 SetDirty(key); \
00033                 Post(key); \
00034                 return 1; }}
00035 
00036 #define REGISTER2_VARIABLE(key,perm,data) {\
00037         REGISTER2_KEYWORD_INFO(key, VARIABLE, sizeof(data), 1, perm, data); \
00038         if (!strcmp(keyword, key)) {\
00039                 error_flag = 0; \
00040                 DataServer::Wait(key); \
00041                 C->SendVar<int>(sizeof(data)); \
00042                 C->SendVar(data); \
00043                 DataServer::Post(key); \
00044                 return 1; } \
00045         if (!strcmp(perm, "rw")) \
00046         if (!strcmp(keyword, "R" key)) {\
00047                 error_flag = 2; \
00048                 DataServer::Wait(key); \
00049                 C->SendVar<int>(sizeof(data)); \
00050                 C->RecvVar(&data); \
00051                 SetDirty(key); \
00052                 DataServer::Post(key); \
00053                 return 1; }}
00054 
00055 #define REGISTER2_STRUCTURE(key,perm,var) {\
00056         REGISTER2_KEYWORD_INFO(key, CUSTOM_STRUCTURE, sizeof(var), 1, perm, var); \
00057         if (!strcmp(keyword, key)) {\
00058                 error_flag = 0; \
00059                 C->SendStruct(&(var), Lock(key)); \
00060                 return 1; } \
00061         if (!strcmp(perm, "rw")) \
00062         if (!strcmp(keyword, "R" key)) {\
00063                 error_flag = 2; \
00064                 C->RecvStruct(&(var), Lock(key)); \
00065                 SetDirty(key); \
00066                 return 1; }}
00067 
00068 #define REGISTER2_GENERIC_ARRAY(key,perm, data, element, dim) {\
00069         REGISTER2_KEYWORD_INFO(key, (DataType) (STATIC_1D_ARRAY+dim-1), sizeof(data element), sizeof(data)/sizeof(data element), perm, data element); \
00070         if (!strcmp(keyword, key)) {\
00071                 error_flag = 0; \
00072                 Wait(key); \
00073                 C->SendVar<int>(sizeof(data)); \
00074                 C->SendVar<int>(sizeof(data element)); \
00075                 C->SendArrayGeneric(data, sizeof(data), sizeof(data element)); \
00076                 Post(key); \
00077                 return 1; } \
00078         if (!strcmp(perm, "rw")) \
00079         if (!strcmp(keyword, "R" key)) {\
00080                 error_flag = 2;\
00081                 Wait(key); \
00082                 C->SendVar<int>(sizeof(data)); \
00083                 C->SendVar<int>(sizeof(data element)); \
00084                 C->RecvArrayGeneric(data, sizeof(data), sizeof(data element)); \
00085                 SetDirty(key); \
00086                 Post(key); \
00087                 return 1; }}
00088 
00089 #define REGISTER2_1D_ARRAY(key,perm,data) REGISTER2_GENERIC_ARRAY(key, perm, data, [0], 1)
00090 #define REGISTER2_2D_ARRAY(key,perm,data) REGISTER2_GENERIC_ARRAY(key, perm, data, [0][0], 2)
00091 #define REGISTER2_3D_ARRAY(key,perm,data) REGISTER2_GENERIC_ARRAY(key, perm, data, [0][0][0], 3)
00092 #define REGISTER2_4D_ARRAY(key,perm,data) REGISTER2_GENERIC_ARRAY(key, perm, data, [0][0][0][0], 4)
00093 
00094 #define REGISTER2_DYNAMIC_1D_ARRAY(key,perm, data, n1) {\
00095         REGISTER2_KEYWORD_INFO(key, DYNAMIC_1D_ARRAY, sizeof(data[0]), -1, perm, data[0]); \
00096         REGISTER2_VARIABLE(key "_dim1", "ro", n1); \
00097         if (!strcmp(keyword, key)) { \
00098                 error_flag = 0; \
00099                 Wait(key); \
00100                 C->SendVar<int>(n1); \
00101                 C->SendArray1D(data, n1); \
00102                 Post(key); \
00103                 return 1; } \
00104         if (!strcmp(perm, "rw")) \
00105         if (!strcmp(keyword, "R" key)) { \
00106                 error_flag = 2;\
00107                 Wait(key); \
00108                 C->SendVar<int>(n1); \
00109                 C->RecvArray1D(data, n1); \
00110                 SetDirty(key); \
00111                 Post(key); \
00112                 return 1; }}
00113 
00114 #define REGISTER2_DYNAMIC_2D_ARRAY(key, perm, data, n1, n2) {\
00115         REGISTER2_KEYWORD_INFO_NO_PTR(key, DYNAMIC_2D_ARRAY, sizeof(data[0][0]), -1, perm, data[0][0]); \
00116         REGISTER2_VARIABLE(key "_dim1", "ro", n1); \
00117         REGISTER2_VARIABLE(key "_dim2", "ro", n2); \
00118         if (!strcmp(keyword, key)) { \
00119                 error_flag = 0; \
00120                 Wait(key); \
00121                 C->SendVar<int>(n1); \
00122                 C->SendVar<int>(n2); \
00123                 C->SendArray2D(data, n1, n2); \
00124                 Post(key); \
00125                 return 1; } \
00126         if (!strcmp(perm, "rw")) \
00127         if (!strcmp(keyword, "R" key)) { \
00128                 error_flag = 2;\
00129                 Wait(key); \
00130                 C->SendVar<int>(n1); \
00131                 C->SendVar<int>(n2); \
00132                 C->RecvArray2D(data, n1, n2); \
00133                 SetDirty(key); \
00134                 Post(key); \
00135                 return 1; }}
00136 
00137 #define REGISTER2_DYNAMIC_3D_ARRAY(key,perm, data, n1, n2, n3) {\
00138         REGISTER2_KEYWORD_INFO_NO_PTR(key, DYNAMIC_3D_ARRAY, sizeof(data[0][0][0]), -1, perm, data[0][0][0]); \
00139         REGISTER2_VARIABLE(key "_dim1", "ro", n1); \
00140         REGISTER2_VARIABLE(key "_dim2", "ro", n2); \
00141         REGISTER2_VARIABLE(key "_dim3", "ro", n3); \
00142         if (!strcmp(keyword, key)) { \
00143                 error_flag = 0; \
00144                 Wait(key); \
00145                 C->SendVar<int>(n1); \
00146                 C->SendVar<int>(n2); \
00147                 C->SendVar<int>(n3); \
00148                 C->SendArray3D(data, n1, n2, n3); \
00149                 Post(key); \
00150                 return 1; } \
00151         if (!strcmp(perm, "rw")) \
00152         if (!strcmp(keyword, "R" key)) { \
00153                 error_flag = 2;\
00154                 Wait(key); \
00155                 C->SendVar<int>(n1); \
00156                 C->SendVar<int>(n2); \
00157                 C->SendVar<int>(n3); \
00158                 C->RecvArray3D(data, n1, n2, n3); \
00159                 SetDirty(key); \
00160                 Post(key); \
00161                 return 1; }}
00162 
00163 #define REGISTER2_DYNAMIC_4D_ARRAY(key,perm, data, n1, n2, n3, n4) {\
00164         REGISTER2_KEYWORD_INFO_NO_PTR(key, DYNAMIC_4D_ARRAY, sizeof(data[0][0][0][0]), -1, perm, data[0][0][0][0]); \
00165         REGISTER2_VARIABLE(key "_dim1", "ro", n1); \
00166         REGISTER2_VARIABLE(key "_dim2", "ro", n2); \
00167         REGISTER2_VARIABLE(key "_dim3", "ro", n3); \
00168         REGISTER2_VARIABLE(key "_dim4", "ro", n4); \
00169         if (!strcmp(keyword, key)) { \
00170                 error_flag = 0; \
00171                 Wait(key); \
00172                 C->SendVar<int>(n1); \
00173                 C->SendVar<int>(n2); \
00174                 C->SendVar<int>(n3); \
00175                 C->SendVar<int>(n4); \
00176                 C->SendArray4D(data, n1, n2, n3, n4); \
00177                 Post(key); \
00178                 return 1; } \
00179         if (!strcmp(perm, "rw")) \
00180         if (!strcmp(keyword, "R" key)) { \
00181                 error_flag = 2;\
00182                 Wait(key); \
00183                 C->SendVar<int>(n1); \
00184                 C->SendVar<int>(n2); \
00185                 C->SendVar<int>(n3); \
00186                 C->SendVar<int>(n4); \
00187                 C->RecvArray4D(data, n1, n2, n3, n4); \
00188                 SetDirty(key); \
00189                 Post(key); \
00190                 return 1; }}
00191 
00192 //**************************************************************************
00193 #endif  // _DATASERVER_REGISTER2_ORIG_H_
00194 //**************************************************************************

Generated on Sun Jun 16 17:36:41 2002 for Anirudh's Vortex-Wake Simulation Code by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001