(component ComponentDefinition, implw LanguageWriter)
| 430 | } |
| 431 | |
| 432 | func buildGoCallFunction(component ComponentDefinition, implw LanguageWriter) { |
| 433 | NameSpace := component.NameSpace |
| 434 | |
| 435 | implw.Writeln("func (implementation *%sImplementation) CallFunction(funcptr uintptr, parameters ... uintptr) (error) {", NameSpace) |
| 436 | implw.Writeln(" var ret uintptr;") |
| 437 | implw.Writeln(" if (!implementation.Initialized) {") |
| 438 | implw.Writeln(" return errors.New(\"%s Implementation has not been initialized!\")", NameSpace) |
| 439 | implw.Writeln(" }") |
| 440 | implw.Writeln(" ") |
| 441 | implw.Writeln(" switch len(parameters) { ") |
| 442 | implw.Writeln(" case 0: ret, _, _ = syscall.Syscall(funcptr, 0, 0, 0, 0)") |
| 443 | implw.Writeln(" case 1: ret, _, _ = syscall.Syscall(funcptr, 1, uintptr(parameters[0]), 0, 0)") |
| 444 | implw.Writeln(" case 2: ret, _, _ = syscall.Syscall(funcptr, 2, uintptr(parameters[0]), uintptr(parameters[1]), 0)") |
| 445 | implw.Writeln(" case 3: ret, _, _ = syscall.Syscall(funcptr, 3, uintptr(parameters[0]), uintptr(parameters[1]), uintptr(parameters[2]))") |
| 446 | implw.Writeln(" case 4: ret, _, _ = syscall.Syscall6(funcptr, 4, uintptr(parameters[0]), uintptr(parameters[1]), uintptr(parameters[2]), uintptr(parameters[3]), 0, 0)") |
| 447 | implw.Writeln(" case 5: ret, _, _ = syscall.Syscall6(funcptr, 5, uintptr(parameters[0]), uintptr(parameters[1]), uintptr(parameters[2]), uintptr(parameters[3]), uintptr(parameters[4]), 0)") |
| 448 | implw.Writeln(" case 6: ret, _, _ = syscall.Syscall6(funcptr, 6, uintptr(parameters[0]), uintptr(parameters[1]), uintptr(parameters[2]), uintptr(parameters[3]), uintptr(parameters[4]), uintptr(parameters[5]))") |
| 449 | implw.Writeln(" case 7: ret, _, _ = syscall.Syscall9(funcptr, 7, uintptr(parameters[0]), uintptr(parameters[1]), uintptr(parameters[2]), uintptr(parameters[3]), uintptr(parameters[4]), uintptr(parameters[5]), uintptr(parameters[6]), 0, 0)") |
| 450 | implw.Writeln(" case 8: ret, _, _ = syscall.Syscall9(funcptr, 8, uintptr(parameters[0]), uintptr(parameters[1]), uintptr(parameters[2]), uintptr(parameters[3]), uintptr(parameters[4]), uintptr(parameters[5]), uintptr(parameters[6]), uintptr(parameters[7]), 0)") |
| 451 | implw.Writeln(" case 9: ret, _, _ = syscall.Syscall9(funcptr, 9, uintptr(parameters[0]), uintptr(parameters[1]), uintptr(parameters[2]), uintptr(parameters[3]), uintptr(parameters[4]), uintptr(parameters[5]), uintptr(parameters[6]), uintptr(parameters[7]), uintptr(parameters[8]))") |
| 452 | implw.Writeln(" case 10: ret, _, _ = syscall.Syscall12(funcptr, 10, uintptr(parameters[0]), uintptr(parameters[1]), uintptr(parameters[2]), uintptr(parameters[3]), uintptr(parameters[4]), uintptr(parameters[5]), uintptr(parameters[6]), uintptr(parameters[7]), uintptr(parameters[8]), uintptr(parameters[9]), 0, 0)") |
| 453 | implw.Writeln(" case 11: ret, _, _ = syscall.Syscall12(funcptr, 11, uintptr(parameters[0]), uintptr(parameters[1]), uintptr(parameters[2]), uintptr(parameters[3]), uintptr(parameters[4]), uintptr(parameters[5]), uintptr(parameters[6]), uintptr(parameters[7]), uintptr(parameters[8]), uintptr(parameters[9]), uintptr(parameters[10]), 0)") |
| 454 | implw.Writeln(" case 12: ret, _, _ = syscall.Syscall12(funcptr, 12, uintptr(parameters[0]), uintptr(parameters[1]), uintptr(parameters[2]), uintptr(parameters[3]), uintptr(parameters[4]), uintptr(parameters[5]), uintptr(parameters[6]), uintptr(parameters[7]), uintptr(parameters[8]), uintptr(parameters[9]), uintptr(parameters[10]), uintptr(parameters[11]))") |
| 455 | implw.Writeln(" default: ") |
| 456 | implw.Writeln(" return errors.New(\"Invalid DLL function parameter count!\");") |
| 457 | implw.Writeln(" }") |
| 458 | implw.Writeln(" ") |
| 459 | implw.Writeln(" if (int(ret) != 0) {") |
| 460 | implw.Writeln(" return errors.New(fmt.Sprintf(\"%s Error: %%.04x (%%s)\", int(ret), Get%sErrorMessage(uint32(ret))))", NameSpace, NameSpace) |
| 461 | implw.Writeln(" }") |
| 462 | implw.Writeln(" ") |
| 463 | implw.Writeln(" return nil") |
| 464 | implw.Writeln("}") |
| 465 | implw.Writeln("") |
| 466 | } |
| 467 | |
| 468 | |
| 469 | func buildGoClass(component ComponentDefinition, class ComponentDefinitionClass, w LanguageWriter, implw LanguageWriter, NameSpace string, classdefinitions* []string) (error) { |
no test coverage detected