UniVRM/Assets/VRM/UniGLTF/Editor/Serialization/PrimitiveSerialization.cs
2019-08-08 20:25:37 +09:00

198 lines
4.9 KiB
C#

using System;
using System.IO;
namespace UniGLTF
{
public abstract class PrimitiveSerializationBase : IValueSerialization
{
public bool IsInline
{
get { return true; }
}
public abstract Type ValueType { get; }
public void GenerateDeserializer(StreamWriter writer, string callName)
{
throw new System.NotImplementedException();
}
public abstract string GenerateDeserializerCall(string callName, string argName);
}
public class Int8Serialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(SByte); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetInt8()";
}
}
public class Int16Serialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(Int16); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetInt16()";
}
}
public class Int32Serialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(Int32); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetInt32()";
}
}
public class Int64Serialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(Int64); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetInt64()";
}
}
public class UInt8Serialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(Byte); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetUInt8()";
}
}
public class UInt16Serialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(UInt16); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetUInt16()";
}
}
public class UInt32Serialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(UInt32); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetUInt32()";
}
}
public class UInt64Serialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(UInt64); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetUInt64()";
}
}
public class SingleSerialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(Single); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetSingle()";
}
}
public class DoubleSerialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(Double); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetDouble()";
}
}
public class BooleanSerialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(Boolean); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetBoolean()";
}
}
public class StringSerialization : PrimitiveSerializationBase
{
public override Type ValueType
{
get { return typeof(String); }
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return argName + ".GetString()";
}
}
public class EnumIntSerialization : PrimitiveSerializationBase
{
Type m_type;
public override Type ValueType
{
get { return m_type; }
}
public EnumIntSerialization(Type t)
{
m_type = t;
}
public override string GenerateDeserializerCall(string callName, string argName)
{
return string.Format("({0}){1}.GetInt32()", m_type.Name, argName);
}
}
}