MCPcopy Create free account
hub / github.com/Autodesk/AutomaticComponentToolkit / buildGoStructs

Function buildGoStructs

Source/buildbindinggo.go:177–244  ·  view source on GitHub ↗
(component ComponentDefinition, w LanguageWriter)

Source from the content-addressed store, hash-verified

175}
176
177func buildGoStructs(component ComponentDefinition, w LanguageWriter) (error) {
178 if len(component.Structs) <= 0 {
179 return nil
180 }
181 NameSpace := component.NameSpace
182
183 w.Writeln("/*************************************************************************************************************************")
184 w.Writeln(" Declaration of structs")
185 w.Writeln("**************************************************************************************************************************/")
186 w.Writeln("")
187
188 for i := 0; i < len(component.Structs); i++ {
189 structinfo := component.Structs[i]
190 w.Writeln("type s%s%s struct {", NameSpace, structinfo.Name)
191
192 for j := 0; j < len(structinfo.Members); j++ {
193
194 member := structinfo.Members[j]
195
196 arraysuffix := ""
197 if member.Rows > 0 {
198 if member.Columns > 0 {
199 arraysuffix = fmt.Sprintf("[%d][%d]", member.Columns, member.Rows)
200 } else {
201 arraysuffix = fmt.Sprintf("[%d]", member.Rows)
202 }
203 }
204
205 switch member.Type {
206 case "uint8":
207 w.Writeln(" %s%s uint8;", member.Name, arraysuffix)
208 case "uint16":
209 w.Writeln(" %s%s uint16;", member.Name, arraysuffix)
210 case "uint32":
211 w.Writeln(" %s%s uint32;", member.Name, arraysuffix)
212 case "uint64":
213 w.Writeln(" %s%s uint64;", member.Name, arraysuffix)
214 case "int8":
215 w.Writeln(" %s%s int8;", member.Name, arraysuffix)
216 case "int16":
217 w.Writeln(" %s%s int16;", member.Name, arraysuffix)
218 case "int32":
219 w.Writeln(" %s%s int32;", member.Name, arraysuffix)
220 case "int64":
221 w.Writeln(" %s%s int64;", member.Name, arraysuffix)
222 case "bool":
223 w.Writeln(" %s%s bool;", member.Name, arraysuffix)
224 case "single":
225 w.Writeln(" %s%s float32;", member.Name, arraysuffix)
226 case "double":
227 w.Writeln(" %s%s float64;", member.Name, arraysuffix)
228 case "pointer":
229 w.Writeln(" %s%s uint64;", member.Name, arraysuffix)
230 case "string":
231 return fmt.Errorf("it is not possible for struct s%s%s to contain a string value", NameSpace, structinfo.Name)
232 case "class", "optionalclass":
233 return fmt.Errorf("it is not possible for struct s%s%s to contain a handle value", NameSpace, structinfo.Name)
234 case "enum":

Callers 1

buildGoWrapperFunction · 0.85

Calls 1

WritelnMethod · 0.80

Tested by

no test coverage detected