-
Notifications
You must be signed in to change notification settings - Fork 0
/
irgen.go
43 lines (36 loc) · 951 Bytes
/
irgen.go
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
package irgen
import (
"encoding/json"
"os"
"github.com/hsfzxjy/dgo/dgo-gen/internal/config"
"github.com/hsfzxjy/dgo/dgo-gen/internal/exception"
"github.com/hsfzxjy/dgo/dgo-gen/internal/exported"
"github.com/hsfzxjy/dgo/dgo-gen/internal/uri"
)
type Payload struct {
Config *config.ConfigStruct
Definitions map[uri.Uri]*exported.Type
}
type Generator struct {
payload Payload
}
func (d *Generator) AddType(etype *exported.Type) {
if d.payload.Definitions == nil {
d.payload.Definitions = make(map[uri.Uri]*exported.Type)
}
uri := etype.Uri()
d.payload.Definitions[uri] = etype
}
func (d *Generator) Save() {
d.payload.Config = &config.Struct
var err error
MarshaledPayload, err = json.MarshalIndent(d.payload, "", " ")
exception.Die(err)
if config.Opts.IrFile != "" {
file, err := os.Create(config.Opts.IrFile)
exception.Die(err)
defer file.Close()
file.Write(MarshaledPayload)
}
}
var MarshaledPayload []byte