Пример #1
0
        public MegaloScriptValueType(int nameIndex,
                                     MegaloScriptVarReferenceType varRefType, MegaloScriptValueBaseType baseType = MegaloScriptValueBaseType.VarReference) : this()
        {
            Contract.Requires(ValidateNameIndex(nameIndex));

            InitializeHandle(out mHandle, nameIndex, baseType, 0, (uint)varRefType);
        }
Пример #2
0
        public MegaloScriptValueType(int nameIndex, MegaloScriptValueBaseType baseType, int bitLength,
                                     uint typeParam = 0, uint typeTraits = 0) : this()
        {
            Contract.Requires(ValidateNameIndex(nameIndex));
            Contract.Requires(baseType != MegaloScriptValueBaseType.Enum &&
                              baseType != MegaloScriptValueBaseType.Index &&
                              baseType != MegaloScriptValueBaseType.VarReference);
            Contract.Requires(ValidateBitLength(bitLength));

            InitializeHandle(out mHandle, nameIndex, baseType, bitLength, typeParam, typeTraits);
        }
Пример #3
0
        //internal uint Handle { get { return mHandle; } }

        static void InitializeHandle(out uint handle, int nameIndex, MegaloScriptValueBaseType baseType, int bitLength,
                                     uint typeParam = 0, uint typeTraits = 0)
        {
            var encoder = new Bitwise.HandleBitEncoder();

            encoder.Encode32((uint)nameIndex, Constants.kNameIndexBitField);
            encoder.Encode32(baseType, BitEncoders.MegaloScriptValueBaseType);
            encoder.Encode32((uint)bitLength, Constants.kBitLengthBitField);
            encoder.Encode32(typeParam, Constants.kTypeParamBitField);
            encoder.Encode32(typeTraits, Constants.kTypeTraitsBitField);

            Contract.Assert(encoder.UsedBitCount == MegaloScriptValueType.BitCount);

            handle = encoder.GetHandle32();
        }