tModLoader v0.11.8.9
A mod to make and play Terraria mods
Terraria.ModLoader.IO.TagSerializer< T, S > Class Template Referenceabstract
+ Inheritance diagram for Terraria.ModLoader.IO.TagSerializer< T, S >:
+ Collaboration diagram for Terraria.ModLoader.IO.TagSerializer< T, S >:

Public Member Functions

abstract object Deserialize (object tag)
 
override object Deserialize (object tag)
 
abstract T Deserialize (S tag)
 
abstract IList DeserializeList (IList value)
 
override IList DeserializeList (IList value)
 
abstract object Serialize (object value)
 
override object Serialize (object value)
 
abstract S Serialize (T value)
 
abstract IList SerializeList (IList value)
 
override IList SerializeList (IList value)
 

Static Public Member Functions

static void AddSerializer (TagSerializer serializer)
 
static Type GetType (string name)
 
static bool TryGetSerializer (Type type, out TagSerializer serializer)
 

Properties

abstract Type TagType [get]
 
override Type TagType [get]
 
abstract Type Type [get]
 
override Type Type [get]
 

Static Private Member Functions

static TagSerializer ()
 

Static Private Attributes

static IDictionary< Type, TagSerializerserializers = new Dictionary<Type, TagSerializer>()
 
static IDictionary< string, TypetypeNameCache = new Dictionary<string, Type>()
 

Detailed Description

Definition at line 76 of file TagSerializer.cs.

Constructor & Destructor Documentation

◆ TagSerializer()

static Terraria.ModLoader.IO.TagSerializer< T, S >.TagSerializer ( )
staticprivate

Definition at line 23 of file TagSerializer.cs.

23 {
24 Reload();
25 }

Referenced by Terraria.ModLoader.IO.TagSerializer< T, S >.TryGetSerializer().

+ Here is the caller graph for this function:

Member Function Documentation

◆ AddSerializer()

static void Terraria.ModLoader.IO.TagSerializer< T, S >.AddSerializer ( TagSerializer< T, S >  serializer)
static

Definition at line 54 of file TagSerializer.cs.

54 {
55 serializers.Add(serializer.Type, serializer);
56 }
static IDictionary< Type, TagSerializer > serializers

References Terraria.ModLoader.IO.TagSerializer< T, S >.serializers, and Terraria.ModLoader.IO.TagSerializer< T, S >.Type.

◆ Deserialize() [1/3]

abstract object Terraria.ModLoader.IO.TagSerializer< T, S >.Deserialize ( object  tag)
pure virtual

◆ Deserialize() [2/3]

override object Terraria.ModLoader.IO.TagSerializer< T, S >.Deserialize ( object  tag)

Definition at line 88 of file TagSerializer.cs.

88 {
89 return Deserialize((S)tag);
90 }
abstract object Deserialize(object tag)

References Terraria.ModLoader.IO.TagSerializer< T, S >.Deserialize().

+ Here is the call graph for this function:

◆ Deserialize() [3/3]

abstract T Terraria.ModLoader.IO.TagSerializer< T, S >.Deserialize ( tag)
pure virtual

◆ DeserializeList() [1/2]

abstract IList Terraria.ModLoader.IO.TagSerializer< T, S >.DeserializeList ( IList  value)
pure virtual

◆ DeserializeList() [2/2]

override IList Terraria.ModLoader.IO.TagSerializer< T, S >.DeserializeList ( IList  value)

Definition at line 96 of file TagSerializer.cs.

96 {
97 return ((IList<S>)value).Select(Deserialize).ToList();
98 }

References Terraria.ModLoader.IO.TagSerializer< T, S >.Deserialize().

+ Here is the call graph for this function:

◆ GetType()

static Type Terraria.ModLoader.IO.TagSerializer< T, S >.GetType ( string  name)
static

Definition at line 58 of file TagSerializer.cs.

58 {
59 if (typeNameCache.TryGetValue(name, out Type type))
60 return type;
61
62 type = Type.GetType(name);
63 if (type != null)
64 return typeNameCache[name] = type;
65
66 foreach (var mod in ModLoader.Mods) {
67 type = mod.Code?.GetType(name);
68 if (type != null)
69 return typeNameCache[name] = type;
70 }
71
72 return null;
73 }
static IDictionary< string, Type > typeNameCache

References Terraria.ModLoader.ModLoader.Mods, Terraria.ModLoader.IO.TagSerializer< T, S >.Type, and Terraria.ModLoader.IO.TagSerializer< T, S >.typeNameCache.

◆ Serialize() [1/3]

abstract object Terraria.ModLoader.IO.TagSerializer< T, S >.Serialize ( object  value)
pure virtual

◆ Serialize() [2/3]

override object Terraria.ModLoader.IO.TagSerializer< T, S >.Serialize ( object  value)

Definition at line 84 of file TagSerializer.cs.

84 {
85 return Serialize((T)value);
86 }
abstract object Serialize(object value)

References Terraria.ModLoader.IO.TagSerializer< T, S >.Serialize().

+ Here is the call graph for this function:

◆ Serialize() [3/3]

abstract S Terraria.ModLoader.IO.TagSerializer< T, S >.Serialize ( value)
pure virtual

◆ SerializeList() [1/2]

abstract IList Terraria.ModLoader.IO.TagSerializer< T, S >.SerializeList ( IList  value)
pure virtual

Referenced by Terraria.ModLoader.IO.TagIO.Serialize().

+ Here is the caller graph for this function:

◆ SerializeList() [2/2]

override IList Terraria.ModLoader.IO.TagSerializer< T, S >.SerializeList ( IList  value)

Definition at line 92 of file TagSerializer.cs.

92 {
93 return ((IList<T>)value).Select(Serialize).ToList();
94 }

References Terraria.ModLoader.IO.TagSerializer< T, S >.Serialize().

+ Here is the call graph for this function:

◆ TryGetSerializer()

static bool Terraria.ModLoader.IO.TagSerializer< T, S >.TryGetSerializer ( Type  type,
out TagSerializer< T, S >  serializer 
)
static

Definition at line 41 of file TagSerializer.cs.

41 {
42 if (serializers.TryGetValue(type, out serializer))
43 return true;
44
45 if (typeof(TagSerializable).IsAssignableFrom(type)) {
46 var sType = typeof(TagSerializableSerializer<>).MakeGenericType(type);
47 serializers[type] = serializer = (TagSerializer)sType.GetConstructor(new Type[0]).Invoke(new object[0]);
48 return true;
49 }
50
51 return false;
52 }

References Terraria.ModLoader.IO.TagSerializer< T, S >.TagSerializer(), Terraria.ModLoader.IO.TagSerializer< T, S >.serializers, and Terraria.ModLoader.IO.TagSerializer< T, S >.Type.

Referenced by Terraria.ModLoader.IO.TagIO.Deserialize(), and Terraria.ModLoader.IO.TagIO.Serialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ serializers

◆ typeNameCache

IDictionary<string, Type> Terraria.ModLoader.IO.TagSerializer< T, S >.typeNameCache = new Dictionary<string, Type>()
staticprivate

Property Documentation

◆ TagType [1/2]

abstract Type Terraria.ModLoader.IO.TagSerializer< T, S >.TagType
get

Definition at line 13 of file TagSerializer.cs.

13{ get; }

Referenced by Terraria.ModLoader.IO.TagIO.Deserialize().

◆ TagType [2/2]

override Type Terraria.ModLoader.IO.TagSerializer< T, S >.TagType
get

Definition at line 79 of file TagSerializer.cs.

◆ Type [1/2]

◆ Type [2/2]

override Type Terraria.ModLoader.IO.TagSerializer< T, S >.Type
get

Definition at line 78 of file TagSerializer.cs.