...

Source file src/github.com/gogo/protobuf/test/combos/both/t.go

Documentation: github.com/gogo/protobuf/test/combos/both

     1  package test
     2  
     3  import (
     4  	"encoding/json"
     5  	"strings"
     6  
     7  	"github.com/gogo/protobuf/proto"
     8  )
     9  
    10  type T struct {
    11  	Data string
    12  }
    13  
    14  func (gt *T) protoType() *ProtoType {
    15  	return &ProtoType{
    16  		Field2: &gt.Data,
    17  	}
    18  }
    19  
    20  func (gt T) Equal(other T) bool {
    21  	return gt.protoType().Equal(other.protoType())
    22  }
    23  
    24  func (gt *T) Size() int {
    25  	proto := &ProtoType{
    26  		Field2: &gt.Data,
    27  	}
    28  	return proto.Size()
    29  }
    30  
    31  func NewPopulatedT(r randyThetest) *T {
    32  	data := NewPopulatedProtoType(r, false).Field2
    33  	gt := &T{}
    34  	if data != nil {
    35  		gt.Data = *data
    36  	}
    37  	return gt
    38  }
    39  
    40  func (r T) Marshal() ([]byte, error) {
    41  	return proto.Marshal(r.protoType())
    42  }
    43  
    44  func (r *T) MarshalTo(data []byte) (n int, err error) {
    45  	return r.protoType().MarshalTo(data)
    46  }
    47  
    48  func (r *T) Unmarshal(data []byte) error {
    49  	pr := &ProtoType{}
    50  	err := proto.Unmarshal(data, pr)
    51  	if err != nil {
    52  		return err
    53  	}
    54  
    55  	if pr.Field2 != nil {
    56  		r.Data = *pr.Field2
    57  	}
    58  	return nil
    59  }
    60  
    61  func (gt T) MarshalJSON() ([]byte, error) {
    62  	return json.Marshal(gt.Data)
    63  }
    64  
    65  func (gt *T) UnmarshalJSON(data []byte) error {
    66  	var s string
    67  	err := json.Unmarshal(data, &s)
    68  	if err != nil {
    69  		return err
    70  	}
    71  	*gt = T{Data: s}
    72  	return nil
    73  }
    74  
    75  func (gt T) Compare(other T) int {
    76  	return strings.Compare(gt.Data, other.Data)
    77  }
    78  

View as plain text