// Copyright 2022 CloudWeGo Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by thriftgo (0.1.7). DO NOT EDIT.

package meta

import (
	"database/sql"
	"database/sql/driver"
	"fmt"
)

type Category int64

const (
	Category_Constant  Category = 0
	Category_Bool      Category = 1
	Category_Byte      Category = 2
	Category_I16       Category = 3
	Category_I32       Category = 4
	Category_I64       Category = 5
	Category_Double    Category = 6
	Category_String    Category = 7
	Category_Binary    Category = 8
	Category_Map       Category = 9
	Category_List      Category = 10
	Category_Set       Category = 11
	Category_Enum      Category = 12
	Category_Struct    Category = 13
	Category_Union     Category = 14
	Category_Exception Category = 15
	Category_Typedef   Category = 16
	Category_Service   Category = 17
)

func (p Category) String() string {
	switch p {
	case Category_Constant:
		return "Constant"
	case Category_Bool:
		return "Bool"
	case Category_Byte:
		return "Byte"
	case Category_I16:
		return "I16"
	case Category_I32:
		return "I32"
	case Category_I64:
		return "I64"
	case Category_Double:
		return "Double"
	case Category_String:
		return "String"
	case Category_Binary:
		return "Binary"
	case Category_Map:
		return "Map"
	case Category_List:
		return "List"
	case Category_Set:
		return "Set"
	case Category_Enum:
		return "Enum"
	case Category_Struct:
		return "Struct"
	case Category_Union:
		return "Union"
	case Category_Exception:
		return "Exception"
	case Category_Typedef:
		return "Typedef"
	case Category_Service:
		return "Service"
	}
	return "<UNSET>"
}

func CategoryFromString(s string) (Category, error) {
	switch s {
	case "Constant":
		return Category_Constant, nil
	case "Bool":
		return Category_Bool, nil
	case "Byte":
		return Category_Byte, nil
	case "I16":
		return Category_I16, nil
	case "I32":
		return Category_I32, nil
	case "I64":
		return Category_I64, nil
	case "Double":
		return Category_Double, nil
	case "String":
		return Category_String, nil
	case "Binary":
		return Category_Binary, nil
	case "Map":
		return Category_Map, nil
	case "List":
		return Category_List, nil
	case "Set":
		return Category_Set, nil
	case "Enum":
		return Category_Enum, nil
	case "Struct":
		return Category_Struct, nil
	case "Union":
		return Category_Union, nil
	case "Exception":
		return Category_Exception, nil
	case "Typedef":
		return Category_Typedef, nil
	case "Service":
		return Category_Service, nil
	}
	return Category(0), fmt.Errorf("not a valid Category string")
}

func CategoryPtr(v Category) *Category { return &v }
func (p *Category) Scan(value interface{}) (err error) {
	var result sql.NullInt64
	err = result.Scan(value)
	*p = Category(result.Int64)
	return
}

func (p *Category) Value() (driver.Value, error) {
	if p == nil {
		return nil, nil
	}
	return int64(*p), nil
}

type ConstType int64

const (
	ConstType_ConstDouble     ConstType = 0
	ConstType_ConstInt        ConstType = 1
	ConstType_ConstLiteral    ConstType = 2
	ConstType_ConstIdentifier ConstType = 3
	ConstType_ConstList       ConstType = 4
	ConstType_ConstMap        ConstType = 5
)

func (p ConstType) String() string {
	switch p {
	case ConstType_ConstDouble:
		return "ConstDouble"
	case ConstType_ConstInt:
		return "ConstInt"
	case ConstType_ConstLiteral:
		return "ConstLiteral"
	case ConstType_ConstIdentifier:
		return "ConstIdentifier"
	case ConstType_ConstList:
		return "ConstList"
	case ConstType_ConstMap:
		return "ConstMap"
	}
	return "<UNSET>"
}

func ConstTypeFromString(s string) (ConstType, error) {
	switch s {
	case "ConstDouble":
		return ConstType_ConstDouble, nil
	case "ConstInt":
		return ConstType_ConstInt, nil
	case "ConstLiteral":
		return ConstType_ConstLiteral, nil
	case "ConstIdentifier":
		return ConstType_ConstIdentifier, nil
	case "ConstList":
		return ConstType_ConstList, nil
	case "ConstMap":
		return ConstType_ConstMap, nil
	}
	return ConstType(0), fmt.Errorf("not a valid ConstType string")
}

func ConstTypePtr(v ConstType) *ConstType { return &v }
func (p *ConstType) Scan(value interface{}) (err error) {
	var result sql.NullInt64
	err = result.Scan(value)
	*p = ConstType(result.Int64)
	return
}

func (p *ConstType) Value() (driver.Value, error) {
	if p == nil {
		return nil, nil
	}
	return int64(*p), nil
}

type FieldType int64

const (
	FieldType_Default  FieldType = 0
	FieldType_Required FieldType = 1
	FieldType_Optional FieldType = 2
)

func (p FieldType) String() string {
	switch p {
	case FieldType_Default:
		return "Default"
	case FieldType_Required:
		return "Required"
	case FieldType_Optional:
		return "Optional"
	}
	return "<UNSET>"
}

func FieldTypeFromString(s string) (FieldType, error) {
	switch s {
	case "Default":
		return FieldType_Default, nil
	case "Required":
		return FieldType_Required, nil
	case "Optional":
		return FieldType_Optional, nil
	}
	return FieldType(0), fmt.Errorf("not a valid FieldType string")
}

func FieldTypePtr(v FieldType) *FieldType { return &v }
func (p *FieldType) Scan(value interface{}) (err error) {
	var result sql.NullInt64
	err = result.Scan(value)
	*p = FieldType(result.Int64)
	return
}

func (p *FieldType) Value() (driver.Value, error) {
	if p == nil {
		return nil, nil
	}
	return int64(*p), nil
}

type Annotations = []*Annotation

type Reference struct {
	Name  string `thrift:"Name,1" json:"Name"`
	Index int32  `thrift:"Index,2" json:"Index"`
}

func init() {
	RegisterStruct(NewReference, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x9, 0x52,
		0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x6, 0x73,
		0x74, 0x72, 0x75, 0x63, 0x74, 0xf, 0x0, 0x3,
		0xc, 0x0, 0x0, 0x0, 0x2, 0x6, 0x0, 0x1,
		0x0, 0x1, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0,
		0x4, 0x4e, 0x61, 0x6d, 0x65, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x2, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x5, 0x49, 0x6e, 0x64, 0x65,
		0x78, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0x8, 0x0, 0x0, 0x0,
	})
}

func NewReference() *Reference {
	return &Reference{}
}

func (p *Reference) GetName() (v string) {
	return p.Name
}

func (p *Reference) GetIndex() (v int32) {
	return p.Index
}

func (p *Reference) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Reference(%+v)", *p)
}

type Annotation struct {
	Key    string   `thrift:"Key,1" json:"Key"`
	Values []string `thrift:"Values,2" json:"Values"`
}

func init() {
	RegisterStruct(NewAnnotation, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0xa, 0x41,
		0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
		0x6e, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x6,
		0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xf, 0x0,
		0x3, 0xc, 0x0, 0x0, 0x0, 0x2, 0x6, 0x0,
		0x1, 0x0, 0x1, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x3, 0x4b, 0x65, 0x79, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x2, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x6, 0x56, 0x61, 0x6c, 0x75,
		0x65, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xf, 0xc, 0x0, 0x3, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x0,
		0x0,
	})
}

func NewAnnotation() *Annotation {
	return &Annotation{}
}

func (p *Annotation) GetKey() (v string) {
	return p.Key
}

func (p *Annotation) GetValues() (v []string) {
	return p.Values
}

func (p *Annotation) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Annotation(%+v)", *p)
}

type Type struct {
	Name        string      `thrift:"Name,1" json:"Name"`
	KeyType     *Type       `thrift:"KeyType,2,optional" json:"KeyType,omitempty"`
	ValueType   *Type       `thrift:"ValueType,3,optional" json:"ValueType,omitempty"`
	CppType     string      `thrift:"CppType,4" json:"CppType"`
	Annotations Annotations `thrift:"Annotations,5" json:"Annotations"`
	Category    Category    `thrift:"Category,6" json:"Category"`
	Reference   *Reference  `thrift:"Reference,7,optional" json:"Reference,omitempty"`
	IsTypedef   *bool       `thrift:"IsTypedef,8,optional" json:"IsTypedef,omitempty"`
}

func init() {
	RegisterStruct(NewType, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x4, 0x54,
		0x79, 0x70, 0x65, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x6, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
		0xf, 0x0, 0x3, 0xc, 0x0, 0x0, 0x0, 0x8,
		0x6, 0x0, 0x1, 0x0, 0x1, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x4, 0x4e, 0x61, 0x6d, 0x65,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xb, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x2,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x7, 0x4b,
		0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x2, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x0, 0x6, 0x0, 0x1, 0x0, 0x3, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x9, 0x56, 0x61, 0x6c,
		0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x2, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x0, 0x6, 0x0, 0x1, 0x0, 0x4, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x7, 0x43, 0x70, 0x70,
		0x54, 0x79, 0x70, 0x65, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0x5, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0xb, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
		0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf, 0xc,
		0x0, 0x3, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0,
		0x6, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x8,
		0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0x8, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x7,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x9, 0x52,
		0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x2, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x8,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x9, 0x49,
		0x73, 0x54, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x2, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0x2, 0x0, 0x0, 0x0,
	})
}

func NewType() *Type {
	return &Type{}
}

func (p *Type) GetName() (v string) {
	return p.Name
}

var Type_KeyType_DEFAULT *Type

func (p *Type) GetKeyType() (v *Type) {
	if !p.IsSetKeyType() {
		return Type_KeyType_DEFAULT
	}
	return p.KeyType
}

var Type_ValueType_DEFAULT *Type

func (p *Type) GetValueType() (v *Type) {
	if !p.IsSetValueType() {
		return Type_ValueType_DEFAULT
	}
	return p.ValueType
}

func (p *Type) GetCppType() (v string) {
	return p.CppType
}

func (p *Type) GetAnnotations() (v Annotations) {
	return p.Annotations
}

func (p *Type) GetCategory() (v Category) {
	return p.Category
}

var Type_Reference_DEFAULT *Reference

func (p *Type) GetReference() (v *Reference) {
	if !p.IsSetReference() {
		return Type_Reference_DEFAULT
	}
	return p.Reference
}

var Type_IsTypedef_DEFAULT bool

func (p *Type) GetIsTypedef() (v bool) {
	if !p.IsSetIsTypedef() {
		return Type_IsTypedef_DEFAULT
	}
	return *p.IsTypedef
}

func (p *Type) IsSetKeyType() bool {
	return p.KeyType != nil
}

func (p *Type) IsSetValueType() bool {
	return p.ValueType != nil
}

func (p *Type) IsSetReference() bool {
	return p.Reference != nil
}

func (p *Type) IsSetIsTypedef() bool {
	return p.IsTypedef != nil
}

func (p *Type) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Type(%+v)", *p)
}

type Namespace struct {
	Language    string      `thrift:"Language,1" json:"Language"`
	Name        string      `thrift:"Name,2" json:"Name"`
	Annotations Annotations `thrift:"Annotations,3" json:"Annotations"`
}

func init() {
	RegisterStruct(NewNamespace, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x9, 0x4e,
		0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x6, 0x73,
		0x74, 0x72, 0x75, 0x63, 0x74, 0xf, 0x0, 0x3,
		0xc, 0x0, 0x0, 0x0, 0x3, 0x6, 0x0, 0x1,
		0x0, 0x1, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0,
		0x8, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,
		0x65, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xb, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0,
		0x2, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x4,
		0x4e, 0x61, 0x6d, 0x65, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0x3, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0xb, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
		0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf, 0xc,
		0x0, 0x3, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x0, 0x0, 0x0,
	})
}

func NewNamespace() *Namespace {
	return &Namespace{}
}

func (p *Namespace) GetLanguage() (v string) {
	return p.Language
}

func (p *Namespace) GetName() (v string) {
	return p.Name
}

func (p *Namespace) GetAnnotations() (v Annotations) {
	return p.Annotations
}

func (p *Namespace) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Namespace(%+v)", *p)
}

type Typedef struct {
	Type             *Type       `thrift:"Type,1,optional" json:"Type,omitempty"`
	Alias            string      `thrift:"Alias,2" json:"Alias"`
	Annotations      Annotations `thrift:"Annotations,3" json:"Annotations"`
	ReservedComments string      `thrift:"ReservedComments,4" json:"ReservedComments"`
}

func init() {
	RegisterStruct(NewTypedef, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x7, 0x54,
		0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x6, 0x73, 0x74, 0x72,
		0x75, 0x63, 0x74, 0xf, 0x0, 0x3, 0xc, 0x0,
		0x0, 0x0, 0x4, 0x6, 0x0, 0x1, 0x0, 0x1,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x4, 0x54,
		0x79, 0x70, 0x65, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x2, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x6, 0x0,
		0x1, 0x0, 0x2, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x5, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x8,
		0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xb,
		0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x3, 0xb,
		0x0, 0x2, 0x0, 0x0, 0x0, 0xb, 0x41, 0x6e,
		0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
		0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xf, 0xc, 0x0, 0x3, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0x4, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0x10, 0x52, 0x65, 0x73, 0x65, 0x72,
		0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65,
		0x6e, 0x74, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x0,
	})
}

func NewTypedef() *Typedef {
	return &Typedef{}
}

var Typedef_Type_DEFAULT *Type

func (p *Typedef) GetType() (v *Type) {
	if !p.IsSetType() {
		return Typedef_Type_DEFAULT
	}
	return p.Type
}

func (p *Typedef) GetAlias() (v string) {
	return p.Alias
}

func (p *Typedef) GetAnnotations() (v Annotations) {
	return p.Annotations
}

func (p *Typedef) GetReservedComments() (v string) {
	return p.ReservedComments
}

func (p *Typedef) IsSetType() bool {
	return p.Type != nil
}

func (p *Typedef) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Typedef(%+v)", *p)
}

type EnumValue struct {
	Name             string      `thrift:"Name,1" json:"Name"`
	Value            int64       `thrift:"Value,2" json:"Value"`
	Annotations      Annotations `thrift:"Annotations,3" json:"Annotations"`
	ReservedComments string      `thrift:"ReservedComments,4" json:"ReservedComments"`
}

func init() {
	RegisterStruct(NewEnumValue, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x9, 0x45,
		0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x6, 0x73,
		0x74, 0x72, 0x75, 0x63, 0x74, 0xf, 0x0, 0x3,
		0xc, 0x0, 0x0, 0x0, 0x4, 0x6, 0x0, 0x1,
		0x0, 0x1, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0,
		0x4, 0x4e, 0x61, 0x6d, 0x65, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x2, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x5, 0x56, 0x61, 0x6c, 0x75,
		0x65, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xa, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0,
		0x3, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0xb,
		0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
		0x6f, 0x6e, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xf, 0xc, 0x0, 0x3, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
		0x0, 0x6, 0x0, 0x1, 0x0, 0x4, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x10, 0x52, 0x65, 0x73,
		0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d,
		0x6d, 0x65, 0x6e, 0x74, 0x73, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0,
		0x0,
	})
}

func NewEnumValue() *EnumValue {
	return &EnumValue{}
}

func (p *EnumValue) GetName() (v string) {
	return p.Name
}

func (p *EnumValue) GetValue() (v int64) {
	return p.Value
}

func (p *EnumValue) GetAnnotations() (v Annotations) {
	return p.Annotations
}

func (p *EnumValue) GetReservedComments() (v string) {
	return p.ReservedComments
}

func (p *EnumValue) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("EnumValue(%+v)", *p)
}

type Enum struct {
	Name             string       `thrift:"Name,1" json:"Name"`
	Values           []*EnumValue `thrift:"Values,2" json:"Values"`
	Annotations      Annotations  `thrift:"Annotations,3" json:"Annotations"`
	ReservedComments string       `thrift:"ReservedComments,4" json:"ReservedComments"`
}

func init() {
	RegisterStruct(NewEnum, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x4, 0x45,
		0x6e, 0x75, 0x6d, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x6, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
		0xf, 0x0, 0x3, 0xc, 0x0, 0x0, 0x0, 0x4,
		0x6, 0x0, 0x1, 0x0, 0x1, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x4, 0x4e, 0x61, 0x6d, 0x65,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xb, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x2,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x6, 0x56,
		0x61, 0x6c, 0x75, 0x65, 0x73, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xf, 0xc, 0x0,
		0x3, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x3,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0xb, 0x41,
		0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
		0x6e, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xf, 0xc, 0x0, 0x3, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x4, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x10, 0x52, 0x65, 0x73, 0x65,
		0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d,
		0x65, 0x6e, 0x74, 0x73, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x0,
	})
}

func NewEnum() *Enum {
	return &Enum{}
}

func (p *Enum) GetName() (v string) {
	return p.Name
}

func (p *Enum) GetValues() (v []*EnumValue) {
	return p.Values
}

func (p *Enum) GetAnnotations() (v Annotations) {
	return p.Annotations
}

func (p *Enum) GetReservedComments() (v string) {
	return p.ReservedComments
}

func (p *Enum) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Enum(%+v)", *p)
}

type ConstValueExtra struct {
	IsEnum bool   `thrift:"IsEnum,1" json:"IsEnum"`
	Index  int32  `thrift:"Index,2" json:"Index"`
	Name   string `thrift:"Name,3" json:"Name"`
	Sel    string `thrift:"Sel,4" json:"Sel"`
}

func init() {
	RegisterStruct(NewConstValueExtra, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf, 0x43,
		0x6f, 0x6e, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75,
		0x65, 0x45, 0x78, 0x74, 0x72, 0x61, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x6, 0x73, 0x74, 0x72,
		0x75, 0x63, 0x74, 0xf, 0x0, 0x3, 0xc, 0x0,
		0x0, 0x0, 0x4, 0x6, 0x0, 0x1, 0x0, 0x1,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x6, 0x49,
		0x73, 0x45, 0x6e, 0x75, 0x6d, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x2, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x5, 0x49, 0x6e, 0x64, 0x65,
		0x78, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0x8, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0,
		0x3, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x4,
		0x4e, 0x61, 0x6d, 0x65, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0x4, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0x3, 0x53, 0x65, 0x6c, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xb, 0x0,
		0x0, 0x0,
	})
}

func NewConstValueExtra() *ConstValueExtra {
	return &ConstValueExtra{

		Index: -1,
	}
}

func (p *ConstValueExtra) GetIsEnum() (v bool) {
	return p.IsEnum
}

func (p *ConstValueExtra) GetIndex() (v int32) {
	return p.Index
}

func (p *ConstValueExtra) GetName() (v string) {
	return p.Name
}

func (p *ConstValueExtra) GetSel() (v string) {
	return p.Sel
}

func (p *ConstValueExtra) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("ConstValueExtra(%+v)", *p)
}

type ConstValue struct {
	Type       ConstType        `thrift:"Type,1" json:"Type"`
	TypedValue *ConstTypedValue `thrift:"TypedValue,2,optional" json:"TypedValue,omitempty"`
	Extra      *ConstValueExtra `thrift:"Extra,3,optional" json:"Extra,omitempty"`
}

func init() {
	RegisterStruct(NewConstValue, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0xa, 0x43,
		0x6f, 0x6e, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75,
		0x65, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x6,
		0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xf, 0x0,
		0x3, 0xc, 0x0, 0x0, 0x0, 0x3, 0x6, 0x0,
		0x1, 0x0, 0x1, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x4, 0x54, 0x79, 0x70, 0x65, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0x8, 0x0,
		0x0, 0x6, 0x0, 0x1, 0x0, 0x2, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0xa, 0x54, 0x79, 0x70,
		0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x8,
		0x0, 0x3, 0x0, 0x0, 0x0, 0x2, 0xc, 0x0,
		0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x3, 0xb,
		0x0, 0x2, 0x0, 0x0, 0x0, 0x5, 0x45, 0x78,
		0x74, 0x72, 0x61, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x2, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0,
	})
}

func NewConstValue() *ConstValue {
	return &ConstValue{}
}

func (p *ConstValue) GetType() (v ConstType) {
	return p.Type
}

var ConstValue_TypedValue_DEFAULT *ConstTypedValue

func (p *ConstValue) GetTypedValue() (v *ConstTypedValue) {
	if !p.IsSetTypedValue() {
		return ConstValue_TypedValue_DEFAULT
	}
	return p.TypedValue
}

var ConstValue_Extra_DEFAULT *ConstValueExtra

func (p *ConstValue) GetExtra() (v *ConstValueExtra) {
	if !p.IsSetExtra() {
		return ConstValue_Extra_DEFAULT
	}
	return p.Extra
}

func (p *ConstValue) IsSetTypedValue() bool {
	return p.TypedValue != nil
}

func (p *ConstValue) IsSetExtra() bool {
	return p.Extra != nil
}

func (p *ConstValue) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("ConstValue(%+v)", *p)
}

type MapConstValue struct {
	Key   *ConstValue `thrift:"Key,1,optional" json:"Key,omitempty"`
	Value *ConstValue `thrift:"Value,2,optional" json:"Value,omitempty"`
}

func init() {
	RegisterStruct(NewMapConstValue, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0xd, 0x4d,
		0x61, 0x70, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x56,
		0x61, 0x6c, 0x75, 0x65, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0x6, 0x73, 0x74, 0x72, 0x75, 0x63,
		0x74, 0xf, 0x0, 0x3, 0xc, 0x0, 0x0, 0x0,
		0x2, 0x6, 0x0, 0x1, 0x0, 0x1, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x3, 0x4b, 0x65, 0x79,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x2, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x2,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x5, 0x56,
		0x61, 0x6c, 0x75, 0x65, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x2, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0,
	})
}

func NewMapConstValue() *MapConstValue {
	return &MapConstValue{}
}

var MapConstValue_Key_DEFAULT *ConstValue

func (p *MapConstValue) GetKey() (v *ConstValue) {
	if !p.IsSetKey() {
		return MapConstValue_Key_DEFAULT
	}
	return p.Key
}

var MapConstValue_Value_DEFAULT *ConstValue

func (p *MapConstValue) GetValue() (v *ConstValue) {
	if !p.IsSetValue() {
		return MapConstValue_Value_DEFAULT
	}
	return p.Value
}

func (p *MapConstValue) IsSetKey() bool {
	return p.Key != nil
}

func (p *MapConstValue) IsSetValue() bool {
	return p.Value != nil
}

func (p *MapConstValue) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("MapConstValue(%+v)", *p)
}

type Constant struct {
	Name             string      `thrift:"Name,1" json:"Name"`
	Type             *Type       `thrift:"Type,2,optional" json:"Type,omitempty"`
	Value            *ConstValue `thrift:"Value,3,optional" json:"Value,omitempty"`
	Annotations      Annotations `thrift:"Annotations,4" json:"Annotations"`
	ReservedComments string      `thrift:"ReservedComments,5" json:"ReservedComments"`
}

func init() {
	RegisterStruct(NewConstant, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x8, 0x43,
		0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0xb,
		0x0, 0x2, 0x0, 0x0, 0x0, 0x6, 0x73, 0x74,
		0x72, 0x75, 0x63, 0x74, 0xf, 0x0, 0x3, 0xc,
		0x0, 0x0, 0x0, 0x5, 0x6, 0x0, 0x1, 0x0,
		0x1, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x4,
		0x4e, 0x61, 0x6d, 0x65, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0x2, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0x4, 0x54, 0x79, 0x70, 0x65, 0x8,
		0x0, 0x3, 0x0, 0x0, 0x0, 0x2, 0xc, 0x0,
		0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x3, 0xb,
		0x0, 0x2, 0x0, 0x0, 0x0, 0x5, 0x56, 0x61,
		0x6c, 0x75, 0x65, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x2, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x6, 0x0,
		0x1, 0x0, 0x4, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0xb, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
		0x74, 0x69, 0x6f, 0x6e, 0x73, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xf, 0xc, 0x0,
		0x3, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x5,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x10, 0x52,
		0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43,
		0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x8,
		0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xb,
		0x0, 0x0, 0x0,
	})
}

func NewConstant() *Constant {
	return &Constant{}
}

func (p *Constant) GetName() (v string) {
	return p.Name
}

var Constant_Type_DEFAULT *Type

func (p *Constant) GetType() (v *Type) {
	if !p.IsSetType() {
		return Constant_Type_DEFAULT
	}
	return p.Type
}

var Constant_Value_DEFAULT *ConstValue

func (p *Constant) GetValue() (v *ConstValue) {
	if !p.IsSetValue() {
		return Constant_Value_DEFAULT
	}
	return p.Value
}

func (p *Constant) GetAnnotations() (v Annotations) {
	return p.Annotations
}

func (p *Constant) GetReservedComments() (v string) {
	return p.ReservedComments
}

func (p *Constant) IsSetType() bool {
	return p.Type != nil
}

func (p *Constant) IsSetValue() bool {
	return p.Value != nil
}

func (p *Constant) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Constant(%+v)", *p)
}

type Field struct {
	ID               int32       `thrift:"ID,1" json:"ID"`
	Name             string      `thrift:"Name,2" json:"Name"`
	Requiredness     FieldType   `thrift:"Requiredness,3" json:"Requiredness"`
	Type             *Type       `thrift:"Type,4" json:"Type"`
	Default          *ConstValue `thrift:"Default,5,optional" json:"Default,omitempty"`
	Annotations      Annotations `thrift:"Annotations,6" json:"Annotations"`
	ReservedComments string      `thrift:"ReservedComments,7" json:"ReservedComments"`
}

func init() {
	RegisterStruct(NewField, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x46,
		0x69, 0x65, 0x6c, 0x64, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0x6, 0x73, 0x74, 0x72, 0x75, 0x63,
		0x74, 0xf, 0x0, 0x3, 0xc, 0x0, 0x0, 0x0,
		0x7, 0x6, 0x0, 0x1, 0x0, 0x1, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x2, 0x49, 0x44, 0x8,
		0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0x8,
		0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x2, 0xb,
		0x0, 0x2, 0x0, 0x0, 0x0, 0x4, 0x4e, 0x61,
		0x6d, 0x65, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xb, 0x0, 0x0, 0x6, 0x0, 0x1,
		0x0, 0x3, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0,
		0xc, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
		0x64, 0x6e, 0x65, 0x73, 0x73, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x4, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x4, 0x54, 0x79, 0x70, 0x65,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x5,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x7, 0x44,
		0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x2, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x0, 0x6, 0x0, 0x1, 0x0, 0x6, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0xb, 0x41, 0x6e, 0x6e,
		0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xf, 0xc, 0x0, 0x3, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x6, 0x0,
		0x1, 0x0, 0x7, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x10, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76,
		0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
		0x74, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xb, 0x0, 0x0, 0x0,
	})
}

func NewField() *Field {
	return &Field{}
}

func (p *Field) GetID() (v int32) {
	return p.ID
}

func (p *Field) GetName() (v string) {
	return p.Name
}

func (p *Field) GetRequiredness() (v FieldType) {
	return p.Requiredness
}

var Field_Type_DEFAULT *Type

func (p *Field) GetType() (v *Type) {
	if !p.IsSetType() {
		return Field_Type_DEFAULT
	}
	return p.Type
}

var Field_Default_DEFAULT *ConstValue

func (p *Field) GetDefault() (v *ConstValue) {
	if !p.IsSetDefault() {
		return Field_Default_DEFAULT
	}
	return p.Default
}

func (p *Field) GetAnnotations() (v Annotations) {
	return p.Annotations
}

func (p *Field) GetReservedComments() (v string) {
	return p.ReservedComments
}

func (p *Field) IsSetType() bool {
	return p.Type != nil
}

func (p *Field) IsSetDefault() bool {
	return p.Default != nil
}

func (p *Field) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Field(%+v)", *p)
}

type StructLike struct {
	Category         string      `thrift:"Category,1" json:"Category"`
	Name             string      `thrift:"Name,2" json:"Name"`
	Fields           []*Field    `thrift:"Fields,3" json:"Fields"`
	Annotations      Annotations `thrift:"Annotations,4" json:"Annotations"`
	ReservedComments string      `thrift:"ReservedComments,5" json:"ReservedComments"`
}

func init() {
	RegisterStruct(NewStructLike, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0xa, 0x53,
		0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x6b,
		0x65, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x6,
		0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xf, 0x0,
		0x3, 0xc, 0x0, 0x0, 0x0, 0x5, 0x6, 0x0,
		0x1, 0x0, 0x1, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x8, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f,
		0x72, 0x79, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xb, 0x0, 0x0, 0x6, 0x0, 0x1,
		0x0, 0x2, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0,
		0x4, 0x4e, 0x61, 0x6d, 0x65, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x3, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x6, 0x46, 0x69, 0x65, 0x6c,
		0x64, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xf, 0xc, 0x0, 0x3, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x4, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0xb, 0x41, 0x6e, 0x6e, 0x6f,
		0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x8,
		0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf,
		0xc, 0x0, 0x3, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x0, 0x0, 0x6, 0x0, 0x1,
		0x0, 0x5, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0,
		0x10, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,
		0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
		0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xb, 0x0, 0x0, 0x0,
	})
}

func NewStructLike() *StructLike {
	return &StructLike{}
}

func (p *StructLike) GetCategory() (v string) {
	return p.Category
}

func (p *StructLike) GetName() (v string) {
	return p.Name
}

func (p *StructLike) GetFields() (v []*Field) {
	return p.Fields
}

func (p *StructLike) GetAnnotations() (v Annotations) {
	return p.Annotations
}

func (p *StructLike) GetReservedComments() (v string) {
	return p.ReservedComments
}

func (p *StructLike) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("StructLike(%+v)", *p)
}

type Function struct {
	Name             string      `thrift:"Name,1" json:"Name"`
	Oneway           bool        `thrift:"Oneway,2" json:"Oneway"`
	Void             bool        `thrift:"Void,3" json:"Void"`
	FunctionType     *Type       `thrift:"FunctionType,4,optional" json:"FunctionType,omitempty"`
	Arguments        []*Field    `thrift:"Arguments,5" json:"Arguments"`
	Throws           []*Field    `thrift:"Throws,6" json:"Throws"`
	Annotations      Annotations `thrift:"Annotations,7" json:"Annotations"`
	ReservedComments string      `thrift:"ReservedComments,8" json:"ReservedComments"`
}

func init() {
	RegisterStruct(NewFunction, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x8, 0x46,
		0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0xb,
		0x0, 0x2, 0x0, 0x0, 0x0, 0x6, 0x73, 0x74,
		0x72, 0x75, 0x63, 0x74, 0xf, 0x0, 0x3, 0xc,
		0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0x1, 0x0,
		0x1, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x4,
		0x4e, 0x61, 0x6d, 0x65, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0x2, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0x6, 0x4f, 0x6e, 0x65, 0x77, 0x61,
		0x79, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0x2, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0,
		0x3, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x4,
		0x56, 0x6f, 0x69, 0x64, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0x4, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0xc, 0x46, 0x75, 0x6e, 0x63, 0x74,
		0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x8,
		0x0, 0x3, 0x0, 0x0, 0x0, 0x2, 0xc, 0x0,
		0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x5, 0xb,
		0x0, 0x2, 0x0, 0x0, 0x0, 0x9, 0x41, 0x72,
		0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x8,
		0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf,
		0xc, 0x0, 0x3, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x0, 0x0, 0x6, 0x0, 0x1,
		0x0, 0x6, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0,
		0x6, 0x54, 0x68, 0x72, 0x6f, 0x77, 0x73, 0x8,
		0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf,
		0xc, 0x0, 0x3, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x0, 0x0, 0x6, 0x0, 0x1,
		0x0, 0x7, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0,
		0xb, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
		0x69, 0x6f, 0x6e, 0x73, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xf, 0xc, 0x0, 0x3,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x8, 0xb,
		0x0, 0x2, 0x0, 0x0, 0x0, 0x10, 0x52, 0x65,
		0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f,
		0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xb, 0x0,
		0x0, 0x0,
	})
}

func NewFunction() *Function {
	return &Function{}
}

func (p *Function) GetName() (v string) {
	return p.Name
}

func (p *Function) GetOneway() (v bool) {
	return p.Oneway
}

func (p *Function) GetVoid() (v bool) {
	return p.Void
}

var Function_FunctionType_DEFAULT *Type

func (p *Function) GetFunctionType() (v *Type) {
	if !p.IsSetFunctionType() {
		return Function_FunctionType_DEFAULT
	}
	return p.FunctionType
}

func (p *Function) GetArguments() (v []*Field) {
	return p.Arguments
}

func (p *Function) GetThrows() (v []*Field) {
	return p.Throws
}

func (p *Function) GetAnnotations() (v Annotations) {
	return p.Annotations
}

func (p *Function) GetReservedComments() (v string) {
	return p.ReservedComments
}

func (p *Function) IsSetFunctionType() bool {
	return p.FunctionType != nil
}

func (p *Function) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Function(%+v)", *p)
}

type Service struct {
	Name             string      `thrift:"Name,1" json:"Name"`
	Extends          string      `thrift:"Extends,2" json:"Extends"`
	Functions        []*Function `thrift:"Functions,3" json:"Functions"`
	Annotations      Annotations `thrift:"Annotations,4" json:"Annotations"`
	Reference        *Reference  `thrift:"Reference,5,optional" json:"Reference,omitempty"`
	ReservedComments string      `thrift:"ReservedComments,6" json:"ReservedComments"`
}

func init() {
	RegisterStruct(NewService, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x7, 0x53,
		0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x6, 0x73, 0x74, 0x72,
		0x75, 0x63, 0x74, 0xf, 0x0, 0x3, 0xc, 0x0,
		0x0, 0x0, 0x6, 0x6, 0x0, 0x1, 0x0, 0x1,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x4, 0x4e,
		0x61, 0x6d, 0x65, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x6, 0x0,
		0x1, 0x0, 0x2, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x7, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64,
		0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xb, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0,
		0x3, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x9,
		0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
		0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xf, 0xc, 0x0, 0x3, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0x4, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0xb, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
		0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf, 0xc,
		0x0, 0x3, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0,
		0x5, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x9,
		0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
		0x65, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x2,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0,
		0x6, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x10,
		0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
		0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xb, 0x0, 0x0, 0x0,
	})
}

func NewService() *Service {
	return &Service{}
}

func (p *Service) GetName() (v string) {
	return p.Name
}

func (p *Service) GetExtends() (v string) {
	return p.Extends
}

func (p *Service) GetFunctions() (v []*Function) {
	return p.Functions
}

func (p *Service) GetAnnotations() (v Annotations) {
	return p.Annotations
}

var Service_Reference_DEFAULT *Reference

func (p *Service) GetReference() (v *Reference) {
	if !p.IsSetReference() {
		return Service_Reference_DEFAULT
	}
	return p.Reference
}

func (p *Service) GetReservedComments() (v string) {
	return p.ReservedComments
}

func (p *Service) IsSetReference() bool {
	return p.Reference != nil
}

func (p *Service) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Service(%+v)", *p)
}

type Include struct {
	Path      string  `thrift:"Path,1" json:"Path"`
	Reference *Thrift `thrift:"Reference,2,optional" json:"Reference,omitempty"`
	Used      *bool   `thrift:"Used,3,optional" json:"Used,omitempty"`
}

func init() {
	RegisterStruct(NewInclude, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x7, 0x49,
		0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x6, 0x73, 0x74, 0x72,
		0x75, 0x63, 0x74, 0xf, 0x0, 0x3, 0xc, 0x0,
		0x0, 0x0, 0x3, 0x6, 0x0, 0x1, 0x0, 0x1,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x4, 0x50,
		0x61, 0x74, 0x68, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x6, 0x0,
		0x1, 0x0, 0x2, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x9, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
		0x6e, 0x63, 0x65, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x2, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x6, 0x0,
		0x1, 0x0, 0x3, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x4, 0x55, 0x73, 0x65, 0x64, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x2, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0x2, 0x0,
		0x0, 0x0,
	})
}

func NewInclude() *Include {
	return &Include{}
}

func (p *Include) GetPath() (v string) {
	return p.Path
}

var Include_Reference_DEFAULT *Thrift

func (p *Include) GetReference() (v *Thrift) {
	if !p.IsSetReference() {
		return Include_Reference_DEFAULT
	}
	return p.Reference
}

var Include_Used_DEFAULT bool

func (p *Include) GetUsed() (v bool) {
	if !p.IsSetUsed() {
		return Include_Used_DEFAULT
	}
	return *p.Used
}

func (p *Include) IsSetReference() bool {
	return p.Reference != nil
}

func (p *Include) IsSetUsed() bool {
	return p.Used != nil
}

func (p *Include) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Include(%+v)", *p)
}

type Thrift struct {
	Filename      string              `thrift:"Filename,1" json:"Filename"`
	Includes      []*Include          `thrift:"Includes,2" json:"Includes"`
	CppIncludes   []string            `thrift:"CppIncludes,3" json:"CppIncludes"`
	Namespaces    []*Namespace        `thrift:"Namespaces,4" json:"Namespaces"`
	Typedefs      []*Typedef          `thrift:"Typedefs,5" json:"Typedefs"`
	Constants     []*Constant         `thrift:"Constants,6" json:"Constants"`
	Enums         []*Enum             `thrift:"Enums,7" json:"Enums"`
	Structs       []*StructLike       `thrift:"Structs,8" json:"Structs"`
	Unions        []*StructLike       `thrift:"Unions,9" json:"Unions"`
	Exceptions    []*StructLike       `thrift:"Exceptions,10" json:"Exceptions"`
	Services      []*Service          `thrift:"Services,11" json:"Services"`
	Name2Category map[string]Category `thrift:"Name2Category,12" json:"Name2Category"`
}

func init() {
	RegisterStruct(NewThrift, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x6, 0x54,
		0x68, 0x72, 0x69, 0x66, 0x74, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x6, 0x73, 0x74, 0x72, 0x75,
		0x63, 0x74, 0xf, 0x0, 0x3, 0xc, 0x0, 0x0,
		0x0, 0xc, 0x6, 0x0, 0x1, 0x0, 0x1, 0xb,
		0x0, 0x2, 0x0, 0x0, 0x0, 0x8, 0x46, 0x69,
		0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xb, 0x0,
		0x0, 0x6, 0x0, 0x1, 0x0, 0x2, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x8, 0x49, 0x6e, 0x63,
		0x6c, 0x75, 0x64, 0x65, 0x73, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xf, 0xc, 0x0,
		0x3, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0, 0x3,
		0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0xb, 0x43,
		0x70, 0x70, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64,
		0x65, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xf, 0xc, 0x0, 0x3, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x4, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0xa, 0x4e, 0x61, 0x6d, 0x65,
		0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf, 0xc,
		0x0, 0x3, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x0, 0x0, 0x6, 0x0, 0x1, 0x0,
		0x5, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0, 0x8,
		0x54, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x73,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xf, 0xc, 0x0, 0x3, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x6, 0x0,
		0x1, 0x0, 0x6, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x9, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61,
		0x6e, 0x74, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xf, 0xc, 0x0, 0x3, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
		0x0, 0x6, 0x0, 0x1, 0x0, 0x7, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x5, 0x45, 0x6e, 0x75,
		0x6d, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xf, 0xc, 0x0, 0x3, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x8, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x7, 0x53, 0x74, 0x72, 0x75,
		0x63, 0x74, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xf, 0xc, 0x0, 0x3, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
		0x0, 0x6, 0x0, 0x1, 0x0, 0x9, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x6, 0x55, 0x6e, 0x69,
		0x6f, 0x6e, 0x73, 0x8, 0x0, 0x3, 0x0, 0x0,
		0x0, 0x0, 0xc, 0x0, 0x4, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xf, 0xc, 0x0, 0x3, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
		0x0, 0x6, 0x0, 0x1, 0x0, 0xa, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0xa, 0x45, 0x78, 0x63,
		0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x8,
		0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0,
		0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf,
		0xc, 0x0, 0x3, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xc, 0x0, 0x0, 0x0, 0x6, 0x0, 0x1,
		0x0, 0xb, 0xb, 0x0, 0x2, 0x0, 0x0, 0x0,
		0x8, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
		0x73, 0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
		0xc, 0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0,
		0x0, 0xf, 0xc, 0x0, 0x3, 0x8, 0x0, 0x1,
		0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0xc, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0xd, 0x4e, 0x61, 0x6d, 0x65, 0x32,
		0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xd, 0xc, 0x0, 0x2, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xb, 0x0, 0xc, 0x0, 0x3, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0,
		0x0, 0x0,
	})
}

func NewThrift() *Thrift {
	return &Thrift{}
}

func (p *Thrift) GetFilename() (v string) {
	return p.Filename
}

func (p *Thrift) GetIncludes() (v []*Include) {
	return p.Includes
}

func (p *Thrift) GetCppIncludes() (v []string) {
	return p.CppIncludes
}

func (p *Thrift) GetNamespaces() (v []*Namespace) {
	return p.Namespaces
}

func (p *Thrift) GetTypedefs() (v []*Typedef) {
	return p.Typedefs
}

func (p *Thrift) GetConstants() (v []*Constant) {
	return p.Constants
}

func (p *Thrift) GetEnums() (v []*Enum) {
	return p.Enums
}

func (p *Thrift) GetStructs() (v []*StructLike) {
	return p.Structs
}

func (p *Thrift) GetUnions() (v []*StructLike) {
	return p.Unions
}

func (p *Thrift) GetExceptions() (v []*StructLike) {
	return p.Exceptions
}

func (p *Thrift) GetServices() (v []*Service) {
	return p.Services
}

func (p *Thrift) GetName2Category() (v map[string]Category) {
	return p.Name2Category
}

func (p *Thrift) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Thrift(%+v)", *p)
}

type ConstTypedValue struct {
	Double     *float64         `thrift:"Double,1,optional" json:"Double,omitempty"`
	Int        *int64           `thrift:"Int,2,optional" json:"Int,omitempty"`
	Literal    *string          `thrift:"Literal,3,optional" json:"Literal,omitempty"`
	Identifier *string          `thrift:"Identifier,4,optional" json:"Identifier,omitempty"`
	List       []*ConstValue    `thrift:"List,5,optional" json:"List,omitempty"`
	Map        []*MapConstValue `thrift:"Map,6,optional" json:"Map,omitempty"`
}

func init() {
	RegisterStruct(NewConstTypedValue, []byte{
		0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf, 0x43,
		0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65,
		0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x5, 0x75, 0x6e, 0x69,
		0x6f, 0x6e, 0xf, 0x0, 0x3, 0xc, 0x0, 0x0,
		0x0, 0x6, 0x6, 0x0, 0x1, 0x0, 0x1, 0xb,
		0x0, 0x2, 0x0, 0x0, 0x0, 0x6, 0x44, 0x6f,
		0x75, 0x62, 0x6c, 0x65, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x2, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0x2, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0x3, 0x49, 0x6e, 0x74, 0x8, 0x0,
		0x3, 0x0, 0x0, 0x0, 0x2, 0xc, 0x0, 0x4,
		0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xa, 0x0,
		0x0, 0x6, 0x0, 0x1, 0x0, 0x3, 0xb, 0x0,
		0x2, 0x0, 0x0, 0x0, 0x7, 0x4c, 0x69, 0x74,
		0x65, 0x72, 0x61, 0x6c, 0x8, 0x0, 0x3, 0x0,
		0x0, 0x0, 0x2, 0xc, 0x0, 0x4, 0x8, 0x0,
		0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0, 0x6,
		0x0, 0x1, 0x0, 0x4, 0xb, 0x0, 0x2, 0x0,
		0x0, 0x0, 0xa, 0x49, 0x64, 0x65, 0x6e, 0x74,
		0x69, 0x66, 0x69, 0x65, 0x72, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x2, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xb, 0x0, 0x0,
		0x6, 0x0, 0x1, 0x0, 0x5, 0xb, 0x0, 0x2,
		0x0, 0x0, 0x0, 0x4, 0x4c, 0x69, 0x73, 0x74,
		0x8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x2, 0xc,
		0x0, 0x4, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0,
		0xf, 0xc, 0x0, 0x3, 0x8, 0x0, 0x1, 0x0,
		0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x6, 0x0,
		0x1, 0x0, 0x6, 0xb, 0x0, 0x2, 0x0, 0x0,
		0x0, 0x3, 0x4d, 0x61, 0x70, 0x8, 0x0, 0x3,
		0x0, 0x0, 0x0, 0x2, 0xc, 0x0, 0x4, 0x8,
		0x0, 0x1, 0x0, 0x0, 0x0, 0xf, 0xc, 0x0,
		0x3, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc,
		0x0, 0x0, 0x0, 0x0,
	})
}

func NewConstTypedValue() *ConstTypedValue {
	return &ConstTypedValue{}
}

var ConstTypedValue_Double_DEFAULT float64

func (p *ConstTypedValue) GetDouble() (v float64) {
	if !p.IsSetDouble() {
		return ConstTypedValue_Double_DEFAULT
	}
	return *p.Double
}

var ConstTypedValue_Int_DEFAULT int64

func (p *ConstTypedValue) GetInt() (v int64) {
	if !p.IsSetInt() {
		return ConstTypedValue_Int_DEFAULT
	}
	return *p.Int
}

var ConstTypedValue_Literal_DEFAULT string

func (p *ConstTypedValue) GetLiteral() (v string) {
	if !p.IsSetLiteral() {
		return ConstTypedValue_Literal_DEFAULT
	}
	return *p.Literal
}

var ConstTypedValue_Identifier_DEFAULT string

func (p *ConstTypedValue) GetIdentifier() (v string) {
	if !p.IsSetIdentifier() {
		return ConstTypedValue_Identifier_DEFAULT
	}
	return *p.Identifier
}

var ConstTypedValue_List_DEFAULT []*ConstValue

func (p *ConstTypedValue) GetList() (v []*ConstValue) {
	if !p.IsSetList() {
		return ConstTypedValue_List_DEFAULT
	}
	return p.List
}

var ConstTypedValue_Map_DEFAULT []*MapConstValue

func (p *ConstTypedValue) GetMap() (v []*MapConstValue) {
	if !p.IsSetMap() {
		return ConstTypedValue_Map_DEFAULT
	}
	return p.Map
}

func (p *ConstTypedValue) CountSetFieldsConstTypedValue() int {
	count := 0
	if p.IsSetDouble() {
		count++
	}
	if p.IsSetInt() {
		count++
	}
	if p.IsSetLiteral() {
		count++
	}
	if p.IsSetIdentifier() {
		count++
	}
	if p.IsSetList() {
		count++
	}
	if p.IsSetMap() {
		count++
	}
	return count
}

func (p *ConstTypedValue) IsSetDouble() bool {
	return p.Double != nil
}

func (p *ConstTypedValue) IsSetInt() bool {
	return p.Int != nil
}

func (p *ConstTypedValue) IsSetLiteral() bool {
	return p.Literal != nil
}

func (p *ConstTypedValue) IsSetIdentifier() bool {
	return p.Identifier != nil
}

func (p *ConstTypedValue) IsSetList() bool {
	return p.List != nil
}

func (p *ConstTypedValue) IsSetMap() bool {
	return p.Map != nil
}

func (p *ConstTypedValue) String() string {
	if p == nil {
		return "<nil>"
	}
	return fmt.Sprintf("ConstTypedValue(%+v)", *p)
}
