private/runtime/Helpers/XHelper.cs
using System; namespace Carbon.Json { internal static class XHelper { public static JsonNode Create(JsonType type, TypeCode code, object value) { switch (type) { case JsonType.Binary : return new XBinary((byte[])value); case JsonType.Boolean : return new JsonBoolean((bool)value); case JsonType.Number : return new JsonNumber(value.ToString()); case JsonType.String : return new JsonString((string)value); } throw new Exception($"JsonType '{type}' does not have a fast conversion"); } public static bool TryGetElementType(TypeCode code, out JsonType type) { switch (code) { case TypeCode.Boolean : type = JsonType.Boolean; return true; case TypeCode.Byte : type = JsonType.Number; return true; case TypeCode.DateTime : type = JsonType.Date; return true; case TypeCode.Decimal : type = JsonType.Number; return true; case TypeCode.Double : type = JsonType.Number; return true; case TypeCode.Empty : type = JsonType.Null; return true; case TypeCode.Int16 : type = JsonType.Number; return true; case TypeCode.Int32 : type = JsonType.Number; return true; case TypeCode.Int64 : type = JsonType.Number; return true; case TypeCode.SByte : type = JsonType.Number; return true; case TypeCode.Single : type = JsonType.Number; return true; case TypeCode.String : type = JsonType.String; return true; case TypeCode.UInt16 : type = JsonType.Number; return true; case TypeCode.UInt32 : type = JsonType.Number; return true; case TypeCode.UInt64 : type = JsonType.Number; return true; } type = default; return false; } public static JsonType GetElementType(TypeCode code) { switch (code) { case TypeCode.Boolean : return JsonType.Boolean; case TypeCode.Byte : return JsonType.Number; case TypeCode.DateTime : return JsonType.Date; case TypeCode.Decimal : return JsonType.Number; case TypeCode.Double : return JsonType.Number; case TypeCode.Empty : return JsonType.Null; case TypeCode.Int16 : return JsonType.Number; case TypeCode.Int32 : return JsonType.Number; case TypeCode.Int64 : return JsonType.Number; case TypeCode.SByte : return JsonType.Number; case TypeCode.Single : return JsonType.Number; case TypeCode.String : return JsonType.String; case TypeCode.UInt16 : return JsonType.Number; case TypeCode.UInt32 : return JsonType.Number; case TypeCode.UInt64 : return JsonType.Number; default : return JsonType.Object; } throw new Exception($"TypeCode '{code}' does not have a fast converter"); } } } |