Property.h
上传用户:leon2013
上传日期:2007-01-10
资源大小:186k
文件大小:3k
源码类别:

杀毒

开发平台:

Visual C++

  1. // Property.h: interface for the Property class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_Property_H__D75B0E64_DC11_11D3_ACCF_C873CA3F5932__INCLUDED_)
  5. #define AFX_Property_H__D75B0E64_DC11_11D3_ACCF_C873CA3F5932__INCLUDED_
  6. #if _MSC_VER >= 1000
  7. #pragma once
  8. #endif // _MSC_VER >= 1000
  9. #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
  10. #include "afx.h"
  11. #pragma warning(disable : 4786)
  12. #include <vector>
  13. using namespace std;
  14. class Property : public CString
  15. {
  16. friend class Properties;
  17. public:
  18. Property();
  19. Property(LPCTSTR name, LPCTSTR value="");
  20. Property(LPCTSTR name, bool value);
  21. Property(LPCTSTR name, long value);
  22. Property(LPCTSTR name, double value);
  23. virtual ~Property();
  24. inline bool IsValid() const { return this==&InvalidProperty; }
  25. inline bool operator < (const Property& object) const { return false; }
  26. CString Name;
  27. // synonymous property methods (modify the AsString variable)
  28. __declspec(property(get=asstring,put=asstring)) bool AsString;
  29. __declspec(property(get=asbool,put=asbool)) bool AsBool;
  30. __declspec(property(get=asint,put=asint)) long AsInteger;
  31. __declspec(property(get=asfloat,put=asfloat)) double AsFloat;
  32. // conversion operators
  33. inline operator bool() const { return AsBool; }
  34. inline operator int() const { return AsInteger; }
  35. inline operator long() const { return AsInteger; }
  36. inline operator double() const { return (double)AsFloat; }
  37. // assignment operators
  38. inline Property& operator =(LPCTSTR s) { AsString=s; return *this; }
  39. inline Property& operator =(const bool b) { asbool(b); return *this; }
  40. inline Property& operator =(const long l) { asint(l); return *this; }
  41. inline Property& operator =(const double f) { asfloat((double)f); return *this; }
  42. static Property InvalidProperty;
  43. CString& asstring();
  44. void asstring(LPCTSTR s);
  45. bool asbool() const;
  46. void asbool(const bool b);
  47. long asint() const;
  48. void asint(const long i);
  49. double asfloat() const;
  50. void asfloat(const double f);
  51. };
  52. class Properties : public vector<Property>
  53. {
  54. public:
  55. Properties();
  56. Properties(const Properties& p);
  57. const Property& operator()(LPCTSTR name) const;
  58. Property& operator()(LPCTSTR name);
  59. bool contains(LPCTSTR name) const;
  60. static bool IsPropertyList(LPCTSTR s);
  61. Properties& operator +=(const Properties& p);
  62. Properties& operator =(const Properties& p);
  63. Properties& operator =(LPCTSTR plist);
  64. };
  65. #endif // !defined(AFX_Property_H__D75B0E64_DC11_11D3_ACCF_C873CA3F5932__INCLUDED_)