Beispiel #1
0
 /// <summary> 建立指定類別和名子<see cref="WzVariant"/>實體 </summary>
 /// <param name="type"> 這個<see cref="WzVariant"/>的資料類型 </param>
 /// <param name="name"> 這個<see cref="WzVariant"/>的名子 </param>
 public WzVariant(WzVariantType type, string name)
 {
     this.Type    = type;
     this.Name    = name;
     this.mParent = null;
 }
Beispiel #2
0
        private WzVariant ReadVariant(WzFileStream stream)
        {
            WzVariant variant = null;

            string        name = stream.StringPool.Read();
            WzVariantType type = (WzVariantType)stream.Read1u();

            switch (type)
            {
            case WzVariantType.Empty:
                variant = new WzEmpty(name);
                break;

            case WzVariantType.Null:
                variant = new WzNull(name);
                break;

            case WzVariantType.Short:
                variant = new WzShort(name);
                break;

            case WzVariantType.Int:
                variant = new WzInt(name);
                break;

            case WzVariantType.Float:
                variant = new WzFloat(name);
                break;

            case WzVariantType.Double:
                variant = new WzDouble(name);
                break;

            case WzVariantType.String:
                variant = new WzString(name);
                break;

            case WzVariantType.Boolean:     // (0xFFFF = 1, 0x0000 = 0)
                variant = new WzBool(name);
                break;

            case WzVariantType.UInt:
                variant = new WzUInt(name);
                break;

            case WzVariantType.Long:
                variant = new WzLong(name);
                break;

            case WzVariantType.Dispatch:
                variant = new WzDispatch(name);
                break;
            }

            if (variant != null)
            {
                variant.Parent = this;
                variant.Read(stream);
            }

            return(variant);
        }