Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Copyright 2010 Your Name <your@email.address>
- * All rights reserved. Distributed under the terms of the MIT license.
- */
- #ifndef _CONTACTFIELD_H_
- #define _CONTACTFIELD_H_
- #include <Flattenable.h>
- #include <Message.h>
- #include <String.h>
- #include <Url.h>
- class BContactFieldVisitor;
- class BUrlContactField;
- class BNameContactField;
- class BNickNameContactField;
- class BContactField : public virtual BFlattenable {
- public:
- BContactField();
- virtual ~BContactField();
- virtual void Accept(BContactFieldVisitor* visitor) = 0;
- void SetUsage(const char* usage) { fUsage.Append(usage); }
- virtual bool IsEqual(BContactField* field) = 0;
- virtual BMessage* AsMessage();
- private:
- BString fUsage;
- };
- class BContactFieldVisitor {
- public:
- BContactFieldVisitor();
- virtual ~BContactFieldVisitor();
- virtual void Visit(BUrlContactField* field) = 0;
- virtual void Visit(BNameContactField* field) = 0;
- virtual void Visit(BNickNameContactField* field) = 0;
- };
- class BStringContactFieldBase : public virtual BContactField {
- public:
- BStringContactFieldBase(BString& str) : fString(str) {}
- BStringContactFieldBase(const char* str) : fString(str) {}
- virtual ~BStringContactFieldBase();
- virtual void Accept(BContactFieldVisitor* v) = 0;
- // void SetUsage(const char* usage) { fUsage.Append(usage); }
- bool IsEqual(BStringContactFieldBase* field)
- {
- if (field->fString.Compare(fString) == 0)
- if (field->fUsage.Compare(fUsage) == 0)
- return true;
- else
- return false;
- }
- BMessage* Message();
- protected:
- BString fString;
- BString fUsage;
- };
- class BNameContactField : public BStringContactFieldBase {
- public:
- BNameContactField(BString str)
- :
- BStringContactFieldBase(str) {}
- BNameContactField(const char* str)
- :
- BStringContactFieldBase(str) {}
- virtual ~BNameContactField();
- void Accept(BContactFieldVisitor* v) { v->Visit(this); }
- };
- class BNickNameContactField : public BStringContactFieldBase {
- public:
- BNickNameContactField(BString str)
- :
- BStringContactFieldBase(str) {}
- BNickNameContactField(const char* str)
- :
- BStringContactFieldBase(str) {}
- void Accept(BContactFieldVisitor* v) { v->Visit(this); }
- virtual ~BNickNameContactField();
- };
- class BUrlContactField : public virtual BContactField {
- public:
- BUrlContactField(BUrl* url);
- BUrlContactField(const char* url);
- virtual ~BUrlContactField();
- void Accept(BContactFieldVisitor* v) { v->Visit(this); }
- // void SetUsage(const char* usage);
- bool IsEqual(BUrlContactField* field);
- BMessage* Message();
- private:
- const char* fUrl;
- const char* fUsage;
- };
- #endif // _CONTACTFIELD_H_
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement