00001 #ifndef XDKWRL_SFSTRING_H
00002 #define XDKWRL_SFSTRING_H
00003
00004 #include <xdkwrl/config.h>
00005 #include <xdkwrl/fieldtypes.h>
00006 #include <iostream>
00007 #include <string>
00008
00009 namespace wrl
00010 {
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 class XDKWRL_EXPORT SFString
00021 {
00022 public:
00023 inline SFString();
00024 inline SFString(const char* c);
00025 inline SFString(const std::string& s);
00026 inline SFString& operator=(const char* b);
00027 inline SFString& operator=(const std::string& b);
00028 inline SFString& operator=(const SFString& b);
00029 inline operator const char*() const;
00030 inline operator std::string() const;
00031 static inline const char* typeName();
00032 static inline FieldTypeId typeId();
00033 inline bool operator==(const SFString& s) const;
00034 friend std::ostream& operator<<(std::ostream& s,const SFString& f);
00035 protected:
00036 private:
00037 std::string value_;
00038 };
00039
00040
00041
00042 inline
00043 SFString::SFString()
00044 : value_()
00045 {
00046 }
00047 inline
00048 SFString::SFString(const char* c)
00049 : value_(c)
00050 {
00051 }
00052 inline
00053 SFString::SFString(const std::string& s)
00054 : value_(s)
00055 {
00056 }
00057 inline SFString&
00058 SFString::operator=(const char* b)
00059 {
00060 value_ = b;
00061 return *this;
00062 }
00063 inline SFString&
00064 SFString::operator=(const std::string& b)
00065 {
00066 value_ = b;
00067 return *this;
00068 }
00069 inline SFString&
00070 SFString::operator=(const SFString& b)
00071 {
00072 value_ = b.value_;
00073 return *this;
00074 }
00075 inline
00076 SFString::operator const char*() const
00077 {
00078 return value_.c_str();
00079 }
00080 inline
00081 SFString::operator std::string() const
00082 {
00083 return value_;
00084 }
00085 inline const char*
00086 SFString::typeName()
00087 {
00088 return "SFString";
00089 }
00090 inline FieldTypeId
00091 SFString::typeId()
00092 {
00093 return sfString;
00094 }
00095 inline bool
00096 SFString::operator==(const SFString& s) const
00097 {
00098 return value_ == s.value_;
00099 }
00100 };
00101
00102 #endif // XDKWRL_SFSTRING_H