/// <summary>
/// Static function to return a new instance of the named schema
/// </summary>
/// <param name="jo">JSON object of the named schema</param>
/// <param name="names">list of named schemas already read</param>
/// <param name="encspace">enclosing namespace of the named schema</param>
/// <returns></returns>
internal static NamedSchema NewInstance(JObject jo, PropertyMap props, SchemaNames names, string encspace)
{
string type = JsonHelper.GetRequiredString(jo, "type");
switch (type)
{
case "fixed":
return(FixedSchema.NewInstance(jo, props, names, encspace));
case "enum":
return(EnumSchema.NewInstance(jo, props, names, encspace));
case "record":
return(RecordSchema.NewInstance(Type.Record, jo, props, names, encspace));
case "error":
return(RecordSchema.NewInstance(Type.Error, jo, props, names, encspace));
default:
NamedSchema result;
if (names.TryGetValue(type, null, encspace, out result))
{
return(result);
}
return(null);
}
}