86 lines
2.5 KiB
C#
86 lines
2.5 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
namespace UniGLTF
|
|
{
|
|
public class EnumSerialization : IValueSerialization
|
|
{
|
|
Type m_type;
|
|
EnumSerializationType m_serializationType;
|
|
|
|
public Type ValueType
|
|
{
|
|
get { return m_type; }
|
|
}
|
|
|
|
public bool IsInline
|
|
{
|
|
get { return true; }
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return ValueType.ToString();
|
|
}
|
|
|
|
|
|
public EnumSerialization(Type t, EnumSerializationType serializationType)
|
|
{
|
|
m_type = t;
|
|
m_serializationType = serializationType;
|
|
}
|
|
|
|
public void GenerateDeserializer(StreamWriter writer, string callName)
|
|
{
|
|
throw new System.NotImplementedException();
|
|
}
|
|
|
|
public string GenerateDeserializerCall(string callName, string argName)
|
|
{
|
|
switch (m_serializationType)
|
|
{
|
|
case EnumSerializationType.AsInt:
|
|
return string.Format("({0}){1}.GetInt32()", m_type.Name, argName);
|
|
|
|
case EnumSerializationType.AsLowerString:
|
|
// (ProjectionType)Enum.Parse(typeof(ProjectionType), kv.Value.GetString(), true)
|
|
return $"({m_type.Name})Enum.Parse(typeof({m_type.Name}), {argName}.GetString(), true)";
|
|
|
|
case EnumSerializationType.AsString:
|
|
return $"({m_type.Name})Enum.Parse(typeof({m_type.Name}), {argName}.GetString(), false)";
|
|
|
|
default:
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|
|
|
|
public string CreateSerializationCondition(string argName, JsonSchemaAttribute t)
|
|
{
|
|
return "true";
|
|
}
|
|
|
|
public void GenerateSerializer(StreamWriter writer, string callName)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public string GenerateSerializerCall(string callName, string argName)
|
|
{
|
|
switch (m_serializationType)
|
|
{
|
|
case EnumSerializationType.AsInt:
|
|
return $"f.Value((int){argName})";
|
|
|
|
case EnumSerializationType.AsLowerString:
|
|
return $"f.Value({argName}.ToString().ToLower())";
|
|
|
|
case EnumSerializationType.AsString:
|
|
return $"f.Value({argName}.ToString())";
|
|
|
|
default:
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|
|
}
|
|
}
|