52 lines
1.4 KiB
C#
52 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace LibZNI.Serialization.ZNIFile
|
|
{
|
|
public class Header : Serializable
|
|
{
|
|
public const string SIGNATURE = "ZNIFile";
|
|
public Version VERSION = new Version(1,0,0,1,0,0);
|
|
|
|
public override void load(Folder f)
|
|
{
|
|
|
|
Folder x = f["Header"] as Folder;
|
|
if (x == null) return;
|
|
|
|
if (x["Signature"].StringValue == SIGNATURE)
|
|
{
|
|
Version ver = new Version();
|
|
ver.load(f);
|
|
if (VERSION.Compare(ver) == 0)
|
|
{
|
|
return;
|
|
} else throw new VersionNumberDifferentException(VERSION, ver);
|
|
|
|
}else
|
|
{
|
|
throw new Exception("Header failed validation");
|
|
}
|
|
}
|
|
|
|
public override void save(Folder f)
|
|
{
|
|
Folder x = new Folder("Header");
|
|
x.Add(new StringTag("Signature", SIGNATURE));
|
|
VERSION.save(x);
|
|
|
|
f.Add(x);
|
|
}
|
|
|
|
public static Folder GetHeader()
|
|
{
|
|
Folder f = new Folder("temp"); // Initialize a temporary header
|
|
Header x = new Header();
|
|
x.save(f);
|
|
return f["Header"] as Folder;
|
|
}
|
|
}
|
|
}
|