public MegaloScriptValueType(int nameIndex, MegaloScriptVarReferenceType varRefType, MegaloScriptValueBaseType baseType = MegaloScriptValueBaseType.VarReference) : this() { Contract.Requires(ValidateNameIndex(nameIndex)); InitializeHandle(out mHandle, nameIndex, baseType, 0, (uint)varRefType); }
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); }
//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(); }