(varName string, t types.Type, mode varMode)
| 894 | } |
| 895 | |
| 896 | func (g *JavaGen) genJavaToC(varName string, t types.Type, mode varMode) { |
| 897 | switch t := types.Unalias(t).(type) { |
| 898 | case *types.Basic: |
| 899 | switch t.Kind() { |
| 900 | case types.String: |
| 901 | g.Printf("nstring _%s = go_seq_from_java_string(env, %s);\n", varName, varName) |
| 902 | default: |
| 903 | g.Printf("%s _%s = (%s)%s;\n", g.cgoType(t), varName, g.cgoType(t), varName) |
| 904 | } |
| 905 | case *types.Slice: |
| 906 | if isBytesSlice(t) { |
| 907 | g.Printf("nbyteslice _%s = go_seq_from_java_bytearray(env, %s, %d);\n", varName, varName, toCFlag(mode == modeRetained)) |
| 908 | return |
| 909 | } |
| 910 | g.errorf("unsupported type: %s", t) |
| 911 | case *types.Named: |
| 912 | switch u := t.Underlying().(type) { |
| 913 | case *types.Interface: |
| 914 | g.Printf("int32_t _%s = go_seq_to_refnum(env, %s);\n", varName, varName) |
| 915 | default: |
| 916 | g.errorf("unsupported named type: %s / %T", u, u) |
| 917 | } |
| 918 | case *types.Pointer: |
| 919 | g.Printf("int32_t _%s = go_seq_to_refnum(env, %s);\n", varName, varName) |
| 920 | default: |
| 921 | g.Printf("%s _%s = (%s)%s;\n", g.cgoType(t), varName, g.cgoType(t), varName) |
| 922 | } |
| 923 | } |
| 924 | |
| 925 | func (g *JavaGen) genCToJava(toName, fromName string, t types.Type, mode varMode) { |
| 926 | switch t := types.Unalias(t).(type) { |
no test coverage detected