go-hep.org/x/hep@v0.38.1/brio/cmd/brio-gen/testdata/briotest_brio.go (about)

     1  // Code generated by brio-gen; DO NOT EDIT.
     2  
     3  package briotest
     4  
     5  import (
     6  	"encoding/binary"
     7  	"math"
     8  )
     9  
    10  // MarshalBinary implements encoding.BinaryMarshaler
    11  func (o *Hist) MarshalBinary() (data []byte, err error) {
    12  	var buf [8]byte
    13  	binary.LittleEndian.PutUint64(buf[:8], uint64(len(o.Name)))
    14  	data = append(data, buf[:8]...)
    15  	data = append(data, []byte(o.Name)...)
    16  	binary.LittleEndian.PutUint64(buf[:8], math.Float64bits(o.Data.X))
    17  	data = append(data, buf[:8]...)
    18  	binary.LittleEndian.PutUint64(buf[:8], uint64(o.i))
    19  	data = append(data, buf[:8]...)
    20  	binary.LittleEndian.PutUint64(buf[:8], uint64(o.u))
    21  	data = append(data, buf[:8]...)
    22  	data = append(data, byte(o.i8))
    23  	binary.LittleEndian.PutUint16(buf[:2], uint16(o.i16))
    24  	data = append(data, buf[:2]...)
    25  	binary.LittleEndian.PutUint32(buf[:4], uint32(o.i32))
    26  	data = append(data, buf[:4]...)
    27  	binary.LittleEndian.PutUint64(buf[:8], uint64(o.i64))
    28  	data = append(data, buf[:8]...)
    29  	data = append(data, byte(o.u8))
    30  	binary.LittleEndian.PutUint16(buf[:2], uint16(o.u16))
    31  	data = append(data, buf[:2]...)
    32  	binary.LittleEndian.PutUint32(buf[:4], uint32(o.u32))
    33  	data = append(data, buf[:4]...)
    34  	binary.LittleEndian.PutUint64(buf[:8], uint64(o.u64))
    35  	data = append(data, buf[:8]...)
    36  	binary.LittleEndian.PutUint32(buf[:4], math.Float32bits(o.f32))
    37  	data = append(data, buf[:4]...)
    38  	binary.LittleEndian.PutUint64(buf[:8], math.Float64bits(o.f64))
    39  	data = append(data, buf[:8]...)
    40  	binary.LittleEndian.PutUint64(buf[:4], math.Float32bits(real(o.c64)))
    41  	data = append(data, buf[:4]...)
    42  	binary.LittleEndian.PutUint64(buf[:4], math.Float32bits(imag(o.c64)))
    43  	data = append(data, buf[:4]...)
    44  	binary.LittleEndian.PutUint64(buf[:8], math.Float64bits(real(o.c128)))
    45  	data = append(data, buf[:8]...)
    46  	binary.LittleEndian.PutUint64(buf[:8], math.Float64bits(imag(o.c128)))
    47  	data = append(data, buf[:8]...)
    48  	switch o.b {
    49  	case false:
    50  		data = append(data, uint8(0))
    51  	default:
    52  		data = append(data, uint8(1))
    53  	}
    54  	for i := range o.arrI8 {
    55  		o := &o.arrI8[i]
    56  		data = append(data, byte(o))
    57  	}
    58  	binary.LittleEndian.PutUint64(buf[:8], uint64(len(o.sliF64)))
    59  	data = append(data, buf[:8]...)
    60  	for i := range o.sliF64 {
    61  		o := &o.sliF64[i]
    62  		binary.LittleEndian.PutUint64(buf[:8], math.Float64bits(o))
    63  		data = append(data, buf[:8]...)
    64  	}
    65  	binary.LittleEndian.PutUint64(buf[:8], uint64(len(o.bins)))
    66  	data = append(data, buf[:8]...)
    67  	for i := range o.bins {
    68  		o := &o.bins[i]
    69  		{
    70  			sub, err := o.MarshalBinary()
    71  			if err != nil {
    72  				return nil, err
    73  			}
    74  			binary.LittleEndian.PutUint64(buf[:8], uint64(len(sub)))
    75  			data = append(data, buf[:8]...)
    76  			data = append(data, sub...)
    77  		}
    78  	}
    79  	binary.LittleEndian.PutUint64(buf[:8], uint64(len(o.sliPs)))
    80  	data = append(data, buf[:8]...)
    81  	for i := range o.sliPs {
    82  		o := o.sliPs[i]
    83  		{
    84  			v := *o
    85  			{
    86  				sub, err := v.MarshalBinary()
    87  				if err != nil {
    88  					return nil, err
    89  				}
    90  				binary.LittleEndian.PutUint64(buf[:8], uint64(len(sub)))
    91  				data = append(data, buf[:8]...)
    92  				data = append(data, sub...)
    93  			}
    94  		}
    95  	}
    96  	{
    97  		v := *o.ptr
    98  		binary.LittleEndian.PutUint64(buf[:8], math.Float64bits(v))
    99  		data = append(data, buf[:8]...)
   100  	}
   101  	data = append(data, byte(o.myu8))
   102  	binary.LittleEndian.PutUint16(buf[:2], uint16(o.myu16))
   103  	data = append(data, buf[:2]...)
   104  	return data, err
   105  }
   106  
   107  // UnmarshalBinary implements encoding.BinaryUnmarshaler
   108  func (o *Hist) UnmarshalBinary(data []byte) (err error) {
   109  	{
   110  		n := int(binary.LittleEndian.Uint64(data[:8]))
   111  		data = data[8:]
   112  		o.Name = string(data[:n])
   113  		data = data[n:]
   114  	}
   115  	o.Data.X = float64(math.Float64frombits(binary.LittleEndian.Uint64(data[:8])))
   116  	data = data[8:]
   117  	o.i = int(binary.LittleEndian.Uint64(data[:8]))
   118  	data = data[8:]
   119  	o.u = uint(binary.LittleEndian.Uint64(data[:8]))
   120  	data = data[8:]
   121  	o.i8 = int8(data[0])
   122  	data = data[1:]
   123  	o.i16 = int16(binary.LittleEndian.Uint16(data[:2]))
   124  	data = data[2:]
   125  	o.i32 = int32(binary.LittleEndian.Uint32(data[:4]))
   126  	data = data[4:]
   127  	o.i64 = int64(binary.LittleEndian.Uint64(data[:8]))
   128  	data = data[8:]
   129  	o.u8 = uint8(data[0])
   130  	data = data[1:]
   131  	o.u16 = uint16(binary.LittleEndian.Uint16(data[:2]))
   132  	data = data[2:]
   133  	o.u32 = uint32(binary.LittleEndian.Uint32(data[:4]))
   134  	data = data[4:]
   135  	o.u64 = uint64(binary.LittleEndian.Uint64(data[:8]))
   136  	data = data[8:]
   137  	o.f32 = float32(math.Float32frombits(binary.LittleEndian.Uint32(data[:4])))
   138  	data = data[4:]
   139  	o.f64 = float64(math.Float64frombits(binary.LittleEndian.Uint64(data[:8])))
   140  	data = data[8:]
   141  	o.c64 = complex64(complex(math.Float32frombits(binary.LittleEndian.Uint32(data[:4])), math.Float32frombits(binary.LittleEndian.Uint32(data[4:8]))))
   142  	data = data[8:]
   143  	o.c128 = complex128(complex(math.Float64frombits(binary.LittleEndian.Uint64(data[:8])), math.Float64frombits(binary.LittleEndian.Uint64(data[8:16]))))
   144  	data = data[16:]
   145  	switch data[i] {
   146  	case 0:
   147  		o.b = false
   148  	default:
   149  		o.b = true
   150  	}
   151  	data = data[1:]
   152  	for i := range o.arrI8 {
   153  		o.arrI8[i] = int8(data[0])
   154  		data = data[1:]
   155  	}
   156  	{
   157  		n := int(binary.LittleEndian.Uint64(data[:8]))
   158  		o.sliF64 = make([]float64, n)
   159  		data = data[8:]
   160  		for i := range o.sliF64 {
   161  			o.sliF64[i] = float64(math.Float64frombits(binary.LittleEndian.Uint64(data[:8])))
   162  			data = data[8:]
   163  		}
   164  	}
   165  	{
   166  		n := int(binary.LittleEndian.Uint64(data[:8]))
   167  		o.bins = make([]Bin, n)
   168  		data = data[8:]
   169  		for i := range o.bins {
   170  			oi := &o.bins[i]
   171  			{
   172  				n := int(binary.LittleEndian.Uint64(data[:8]))
   173  				data = data[8:]
   174  				err = oi.UnmarshalBinary(data[:n])
   175  				if err != nil {
   176  					return err
   177  				}
   178  				data = data[n:]
   179  			}
   180  		}
   181  	}
   182  	{
   183  		n := int(binary.LittleEndian.Uint64(data[:8]))
   184  		o.sliPs = make([]*Bin, n)
   185  		data = data[8:]
   186  		for i := range o.sliPs {
   187  			var oi Bin
   188  			{
   189  				var v Bin
   190  				{
   191  					n := int(binary.LittleEndian.Uint64(data[:8]))
   192  					data = data[8:]
   193  					err = v.UnmarshalBinary(data[:n])
   194  					if err != nil {
   195  						return err
   196  					}
   197  					data = data[n:]
   198  				}
   199  				oi = &v
   200  
   201  			}
   202  			o.sliPs[i] = oi
   203  		}
   204  	}
   205  	{
   206  		var v float64
   207  		v = float64(math.Float64frombits(binary.LittleEndian.Uint64(data[:8])))
   208  		data = data[8:]
   209  		o.ptr = &v
   210  
   211  	}
   212  	o.myu8 = U8(data[0])
   213  	data = data[1:]
   214  	o.myu16 = U16(binary.LittleEndian.Uint16(data[:2]))
   215  	data = data[2:]
   216  	_ = data
   217  	return err
   218  }
   219  
   220  // MarshalBinary implements encoding.BinaryMarshaler
   221  func (o *Bin) MarshalBinary() (data []byte, err error) {
   222  	var buf [8]byte
   223  	binary.LittleEndian.PutUint64(buf[:8], math.Float64bits(o.x))
   224  	data = append(data, buf[:8]...)
   225  	binary.LittleEndian.PutUint64(buf[:8], math.Float64bits(o.y))
   226  	data = append(data, buf[:8]...)
   227  	return data, err
   228  }
   229  
   230  // UnmarshalBinary implements encoding.BinaryUnmarshaler
   231  func (o *Bin) UnmarshalBinary(data []byte) (err error) {
   232  	o.x = float64(math.Float64frombits(binary.LittleEndian.Uint64(data[:8])))
   233  	data = data[8:]
   234  	o.y = float64(math.Float64frombits(binary.LittleEndian.Uint64(data[:8])))
   235  	data = data[8:]
   236  	_ = data
   237  	return err
   238  }