VR-Link API Documentation for HLA Evolved
datumMap.h
Go to the documentation of this file.
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 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)