(argType reflect.Type, nativeArg any)
| 170 | } |
| 171 | |
| 172 | func convertSpecialForReturn(argType reflect.Type, nativeArg any) (any, error) { |
| 173 | if argType == waveObjRType { |
| 174 | return waveobj.ToJsonMap(nativeArg.(waveobj.WaveObj)) |
| 175 | } else if argType == waveObjSliceRType { |
| 176 | nativeSlice := nativeArg.([]waveobj.WaveObj) |
| 177 | jsonSlice := make([]map[string]any, len(nativeSlice)) |
| 178 | for idx, elem := range nativeSlice { |
| 179 | elemMap, err := waveobj.ToJsonMap(elem) |
| 180 | if err != nil { |
| 181 | return nil, err |
| 182 | } |
| 183 | jsonSlice[idx] = elemMap |
| 184 | } |
| 185 | return jsonSlice, nil |
| 186 | } else if argType == waveObjMapRType { |
| 187 | nativeMap := nativeArg.(map[string]waveobj.WaveObj) |
| 188 | jsonMap := make(map[string]map[string]any) |
| 189 | for key, elem := range nativeMap { |
| 190 | elemMap, err := waveobj.ToJsonMap(elem) |
| 191 | if err != nil { |
| 192 | return nil, err |
| 193 | } |
| 194 | jsonMap[key] = elemMap |
| 195 | } |
| 196 | return jsonMap, nil |
| 197 | } else { |
| 198 | return nil, fmt.Errorf("invalid special wave argument type %s", argType) |
| 199 | } |
| 200 | } |
| 201 | |
| 202 | func convertArgument(argType reflect.Type, jsonArg any) (any, error) { |
| 203 | if jsonArg == nil { |
no test coverage detected