gen_structlog.go 2.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
// Code generated by github.com/fjl/gencodec. DO NOT EDIT.

package vm

import (
	"encoding/json"
	"math/big"

	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/common/hexutil"
	"github.com/ethereum/go-ethereum/common/math"
)

14 15
var _ = (*structLogMarshaling)(nil)

16 17
func (s StructLog) MarshalJSON() ([]byte, error) {
	type StructLog struct {
18 19 20 21 22 23 24 25 26 27 28 29
		Pc          uint64                      `json:"pc"`
		Op          OpCode                      `json:"op"`
		Gas         math.HexOrDecimal64         `json:"gas"`
		GasCost     math.HexOrDecimal64         `json:"gasCost"`
		Memory      hexutil.Bytes               `json:"memory"`
		MemorySize  int                         `json:"memSize"`
		Stack       []*math.HexOrDecimal256     `json:"stack"`
		Storage     map[common.Hash]common.Hash `json:"-"`
		Depth       int                         `json:"depth"`
		Err         error                       `json:"-"`
		OpName      string                      `json:"opName"`
		ErrorString string                      `json:"error"`
30 31 32 33 34 35 36
	}
	var enc StructLog
	enc.Pc = s.Pc
	enc.Op = s.Op
	enc.Gas = math.HexOrDecimal64(s.Gas)
	enc.GasCost = math.HexOrDecimal64(s.GasCost)
	enc.Memory = s.Memory
37
	enc.MemorySize = s.MemorySize
38 39 40 41 42 43 44 45 46 47
	if s.Stack != nil {
		enc.Stack = make([]*math.HexOrDecimal256, len(s.Stack))
		for k, v := range s.Stack {
			enc.Stack[k] = (*math.HexOrDecimal256)(v)
		}
	}
	enc.Storage = s.Storage
	enc.Depth = s.Depth
	enc.Err = s.Err
	enc.OpName = s.OpName()
48
	enc.ErrorString = s.ErrorString()
49 50 51 52 53
	return json.Marshal(&enc)
}

func (s *StructLog) UnmarshalJSON(input []byte) error {
	type StructLog struct {
54 55 56 57
		Pc         *uint64                     `json:"pc"`
		Op         *OpCode                     `json:"op"`
		Gas        *math.HexOrDecimal64        `json:"gas"`
		GasCost    *math.HexOrDecimal64        `json:"gasCost"`
58
		Memory     *hexutil.Bytes              `json:"memory"`
59 60 61 62
		MemorySize *int                        `json:"memSize"`
		Stack      []*math.HexOrDecimal256     `json:"stack"`
		Storage    map[common.Hash]common.Hash `json:"-"`
		Depth      *int                        `json:"depth"`
63
		Err        error                       `json:"-"`
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
	}
	var dec StructLog
	if err := json.Unmarshal(input, &dec); err != nil {
		return err
	}
	if dec.Pc != nil {
		s.Pc = *dec.Pc
	}
	if dec.Op != nil {
		s.Op = *dec.Op
	}
	if dec.Gas != nil {
		s.Gas = uint64(*dec.Gas)
	}
	if dec.GasCost != nil {
		s.GasCost = uint64(*dec.GasCost)
	}
	if dec.Memory != nil {
82
		s.Memory = *dec.Memory
83
	}
84 85 86
	if dec.MemorySize != nil {
		s.MemorySize = *dec.MemorySize
	}
87 88 89 90 91 92 93 94 95 96 97 98 99
	if dec.Stack != nil {
		s.Stack = make([]*big.Int, len(dec.Stack))
		for k, v := range dec.Stack {
			s.Stack[k] = (*big.Int)(v)
		}
	}
	if dec.Storage != nil {
		s.Storage = dec.Storage
	}
	if dec.Depth != nil {
		s.Depth = *dec.Depth
	}
	if dec.Err != nil {
100
		s.Err = dec.Err
101 102 103
	}
	return nil
}