// Code generated by protoc-gen-go. DO NOT EDIT.
// source: xmlrpc/xmlrpc.proto

package xmlrpc

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

// Value represents a value in XML-RPC.
type Value struct {
	// Types that are valid to be assigned to ScalarOneof:
	//	*Value_Int
	//	*Value_Boolean
	//	*Value_String_
	//	*Value_Double
	//	*Value_Datetime
	//	*Value_Base64
	//	*Value_Struct
	//	*Value_Array
	ScalarOneof          isValue_ScalarOneof `protobuf_oneof:"scalar_oneof"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

func (m *Value) Reset()         { *m = Value{} }
func (m *Value) String() string { return proto.CompactTextString(m) }
func (*Value) ProtoMessage()    {}
func (*Value) Descriptor() ([]byte, []int) {
	return fileDescriptor_0046840bdb8fdc36, []int{0}
}

func (m *Value) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Value.Unmarshal(m, b)
}
func (m *Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Value.Marshal(b, m, deterministic)
}
func (m *Value) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Value.Merge(m, src)
}
func (m *Value) XXX_Size() int {
	return xxx_messageInfo_Value.Size(m)
}
func (m *Value) XXX_DiscardUnknown() {
	xxx_messageInfo_Value.DiscardUnknown(m)
}

var xxx_messageInfo_Value proto.InternalMessageInfo

type isValue_ScalarOneof interface {
	isValue_ScalarOneof()
}

type Value_Int struct {
	Int int32 `protobuf:"zigzag32,2,opt,name=int,proto3,oneof"`
}

type Value_Boolean struct {
	Boolean bool `protobuf:"varint,3,opt,name=boolean,proto3,oneof"`
}

type Value_String_ struct {
	String_ string `protobuf:"bytes,4,opt,name=string,proto3,oneof"`
}

type Value_Double struct {
	Double float64 `protobuf:"fixed64,5,opt,name=double,proto3,oneof"`
}

type Value_Datetime struct {
	Datetime string `protobuf:"bytes,6,opt,name=datetime,proto3,oneof"`
}

type Value_Base64 struct {
	Base64 []byte `protobuf:"bytes,7,opt,name=base64,proto3,oneof"`
}

type Value_Struct struct {
	Struct *Struct `protobuf:"bytes,8,opt,name=struct,proto3,oneof"`
}

type Value_Array struct {
	Array *Array `protobuf:"bytes,9,opt,name=array,proto3,oneof"`
}

func (*Value_Int) isValue_ScalarOneof() {}

func (*Value_Boolean) isValue_ScalarOneof() {}

func (*Value_String_) isValue_ScalarOneof() {}

func (*Value_Double) isValue_ScalarOneof() {}

func (*Value_Datetime) isValue_ScalarOneof() {}

func (*Value_Base64) isValue_ScalarOneof() {}

func (*Value_Struct) isValue_ScalarOneof() {}

func (*Value_Array) isValue_ScalarOneof() {}

func (m *Value) GetScalarOneof() isValue_ScalarOneof {
	if m != nil {
		return m.ScalarOneof
	}
	return nil
}

func (m *Value) GetInt() int32 {
	if x, ok := m.GetScalarOneof().(*Value_Int); ok {
		return x.Int
	}
	return 0
}

func (m *Value) GetBoolean() bool {
	if x, ok := m.GetScalarOneof().(*Value_Boolean); ok {
		return x.Boolean
	}
	return false
}

func (m *Value) GetString_() string {
	if x, ok := m.GetScalarOneof().(*Value_String_); ok {
		return x.String_
	}
	return ""
}

func (m *Value) GetDouble() float64 {
	if x, ok := m.GetScalarOneof().(*Value_Double); ok {
		return x.Double
	}
	return 0
}

func (m *Value) GetDatetime() string {
	if x, ok := m.GetScalarOneof().(*Value_Datetime); ok {
		return x.Datetime
	}
	return ""
}

func (m *Value) GetBase64() []byte {
	if x, ok := m.GetScalarOneof().(*Value_Base64); ok {
		return x.Base64
	}
	return nil
}

func (m *Value) GetStruct() *Struct {
	if x, ok := m.GetScalarOneof().(*Value_Struct); ok {
		return x.Struct
	}
	return nil
}

func (m *Value) GetArray() *Array {
	if x, ok := m.GetScalarOneof().(*Value_Array); ok {
		return x.Array
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*Value) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*Value_Int)(nil),
		(*Value_Boolean)(nil),
		(*Value_String_)(nil),
		(*Value_Double)(nil),
		(*Value_Datetime)(nil),
		(*Value_Base64)(nil),
		(*Value_Struct)(nil),
		(*Value_Array)(nil),
	}
}

type Struct struct {
	Members              map[string]*Value `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

func (m *Struct) Reset()         { *m = Struct{} }
func (m *Struct) String() string { return proto.CompactTextString(m) }
func (*Struct) ProtoMessage()    {}
func (*Struct) Descriptor() ([]byte, []int) {
	return fileDescriptor_0046840bdb8fdc36, []int{1}
}

func (m *Struct) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Struct.Unmarshal(m, b)
}
func (m *Struct) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Struct.Marshal(b, m, deterministic)
}
func (m *Struct) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Struct.Merge(m, src)
}
func (m *Struct) XXX_Size() int {
	return xxx_messageInfo_Struct.Size(m)
}
func (m *Struct) XXX_DiscardUnknown() {
	xxx_messageInfo_Struct.DiscardUnknown(m)
}

var xxx_messageInfo_Struct proto.InternalMessageInfo

func (m *Struct) GetMembers() map[string]*Value {
	if m != nil {
		return m.Members
	}
	return nil
}

type Array struct {
	Values               []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Array) Reset()         { *m = Array{} }
func (m *Array) String() string { return proto.CompactTextString(m) }
func (*Array) ProtoMessage()    {}
func (*Array) Descriptor() ([]byte, []int) {
	return fileDescriptor_0046840bdb8fdc36, []int{2}
}

func (m *Array) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Array.Unmarshal(m, b)
}
func (m *Array) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Array.Marshal(b, m, deterministic)
}
func (m *Array) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Array.Merge(m, src)
}
func (m *Array) XXX_Size() int {
	return xxx_messageInfo_Array.Size(m)
}
func (m *Array) XXX_DiscardUnknown() {
	xxx_messageInfo_Array.DiscardUnknown(m)
}

var xxx_messageInfo_Array proto.InternalMessageInfo

func (m *Array) GetValues() []*Value {
	if m != nil {
		return m.Values
	}
	return nil
}

func init() {
	proto.RegisterType((*Value)(nil), "xmlrpc.Value")
	proto.RegisterType((*Struct)(nil), "xmlrpc.Struct")
	proto.RegisterMapType((map[string]*Value)(nil), "xmlrpc.Struct.MembersEntry")
	proto.RegisterType((*Array)(nil), "xmlrpc.Array")
}

func init() { proto.RegisterFile("xmlrpc/xmlrpc.proto", fileDescriptor_0046840bdb8fdc36) }

var fileDescriptor_0046840bdb8fdc36 = []byte{
	// 356 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x92, 0x3f, 0x4f, 0xeb, 0x30,
	0x14, 0xc5, 0xe3, 0xe6, 0x25, 0x6d, 0x6f, 0xfb, 0xaa, 0xf7, 0xfc, 0x16, 0xab, 0x8f, 0x21, 0x2a,
	0xaa, 0xe4, 0x29, 0x41, 0xe5, 0x8f, 0x10, 0x1b, 0x95, 0x90, 0xc2, 0xc0, 0x12, 0x24, 0x06, 0x16,
	0xe4, 0xa4, 0x6e, 0x88, 0x48, 0xe2, 0xca, 0x71, 0x10, 0xdd, 0x99, 0xf8, 0xd4, 0xc8, 0x76, 0x82,
	0x0a, 0x53, 0x72, 0xce, 0xef, 0x9e, 0xdc, 0xeb, 0x1b, 0xc3, 0xbf, 0xb7, 0xaa, 0x94, 0xbb, 0x2c,
	0xb2, 0x8f, 0x70, 0x27, 0x85, 0x12, 0xd8, 0xb7, 0x6a, 0xf1, 0x3e, 0x00, 0xef, 0x81, 0x95, 0x2d,
	0xc7, 0x18, 0xdc, 0xa2, 0x56, 0x64, 0x10, 0x20, 0xfa, 0x37, 0x76, 0x12, 0x2d, 0xf0, 0x1c, 0x86,
	0xa9, 0x10, 0x25, 0x67, 0x35, 0x71, 0x03, 0x44, 0x47, 0xb1, 0x93, 0xf4, 0x06, 0x26, 0xe0, 0x37,
	0x4a, 0x16, 0x75, 0x4e, 0x7e, 0x05, 0x88, 0x8e, 0x63, 0x27, 0xe9, 0xb4, 0x26, 0x1b, 0xd1, 0xa6,
	0x25, 0x27, 0x5e, 0x80, 0x28, 0xd2, 0xc4, 0x6a, 0x7c, 0x04, 0xa3, 0x0d, 0x53, 0x5c, 0x15, 0x15,
	0x27, 0x7e, 0x97, 0xfa, 0x72, 0x74, 0x2e, 0x65, 0x0d, 0xbf, 0x38, 0x23, 0xc3, 0x00, 0xd1, 0xa9,
	0xce, 0x59, 0x8d, 0xa9, 0xe9, 0xd5, 0x66, 0x8a, 0x8c, 0x02, 0x44, 0x27, 0xab, 0x59, 0xd8, 0x1d,
	0xe6, 0xde, 0xb8, 0x5d, 0xef, 0x36, 0x53, 0x78, 0x09, 0x1e, 0x93, 0x92, 0xed, 0xc9, 0xd8, 0x14,
	0xfe, 0xee, 0x0b, 0xaf, 0xb5, 0x19, 0x3b, 0x89, 0xa5, 0xeb, 0x19, 0x4c, 0x9b, 0x8c, 0x95, 0x4c,
	0x3e, 0x89, 0x9a, 0x8b, 0xed, 0xe2, 0x03, 0x81, 0x6f, 0xbf, 0x85, 0xcf, 0x61, 0x58, 0xf1, 0x2a,
	0xe5, 0xb2, 0x21, 0x28, 0x70, 0xe9, 0x64, 0xf5, 0xff, 0x7b, 0xb3, 0xf0, 0xce, 0xd2, 0x9b, 0x5a,
	0xc9, 0x7d, 0xd2, 0xd7, 0xce, 0x6f, 0x61, 0x7a, 0x08, 0xf0, 0x1f, 0x70, 0x5f, 0xf8, 0x9e, 0x20,
	0x7d, 0xca, 0x44, 0xbf, 0xe2, 0x63, 0xf0, 0x5e, 0xf5, 0xa6, 0xcd, 0x8a, 0x0f, 0x46, 0x33, 0xeb,
	0x4f, 0x2c, 0xbb, 0x1a, 0x5c, 0xa2, 0x45, 0x08, 0x9e, 0x19, 0x17, 0x2f, 0xc1, 0x37, 0x6e, 0x3f,
	0xc9, 0x8f, 0x48, 0x07, 0xd7, 0xab, 0xc7, 0x93, 0x5c, 0x84, 0xd9, 0xb3, 0x14, 0x55, 0xd1, 0x56,
	0xa1, 0x90, 0x79, 0xd4, 0x0b, 0xd1, 0x44, 0x45, 0xbd, 0x95, 0x2c, 0x32, 0x7f, 0x3d, 0xca, 0x45,
	0x77, 0x0b, 0x52, 0xdf, 0x18, 0xa7, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x00, 0xad, 0x0e, 0xb5,
	0x1d, 0x02, 0x00, 0x00,
}
