private YamlFunctionBinding GetOrCreateFunctionBinding(string name) { if (FunctionBindings.TryGetValue(name, out YamlFunctionBinding binding)) { return(binding); } binding = new YamlFunctionBinding( ) { Name = name }; FunctionBindings.Add(binding); return(binding); }
private void UpdateBindingMarshaling(YamlFunctionBinding fb, IMarshalInfo mi) { YamlBindingTransform xform; switch (mi) { case ArrayMarshalInfo ami: xform = new YamlArrayMarshalInfo( ) { Name = ami.ParameterName, Semantics = ami.Semantics, SubType = ami.ElementMarshalType, SizeParam = ami.SizeParam, }; break; case PrimitiveTypeMarshalInfo ptmi: xform = new YamlPrimitiveMarshalInfo( ) { Name = ptmi.ParameterName, Kind = ptmi.PrimitiveType, Semantics = ptmi.Semantics, }; break; case StringMarshalInfo smi: xform = new YamlStringMarshalInfo( ) { Name = smi.ParameterName, Kind = smi.DisposalKind, Semantics = smi.Semantics, }; break; default: throw new ArgumentException("Unknown marshal info"); } if (mi.Semantics == ParamSemantics.Return) { fb.ReturnTransform = xform; } else { fb.ParamTransforms.Add(xform); } }