(ParamTypeName string, NameSpace string, ParamClass string)
| 585 | } |
| 586 | |
| 587 | func getCParameterTypeName(ParamTypeName string, NameSpace string, ParamClass string)(string, error) { |
| 588 | paramNameSpace, paramClassName, err := decomposeParamClassName(ParamClass) |
| 589 | if (err != nil) { |
| 590 | return "", err |
| 591 | } |
| 592 | if len(paramNameSpace) == 0 { |
| 593 | paramNameSpace = NameSpace |
| 594 | } |
| 595 | |
| 596 | |
| 597 | cParamTypeName := ""; |
| 598 | switch (ParamTypeName) { |
| 599 | case "uint8", "uint16", "uint32", "uint64", "int8", "int16", "int32", "int64", "single", "double": |
| 600 | cParamTypeName = fmt.Sprintf ("%s_%s", paramNameSpace, ParamTypeName); |
| 601 | case "bool": |
| 602 | cParamTypeName = "bool"; |
| 603 | case "pointer": |
| 604 | cParamTypeName = fmt.Sprintf ("%s_pvoid", paramNameSpace); |
| 605 | case "string": |
| 606 | cParamTypeName = "char *"; |
| 607 | case "enum": |
| 608 | cParamTypeName = fmt.Sprintf ("e%s%s", paramNameSpace, paramClassName); |
| 609 | case "struct": |
| 610 | cParamTypeName = fmt.Sprintf ("s%s%s *", paramNameSpace, paramClassName); |
| 611 | case "basicarray": |
| 612 | basicTypeName, err := getCParameterTypeName(paramClassName, paramNameSpace, ""); |
| 613 | if (err != nil) { |
| 614 | return "", err; |
| 615 | } |
| 616 | cParamTypeName = fmt.Sprintf ("%s *", basicTypeName); |
| 617 | case "structarray": |
| 618 | cParamTypeName = fmt.Sprintf ("s%s%s *", paramNameSpace, paramClassName) |
| 619 | case "class", "optionalclass": |
| 620 | cParamTypeName = fmt.Sprintf ("%s_%s", paramNameSpace, paramClassName) |
| 621 | case "functiontype": |
| 622 | cParamTypeName = fmt.Sprintf ("%s%s", paramNameSpace, paramClassName) |
| 623 | default: |
| 624 | return "", fmt.Errorf ("invalid parameter type \"%s\" for C-parameter", ParamTypeName); |
| 625 | } |
| 626 | return cParamTypeName, nil; |
| 627 | } |
| 628 | |
| 629 | // CParameter is a handy representation of a function parameter in C |
| 630 | type CParameter struct { |
no test coverage detected