(component ComponentDefinition, w LanguageWriter)
| 175 | } |
| 176 | |
| 177 | func 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": |
no test coverage detected