/**
 * 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 SyncChunkFilter : TBase
  {
    private bool _includeNotes;
    private bool _includeNoteResources;
    private bool _includeNoteAttributes;
    private bool _includeNotebooks;
    private bool _includeTags;
    private bool _includeSearches;
    private bool _includeResources;
    private bool _includeLinkedNotebooks;
    private bool _includeExpunged;
    private bool _includeNoteApplicationDataFullMap;
    private bool _includeResourceApplicationDataFullMap;
    private bool _includeNoteResourceApplicationDataFullMap;
    private string _requireNoteContentClass;

    public bool IncludeNotes
    {
      get
      {
        return _includeNotes;
      }
      set
      {
        __isset.includeNotes = true;
        this._includeNotes = value;
      }
    }

    public bool IncludeNoteResources
    {
      get
      {
        return _includeNoteResources;
      }
      set
      {
        __isset.includeNoteResources = true;
        this._includeNoteResources = value;
      }
    }

    public bool IncludeNoteAttributes
    {
      get
      {
        return _includeNoteAttributes;
      }
      set
      {
        __isset.includeNoteAttributes = true;
        this._includeNoteAttributes = value;
      }
    }

    public bool IncludeNotebooks
    {
      get
      {
        return _includeNotebooks;
      }
      set
      {
        __isset.includeNotebooks = true;
        this._includeNotebooks = value;
      }
    }

    public bool IncludeTags
    {
      get
      {
        return _includeTags;
      }
      set
      {
        __isset.includeTags = true;
        this._includeTags = value;
      }
    }

    public bool IncludeSearches
    {
      get
      {
        return _includeSearches;
      }
      set
      {
        __isset.includeSearches = true;
        this._includeSearches = value;
      }
    }

    public bool IncludeResources
    {
      get
      {
        return _includeResources;
      }
      set
      {
        __isset.includeResources = true;
        this._includeResources = value;
      }
    }

    public bool IncludeLinkedNotebooks
    {
      get
      {
        return _includeLinkedNotebooks;
      }
      set
      {
        __isset.includeLinkedNotebooks = true;
        this._includeLinkedNotebooks = value;
      }
    }

    public bool IncludeExpunged
    {
      get
      {
        return _includeExpunged;
      }
      set
      {
        __isset.includeExpunged = true;
        this._includeExpunged = value;
      }
    }

    public bool IncludeNoteApplicationDataFullMap
    {
      get
      {
        return _includeNoteApplicationDataFullMap;
      }
      set
      {
        __isset.includeNoteApplicationDataFullMap = true;
        this._includeNoteApplicationDataFullMap = value;
      }
    }

    public bool IncludeResourceApplicationDataFullMap
    {
      get
      {
        return _includeResourceApplicationDataFullMap;
      }
      set
      {
        __isset.includeResourceApplicationDataFullMap = true;
        this._includeResourceApplicationDataFullMap = value;
      }
    }

    public bool IncludeNoteResourceApplicationDataFullMap
    {
      get
      {
        return _includeNoteResourceApplicationDataFullMap;
      }
      set
      {
        __isset.includeNoteResourceApplicationDataFullMap = true;
        this._includeNoteResourceApplicationDataFullMap = value;
      }
    }

    public string RequireNoteContentClass
    {
      get
      {
        return _requireNoteContentClass;
      }
      set
      {
        __isset.requireNoteContentClass = true;
        this._requireNoteContentClass = value;
      }
    }


    public Isset __isset;
    #if !SILVERLIGHT && !NETFX_CORE
    [Serializable]
    #endif
    public struct Isset {
      public bool includeNotes;
      public bool includeNoteResources;
      public bool includeNoteAttributes;
      public bool includeNotebooks;
      public bool includeTags;
      public bool includeSearches;
      public bool includeResources;
      public bool includeLinkedNotebooks;
      public bool includeExpunged;
      public bool includeNoteApplicationDataFullMap;
      public bool includeResourceApplicationDataFullMap;
      public bool includeNoteResourceApplicationDataFullMap;
      public bool requireNoteContentClass;
    }

    public SyncChunkFilter() {
    }

    public void Read (TProtocol iprot)
    {
      TField field;
      iprot.ReadStructBegin();
      while (true)
      {
        field = iprot.ReadFieldBegin();
        if (field.Type == TType.Stop) { 
          break;
        }
        switch (field.ID)
        {
          case 1:
            if (field.Type == TType.Bool) {
              IncludeNotes = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 2:
            if (field.Type == TType.Bool) {
              IncludeNoteResources = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 3:
            if (field.Type == TType.Bool) {
              IncludeNoteAttributes = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 4:
            if (field.Type == TType.Bool) {
              IncludeNotebooks = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 5:
            if (field.Type == TType.Bool) {
              IncludeTags = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 6:
            if (field.Type == TType.Bool) {
              IncludeSearches = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 7:
            if (field.Type == TType.Bool) {
              IncludeResources = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 8:
            if (field.Type == TType.Bool) {
              IncludeLinkedNotebooks = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 9:
            if (field.Type == TType.Bool) {
              IncludeExpunged = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 10:
            if (field.Type == TType.Bool) {
              IncludeNoteApplicationDataFullMap = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 12:
            if (field.Type == TType.Bool) {
              IncludeResourceApplicationDataFullMap = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 13:
            if (field.Type == TType.Bool) {
              IncludeNoteResourceApplicationDataFullMap = iprot.ReadBool();
            } else { 
              TProtocolUtil.Skip(iprot, field.Type);
            }
            break;
          case 11:
            if (field.Type == TType.String) {
              RequireNoteContentClass = iprot.ReadString();
            } 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("SyncChunkFilter");
      oprot.WriteStructBegin(struc);
      TField field = new TField();
      if (__isset.includeNotes) {
        field.Name = "includeNotes";
        field.Type = TType.Bool;
        field.ID = 1;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeNotes);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeNoteResources) {
        field.Name = "includeNoteResources";
        field.Type = TType.Bool;
        field.ID = 2;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeNoteResources);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeNoteAttributes) {
        field.Name = "includeNoteAttributes";
        field.Type = TType.Bool;
        field.ID = 3;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeNoteAttributes);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeNotebooks) {
        field.Name = "includeNotebooks";
        field.Type = TType.Bool;
        field.ID = 4;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeNotebooks);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeTags) {
        field.Name = "includeTags";
        field.Type = TType.Bool;
        field.ID = 5;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeTags);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeSearches) {
        field.Name = "includeSearches";
        field.Type = TType.Bool;
        field.ID = 6;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeSearches);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeResources) {
        field.Name = "includeResources";
        field.Type = TType.Bool;
        field.ID = 7;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeResources);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeLinkedNotebooks) {
        field.Name = "includeLinkedNotebooks";
        field.Type = TType.Bool;
        field.ID = 8;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeLinkedNotebooks);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeExpunged) {
        field.Name = "includeExpunged";
        field.Type = TType.Bool;
        field.ID = 9;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeExpunged);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeNoteApplicationDataFullMap) {
        field.Name = "includeNoteApplicationDataFullMap";
        field.Type = TType.Bool;
        field.ID = 10;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeNoteApplicationDataFullMap);
        oprot.WriteFieldEnd();
      }
      if (RequireNoteContentClass != null && __isset.requireNoteContentClass) {
        field.Name = "requireNoteContentClass";
        field.Type = TType.String;
        field.ID = 11;
        oprot.WriteFieldBegin(field);
        oprot.WriteString(RequireNoteContentClass);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeResourceApplicationDataFullMap) {
        field.Name = "includeResourceApplicationDataFullMap";
        field.Type = TType.Bool;
        field.ID = 12;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeResourceApplicationDataFullMap);
        oprot.WriteFieldEnd();
      }
      if (__isset.includeNoteResourceApplicationDataFullMap) {
        field.Name = "includeNoteResourceApplicationDataFullMap";
        field.Type = TType.Bool;
        field.ID = 13;
        oprot.WriteFieldBegin(field);
        oprot.WriteBool(IncludeNoteResourceApplicationDataFullMap);
        oprot.WriteFieldEnd();
      }
      oprot.WriteFieldStop();
      oprot.WriteStructEnd();
    }

    public override string ToString() {
      StringBuilder sb = new StringBuilder("SyncChunkFilter(");
      sb.Append("IncludeNotes: ");
      sb.Append(IncludeNotes);
      sb.Append(",IncludeNoteResources: ");
      sb.Append(IncludeNoteResources);
      sb.Append(",IncludeNoteAttributes: ");
      sb.Append(IncludeNoteAttributes);
      sb.Append(",IncludeNotebooks: ");
      sb.Append(IncludeNotebooks);
      sb.Append(",IncludeTags: ");
      sb.Append(IncludeTags);
      sb.Append(",IncludeSearches: ");
      sb.Append(IncludeSearches);
      sb.Append(",IncludeResources: ");
      sb.Append(IncludeResources);
      sb.Append(",IncludeLinkedNotebooks: ");
      sb.Append(IncludeLinkedNotebooks);
      sb.Append(",IncludeExpunged: ");
      sb.Append(IncludeExpunged);
      sb.Append(",IncludeNoteApplicationDataFullMap: ");
      sb.Append(IncludeNoteApplicationDataFullMap);
      sb.Append(",IncludeResourceApplicationDataFullMap: ");
      sb.Append(IncludeResourceApplicationDataFullMap);
      sb.Append(",IncludeNoteResourceApplicationDataFullMap: ");
      sb.Append(IncludeNoteResourceApplicationDataFullMap);
      sb.Append(",RequireNoteContentClass: ");
      sb.Append(RequireNoteContentClass);
      sb.Append(")");
      return sb.ToString();
    }

  }

}
