00001
00094 #ifndef INC_RVC_DESCRIPTOR_H
00095 #define INC_RVC_DESCRIPTOR_H
00096
00097 #ifndef INC_MI32_FIXEDSTR_H
00098 #include <mi32/fixedstr.h>
00099 #endif
00100
00101 #ifdef RVCSYSDLL
00102 #define RVCSYSLIBCLASSEXPORT MI_DLLCLASSEXPORT
00103 #else
00104 #define RVCSYSLIBCLASSEXPORT MI_DLLCLASSIMPORT
00105 #endif
00106
00107 namespace RVC {
00108
00109 typedef FIXEDSTRING<16> OBJECTNAME;
00110
00112 class RVCSYSLIBCLASSEXPORT DESCRIPTOR {
00113 public:
00114
00117 DESCRIPTOR ();
00118
00123 DESCRIPTOR (
00124 const MISTRING& name
00125 );
00126
00131 DESCRIPTOR (
00132 TEXTID TextID
00133 );
00134
00136 DESCRIPTOR (
00137 const MISTRING& name,
00138 const MISTRING& description
00139 );
00140
00142 DEPRECATED DESCRIPTOR (
00143 const RVC::OBJECTNAME& name
00144 );
00145
00147 DESCRIPTOR (
00148 const DESCRIPTOR& rhs
00149 ) :
00150 m_Name(rhs.m_Name),
00151 m_ShortName(rhs.m_ShortName),
00152 m_Description(rhs.m_Description),
00153 m_Source(rhs.m_Source)
00154 {}
00155
00157 ~DESCRIPTOR ();
00158
00160 DESCRIPTOR& operator= (
00161 const DESCRIPTOR& rhs
00162 ) {
00163 if (this != &rhs) {
00164 m_Name = rhs.m_Name;
00165 m_ShortName = rhs.m_ShortName;
00166 m_Description = rhs.m_Description;
00167 m_Source = rhs.m_Source;
00168 }
00169 return (*this);
00170 }
00171
00176 DESCRIPTOR& operator= (
00177 const MISTRING& name
00178 );
00179
00184 DESCRIPTOR& operator= (
00185 TEXTID textid
00186 );
00187
00189 void Clear (
00190 ) {
00191 m_Name.Clear();
00192 m_ShortName.Clear();
00193 m_Description.Clear();
00194 m_Source.Clear();
00195 return;
00196 }
00197
00200 const MISTRING& GetDescription (
00201 ) const { return (m_Description); }
00202
00205 const MISTRING& GetFullName (
00206 ) const { return (m_Name); }
00207
00210 const OBJECTNAME& GetShortName (
00211 ) const { return (m_ShortName); }
00212
00215 const OBJECTNAME& GetSource (
00216 ) const;
00217
00219 bool IsEmpty (
00220 ) const { return (m_Name.IsEmpty() && m_Description.IsEmpty()); }
00221
00223 bool IsEqual (
00224 const DESCRIPTOR& rhs
00225 ) const;
00226
00228 bool IsLessThan (
00229 const DESCRIPTOR& rhs
00230 ) const { return (m_Name < rhs.m_Name || (m_Name == rhs.m_Name && m_Description < rhs.m_Description)); }
00231
00233 void SetDescription (
00234 const MISTRING& Description
00235 ) { m_Description = Description; }
00236
00239 void SetName (
00240 const MISTRING& Name
00241 );
00242
00246 void SetName (
00247 const MISTRING& Name,
00248 FastDelegate<int(const RVC::OBJECTNAME&)> DelegateTestUniqueShortName
00249 );
00250
00252 void SetShortName (
00253 const OBJECTNAME& name
00254 );
00255
00257 void SetSource (
00258 const OBJECTNAME& Source
00259 ) { m_Source = Source; }
00260
00263 void SetSource (
00264 const char* Source
00265 );
00266
00267 private:
00268 #ifndef GENERATING_DOXYGEN_OUTPUT
00269 MISTRING m_Name;
00270 MISTRING m_Description;
00271 OBJECTNAME m_ShortName;
00272 mutable OBJECTNAME m_Source;
00273 #endif // GENERATING_DOXYGEN_OUTPUT
00274 };
00275
00276 }
00277
00278 #undef RVCSYSLIBCLASSEXPORT
00279
00280 inline bool operator== (
00281 const RVC::DESCRIPTOR& lhs,
00282 const RVC::DESCRIPTOR& rhs
00283 ) { return (lhs.IsEqual(rhs)); }
00284
00285 inline bool operator!= (
00286 const RVC::DESCRIPTOR& lhs,
00287 const RVC::DESCRIPTOR& rhs
00288 ) { return (!lhs.IsEqual(rhs)); }
00289
00291 inline bool operator< (
00292 const RVC::DESCRIPTOR& lhs,
00293 const RVC::DESCRIPTOR& rhs
00294 ) { return (lhs.IsLessThan(rhs)); }
00295
00296 #endif // INC_RVC_DESCRIPTOR_H