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

#include <iosfwd>

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

#include <functional>
#include <memory>


namespace thrift { namespace test {

typedef int32_t MyInt32;

typedef std::string MyString;

typedef class TypedefTestStruct MyStruct;

class TypedefTestStruct;

typedef struct _TypedefTestStruct__isset {
  _TypedefTestStruct__isset() : field_MyInt32(false), field_MyString(false), field_Int32(false), field_String(false) {}
  bool field_MyInt32 :1;
  bool field_MyString :1;
  bool field_Int32 :1;
  bool field_String :1;
} _TypedefTestStruct__isset;

class TypedefTestStruct : public virtual ::apache::thrift::TBase {
 public:

  TypedefTestStruct(const TypedefTestStruct&);
  TypedefTestStruct& operator=(const TypedefTestStruct&);
  TypedefTestStruct() : field_MyInt32(0), field_MyString(), field_Int32(0), field_String() {
  }

  virtual ~TypedefTestStruct() noexcept;
  MyInt32 field_MyInt32;
  MyString field_MyString;
  int32_t field_Int32;
  std::string field_String;

  _TypedefTestStruct__isset __isset;

  void __set_field_MyInt32(const MyInt32 val);

  void __set_field_MyString(const MyString& val);

  void __set_field_Int32(const int32_t val);

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

  bool operator == (const TypedefTestStruct & rhs) const
  {
    if (!(field_MyInt32 == rhs.field_MyInt32))
      return false;
    if (!(field_MyString == rhs.field_MyString))
      return false;
    if (!(field_Int32 == rhs.field_Int32))
      return false;
    if (!(field_String == rhs.field_String))
      return false;
    return true;
  }
  bool operator != (const TypedefTestStruct &rhs) const {
    return !(*this == rhs);
  }

  bool operator < (const TypedefTestStruct & ) 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(TypedefTestStruct &a, TypedefTestStruct &b);

std::ostream& operator<<(std::ostream& out, const TypedefTestStruct& obj);

}} // namespace

#endif
