00001 #ifndef _RDA_IO_POINT_H_
00002 #define _RDA_IO_POINT_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include <string.h>
00014 #include <stdlib.h>
00015
00032
00033
00034
00035
00036
00037 class rdaIOPoint
00038 {
00039 char* dn;
00040 char* pn;
00041 char* cs;
00042
00043 public:
00044
00045
00046
00047
00048 rdaIOPoint(const char* deviceName,
00049 const char* propertyName,
00050 const char* cycleSelector = 0)
00051 :
00052 cs(0)
00053 {
00054 dn = strdup(deviceName);
00055 pn = strdup(propertyName);
00056 if (cycleSelector != 0) cs = strdup(cycleSelector);
00057 }
00058
00059 rdaIOPoint(const rdaIOPoint& iop)
00060 {
00061 dn = strdup(iop.dn);
00062 pn = strdup(iop.pn);
00063 if (iop.cs != 0) cs = strdup(iop.cs);
00064 else cs = 0;
00065 }
00066
00067
00068
00069
00070 virtual ~rdaIOPoint()
00071 {
00072 free( dn );
00073 free( pn );
00074 if (cs != 0) free( cs );
00075 }
00076
00077
00078
00079
00080 rdaIOPoint& operator=(const rdaIOPoint& iop)
00081 {
00082 if (this != &iop)
00083 {
00084 free( dn );
00085 free( pn );
00086 if (cs != 0) free( cs );
00087 dn = strdup(iop.dn);
00088 pn = strdup(iop.pn);
00089 if (iop.cs != 0) cs = strdup(iop.cs);
00090 else cs = 0;
00091 }
00092 return *this;
00093 }
00094
00095 bool operator==(const rdaIOPoint& iop) const
00096 {
00097 if (strcmp(dn, iop.dn)) return false;
00098 if (strcmp(pn, iop.pn)) return false;
00099 if (cs == 0 || iop.cs == 0)
00100 {
00101 if (cs != iop.cs) return false;
00102 }
00103 else if (strcmp(cs, iop.cs)) return false;
00104 return true;
00105 }
00106
00107 bool operator!=(const rdaIOPoint& iop) const
00108 {
00109 return !(*this == iop);
00110 }
00111
00112
00113
00114
00118 const char* getDeviceName() const { return dn; }
00119
00123 const char* getPropertyName() const { return pn; }
00124
00128 const char* getCycleSelector() const { return cs; }
00129
00130 };
00131
00132 #endif