/**
 * Autogenerated by Thrift Compiler (0.9.3)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
#ifndef testthrift_TYPES_H
#define testthrift_TYPES_H

#include <iosfwd>

#include <thrift/Thrift.h>
#include <thrift/TApplicationException.h>
#include <thrift/protocol/TProtocol.h>
#include <thrift/transport/TTransport.h>

#include <thrift/cxxfunctional.h>




class InnerStruct;

class ThriftTestObj;

typedef struct _InnerStruct__isset {
  _InnerStruct__isset() : field0(false) {}
  bool field0 :1;
} _InnerStruct__isset;

class InnerStruct {
 public:

  InnerStruct(const InnerStruct&);
  InnerStruct& operator=(const InnerStruct&);
  InnerStruct() : field0(0) {
  }

  virtual ~InnerStruct() throw();
  int32_t field0;

  _InnerStruct__isset __isset;

  void __set_field0(const int32_t val);

  bool operator == (const InnerStruct & rhs) const
  {
    if (!(field0 == rhs.field0))
      return false;
    return true;
  }
  bool operator != (const InnerStruct &rhs) const {
    return !(*this == rhs);
  }

  bool operator < (const InnerStruct & ) const;

  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

  virtual void printTo(std::ostream& out) const;
};

void swap(InnerStruct &a, InnerStruct &b);

inline std::ostream& operator<<(std::ostream& out, const InnerStruct& obj)
{
  obj.printTo(out);
  return out;
}

typedef struct _ThriftTestObj__isset {
  _ThriftTestObj__isset() : field1(false), field2(false), field3(false) {}
  bool field1 :1;
  bool field2 :1;
  bool field3 :1;
} _ThriftTestObj__isset;

class ThriftTestObj {
 public:

  ThriftTestObj(const ThriftTestObj&);
  ThriftTestObj& operator=(const ThriftTestObj&);
  ThriftTestObj() : field1(0), field2() {
  }

  virtual ~ThriftTestObj() throw();
  int32_t field1;
  std::string field2;
  std::vector<InnerStruct>  field3;

  _ThriftTestObj__isset __isset;

  void __set_field1(const int32_t val);

  void __set_field2(const std::string& val);

  void __set_field3(const std::vector<InnerStruct> & val);

  bool operator == (const ThriftTestObj & rhs) const
  {
    if (!(field1 == rhs.field1))
      return false;
    if (!(field2 == rhs.field2))
      return false;
    if (!(field3 == rhs.field3))
      return false;
    return true;
  }
  bool operator != (const ThriftTestObj &rhs) const {
    return !(*this == rhs);
  }

  bool operator < (const ThriftTestObj & ) const;

  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

  virtual void printTo(std::ostream& out) const;
};

void swap(ThriftTestObj &a, ThriftTestObj &b);

inline std::ostream& operator<<(std::ostream& out, const ThriftTestObj& obj)
{
  obj.printTo(out);
  return out;
}



#endif
