/**
 * Autogenerated by Thrift
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 */
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.IO;
using Thrift;
using Thrift.Collections;
using Thrift.Protocol;
using Thrift.Transport;
namespace Evernote.EDAM.NoteStore
{

  #if !SILVERLIGHT && !NETFX_CORE
  [Serializable]
  #endif
  public partial class NotesMetadataResultSpec : TBase
  {
    private bool _includeTitle;
    private bool _includeContentLength;
    private bool _includeCreated;
    private bool _includeUpdated;
    private bool _includeDeleted;
    private bool _includeUpdateSequenceNum;
    private bool _includeNotebookGuid;
    private bool _includeTagGuids;
    private bool _includeAttributes;
    private bool _includeLargestResourceMime;
    private bool _includeLargestResourceSize;

    public bool IncludeTitle
    {
      get
      {
        return _includeTitle;
      }
      set
      {
        __isset.includeTitle = true;
        this._includeTitle = value;
      }
    }

    public bool IncludeContentLength
    {
      get
      {
        return _includeContentLength;
      }
      set
      {
        __isset.includeContentLength = true;
        this._includeContentLength = value;
      }
    }

    public bool IncludeCreated
    {
      get
      {
        return _includeCreated;
      }
      set
      {
        __isset.includeCreated = true;
        this._includeCreated = value;
      }
    }

    public bool IncludeUpdated
    {
      get
      {
        return _includeUpdated;
      }
      set
      {
        __isset.includeUpdated = true;
        this._includeUpdated = value;
      }
    }

    public bool IncludeDeleted
    {
      get
      {
        return _includeDeleted;
      }
      set
      {
        __isset.includeDeleted = true;
        this._includeDeleted = value;
      }
    }

    public bool IncludeUpdateSequenceNum
    {
      get
      {
        return _includeUpdateSequenceNum;
      }
      set
      {
        __isset.includeUpdateSequenceNum = true;
        this._includeUpdateSequenceNum = value;
      }
    }

    public bool IncludeNotebookGuid
    {
      get
      {
        return _includeNotebookGuid;
      }
      set
      {
        __isset.includeNotebookGuid = true;
        this._includeNotebookGuid = value;
      }
    }

    public bool IncludeTagGuids
    {
      get
      {
        return _includeTagGuids;
      }
      set
      {
        __isset.includeTagGuids = true;
        this._includeTagGuids = value;
      }
    }

    public bool IncludeAttributes
    {
      get
      {
        return _includeAttributes;
      }
      set
      {
        __isset.includeAttributes = true;
        this._includeAttributes = value;
      }
    }

    public bool IncludeLargestResourceMime
    {
      get
      {
        return _includeLargestResourceMime;
      }
      set
      {
        __isset.includeLargestResourceMime = true;
        this._includeLargestResourceMime = value;
      }
    }

    public bool IncludeLargestResourceSize
    {
      get
      {
        return _includeLargestResourceSize;
      }
      set
      {
        __isset.includeLargestResourceSize = true;
        this._includeLargestResourceSize = value;
      }
    }


    public Isset __isset;
    #if !SILVERLIGHT && !NETFX_CORE
    [Serializable]
    #endif
    public struct Isset {
      public bool includeTitle;
      public bool includeContentLength;
      public bool includeCreated;
      public bool includeUpdated;
      public bool includeDeleted;
      public bool includeUpdateSequenceNum;
      public bool includeNotebookGuid;
      public bool includeTagGuids;
      public bool includeAttributes;
      public bool includeLargestResourceMime;
      public bool includeLargestResourceSize;
    }

    public NotesMetadataResultSpec() {
    }

    public void Read (TProtocol iprot)
    {
      TField field;
      iprot.ReadStructBegin();
      while (true)
      {
        field = iprot.ReadFieldBegin();
        if (field.Type == TType.Stop) { 
          break;
        }
        switch (field.ID)
        {
          case 2:
            if (field.Type == TType.Bool) {
              IncludeTitle = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 5:
            if (field.Type == TType.Bool) {
              IncludeContentLength = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 6:
            if (field.Type == TType.Bool) {
              IncludeCreated = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 7:
            if (field.Type == TType.Bool) {
              IncludeUpdated = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 8:
            if (field.Type == TType.Bool) {
              IncludeDeleted = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 10:
            if (field.Type == TType.Bool) {
              IncludeUpdateSequenceNum = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 11:
            if (field.Type == TType.Bool) {
              IncludeNotebookGuid = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 12:
            if (field.Type == TType.Bool) {
              IncludeTagGuids = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 14:
            if (field.Type == TType.Bool) {
              IncludeAttributes = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 20:
            if (field.Type == TType.Bool) {
              IncludeLargestResourceMime = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 21:
            if (field.Type == TType.Bool) {
              IncludeLargestResourceSize = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          default: 
            TProtocolUtil.Skip(iprot, field.Type);
            break;
        }
        iprot.ReadFieldEnd();
      }
      iprot.ReadStructEnd();
    }

    public void Write(TProtocol oprot) {
      TStruct struc = new TStruct("NotesMetadataResultSpec");
      oprot.WriteStructBegin(struc);
      TField field = new TField();
      if (__isset.includeTitle) {
        field.Name = "includeTitle";
        field.Type = TType.Bool;
        field.ID = 2;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeTitle);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeContentLength) {
        field.Name = "includeContentLength";
        field.Type = TType.Bool;
        field.ID = 5;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeContentLength);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeCreated) {
        field.Name = "includeCreated";
        field.Type = TType.Bool;
        field.ID = 6;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeCreated);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeUpdated) {
        field.Name = "includeUpdated";
        field.Type = TType.Bool;
        field.ID = 7;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeUpdated);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeDeleted) {
        field.Name = "includeDeleted";
        field.Type = TType.Bool;
        field.ID = 8;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeDeleted);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeUpdateSequenceNum) {
        field.Name = "includeUpdateSequenceNum";
        field.Type = TType.Bool;
        field.ID = 10;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeUpdateSequenceNum);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeNotebookGuid) {
        field.Name = "includeNotebookGuid";
        field.Type = TType.Bool;
        field.ID = 11;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeNotebookGuid);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeTagGuids) {
        field.Name = "includeTagGuids";
        field.Type = TType.Bool;
        field.ID = 12;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeTagGuids);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeAttributes) {
        field.Name = "includeAttributes";
        field.Type = TType.Bool;
        field.ID = 14;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeAttributes);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeLargestResourceMime) {
        field.Name = "includeLargestResourceMime";
        field.Type = TType.Bool;
        field.ID = 20;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeLargestResourceMime);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeLargestResourceSize) {
        field.Name = "includeLargestResourceSize";
        field.Type = TType.Bool;
        field.ID = 21;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeLargestResourceSize);
        oprot.WriteFieldEnd();
      }
      oprot.WriteFieldStop();
      oprot.WriteStructEnd();
    }

    public override string ToString() {
      StringBuilder sb = new StringBuilder("NotesMetadataResultSpec(");
      sb.Append("IncludeTitle: ");
      sb.Append(IncludeTitle);
      sb.Append(",IncludeContentLength: ");
      sb.Append(IncludeContentLength);
      sb.Append(",IncludeCreated: ");
      sb.Append(IncludeCreated);
      sb.Append(",IncludeUpdated: ");
      sb.Append(IncludeUpdated);
      sb.Append(",IncludeDeleted: ");
      sb.Append(IncludeDeleted);
      sb.Append(",IncludeUpdateSequenceNum: ");
      sb.Append(IncludeUpdateSequenceNum);
      sb.Append(",IncludeNotebookGuid: ");
      sb.Append(IncludeNotebookGuid);
      sb.Append(",IncludeTagGuids: ");
      sb.Append(IncludeTagGuids);
      sb.Append(",IncludeAttributes: ");
      sb.Append(IncludeAttributes);
      sb.Append(",IncludeLargestResourceMime: ");
      sb.Append(IncludeLargestResourceMime);
      sb.Append(",IncludeLargestResourceSize: ");
      sb.Append(IncludeLargestResourceSize);
      sb.Append(")");
      return sb.ToString();
    }

  }

}
