github.com/cloudwan/edgelq-sdk@v1.15.4/limits/resources/v1alpha2/common/common.pb.fieldpath.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/limits/proto/v1alpha2/common.proto
     3  // DO NOT EDIT!!!
     4  
     5  package common
     6  
     7  import (
     8  	"encoding/json"
     9  	"fmt"
    10  	"reflect"
    11  	"strings"
    12  	"time"
    13  
    14  	"google.golang.org/grpc/codes"
    15  	"google.golang.org/grpc/status"
    16  	"google.golang.org/protobuf/encoding/protojson"
    17  	"google.golang.org/protobuf/proto"
    18  	"google.golang.org/protobuf/reflect/protoregistry"
    19  
    20  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    21  	"github.com/cloudwan/goten-sdk/runtime/strcase"
    22  )
    23  
    24  // proto imports
    25  import (
    26  	meta_resource "github.com/cloudwan/edgelq-sdk/meta/resources/v1alpha2/resource"
    27  )
    28  
    29  // ensure the imports are used
    30  var (
    31  	_ = new(json.Marshaler)
    32  	_ = new(fmt.Stringer)
    33  	_ = reflect.DeepEqual
    34  	_ = strings.Builder{}
    35  	_ = time.Second
    36  
    37  	_ = strcase.ToLowerCamel
    38  	_ = codes.NotFound
    39  	_ = status.Status{}
    40  	_ = protojson.UnmarshalOptions{}
    41  	_ = new(proto.Message)
    42  	_ = protoregistry.GlobalTypes
    43  
    44  	_ = new(gotenobject.FieldPath)
    45  )
    46  
    47  // make sure we're using proto imports
    48  var (
    49  	_ = &meta_resource.Resource{}
    50  )
    51  
    52  // FieldPath provides implementation to handle
    53  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
    54  type Allowance_FieldPath interface {
    55  	gotenobject.FieldPath
    56  	Selector() Allowance_FieldPathSelector
    57  	Get(source *Allowance) []interface{}
    58  	GetSingle(source *Allowance) (interface{}, bool)
    59  	ClearValue(item *Allowance)
    60  
    61  	// Those methods build corresponding Allowance_FieldPathValue
    62  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    63  	WithIValue(value interface{}) Allowance_FieldPathValue
    64  	WithIArrayOfValues(values interface{}) Allowance_FieldPathArrayOfValues
    65  	WithIArrayItemValue(value interface{}) Allowance_FieldPathArrayItemValue
    66  }
    67  
    68  type Allowance_FieldPathSelector int32
    69  
    70  const (
    71  	Allowance_FieldPathSelectorResource Allowance_FieldPathSelector = 0
    72  	Allowance_FieldPathSelectorValue    Allowance_FieldPathSelector = 1
    73  )
    74  
    75  func (s Allowance_FieldPathSelector) String() string {
    76  	switch s {
    77  	case Allowance_FieldPathSelectorResource:
    78  		return "resource"
    79  	case Allowance_FieldPathSelectorValue:
    80  		return "value"
    81  	default:
    82  		panic(fmt.Sprintf("Invalid selector for Allowance: %d", s))
    83  	}
    84  }
    85  
    86  func BuildAllowance_FieldPath(fp gotenobject.RawFieldPath) (Allowance_FieldPath, error) {
    87  	if len(fp) == 0 {
    88  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Allowance")
    89  	}
    90  	if len(fp) == 1 {
    91  		switch fp[0] {
    92  		case "resource":
    93  			return &Allowance_FieldTerminalPath{selector: Allowance_FieldPathSelectorResource}, nil
    94  		case "value":
    95  			return &Allowance_FieldTerminalPath{selector: Allowance_FieldPathSelectorValue}, nil
    96  		}
    97  	}
    98  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Allowance", fp)
    99  }
   100  
   101  func ParseAllowance_FieldPath(rawField string) (Allowance_FieldPath, error) {
   102  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   103  	if err != nil {
   104  		return nil, err
   105  	}
   106  	return BuildAllowance_FieldPath(fp)
   107  }
   108  
   109  func MustParseAllowance_FieldPath(rawField string) Allowance_FieldPath {
   110  	fp, err := ParseAllowance_FieldPath(rawField)
   111  	if err != nil {
   112  		panic(err)
   113  	}
   114  	return fp
   115  }
   116  
   117  type Allowance_FieldTerminalPath struct {
   118  	selector Allowance_FieldPathSelector
   119  }
   120  
   121  var _ Allowance_FieldPath = (*Allowance_FieldTerminalPath)(nil)
   122  
   123  func (fp *Allowance_FieldTerminalPath) Selector() Allowance_FieldPathSelector {
   124  	return fp.selector
   125  }
   126  
   127  // String returns path representation in proto convention
   128  func (fp *Allowance_FieldTerminalPath) String() string {
   129  	return fp.selector.String()
   130  }
   131  
   132  // JSONString returns path representation is JSON convention
   133  func (fp *Allowance_FieldTerminalPath) JSONString() string {
   134  	return strcase.ToLowerCamel(fp.String())
   135  }
   136  
   137  // Get returns all values pointed by specific field from source Allowance
   138  func (fp *Allowance_FieldTerminalPath) Get(source *Allowance) (values []interface{}) {
   139  	if source != nil {
   140  		switch fp.selector {
   141  		case Allowance_FieldPathSelectorResource:
   142  			if source.Resource != nil {
   143  				values = append(values, source.Resource)
   144  			}
   145  		case Allowance_FieldPathSelectorValue:
   146  			values = append(values, source.Value)
   147  		default:
   148  			panic(fmt.Sprintf("Invalid selector for Allowance: %d", fp.selector))
   149  		}
   150  	}
   151  	return
   152  }
   153  
   154  func (fp *Allowance_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   155  	return fp.Get(source.(*Allowance))
   156  }
   157  
   158  // GetSingle returns value pointed by specific field of from source Allowance
   159  func (fp *Allowance_FieldTerminalPath) GetSingle(source *Allowance) (interface{}, bool) {
   160  	switch fp.selector {
   161  	case Allowance_FieldPathSelectorResource:
   162  		res := source.GetResource()
   163  		return res, res != nil
   164  	case Allowance_FieldPathSelectorValue:
   165  		return source.GetValue(), source != nil
   166  	default:
   167  		panic(fmt.Sprintf("Invalid selector for Allowance: %d", fp.selector))
   168  	}
   169  }
   170  
   171  func (fp *Allowance_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   172  	return fp.GetSingle(source.(*Allowance))
   173  }
   174  
   175  // GetDefault returns a default value of the field type
   176  func (fp *Allowance_FieldTerminalPath) GetDefault() interface{} {
   177  	switch fp.selector {
   178  	case Allowance_FieldPathSelectorResource:
   179  		return (*meta_resource.Reference)(nil)
   180  	case Allowance_FieldPathSelectorValue:
   181  		return int64(0)
   182  	default:
   183  		panic(fmt.Sprintf("Invalid selector for Allowance: %d", fp.selector))
   184  	}
   185  }
   186  
   187  func (fp *Allowance_FieldTerminalPath) ClearValue(item *Allowance) {
   188  	if item != nil {
   189  		switch fp.selector {
   190  		case Allowance_FieldPathSelectorResource:
   191  			item.Resource = nil
   192  		case Allowance_FieldPathSelectorValue:
   193  			item.Value = int64(0)
   194  		default:
   195  			panic(fmt.Sprintf("Invalid selector for Allowance: %d", fp.selector))
   196  		}
   197  	}
   198  }
   199  
   200  func (fp *Allowance_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   201  	fp.ClearValue(item.(*Allowance))
   202  }
   203  
   204  // IsLeaf - whether field path is holds simple value
   205  func (fp *Allowance_FieldTerminalPath) IsLeaf() bool {
   206  	return fp.selector == Allowance_FieldPathSelectorResource ||
   207  		fp.selector == Allowance_FieldPathSelectorValue
   208  }
   209  
   210  func (fp *Allowance_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   211  	return []gotenobject.FieldPath{fp}
   212  }
   213  
   214  func (fp *Allowance_FieldTerminalPath) WithIValue(value interface{}) Allowance_FieldPathValue {
   215  	switch fp.selector {
   216  	case Allowance_FieldPathSelectorResource:
   217  		return &Allowance_FieldTerminalPathValue{Allowance_FieldTerminalPath: *fp, value: value.(*meta_resource.Reference)}
   218  	case Allowance_FieldPathSelectorValue:
   219  		return &Allowance_FieldTerminalPathValue{Allowance_FieldTerminalPath: *fp, value: value.(int64)}
   220  	default:
   221  		panic(fmt.Sprintf("Invalid selector for Allowance: %d", fp.selector))
   222  	}
   223  }
   224  
   225  func (fp *Allowance_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   226  	return fp.WithIValue(value)
   227  }
   228  
   229  func (fp *Allowance_FieldTerminalPath) WithIArrayOfValues(values interface{}) Allowance_FieldPathArrayOfValues {
   230  	fpaov := &Allowance_FieldTerminalPathArrayOfValues{Allowance_FieldTerminalPath: *fp}
   231  	switch fp.selector {
   232  	case Allowance_FieldPathSelectorResource:
   233  		return &Allowance_FieldTerminalPathArrayOfValues{Allowance_FieldTerminalPath: *fp, values: values.([]*meta_resource.Reference)}
   234  	case Allowance_FieldPathSelectorValue:
   235  		return &Allowance_FieldTerminalPathArrayOfValues{Allowance_FieldTerminalPath: *fp, values: values.([]int64)}
   236  	default:
   237  		panic(fmt.Sprintf("Invalid selector for Allowance: %d", fp.selector))
   238  	}
   239  	return fpaov
   240  }
   241  
   242  func (fp *Allowance_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   243  	return fp.WithIArrayOfValues(values)
   244  }
   245  
   246  func (fp *Allowance_FieldTerminalPath) WithIArrayItemValue(value interface{}) Allowance_FieldPathArrayItemValue {
   247  	switch fp.selector {
   248  	default:
   249  		panic(fmt.Sprintf("Invalid selector for Allowance: %d", fp.selector))
   250  	}
   251  }
   252  
   253  func (fp *Allowance_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   254  	return fp.WithIArrayItemValue(value)
   255  }
   256  
   257  // Allowance_FieldPathValue allows storing values for Allowance fields according to their type
   258  type Allowance_FieldPathValue interface {
   259  	Allowance_FieldPath
   260  	gotenobject.FieldPathValue
   261  	SetTo(target **Allowance)
   262  	CompareWith(*Allowance) (cmp int, comparable bool)
   263  }
   264  
   265  func ParseAllowance_FieldPathValue(pathStr, valueStr string) (Allowance_FieldPathValue, error) {
   266  	fp, err := ParseAllowance_FieldPath(pathStr)
   267  	if err != nil {
   268  		return nil, err
   269  	}
   270  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   271  	if err != nil {
   272  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Allowance field path value from %s: %v", valueStr, err)
   273  	}
   274  	return fpv.(Allowance_FieldPathValue), nil
   275  }
   276  
   277  func MustParseAllowance_FieldPathValue(pathStr, valueStr string) Allowance_FieldPathValue {
   278  	fpv, err := ParseAllowance_FieldPathValue(pathStr, valueStr)
   279  	if err != nil {
   280  		panic(err)
   281  	}
   282  	return fpv
   283  }
   284  
   285  type Allowance_FieldTerminalPathValue struct {
   286  	Allowance_FieldTerminalPath
   287  	value interface{}
   288  }
   289  
   290  var _ Allowance_FieldPathValue = (*Allowance_FieldTerminalPathValue)(nil)
   291  
   292  // GetRawValue returns raw value stored under selected path for 'Allowance' as interface{}
   293  func (fpv *Allowance_FieldTerminalPathValue) GetRawValue() interface{} {
   294  	return fpv.value
   295  }
   296  func (fpv *Allowance_FieldTerminalPathValue) AsResourceValue() (*meta_resource.Reference, bool) {
   297  	res, ok := fpv.value.(*meta_resource.Reference)
   298  	return res, ok
   299  }
   300  func (fpv *Allowance_FieldTerminalPathValue) AsValueValue() (int64, bool) {
   301  	res, ok := fpv.value.(int64)
   302  	return res, ok
   303  }
   304  
   305  // SetTo stores value for selected field for object Allowance
   306  func (fpv *Allowance_FieldTerminalPathValue) SetTo(target **Allowance) {
   307  	if *target == nil {
   308  		*target = new(Allowance)
   309  	}
   310  	switch fpv.selector {
   311  	case Allowance_FieldPathSelectorResource:
   312  		(*target).Resource = fpv.value.(*meta_resource.Reference)
   313  	case Allowance_FieldPathSelectorValue:
   314  		(*target).Value = fpv.value.(int64)
   315  	default:
   316  		panic(fmt.Sprintf("Invalid selector for Allowance: %d", fpv.selector))
   317  	}
   318  }
   319  
   320  func (fpv *Allowance_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   321  	typedObject := target.(*Allowance)
   322  	fpv.SetTo(&typedObject)
   323  }
   324  
   325  // CompareWith compares value in the 'Allowance_FieldTerminalPathValue' with the value under path in 'Allowance'.
   326  func (fpv *Allowance_FieldTerminalPathValue) CompareWith(source *Allowance) (int, bool) {
   327  	switch fpv.selector {
   328  	case Allowance_FieldPathSelectorResource:
   329  		leftValue := fpv.value.(*meta_resource.Reference)
   330  		rightValue := source.GetResource()
   331  		if leftValue == nil {
   332  			if rightValue != nil {
   333  				return -1, true
   334  			}
   335  			return 0, true
   336  		}
   337  		if rightValue == nil {
   338  			return 1, true
   339  		}
   340  		if leftValue.String() == rightValue.String() {
   341  			return 0, true
   342  		} else if leftValue.String() < rightValue.String() {
   343  			return -1, true
   344  		} else {
   345  			return 1, true
   346  		}
   347  	case Allowance_FieldPathSelectorValue:
   348  		leftValue := fpv.value.(int64)
   349  		rightValue := source.GetValue()
   350  		if (leftValue) == (rightValue) {
   351  			return 0, true
   352  		} else if (leftValue) < (rightValue) {
   353  			return -1, true
   354  		} else {
   355  			return 1, true
   356  		}
   357  	default:
   358  		panic(fmt.Sprintf("Invalid selector for Allowance: %d", fpv.selector))
   359  	}
   360  }
   361  
   362  func (fpv *Allowance_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   363  	return fpv.CompareWith(source.(*Allowance))
   364  }
   365  
   366  // Allowance_FieldPathArrayItemValue allows storing single item in Path-specific values for Allowance according to their type
   367  // Present only for array (repeated) types.
   368  type Allowance_FieldPathArrayItemValue interface {
   369  	gotenobject.FieldPathArrayItemValue
   370  	Allowance_FieldPath
   371  	ContainsValue(*Allowance) bool
   372  }
   373  
   374  // ParseAllowance_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   375  func ParseAllowance_FieldPathArrayItemValue(pathStr, valueStr string) (Allowance_FieldPathArrayItemValue, error) {
   376  	fp, err := ParseAllowance_FieldPath(pathStr)
   377  	if err != nil {
   378  		return nil, err
   379  	}
   380  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   381  	if err != nil {
   382  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Allowance field path array item value from %s: %v", valueStr, err)
   383  	}
   384  	return fpaiv.(Allowance_FieldPathArrayItemValue), nil
   385  }
   386  
   387  func MustParseAllowance_FieldPathArrayItemValue(pathStr, valueStr string) Allowance_FieldPathArrayItemValue {
   388  	fpaiv, err := ParseAllowance_FieldPathArrayItemValue(pathStr, valueStr)
   389  	if err != nil {
   390  		panic(err)
   391  	}
   392  	return fpaiv
   393  }
   394  
   395  type Allowance_FieldTerminalPathArrayItemValue struct {
   396  	Allowance_FieldTerminalPath
   397  	value interface{}
   398  }
   399  
   400  var _ Allowance_FieldPathArrayItemValue = (*Allowance_FieldTerminalPathArrayItemValue)(nil)
   401  
   402  // GetRawValue returns stored element value for array in object Allowance as interface{}
   403  func (fpaiv *Allowance_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   404  	return fpaiv.value
   405  }
   406  
   407  func (fpaiv *Allowance_FieldTerminalPathArrayItemValue) GetSingle(source *Allowance) (interface{}, bool) {
   408  	return nil, false
   409  }
   410  
   411  func (fpaiv *Allowance_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   412  	return fpaiv.GetSingle(source.(*Allowance))
   413  }
   414  
   415  // Contains returns a boolean indicating if value that is being held is present in given 'Allowance'
   416  func (fpaiv *Allowance_FieldTerminalPathArrayItemValue) ContainsValue(source *Allowance) bool {
   417  	slice := fpaiv.Allowance_FieldTerminalPath.Get(source)
   418  	for _, v := range slice {
   419  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   420  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   421  				return true
   422  			}
   423  		} else if reflect.DeepEqual(v, fpaiv.value) {
   424  			return true
   425  		}
   426  	}
   427  	return false
   428  }
   429  
   430  // Allowance_FieldPathArrayOfValues allows storing slice of values for Allowance fields according to their type
   431  type Allowance_FieldPathArrayOfValues interface {
   432  	gotenobject.FieldPathArrayOfValues
   433  	Allowance_FieldPath
   434  }
   435  
   436  func ParseAllowance_FieldPathArrayOfValues(pathStr, valuesStr string) (Allowance_FieldPathArrayOfValues, error) {
   437  	fp, err := ParseAllowance_FieldPath(pathStr)
   438  	if err != nil {
   439  		return nil, err
   440  	}
   441  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   442  	if err != nil {
   443  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Allowance field path array of values from %s: %v", valuesStr, err)
   444  	}
   445  	return fpaov.(Allowance_FieldPathArrayOfValues), nil
   446  }
   447  
   448  func MustParseAllowance_FieldPathArrayOfValues(pathStr, valuesStr string) Allowance_FieldPathArrayOfValues {
   449  	fpaov, err := ParseAllowance_FieldPathArrayOfValues(pathStr, valuesStr)
   450  	if err != nil {
   451  		panic(err)
   452  	}
   453  	return fpaov
   454  }
   455  
   456  type Allowance_FieldTerminalPathArrayOfValues struct {
   457  	Allowance_FieldTerminalPath
   458  	values interface{}
   459  }
   460  
   461  var _ Allowance_FieldPathArrayOfValues = (*Allowance_FieldTerminalPathArrayOfValues)(nil)
   462  
   463  func (fpaov *Allowance_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   464  	switch fpaov.selector {
   465  	case Allowance_FieldPathSelectorResource:
   466  		for _, v := range fpaov.values.([]*meta_resource.Reference) {
   467  			values = append(values, v)
   468  		}
   469  	case Allowance_FieldPathSelectorValue:
   470  		for _, v := range fpaov.values.([]int64) {
   471  			values = append(values, v)
   472  		}
   473  	}
   474  	return
   475  }
   476  func (fpaov *Allowance_FieldTerminalPathArrayOfValues) AsResourceArrayOfValues() ([]*meta_resource.Reference, bool) {
   477  	res, ok := fpaov.values.([]*meta_resource.Reference)
   478  	return res, ok
   479  }
   480  func (fpaov *Allowance_FieldTerminalPathArrayOfValues) AsValueArrayOfValues() ([]int64, bool) {
   481  	res, ok := fpaov.values.([]int64)
   482  	return res, ok
   483  }
   484  
   485  // FieldPath provides implementation to handle
   486  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
   487  type RegionalDistribution_FieldPath interface {
   488  	gotenobject.FieldPath
   489  	Selector() RegionalDistribution_FieldPathSelector
   490  	Get(source *RegionalDistribution) []interface{}
   491  	GetSingle(source *RegionalDistribution) (interface{}, bool)
   492  	ClearValue(item *RegionalDistribution)
   493  
   494  	// Those methods build corresponding RegionalDistribution_FieldPathValue
   495  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
   496  	WithIValue(value interface{}) RegionalDistribution_FieldPathValue
   497  	WithIArrayOfValues(values interface{}) RegionalDistribution_FieldPathArrayOfValues
   498  	WithIArrayItemValue(value interface{}) RegionalDistribution_FieldPathArrayItemValue
   499  }
   500  
   501  type RegionalDistribution_FieldPathSelector int32
   502  
   503  const (
   504  	RegionalDistribution_FieldPathSelectorResource       RegionalDistribution_FieldPathSelector = 0
   505  	RegionalDistribution_FieldPathSelectorLimitsByRegion RegionalDistribution_FieldPathSelector = 1
   506  )
   507  
   508  func (s RegionalDistribution_FieldPathSelector) String() string {
   509  	switch s {
   510  	case RegionalDistribution_FieldPathSelectorResource:
   511  		return "resource"
   512  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   513  		return "limits_by_region"
   514  	default:
   515  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", s))
   516  	}
   517  }
   518  
   519  func BuildRegionalDistribution_FieldPath(fp gotenobject.RawFieldPath) (RegionalDistribution_FieldPath, error) {
   520  	if len(fp) == 0 {
   521  		return nil, status.Error(codes.InvalidArgument, "empty field path for object RegionalDistribution")
   522  	}
   523  	if len(fp) == 1 {
   524  		switch fp[0] {
   525  		case "resource":
   526  			return &RegionalDistribution_FieldTerminalPath{selector: RegionalDistribution_FieldPathSelectorResource}, nil
   527  		case "limits_by_region", "limitsByRegion", "limits-by-region":
   528  			return &RegionalDistribution_FieldTerminalPath{selector: RegionalDistribution_FieldPathSelectorLimitsByRegion}, nil
   529  		}
   530  	} else {
   531  		switch fp[0] {
   532  		case "limits_by_region", "limitsByRegion", "limits-by-region":
   533  			if len(fp) > 2 {
   534  				return nil, status.Errorf(codes.InvalidArgument, "sub path for maps ('%s') are not supported (object RegionalDistribution)", fp)
   535  			}
   536  			return &RegionalDistribution_FieldPathMap{selector: RegionalDistribution_FieldPathSelectorLimitsByRegion, key: fp[1]}, nil
   537  		}
   538  	}
   539  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object RegionalDistribution", fp)
   540  }
   541  
   542  func ParseRegionalDistribution_FieldPath(rawField string) (RegionalDistribution_FieldPath, error) {
   543  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   544  	if err != nil {
   545  		return nil, err
   546  	}
   547  	return BuildRegionalDistribution_FieldPath(fp)
   548  }
   549  
   550  func MustParseRegionalDistribution_FieldPath(rawField string) RegionalDistribution_FieldPath {
   551  	fp, err := ParseRegionalDistribution_FieldPath(rawField)
   552  	if err != nil {
   553  		panic(err)
   554  	}
   555  	return fp
   556  }
   557  
   558  type RegionalDistribution_FieldTerminalPath struct {
   559  	selector RegionalDistribution_FieldPathSelector
   560  }
   561  
   562  var _ RegionalDistribution_FieldPath = (*RegionalDistribution_FieldTerminalPath)(nil)
   563  
   564  func (fp *RegionalDistribution_FieldTerminalPath) Selector() RegionalDistribution_FieldPathSelector {
   565  	return fp.selector
   566  }
   567  
   568  // String returns path representation in proto convention
   569  func (fp *RegionalDistribution_FieldTerminalPath) String() string {
   570  	return fp.selector.String()
   571  }
   572  
   573  // JSONString returns path representation is JSON convention
   574  func (fp *RegionalDistribution_FieldTerminalPath) JSONString() string {
   575  	return strcase.ToLowerCamel(fp.String())
   576  }
   577  
   578  // Get returns all values pointed by specific field from source RegionalDistribution
   579  func (fp *RegionalDistribution_FieldTerminalPath) Get(source *RegionalDistribution) (values []interface{}) {
   580  	if source != nil {
   581  		switch fp.selector {
   582  		case RegionalDistribution_FieldPathSelectorResource:
   583  			if source.Resource != nil {
   584  				values = append(values, source.Resource)
   585  			}
   586  		case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   587  			values = append(values, source.LimitsByRegion)
   588  		default:
   589  			panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fp.selector))
   590  		}
   591  	}
   592  	return
   593  }
   594  
   595  func (fp *RegionalDistribution_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   596  	return fp.Get(source.(*RegionalDistribution))
   597  }
   598  
   599  // GetSingle returns value pointed by specific field of from source RegionalDistribution
   600  func (fp *RegionalDistribution_FieldTerminalPath) GetSingle(source *RegionalDistribution) (interface{}, bool) {
   601  	switch fp.selector {
   602  	case RegionalDistribution_FieldPathSelectorResource:
   603  		res := source.GetResource()
   604  		return res, res != nil
   605  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   606  		res := source.GetLimitsByRegion()
   607  		return res, res != nil
   608  	default:
   609  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fp.selector))
   610  	}
   611  }
   612  
   613  func (fp *RegionalDistribution_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   614  	return fp.GetSingle(source.(*RegionalDistribution))
   615  }
   616  
   617  // GetDefault returns a default value of the field type
   618  func (fp *RegionalDistribution_FieldTerminalPath) GetDefault() interface{} {
   619  	switch fp.selector {
   620  	case RegionalDistribution_FieldPathSelectorResource:
   621  		return (*meta_resource.Reference)(nil)
   622  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   623  		return (map[string]int64)(nil)
   624  	default:
   625  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fp.selector))
   626  	}
   627  }
   628  
   629  func (fp *RegionalDistribution_FieldTerminalPath) ClearValue(item *RegionalDistribution) {
   630  	if item != nil {
   631  		switch fp.selector {
   632  		case RegionalDistribution_FieldPathSelectorResource:
   633  			item.Resource = nil
   634  		case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   635  			item.LimitsByRegion = nil
   636  		default:
   637  			panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fp.selector))
   638  		}
   639  	}
   640  }
   641  
   642  func (fp *RegionalDistribution_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   643  	fp.ClearValue(item.(*RegionalDistribution))
   644  }
   645  
   646  // IsLeaf - whether field path is holds simple value
   647  func (fp *RegionalDistribution_FieldTerminalPath) IsLeaf() bool {
   648  	return fp.selector == RegionalDistribution_FieldPathSelectorResource ||
   649  		fp.selector == RegionalDistribution_FieldPathSelectorLimitsByRegion
   650  }
   651  
   652  func (fp *RegionalDistribution_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   653  	return []gotenobject.FieldPath{fp}
   654  }
   655  
   656  func (fp *RegionalDistribution_FieldTerminalPath) WithIValue(value interface{}) RegionalDistribution_FieldPathValue {
   657  	switch fp.selector {
   658  	case RegionalDistribution_FieldPathSelectorResource:
   659  		return &RegionalDistribution_FieldTerminalPathValue{RegionalDistribution_FieldTerminalPath: *fp, value: value.(*meta_resource.Reference)}
   660  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   661  		return &RegionalDistribution_FieldTerminalPathValue{RegionalDistribution_FieldTerminalPath: *fp, value: value.(map[string]int64)}
   662  	default:
   663  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fp.selector))
   664  	}
   665  }
   666  
   667  func (fp *RegionalDistribution_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   668  	return fp.WithIValue(value)
   669  }
   670  
   671  func (fp *RegionalDistribution_FieldTerminalPath) WithIArrayOfValues(values interface{}) RegionalDistribution_FieldPathArrayOfValues {
   672  	fpaov := &RegionalDistribution_FieldTerminalPathArrayOfValues{RegionalDistribution_FieldTerminalPath: *fp}
   673  	switch fp.selector {
   674  	case RegionalDistribution_FieldPathSelectorResource:
   675  		return &RegionalDistribution_FieldTerminalPathArrayOfValues{RegionalDistribution_FieldTerminalPath: *fp, values: values.([]*meta_resource.Reference)}
   676  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   677  		return &RegionalDistribution_FieldTerminalPathArrayOfValues{RegionalDistribution_FieldTerminalPath: *fp, values: values.([]map[string]int64)}
   678  	default:
   679  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fp.selector))
   680  	}
   681  	return fpaov
   682  }
   683  
   684  func (fp *RegionalDistribution_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   685  	return fp.WithIArrayOfValues(values)
   686  }
   687  
   688  func (fp *RegionalDistribution_FieldTerminalPath) WithIArrayItemValue(value interface{}) RegionalDistribution_FieldPathArrayItemValue {
   689  	switch fp.selector {
   690  	default:
   691  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fp.selector))
   692  	}
   693  }
   694  
   695  func (fp *RegionalDistribution_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   696  	return fp.WithIArrayItemValue(value)
   697  }
   698  
   699  // FieldPath for map type with additional Key information
   700  type RegionalDistribution_FieldPathMap struct {
   701  	key      string
   702  	selector RegionalDistribution_FieldPathSelector
   703  }
   704  
   705  var _ RegionalDistribution_FieldPath = (*RegionalDistribution_FieldPathMap)(nil)
   706  
   707  func (fpm *RegionalDistribution_FieldPathMap) Selector() RegionalDistribution_FieldPathSelector {
   708  	return fpm.selector
   709  }
   710  
   711  func (fpm *RegionalDistribution_FieldPathMap) Key() string {
   712  	return fpm.key
   713  }
   714  
   715  // String returns path representation in proto convention
   716  func (fpm *RegionalDistribution_FieldPathMap) String() string {
   717  	return fpm.selector.String() + "." + fpm.key
   718  }
   719  
   720  // JSONString returns path representation is JSON convention. Note that map keys are not transformed
   721  func (fpm *RegionalDistribution_FieldPathMap) JSONString() string {
   722  	return strcase.ToLowerCamel(fpm.selector.String()) + "." + fpm.key
   723  }
   724  
   725  // Get returns all values pointed by selected field map key from source RegionalDistribution
   726  func (fpm *RegionalDistribution_FieldPathMap) Get(source *RegionalDistribution) (values []interface{}) {
   727  	switch fpm.selector {
   728  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   729  		if value, ok := source.GetLimitsByRegion()[fpm.key]; ok {
   730  			values = append(values, value)
   731  		}
   732  	default:
   733  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpm.selector))
   734  	}
   735  	return
   736  }
   737  
   738  func (fpm *RegionalDistribution_FieldPathMap) GetRaw(source proto.Message) []interface{} {
   739  	return fpm.Get(source.(*RegionalDistribution))
   740  }
   741  
   742  // GetSingle returns value by selected field map key from source RegionalDistribution
   743  func (fpm *RegionalDistribution_FieldPathMap) GetSingle(source *RegionalDistribution) (interface{}, bool) {
   744  	switch fpm.selector {
   745  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   746  		res, ok := source.GetLimitsByRegion()[fpm.key]
   747  		return res, ok
   748  	default:
   749  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpm.selector))
   750  	}
   751  }
   752  
   753  func (fpm *RegionalDistribution_FieldPathMap) GetSingleRaw(source proto.Message) (interface{}, bool) {
   754  	return fpm.GetSingle(source.(*RegionalDistribution))
   755  }
   756  
   757  // GetDefault returns a default value of the field type
   758  func (fpm *RegionalDistribution_FieldPathMap) GetDefault() interface{} {
   759  	switch fpm.selector {
   760  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   761  		var v int64
   762  		return v
   763  	default:
   764  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpm.selector))
   765  	}
   766  }
   767  
   768  func (fpm *RegionalDistribution_FieldPathMap) ClearValue(item *RegionalDistribution) {
   769  	if item != nil {
   770  		switch fpm.selector {
   771  		case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   772  			delete(item.LimitsByRegion, fpm.key)
   773  		default:
   774  			panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpm.selector))
   775  		}
   776  	}
   777  }
   778  
   779  func (fpm *RegionalDistribution_FieldPathMap) ClearValueRaw(item proto.Message) {
   780  	fpm.ClearValue(item.(*RegionalDistribution))
   781  }
   782  
   783  // IsLeaf - whether field path is holds simple value
   784  func (fpm *RegionalDistribution_FieldPathMap) IsLeaf() bool {
   785  	switch fpm.selector {
   786  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   787  		return true
   788  	default:
   789  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpm.selector))
   790  	}
   791  }
   792  
   793  func (fpm *RegionalDistribution_FieldPathMap) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   794  	return []gotenobject.FieldPath{fpm}
   795  }
   796  
   797  func (fpm *RegionalDistribution_FieldPathMap) WithIValue(value interface{}) RegionalDistribution_FieldPathValue {
   798  	switch fpm.selector {
   799  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   800  		return &RegionalDistribution_FieldPathMapValue{RegionalDistribution_FieldPathMap: *fpm, value: value.(int64)}
   801  	default:
   802  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpm.selector))
   803  	}
   804  }
   805  
   806  func (fpm *RegionalDistribution_FieldPathMap) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   807  	return fpm.WithIValue(value)
   808  }
   809  
   810  func (fpm *RegionalDistribution_FieldPathMap) WithIArrayOfValues(values interface{}) RegionalDistribution_FieldPathArrayOfValues {
   811  	switch fpm.selector {
   812  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   813  		return &RegionalDistribution_FieldPathMapArrayOfValues{RegionalDistribution_FieldPathMap: *fpm, values: values.([]int64)}
   814  	default:
   815  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpm.selector))
   816  	}
   817  }
   818  
   819  func (fpm *RegionalDistribution_FieldPathMap) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   820  	return fpm.WithIArrayOfValues(values)
   821  }
   822  
   823  func (fpm *RegionalDistribution_FieldPathMap) WithIArrayItemValue(value interface{}) RegionalDistribution_FieldPathArrayItemValue {
   824  	panic("Cannot create array item value from map fieldpath")
   825  }
   826  
   827  func (fpm *RegionalDistribution_FieldPathMap) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   828  	return fpm.WithIArrayItemValue(value)
   829  }
   830  
   831  // RegionalDistribution_FieldPathValue allows storing values for RegionalDistribution fields according to their type
   832  type RegionalDistribution_FieldPathValue interface {
   833  	RegionalDistribution_FieldPath
   834  	gotenobject.FieldPathValue
   835  	SetTo(target **RegionalDistribution)
   836  	CompareWith(*RegionalDistribution) (cmp int, comparable bool)
   837  }
   838  
   839  func ParseRegionalDistribution_FieldPathValue(pathStr, valueStr string) (RegionalDistribution_FieldPathValue, error) {
   840  	fp, err := ParseRegionalDistribution_FieldPath(pathStr)
   841  	if err != nil {
   842  		return nil, err
   843  	}
   844  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   845  	if err != nil {
   846  		return nil, status.Errorf(codes.InvalidArgument, "error parsing RegionalDistribution field path value from %s: %v", valueStr, err)
   847  	}
   848  	return fpv.(RegionalDistribution_FieldPathValue), nil
   849  }
   850  
   851  func MustParseRegionalDistribution_FieldPathValue(pathStr, valueStr string) RegionalDistribution_FieldPathValue {
   852  	fpv, err := ParseRegionalDistribution_FieldPathValue(pathStr, valueStr)
   853  	if err != nil {
   854  		panic(err)
   855  	}
   856  	return fpv
   857  }
   858  
   859  type RegionalDistribution_FieldTerminalPathValue struct {
   860  	RegionalDistribution_FieldTerminalPath
   861  	value interface{}
   862  }
   863  
   864  var _ RegionalDistribution_FieldPathValue = (*RegionalDistribution_FieldTerminalPathValue)(nil)
   865  
   866  // GetRawValue returns raw value stored under selected path for 'RegionalDistribution' as interface{}
   867  func (fpv *RegionalDistribution_FieldTerminalPathValue) GetRawValue() interface{} {
   868  	return fpv.value
   869  }
   870  func (fpv *RegionalDistribution_FieldTerminalPathValue) AsResourceValue() (*meta_resource.Reference, bool) {
   871  	res, ok := fpv.value.(*meta_resource.Reference)
   872  	return res, ok
   873  }
   874  func (fpv *RegionalDistribution_FieldTerminalPathValue) AsLimitsByRegionValue() (map[string]int64, bool) {
   875  	res, ok := fpv.value.(map[string]int64)
   876  	return res, ok
   877  }
   878  
   879  // SetTo stores value for selected field for object RegionalDistribution
   880  func (fpv *RegionalDistribution_FieldTerminalPathValue) SetTo(target **RegionalDistribution) {
   881  	if *target == nil {
   882  		*target = new(RegionalDistribution)
   883  	}
   884  	switch fpv.selector {
   885  	case RegionalDistribution_FieldPathSelectorResource:
   886  		(*target).Resource = fpv.value.(*meta_resource.Reference)
   887  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   888  		(*target).LimitsByRegion = fpv.value.(map[string]int64)
   889  	default:
   890  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpv.selector))
   891  	}
   892  }
   893  
   894  func (fpv *RegionalDistribution_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   895  	typedObject := target.(*RegionalDistribution)
   896  	fpv.SetTo(&typedObject)
   897  }
   898  
   899  // CompareWith compares value in the 'RegionalDistribution_FieldTerminalPathValue' with the value under path in 'RegionalDistribution'.
   900  func (fpv *RegionalDistribution_FieldTerminalPathValue) CompareWith(source *RegionalDistribution) (int, bool) {
   901  	switch fpv.selector {
   902  	case RegionalDistribution_FieldPathSelectorResource:
   903  		leftValue := fpv.value.(*meta_resource.Reference)
   904  		rightValue := source.GetResource()
   905  		if leftValue == nil {
   906  			if rightValue != nil {
   907  				return -1, true
   908  			}
   909  			return 0, true
   910  		}
   911  		if rightValue == nil {
   912  			return 1, true
   913  		}
   914  		if leftValue.String() == rightValue.String() {
   915  			return 0, true
   916  		} else if leftValue.String() < rightValue.String() {
   917  			return -1, true
   918  		} else {
   919  			return 1, true
   920  		}
   921  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   922  		return 0, false
   923  	default:
   924  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpv.selector))
   925  	}
   926  }
   927  
   928  func (fpv *RegionalDistribution_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   929  	return fpv.CompareWith(source.(*RegionalDistribution))
   930  }
   931  
   932  type RegionalDistribution_FieldPathMapValue struct {
   933  	RegionalDistribution_FieldPathMap
   934  	value interface{}
   935  }
   936  
   937  var _ RegionalDistribution_FieldPathValue = (*RegionalDistribution_FieldPathMapValue)(nil)
   938  
   939  // GetValue returns value stored under selected field in RegionalDistribution as interface{}
   940  func (fpmv *RegionalDistribution_FieldPathMapValue) GetRawValue() interface{} {
   941  	return fpmv.value
   942  }
   943  func (fpmv *RegionalDistribution_FieldPathMapValue) AsLimitsByRegionElementValue() (int64, bool) {
   944  	res, ok := fpmv.value.(int64)
   945  	return res, ok
   946  }
   947  
   948  // SetTo stores value for selected field in RegionalDistribution
   949  func (fpmv *RegionalDistribution_FieldPathMapValue) SetTo(target **RegionalDistribution) {
   950  	if *target == nil {
   951  		*target = new(RegionalDistribution)
   952  	}
   953  	switch fpmv.selector {
   954  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   955  		if (*target).LimitsByRegion == nil {
   956  			(*target).LimitsByRegion = make(map[string]int64)
   957  		}
   958  		(*target).LimitsByRegion[fpmv.key] = fpmv.value.(int64)
   959  	default:
   960  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpmv.selector))
   961  	}
   962  }
   963  
   964  func (fpmv *RegionalDistribution_FieldPathMapValue) SetToRaw(target proto.Message) {
   965  	typedObject := target.(*RegionalDistribution)
   966  	fpmv.SetTo(&typedObject)
   967  }
   968  
   969  // CompareWith compares value in the 'RegionalDistribution_FieldPathMapValue' with the value under path in 'RegionalDistribution'.
   970  func (fpmv *RegionalDistribution_FieldPathMapValue) CompareWith(source *RegionalDistribution) (int, bool) {
   971  	switch fpmv.selector {
   972  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
   973  		leftValue := fpmv.value.(int64)
   974  		rightValue := source.GetLimitsByRegion()[fpmv.key]
   975  		if (leftValue) == (rightValue) {
   976  			return 0, true
   977  		} else if (leftValue) < (rightValue) {
   978  			return -1, true
   979  		} else {
   980  			return 1, true
   981  		}
   982  	default:
   983  		panic(fmt.Sprintf("Invalid selector for RegionalDistribution: %d", fpmv.selector))
   984  	}
   985  }
   986  
   987  func (fpmv *RegionalDistribution_FieldPathMapValue) CompareWithRaw(source proto.Message) (int, bool) {
   988  	return fpmv.CompareWith(source.(*RegionalDistribution))
   989  }
   990  
   991  // RegionalDistribution_FieldPathArrayItemValue allows storing single item in Path-specific values for RegionalDistribution according to their type
   992  // Present only for array (repeated) types.
   993  type RegionalDistribution_FieldPathArrayItemValue interface {
   994  	gotenobject.FieldPathArrayItemValue
   995  	RegionalDistribution_FieldPath
   996  	ContainsValue(*RegionalDistribution) bool
   997  }
   998  
   999  // ParseRegionalDistribution_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  1000  func ParseRegionalDistribution_FieldPathArrayItemValue(pathStr, valueStr string) (RegionalDistribution_FieldPathArrayItemValue, error) {
  1001  	fp, err := ParseRegionalDistribution_FieldPath(pathStr)
  1002  	if err != nil {
  1003  		return nil, err
  1004  	}
  1005  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  1006  	if err != nil {
  1007  		return nil, status.Errorf(codes.InvalidArgument, "error parsing RegionalDistribution field path array item value from %s: %v", valueStr, err)
  1008  	}
  1009  	return fpaiv.(RegionalDistribution_FieldPathArrayItemValue), nil
  1010  }
  1011  
  1012  func MustParseRegionalDistribution_FieldPathArrayItemValue(pathStr, valueStr string) RegionalDistribution_FieldPathArrayItemValue {
  1013  	fpaiv, err := ParseRegionalDistribution_FieldPathArrayItemValue(pathStr, valueStr)
  1014  	if err != nil {
  1015  		panic(err)
  1016  	}
  1017  	return fpaiv
  1018  }
  1019  
  1020  type RegionalDistribution_FieldTerminalPathArrayItemValue struct {
  1021  	RegionalDistribution_FieldTerminalPath
  1022  	value interface{}
  1023  }
  1024  
  1025  var _ RegionalDistribution_FieldPathArrayItemValue = (*RegionalDistribution_FieldTerminalPathArrayItemValue)(nil)
  1026  
  1027  // GetRawValue returns stored element value for array in object RegionalDistribution as interface{}
  1028  func (fpaiv *RegionalDistribution_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  1029  	return fpaiv.value
  1030  }
  1031  
  1032  func (fpaiv *RegionalDistribution_FieldTerminalPathArrayItemValue) GetSingle(source *RegionalDistribution) (interface{}, bool) {
  1033  	return nil, false
  1034  }
  1035  
  1036  func (fpaiv *RegionalDistribution_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1037  	return fpaiv.GetSingle(source.(*RegionalDistribution))
  1038  }
  1039  
  1040  // Contains returns a boolean indicating if value that is being held is present in given 'RegionalDistribution'
  1041  func (fpaiv *RegionalDistribution_FieldTerminalPathArrayItemValue) ContainsValue(source *RegionalDistribution) bool {
  1042  	slice := fpaiv.RegionalDistribution_FieldTerminalPath.Get(source)
  1043  	for _, v := range slice {
  1044  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  1045  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  1046  				return true
  1047  			}
  1048  		} else if reflect.DeepEqual(v, fpaiv.value) {
  1049  			return true
  1050  		}
  1051  	}
  1052  	return false
  1053  }
  1054  
  1055  // RegionalDistribution_FieldPathArrayOfValues allows storing slice of values for RegionalDistribution fields according to their type
  1056  type RegionalDistribution_FieldPathArrayOfValues interface {
  1057  	gotenobject.FieldPathArrayOfValues
  1058  	RegionalDistribution_FieldPath
  1059  }
  1060  
  1061  func ParseRegionalDistribution_FieldPathArrayOfValues(pathStr, valuesStr string) (RegionalDistribution_FieldPathArrayOfValues, error) {
  1062  	fp, err := ParseRegionalDistribution_FieldPath(pathStr)
  1063  	if err != nil {
  1064  		return nil, err
  1065  	}
  1066  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  1067  	if err != nil {
  1068  		return nil, status.Errorf(codes.InvalidArgument, "error parsing RegionalDistribution field path array of values from %s: %v", valuesStr, err)
  1069  	}
  1070  	return fpaov.(RegionalDistribution_FieldPathArrayOfValues), nil
  1071  }
  1072  
  1073  func MustParseRegionalDistribution_FieldPathArrayOfValues(pathStr, valuesStr string) RegionalDistribution_FieldPathArrayOfValues {
  1074  	fpaov, err := ParseRegionalDistribution_FieldPathArrayOfValues(pathStr, valuesStr)
  1075  	if err != nil {
  1076  		panic(err)
  1077  	}
  1078  	return fpaov
  1079  }
  1080  
  1081  type RegionalDistribution_FieldTerminalPathArrayOfValues struct {
  1082  	RegionalDistribution_FieldTerminalPath
  1083  	values interface{}
  1084  }
  1085  
  1086  var _ RegionalDistribution_FieldPathArrayOfValues = (*RegionalDistribution_FieldTerminalPathArrayOfValues)(nil)
  1087  
  1088  func (fpaov *RegionalDistribution_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  1089  	switch fpaov.selector {
  1090  	case RegionalDistribution_FieldPathSelectorResource:
  1091  		for _, v := range fpaov.values.([]*meta_resource.Reference) {
  1092  			values = append(values, v)
  1093  		}
  1094  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
  1095  		for _, v := range fpaov.values.([]map[string]int64) {
  1096  			values = append(values, v)
  1097  		}
  1098  	}
  1099  	return
  1100  }
  1101  func (fpaov *RegionalDistribution_FieldTerminalPathArrayOfValues) AsResourceArrayOfValues() ([]*meta_resource.Reference, bool) {
  1102  	res, ok := fpaov.values.([]*meta_resource.Reference)
  1103  	return res, ok
  1104  }
  1105  func (fpaov *RegionalDistribution_FieldTerminalPathArrayOfValues) AsLimitsByRegionArrayOfValues() ([]map[string]int64, bool) {
  1106  	res, ok := fpaov.values.([]map[string]int64)
  1107  	return res, ok
  1108  }
  1109  
  1110  type RegionalDistribution_FieldPathMapArrayOfValues struct {
  1111  	RegionalDistribution_FieldPathMap
  1112  	values interface{}
  1113  }
  1114  
  1115  var _ RegionalDistribution_FieldPathArrayOfValues = (*RegionalDistribution_FieldPathMapArrayOfValues)(nil)
  1116  
  1117  func (fpmaov *RegionalDistribution_FieldPathMapArrayOfValues) GetRawValues() (values []interface{}) {
  1118  	switch fpmaov.selector {
  1119  	case RegionalDistribution_FieldPathSelectorLimitsByRegion:
  1120  		for _, v := range fpmaov.values.([]int64) {
  1121  			values = append(values, v)
  1122  		}
  1123  	}
  1124  	return
  1125  }
  1126  func (fpmaov *RegionalDistribution_FieldPathMapArrayOfValues) AsLimitsByRegionArrayOfElementValues() ([]int64, bool) {
  1127  	res, ok := fpmaov.values.([]int64)
  1128  	return res, ok
  1129  }