github.com/lino-network/lino@v0.6.11/x/reputation/repv2/encodergen/encodergen.py (about)

     1  #!/usr/bin/env python
     2  
     3  import sys
     4  
     5  # This file was called GobCodeGen, but we found some un-deterministic spots in
     6  # gob, so we abandon it. As you can see, now it's a amigo(cdc)
     7  # marshal/unmarshal warpper.
     8  
     9  template = """
    10  func decode$TYPE(data []byte) *TYPE {
    11  	if data == nil {
    12  		return nil
    13  	}
    14  	rst := &TYPE{}
    15  	cdc.MustUnmarshalBinaryBare(data, rst)
    16  	return rst
    17  }
    18  
    19  func encode$TYPE(dt *TYPE) []byte {
    20  	if dt == nil {
    21  		return nil
    22  	}
    23  	rst := cdc.MustMarshalBinaryBare(dt)
    24  	return []byte(rst)
    25  }
    26  """
    27  
    28  structs = ['userMeta', 'roundMeta', 'roundPostMeta', 'gameMeta']
    29  
    30  
    31  def cap(word):
    32      return word[0].upper() + word[1:]
    33  
    34  
    35  def main():
    36      if len(sys.argv) < 2:
    37          for type_name in structs:
    38              tmp = template.replace("$TYPE", cap(type_name))
    39              print tmp.replace("TYPE", type_name)
    40      else:
    41          type_name = sys.argv[1]
    42          tmp = template.replace("$TYPE", cap(type_name))
    43          print tmp.replace("TYPE", type_name)
    44  
    45  
    46  if __name__ == '__main__':
    47      main()