// GoTypeRef returns the Go code that refers to the Go type which matches the given data type // (the part that comes after `var foo`) // required only applies when referring to a user type that is an object defined inline. In this // case the type (Object) does not carry the required field information defined in the parent // (anonymous) attribute. // tabs is used to properly tabulate the object struct fields and only applies to this case. // This function assumes the type is in the same package as the code accessing it. func GoTypeRef(t design.DataType, required []string, tabs int, private bool) string { tname := GoTypeName(t, required, tabs, private) if t.IsObject() { return "*" + tname } return tname }
// GoTypeRef returns the Go code that refers to the Go type which matches the given data type // (the part that comes after `var foo`) // required only applies when referring to a user type that is an object defined inline. In this // case the type (Object) does not carry the required field information defined in the parent // (anonymous) attribute. // tabs is used to properly tabulate the object struct fields and only applies to this case. // This function assumes the type is in the same package as the code accessing it. func GoTypeRef(t design.DataType, required []string, tabs int, private bool) string { tname := GoTypeName(t, required, tabs, private) if mt, ok := t.(*design.MediaTypeDefinition); ok { if mt.IsError() { return "error" } } if t.IsObject() { return "*" + tname } return tname }
// GoPackageTypeRef returns the Go code that refers to the Go type which matches the given data type. // versioned indicates whether the type is being referenced from a version package (true) or the // default package defPkg (false). // required only applies when referring to a user type that is an object defined inline. In this // case the type (Object) does not carry the required field information defined in the parent // (anonymous) attribute. // tabs is used to properly tabulate the object struct fields and only applies to this case. func GoPackageTypeRef(t design.DataType, required []string, versioned bool, defPkg string, tabs int) string { switch t.(type) { case *design.UserTypeDefinition, *design.MediaTypeDefinition: var prefix string if t.IsObject() { prefix = "*" } return prefix + GoPackageTypeName(t, required, versioned, defPkg, tabs) case design.Object: return "*" + GoPackageTypeName(t, required, versioned, defPkg, tabs) default: return GoPackageTypeName(t, required, versioned, defPkg, tabs) } }