![]() |
VR-Link API Documentation for HLA Evolved
|
00001 /******************************************************************** 00002 / Copyright (c) 1997 MaK Technologies, Inc. 00003 / All rights reserved. 00004 ********************************************************************/ 00005 /******************************************************************** 00006 / $RCSfile: datumMap.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 ********************************************************************/ 00008 00011 00012 #ifndef DtDatumMap_H_ 00013 #define DtDatumMap_H_ 00014 00015 #if DtDIS 00016 00017 #include <vlutil/vlConfig.h> 00018 #include <stdio.h> 00019 00020 #if DT_HAVE_STD_H 00021 #include <std.h> 00022 #endif 00023 00024 #include <vlutil/vlHashlist.h> 00025 #include <vlpi/disEnums.h> 00026 #include "setDataPdu.h" 00027 #include "queryPdu.h" 00028 #include "dataPdu.h" 00029 00030 class DT_DLL_VL DtDatumMapEntry 00031 { 00032 public: 00033 DtDatumMapEntry() {} 00034 virtual void setdata(const DtSetDataPdu &setDataPdu, 00035 int fixedOrVar, int index, void *usr) = 0; 00036 virtual void getdata(DtDataPdu *dataPdu, int fixedOrVar, int index, 00037 void *usr) = 0; 00038 }; 00039 00040 typedef void (*DtGlobalSetFcn)(const DtSetDataPdu &pdu, int fixedOrVar, 00041 int index, void *usr); 00042 typedef void (*DtGlobalGetFcn)(DtDataPdu *pdu, int fixedOrVar, 00043 int index, void *usr); 00044 00045 class DT_DLL_VL DtDmeGlobalFcns : public DtDatumMapEntry 00046 { 00047 public: 00048 DtDmeGlobalFcns(DtGlobalSetFcn setF, DtGlobalGetFcn getF) 00049 : DtDatumMapEntry(), setFcn(setF), getFcn(getF) {} 00050 00051 void setdata(const DtSetDataPdu &setDataPdu, 00052 int fixedOrVar, int index, void *usr) 00053 { 00054 if (setFcn) 00055 (*setFcn)(setDataPdu, fixedOrVar, index, usr); 00056 } 00057 00058 void getdata(DtDataPdu *dataPdu, int fixedOrVar, int index, 00059 void *usr) 00060 { 00061 if (getFcn) 00062 (*getFcn)(dataPdu, fixedOrVar, index, usr); 00063 } 00064 protected: 00065 DtGlobalGetFcn getFcn; 00066 DtGlobalSetFcn setFcn; 00067 }; 00068 00069 class DT_DLL_VL DtDatumMap { 00070 public: 00071 DtDatumMap(void) : list(101) { } 00072 00073 void setData(const DtSetDataPdu &data, void *usr); 00074 00075 void fillDataPdu(DtDataPdu *dataPdu, void *usr); 00076 void initDataPdu(const DtSetDataPdu &setDataPdu, DtDataPdu *dataPdu); 00077 void initDataPdu(const DtDataQueryPdu &queryPdu, DtDataPdu *dataPdu); 00078 void makeResponseDataPdu(const DtSetDataPdu &setDataPdu, 00079 DtDataPdu *dataPdu, void *usr) 00080 { 00081 initDataPdu(setDataPdu, dataPdu); 00082 fillDataPdu(dataPdu, usr); 00083 } 00084 void makeResponseDataPdu(const DtDataQueryPdu &queryPdu, 00085 DtDataPdu *dataPdu, void *usr) 00086 { 00087 initDataPdu(queryPdu, dataPdu); 00088 fillDataPdu(dataPdu, usr); 00089 } 00090 00091 DtDatumMapEntry *lookup(DtDatumParam id, int verbose=1); 00092 void install(DtDatumMapEntry *entry, DtDatumParam id); 00093 void remove(DtDatumParam id, int verbose=1); 00094 protected: 00095 DtHashlist list; 00096 }; 00097 00098 #endif 00099 #endif 00100 00101 00102 00103 00104 00105 00106