Fix "oneOf" parsing, update to protocol version 1.58 (#85)
* fix "oneOf" parsing in protocol_gen * update protocol version to 1.58.0
This commit is contained in:
@@ -152,6 +152,7 @@ type definition struct {
|
||||
Description string `json:"description"`
|
||||
Properties properties `json:"properties"`
|
||||
Required []string `json:"required"`
|
||||
OneOf []*definition `json:"oneOf"`
|
||||
AllOf []*definition `json:"allOf"`
|
||||
Ref string `json:"$ref"`
|
||||
OpenEnum []string `json:"_enum"`
|
||||
@@ -486,6 +487,28 @@ func (r *root) getType(def *definition) (builtType cppType, err error) {
|
||||
return ref.def.cppType, nil
|
||||
}
|
||||
|
||||
if len(def.OneOf) != 0 {
|
||||
args := []string{}
|
||||
deps := []cppType{}
|
||||
for i := 0; i < len(def.OneOf); i++ {
|
||||
if def.OneOf[i] == nil {
|
||||
return nil, fmt.Errorf("Item %d in oneOf is nil", i)
|
||||
}
|
||||
|
||||
elTy, err := r.getType(def.OneOf[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
deps = append(deps, elTy)
|
||||
args = append(args, elTy.Name())
|
||||
}
|
||||
return &cppBasicType{
|
||||
name: "variant<" + strings.Join(args, ", ") + ">",
|
||||
desc: def.Description,
|
||||
deps: deps,
|
||||
}, nil
|
||||
}
|
||||
|
||||
v := reflect.ValueOf(def.Ty)
|
||||
|
||||
if v.Kind() == reflect.Interface {
|
||||
|
||||
Reference in New Issue
Block a user