File: README.md

package info (click to toggle)
golang-github-ugorji-go-codec 1.2.8-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, experimental, forky, sid, trixie
  • size: 2,532 kB
  • sloc: sh: 462; python: 100; makefile: 4
file content (56 lines) | stat: -rw-r--r-- 2,030 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# codecgen tool

Generate is given a list of *.go files to parse, and an output file (fout),
codecgen will create an output file __file.go__ which
contains `codec.Selfer` implementations for the named types found
in the files parsed.

Using codecgen is very straightforward.

**Download and install the tool**

`go get -u github.com/ugorji/go/codec/codecgen`

**Run the tool on your files**

The command line format is:

`codecgen [options] (-o outfile) (infile ...)`

```sh
% codecgen -?
Usage of codecgen:
  -c="github.com/ugorji/go/codec": codec path
  -o="": out file
  -d="": random identifier for use in generated code (help reduce changes when files are regenerated)
  -nx=false: do not support extensions (use when you know no extensions are used)
  -r=".*": regex for type name to match
  -nr="": regex for type name to exclude
  -rt="": tags for go run
  -st="codec,json": struct tag keys to introspect
  -t="": build tag to put in file
  -u=false: Use unsafe, e.g. to avoid unnecessary allocation on []byte->string
  -x=false: keep temp file

% codecgen -o values_codecgen.go values.go values2.go moretypedefs.go
```

**Limitations**

codecgen caveats:

- Canonical option.  
  If Canonical=true, codecgen'ed code will delegate encoding maps to reflection-based code.  
  This is due to the runtime work needed to marshal a map in canonical mode.
- CheckCircularRef option.  
  When encoding a struct, a circular reference can lead to a stack overflow.  
  If CheckCircularRef=true, codecgen'ed code will delegate encoding structs to reflection-based code.
- MissingFielder implementation.  
  If a type implements MissingFielder, a Selfer is not generated (with a warning message).
  Statically reproducing the runtime work needed to extract the missing fields and marshal them along with the struct fields,
  while handling the Canonical=true special case, was onerous to implement.

**More Information**

Please see the [blog article](http://ugorji.net/blog/go-codecgen)
for more information on how to use the tool.