Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
469
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. /*
  2. * Copyright 2010 Your Name <your@email.address>
  3. * All rights reserved. Distributed under the terms of the MIT license.
  4. */
  5.  
  6. #ifndef _CONTACTFIELD_H_
  7. #define _CONTACTFIELD_H_
  8.  
  9. #include <Flattenable.h>
  10. #include <Message.h>
  11. #include <String.h>
  12. #include <Url.h>
  13.  
  14. class BContactFieldVisitor;
  15. class BUrlContactField;
  16. class BNameContactField;
  17. class BNickNameContactField;
  18.  
  19. class BContactField : public virtual BFlattenable {
  20. public:
  21. BContactField();
  22. virtual ~BContactField();
  23.  
  24. virtual void Accept(BContactFieldVisitor* visitor) = 0;
  25.  
  26. void SetUsage(const char* usage) { fUsage.Append(usage); }
  27.  
  28. virtual bool IsEqual(BContactField* field) = 0;
  29.  
  30. virtual BMessage* AsMessage();
  31. private:
  32. BString fUsage;
  33. };
  34.  
  35.  
  36. class BContactFieldVisitor {
  37. public:
  38. BContactFieldVisitor();
  39. virtual ~BContactFieldVisitor();
  40.  
  41. virtual void Visit(BUrlContactField* field) = 0;
  42. virtual void Visit(BNameContactField* field) = 0;
  43. virtual void Visit(BNickNameContactField* field) = 0;
  44. };
  45.  
  46.  
  47. class BStringContactFieldBase : public virtual BContactField {
  48. public:
  49. BStringContactFieldBase(BString& str) : fString(str) {}
  50. BStringContactFieldBase(const char* str) : fString(str) {}
  51.  
  52. virtual ~BStringContactFieldBase();
  53.  
  54. virtual void Accept(BContactFieldVisitor* v) = 0;
  55.  
  56. // void SetUsage(const char* usage) { fUsage.Append(usage); }
  57.  
  58. bool IsEqual(BStringContactFieldBase* field)
  59. {
  60. if (field->fString.Compare(fString) == 0)
  61. if (field->fUsage.Compare(fUsage) == 0)
  62. return true;
  63. else
  64. return false;
  65. }
  66.  
  67. BMessage* Message();
  68. protected:
  69. BString fString;
  70. BString fUsage;
  71. };
  72.  
  73.  
  74. class BNameContactField : public BStringContactFieldBase {
  75. public:
  76. BNameContactField(BString str)
  77. :
  78. BStringContactFieldBase(str) {}
  79.  
  80. BNameContactField(const char* str)
  81. :
  82. BStringContactFieldBase(str) {}
  83.  
  84. virtual ~BNameContactField();
  85.  
  86. void Accept(BContactFieldVisitor* v) { v->Visit(this); }
  87. };
  88.  
  89.  
  90. class BNickNameContactField : public BStringContactFieldBase {
  91. public:
  92. BNickNameContactField(BString str)
  93. :
  94. BStringContactFieldBase(str) {}
  95.  
  96. BNickNameContactField(const char* str)
  97. :
  98. BStringContactFieldBase(str) {}
  99.  
  100. void Accept(BContactFieldVisitor* v) { v->Visit(this); }
  101.  
  102. virtual ~BNickNameContactField();
  103. };
  104.  
  105.  
  106. class BUrlContactField : public virtual BContactField {
  107. public:
  108. BUrlContactField(BUrl* url);
  109. BUrlContactField(const char* url);
  110.  
  111. virtual ~BUrlContactField();
  112.  
  113. void Accept(BContactFieldVisitor* v) { v->Visit(this); }
  114.  
  115. // void SetUsage(const char* usage);
  116.  
  117. bool IsEqual(BUrlContactField* field);
  118.  
  119. BMessage* Message();
  120. private:
  121. const char* fUrl;
  122. const char* fUsage;
  123. };
  124.  
  125. #endif // _CONTACTFIELD_H_
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement