BSON C++ API  2.5.1
uma::bson
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Object.h
Go to the documentation of this file.
1 #ifndef UMA_BSON_OBJECT_H
2 #define UMA_BSON_OBJECT_H
3 
4 #include <uma/bson/Value.h>
5 
6 #include <Poco/Exception.h>
7 
8 #include <vector>
9 
10 namespace uma
11 {
12  namespace bson
13  {
27  class UMA_BSON_API Object : public Value
28  {
29  public:
31  virtual ~Object() {}
32 
34  typedef std::vector<std::string> FieldNames;
35 
37  typedef FieldNames::const_iterator FieldsIterator;
38 
45  virtual const FieldNames getFieldNames() const = 0;
46 
61  virtual Value& getValue( const std::string& name ) = 0;
62 
64  virtual const Value& getValue( const std::string& name ) const
65  {
66  return const_cast<Object*>( this )->getValue( name );
67  }
68 
100  virtual Object* getObjectForArray( const std::string& /* name */ )
101  {
102  throw Poco::NotImplementedException();
103  }
104 
138  virtual void setValue( const std::string& name, const Value& value );
139 
150  virtual void toBson( std::ostream& os ) const;
151 
161  virtual void populate( std::istream& is );
162 
163  int32_t getSize() const;
164 
171  Value::Type getType() const { return Value::Object; }
172  };
173 
191  UMA_BSON_API bool operator == ( const Object& lhs, const Object& rhs );
192 
194  inline bool operator != ( const Object& lhs, const Object& rhs )
195  {
196  return ! ( lhs == rhs );
197  }
198  }
199 }
200 
201 #endif // UMA_BSON_OBJECT_H