mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-31 03:18:43 -06:00
Codegen: Add support for noms types
This makes it possible to do a List of Bool or Map of Int32 etc
This commit is contained in:
@@ -34,34 +34,39 @@ func (s User) Equals(p User) bool {
|
||||
func (s User) Ref() ref.Ref {
|
||||
return s.m.Ref()
|
||||
}
|
||||
|
||||
func (s User) OAuthToken() types.String {
|
||||
return s.m.Get(types.NewString("oAuthToken")).(types.String)
|
||||
return types.StringFromVal(s.m.Get(types.NewString("oAuthToken")))
|
||||
}
|
||||
|
||||
func (s User) SetOAuthToken(p types.String) User {
|
||||
return UserFromVal(s.m.Set(types.NewString("oAuthToken"), p))
|
||||
}
|
||||
|
||||
func (s User) Name() types.String {
|
||||
return s.m.Get(types.NewString("name")).(types.String)
|
||||
return types.StringFromVal(s.m.Get(types.NewString("name")))
|
||||
}
|
||||
|
||||
func (s User) SetName(p types.String) User {
|
||||
return UserFromVal(s.m.Set(types.NewString("name"), p))
|
||||
}
|
||||
|
||||
func (s User) Id() types.String {
|
||||
return s.m.Get(types.NewString("id")).(types.String)
|
||||
return types.StringFromVal(s.m.Get(types.NewString("id")))
|
||||
}
|
||||
|
||||
func (s User) SetId(p types.String) User {
|
||||
return UserFromVal(s.m.Set(types.NewString("id"), p))
|
||||
}
|
||||
|
||||
func (s User) OAuthSecret() types.String {
|
||||
return s.m.Get(types.NewString("oAuthSecret")).(types.String)
|
||||
return types.StringFromVal(s.m.Get(types.NewString("oAuthSecret")))
|
||||
}
|
||||
|
||||
func (s User) SetOAuthSecret(p types.String) User {
|
||||
return UserFromVal(s.m.Set(types.NewString("oAuthSecret"), p))
|
||||
}
|
||||
|
||||
func (s User) Photosets() PhotosetSet {
|
||||
return PhotosetSetFromVal(s.m.Get(types.NewString("photosets")))
|
||||
}
|
||||
@@ -69,6 +74,7 @@ func (s User) Photosets() PhotosetSet {
|
||||
func (s User) SetPhotosets(p PhotosetSet) User {
|
||||
return UserFromVal(s.m.Set(types.NewString("photosets"), p.NomsValue()))
|
||||
}
|
||||
|
||||
// PhotosetSet
|
||||
|
||||
type PhotosetSet struct {
|
||||
@@ -177,20 +183,23 @@ func (s Photoset) Equals(p Photoset) bool {
|
||||
func (s Photoset) Ref() ref.Ref {
|
||||
return s.m.Ref()
|
||||
}
|
||||
|
||||
func (s Photoset) Title() types.String {
|
||||
return s.m.Get(types.NewString("title")).(types.String)
|
||||
return types.StringFromVal(s.m.Get(types.NewString("title")))
|
||||
}
|
||||
|
||||
func (s Photoset) SetTitle(p types.String) Photoset {
|
||||
return PhotosetFromVal(s.m.Set(types.NewString("title"), p))
|
||||
}
|
||||
|
||||
func (s Photoset) Id() types.String {
|
||||
return s.m.Get(types.NewString("id")).(types.String)
|
||||
return types.StringFromVal(s.m.Get(types.NewString("id")))
|
||||
}
|
||||
|
||||
func (s Photoset) SetId(p types.String) Photoset {
|
||||
return PhotosetFromVal(s.m.Set(types.NewString("id"), p))
|
||||
}
|
||||
|
||||
func (s Photoset) Photos() PhotoSet {
|
||||
return PhotoSetFromVal(s.m.Get(types.NewString("photos")))
|
||||
}
|
||||
@@ -198,6 +207,7 @@ func (s Photoset) Photos() PhotoSet {
|
||||
func (s Photoset) SetPhotos(p PhotoSet) Photoset {
|
||||
return PhotosetFromVal(s.m.Set(types.NewString("photos"), p.NomsValue()))
|
||||
}
|
||||
|
||||
// PhotoSet
|
||||
|
||||
type PhotoSet struct {
|
||||
@@ -306,31 +316,36 @@ func (s Photo) Equals(p Photo) bool {
|
||||
func (s Photo) Ref() ref.Ref {
|
||||
return s.m.Ref()
|
||||
}
|
||||
|
||||
func (s Photo) Title() types.String {
|
||||
return s.m.Get(types.NewString("title")).(types.String)
|
||||
return types.StringFromVal(s.m.Get(types.NewString("title")))
|
||||
}
|
||||
|
||||
func (s Photo) SetTitle(p types.String) Photo {
|
||||
return PhotoFromVal(s.m.Set(types.NewString("title"), p))
|
||||
}
|
||||
|
||||
func (s Photo) Id() types.String {
|
||||
return s.m.Get(types.NewString("id")).(types.String)
|
||||
return types.StringFromVal(s.m.Get(types.NewString("id")))
|
||||
}
|
||||
|
||||
func (s Photo) SetId(p types.String) Photo {
|
||||
return PhotoFromVal(s.m.Set(types.NewString("id"), p))
|
||||
}
|
||||
|
||||
func (s Photo) Image() types.Blob {
|
||||
return s.m.Get(types.NewString("image")).(types.Blob)
|
||||
return types.BlobFromVal(s.m.Get(types.NewString("image")))
|
||||
}
|
||||
|
||||
func (s Photo) SetImage(p types.Blob) Photo {
|
||||
return PhotoFromVal(s.m.Set(types.NewString("image"), p))
|
||||
}
|
||||
|
||||
func (s Photo) Url() types.String {
|
||||
return s.m.Get(types.NewString("url")).(types.String)
|
||||
return types.StringFromVal(s.m.Get(types.NewString("url")))
|
||||
}
|
||||
|
||||
func (s Photo) SetUrl(p types.String) Photo {
|
||||
return PhotoFromVal(s.m.Set(types.NewString("url"), p))
|
||||
}
|
||||
|
||||
|
||||
@@ -102,17 +102,20 @@ func (s Pitch) Equals(p Pitch) bool {
|
||||
func (s Pitch) Ref() ref.Ref {
|
||||
return s.m.Ref()
|
||||
}
|
||||
|
||||
func (s Pitch) Z() types.Float64 {
|
||||
return s.m.Get(types.NewString("Z")).(types.Float64)
|
||||
return types.Float64FromVal(s.m.Get(types.NewString("Z")))
|
||||
}
|
||||
|
||||
func (s Pitch) SetZ(p types.Float64) Pitch {
|
||||
return PitchFromVal(s.m.Set(types.NewString("Z"), p))
|
||||
}
|
||||
|
||||
func (s Pitch) X() types.Float64 {
|
||||
return s.m.Get(types.NewString("X")).(types.Float64)
|
||||
return types.Float64FromVal(s.m.Get(types.NewString("X")))
|
||||
}
|
||||
|
||||
func (s Pitch) SetX(p types.Float64) Pitch {
|
||||
return PitchFromVal(s.m.Set(types.NewString("X"), p))
|
||||
}
|
||||
|
||||
|
||||
@@ -116,17 +116,20 @@ func (s Root) Equals(p Root) bool {
|
||||
func (s Root) Ref() ref.Ref {
|
||||
return s.m.Ref()
|
||||
}
|
||||
|
||||
func (s Root) Parents() types.Set {
|
||||
return s.m.Get(types.NewString("parents")).(types.Set)
|
||||
return types.SetFromVal(s.m.Get(types.NewString("parents")))
|
||||
}
|
||||
|
||||
func (s Root) SetParents(p types.Set) Root {
|
||||
return RootFromVal(s.m.Set(types.NewString("parents"), p))
|
||||
}
|
||||
|
||||
func (s Root) Value() types.Value {
|
||||
return s.m.Get(types.NewString("value")).(types.Value)
|
||||
return (s.m.Get(types.NewString("value")))
|
||||
}
|
||||
|
||||
func (s Root) SetValue(p types.Value) Root {
|
||||
return RootFromVal(s.m.Set(types.NewString("value"), p))
|
||||
}
|
||||
|
||||
|
||||
@@ -116,17 +116,20 @@ func (s Dataset) Equals(p Dataset) bool {
|
||||
func (s Dataset) Ref() ref.Ref {
|
||||
return s.m.Ref()
|
||||
}
|
||||
|
||||
func (s Dataset) Id() types.String {
|
||||
return s.m.Get(types.NewString("id")).(types.String)
|
||||
return types.StringFromVal(s.m.Get(types.NewString("id")))
|
||||
}
|
||||
|
||||
func (s Dataset) SetId(p types.String) Dataset {
|
||||
return DatasetFromVal(s.m.Set(types.NewString("id"), p))
|
||||
}
|
||||
|
||||
func (s Dataset) Root() types.Value {
|
||||
return s.m.Get(types.NewString("root")).(types.Value)
|
||||
return (s.m.Get(types.NewString("root")))
|
||||
}
|
||||
|
||||
func (s Dataset) SetRoot(p types.Value) Dataset {
|
||||
return DatasetFromVal(s.m.Set(types.NewString("root"), p))
|
||||
}
|
||||
|
||||
|
||||
8
nomgen/field.tmpl
Normal file
8
nomgen/field.tmpl
Normal file
@@ -0,0 +1,8 @@
|
||||
func (s {{.StructName}}) {{.GoFieldName}}() {{.FieldType}} {
|
||||
return {{fromVal .FieldType}}(s.m.Get(types.NewString("{{.FieldName}}")))
|
||||
}
|
||||
|
||||
func (s {{.StructName}}) Set{{.GoFieldName}}(p {{.FieldType}}) {{.StructName}} {
|
||||
return {{fromVal .StructName}}(s.m.Set(types.NewString("{{.FieldName}}"), p{{toVal .FieldType}}))
|
||||
}
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
func (s {{.StructName}}) {{.GoFieldName}}() {{.FieldType}} {
|
||||
return {{.FieldType}}FromVal(s.m.Get(types.NewString("{{.FieldName}}")))
|
||||
}
|
||||
|
||||
func (s {{.StructName}}) Set{{.GoFieldName}}(p {{.FieldType}}) {{.StructName}} {
|
||||
return {{.StructName}}FromVal(s.m.Set(types.NewString("{{.FieldName}}"), p.NomsValue()))
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
func (s {{.StructName}}) {{.GoFieldName}}() {{.FieldType}} {
|
||||
return s.m.Get(types.NewString("{{.FieldName}}")).({{.FieldType}})
|
||||
}
|
||||
|
||||
func (s {{.StructName}}) Set{{.GoFieldName}}(p {{.FieldType}}) {{.StructName}} {
|
||||
return {{.StructName}}FromVal(s.m.Set(types.NewString("{{.FieldName}}"), p))
|
||||
}
|
||||
@@ -31,7 +31,7 @@ func (l {{.StructName}}) Len() uint64 {
|
||||
}
|
||||
|
||||
func (l {{.StructName}}) Get(idx uint64) {{.ElemName}} {
|
||||
return {{.ElemName}}FromVal(l.l.Get(idx))
|
||||
return {{fromVal .ElemName}}(l.l.Get(idx))
|
||||
}
|
||||
|
||||
func (l {{.StructName}}) Slice(idx uint64, end uint64) {{.StructName}} {
|
||||
@@ -39,7 +39,7 @@ func (l {{.StructName}}) Slice(idx uint64, end uint64) {{.StructName}} {
|
||||
}
|
||||
|
||||
func (l {{.StructName}}) Set(idx uint64, v {{.ElemName}}) {{.StructName}} {
|
||||
return {{.StructName}}{l.l.Set(idx, v.NomsValue())}
|
||||
return {{.StructName}}{l.l.Set(idx, v{{toVal .ElemName}})}
|
||||
}
|
||||
|
||||
func (l {{.StructName}}) Append(v ...{{.ElemName}}) {{.StructName}} {
|
||||
@@ -61,7 +61,7 @@ func (l {{.StructName}}) RemoveAt(idx uint64) {{.StructName}} {
|
||||
func (l {{.StructName}}) fromElemSlice(p []{{.ElemName}}) []types.Value {
|
||||
r := make([]types.Value, len(p))
|
||||
for i, v := range p {
|
||||
r[i] = v.NomsValue()
|
||||
r[i] = v{{toVal .ElemName}}
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
@@ -15,12 +15,11 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
fieldCompositeTempl = readTemplate("field_composite.tmpl")
|
||||
fieldPrimitiveTempl = readTemplate("field_primitive.tmpl")
|
||||
headerTmpl = readTemplate("header.tmpl")
|
||||
listTempl = readTemplate("list.tmpl")
|
||||
setTempl = readTemplate("set.tmpl")
|
||||
structTempl = readTemplate("struct.tmpl")
|
||||
fieldTempl = readTemplate("field.tmpl")
|
||||
headerTmpl = readTemplate("header.tmpl")
|
||||
listTempl = readTemplate("list.tmpl")
|
||||
setTempl = readTemplate("set.tmpl")
|
||||
structTempl = readTemplate("struct.tmpl")
|
||||
)
|
||||
|
||||
type NG struct {
|
||||
@@ -61,6 +60,20 @@ func (ng *NG) addType(val types.Value) {
|
||||
}
|
||||
}
|
||||
|
||||
func fromNomsValue(name string) string {
|
||||
if name == "types.Value" {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("%sFromVal", name)
|
||||
}
|
||||
|
||||
func toNomsValue(name string) string {
|
||||
if strings.HasPrefix(name, "types.") {
|
||||
return ""
|
||||
}
|
||||
return ".NomsValue()"
|
||||
}
|
||||
|
||||
func readTemplate(name string) *template.Template {
|
||||
_, thisfile, _, _ := runtime.Caller(1)
|
||||
f, err := os.Open(path.Join(path.Dir(thisfile), name))
|
||||
@@ -68,7 +81,10 @@ func readTemplate(name string) *template.Template {
|
||||
defer f.Close()
|
||||
b, err := ioutil.ReadAll(f)
|
||||
Chk.NoError(err)
|
||||
t, err := template.New(name).Parse(string(b))
|
||||
t, err := template.New(name).Funcs(template.FuncMap{
|
||||
"fromVal": fromNomsValue,
|
||||
"toVal": toNomsValue,
|
||||
}).Parse(string(b))
|
||||
Chk.NoError(err)
|
||||
return t
|
||||
}
|
||||
@@ -151,11 +167,7 @@ func (ng *NG) writeField(structName, fieldName string, typeDef types.Value) {
|
||||
fieldName,
|
||||
}
|
||||
|
||||
if _, ok := typeDef.(types.String); ok {
|
||||
fieldPrimitiveTempl.Execute(ng.w, data)
|
||||
} else {
|
||||
fieldCompositeTempl.Execute(ng.w, data)
|
||||
}
|
||||
fieldTempl.Execute(ng.w, data)
|
||||
}
|
||||
|
||||
func getGoTypeName(typeDef types.Value) string {
|
||||
|
||||
@@ -35,12 +35,12 @@ func (s {{.StructName}}) Len() uint64 {
|
||||
}
|
||||
|
||||
func (s {{.StructName}}) Has(p {{.ElemName}}) bool {
|
||||
return s.s.Has(p.NomsValue())
|
||||
return s.s.Has(p{{toVal .ElemName}})
|
||||
}
|
||||
|
||||
func (s {{.StructName}}) Iter(cb {{.StructName}}IterCallback) {
|
||||
s.s.Iter(func(v types.Value) bool {
|
||||
return cb({{.ElemName}}FromVal(v))
|
||||
return cb({{fromVal .ElemName}}(v))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ func (s {{.StructName}}) Subtract(others ...{{.StructName}}) {{.StructName}} {
|
||||
}
|
||||
|
||||
func (s {{.StructName}}) Any() {{.ElemName}} {
|
||||
return {{.ElemName}}FromVal(s.s.Any())
|
||||
return {{fromVal .ElemName}}(s.s.Any())
|
||||
}
|
||||
|
||||
func (s {{.StructName}}) fromStructSlice(p []{{.StructName}}) []types.Set {
|
||||
@@ -75,7 +75,7 @@ func (s {{.StructName}}) fromStructSlice(p []{{.StructName}}) []types.Set {
|
||||
func (s {{.StructName}}) fromElemSlice(p []{{.ElemName}}) []types.Value {
|
||||
r := make([]types.Value, len(p))
|
||||
for i, v := range p {
|
||||
r[i] = v.NomsValue()
|
||||
r[i] = v{{toVal .ElemName}}
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
@@ -24,3 +24,4 @@ func (s {{.StructName}}) Equals(p {{.StructName}}) bool {
|
||||
func (s {{.StructName}}) Ref() ref.Ref {
|
||||
return s.m.Ref()
|
||||
}
|
||||
|
||||
|
||||
@@ -35,3 +35,7 @@ func (fb Blob) Equals(other Value) bool {
|
||||
func NewBlob(data []byte) Blob {
|
||||
return Blob{data, &ref.Ref{}}
|
||||
}
|
||||
|
||||
func BlobFromVal(v Value) Blob {
|
||||
return v.(Blob)
|
||||
}
|
||||
|
||||
@@ -12,3 +12,7 @@ func (v {{.NomsType}}) Ref() ref.Ref {
|
||||
return getRef(v)
|
||||
}
|
||||
|
||||
func {{.NomsType}}FromVal(v Value) {{.NomsType}} {
|
||||
return v.({{.NomsType}})
|
||||
}
|
||||
|
||||
|
||||
@@ -84,3 +84,7 @@ func (l List) Equals(other Value) bool {
|
||||
return l.Ref() == other.Ref()
|
||||
}
|
||||
}
|
||||
|
||||
func ListFromVal(v Value) List {
|
||||
return v.(List)
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ func (fm Map) Remove(k Value) Map {
|
||||
return fm
|
||||
}
|
||||
|
||||
m := make(mapData, len(fm.m) - 1)
|
||||
m := make(mapData, len(fm.m)-1)
|
||||
copy(m, fm.m[:idx])
|
||||
copy(m[idx:], fm.m[idx+1:])
|
||||
return newMapFromData(m, fm.cs)
|
||||
@@ -131,3 +131,7 @@ func indexMapData(m mapData, r ref.Ref) int {
|
||||
return !ref.Less(m[i].key.Ref(), r)
|
||||
})
|
||||
}
|
||||
|
||||
func MapFromVal(v Value) Map {
|
||||
return v.(Map)
|
||||
}
|
||||
|
||||
@@ -21,6 +21,10 @@ func (v Bool) Ref() ref.Ref {
|
||||
return getRef(v)
|
||||
}
|
||||
|
||||
func BoolFromVal(v Value) Bool {
|
||||
return v.(Bool)
|
||||
}
|
||||
|
||||
type Int16 int16
|
||||
|
||||
func (self Int16) Equals(other Value) bool {
|
||||
@@ -35,6 +39,10 @@ func (v Int16) Ref() ref.Ref {
|
||||
return getRef(v)
|
||||
}
|
||||
|
||||
func Int16FromVal(v Value) Int16 {
|
||||
return v.(Int16)
|
||||
}
|
||||
|
||||
type Int32 int32
|
||||
|
||||
func (self Int32) Equals(other Value) bool {
|
||||
@@ -49,6 +57,10 @@ func (v Int32) Ref() ref.Ref {
|
||||
return getRef(v)
|
||||
}
|
||||
|
||||
func Int32FromVal(v Value) Int32 {
|
||||
return v.(Int32)
|
||||
}
|
||||
|
||||
type Int64 int64
|
||||
|
||||
func (self Int64) Equals(other Value) bool {
|
||||
@@ -63,6 +75,10 @@ func (v Int64) Ref() ref.Ref {
|
||||
return getRef(v)
|
||||
}
|
||||
|
||||
func Int64FromVal(v Value) Int64 {
|
||||
return v.(Int64)
|
||||
}
|
||||
|
||||
type UInt16 uint16
|
||||
|
||||
func (self UInt16) Equals(other Value) bool {
|
||||
@@ -77,6 +93,10 @@ func (v UInt16) Ref() ref.Ref {
|
||||
return getRef(v)
|
||||
}
|
||||
|
||||
func UInt16FromVal(v Value) UInt16 {
|
||||
return v.(UInt16)
|
||||
}
|
||||
|
||||
type UInt32 uint32
|
||||
|
||||
func (self UInt32) Equals(other Value) bool {
|
||||
@@ -91,6 +111,10 @@ func (v UInt32) Ref() ref.Ref {
|
||||
return getRef(v)
|
||||
}
|
||||
|
||||
func UInt32FromVal(v Value) UInt32 {
|
||||
return v.(UInt32)
|
||||
}
|
||||
|
||||
type UInt64 uint64
|
||||
|
||||
func (self UInt64) Equals(other Value) bool {
|
||||
@@ -105,6 +129,10 @@ func (v UInt64) Ref() ref.Ref {
|
||||
return getRef(v)
|
||||
}
|
||||
|
||||
func UInt64FromVal(v Value) UInt64 {
|
||||
return v.(UInt64)
|
||||
}
|
||||
|
||||
type Float32 float32
|
||||
|
||||
func (self Float32) Equals(other Value) bool {
|
||||
@@ -119,6 +147,10 @@ func (v Float32) Ref() ref.Ref {
|
||||
return getRef(v)
|
||||
}
|
||||
|
||||
func Float32FromVal(v Value) Float32 {
|
||||
return v.(Float32)
|
||||
}
|
||||
|
||||
type Float64 float64
|
||||
|
||||
func (self Float64) Equals(other Value) bool {
|
||||
@@ -133,3 +165,7 @@ func (v Float64) Ref() ref.Ref {
|
||||
return getRef(v)
|
||||
}
|
||||
|
||||
func Float64FromVal(v Value) Float64 {
|
||||
return v.(Float64)
|
||||
}
|
||||
|
||||
|
||||
@@ -142,3 +142,7 @@ func indexSetData(m setData, r ref.Ref) int {
|
||||
return !ref.Less(m[i].Ref(), r)
|
||||
})
|
||||
}
|
||||
|
||||
func SetFromVal(v Value) Set {
|
||||
return v.(Set)
|
||||
}
|
||||
|
||||
@@ -32,3 +32,7 @@ func (fs String) Equals(other Value) bool {
|
||||
return fs.Ref() == other.Ref()
|
||||
}
|
||||
}
|
||||
|
||||
func StringFromVal(v Value) String {
|
||||
return v.(String)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user