00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _association_h
00018 #define _association_h
00019
00020 #include <spl/Debug.h>
00021 #include <spl/Memory.h>
00022
00029 template<typename KT, typename VT>
00030 class Association : public IMemoryValidate
00031 {
00032 protected:
00033 KT m_key;
00034 VT m_val;
00035
00036 public:
00037 inline Association()
00038 : m_key(), m_val()
00039 {
00040 }
00041
00042 inline Association(KT key, VT val)
00043 : m_key(key), m_val(val)
00044 {
00045 }
00046
00047 inline Association(const Association& assoc)
00048 : m_key(assoc.m_key), m_val(assoc.m_val)
00049 {
00050 }
00051
00052 virtual ~Association()
00053 {
00054 }
00055
00056 inline KT Key()
00057 {
00058 return m_key;
00059 }
00060
00061 inline VT Value()
00062 {
00063 return m_val;
00064 }
00065
00066 inline KT& KeyRef()
00067 {
00068 return m_key;
00069 }
00070
00071 inline VT& ValueRef()
00072 {
00073 return m_val;
00074 }
00075
00076 inline Association<KT, VT>& operator =(const Association<KT, VT>& a)
00077 {
00078 m_key = a.m_key;
00079 m_val = a.m_val;
00080
00081 return *this;
00082 }
00083
00084 #ifdef DEBUG
00085 virtual void ValidateMem() const
00086 {
00087 ValidateType( m_key );
00088 ValidateType( m_val );
00089 }
00090
00091 virtual void CheckMem() const
00092 {
00093 ValidateType( m_key );
00094 ValidateType( m_val );
00095 }
00096 #endif
00097 };
00098
00101 #endif