private Variable(ElementType type) : base(type) { lock (s_idLock) { Id = s_id; } }
public Variable(ElementType type, VariableType vtype, int index) : this(type) { Index = index; VarType = vtype; }
private static ElementType ReadType(InspectableAssembly ia, byte[] blob, ref int index) { var ret = new ElementType((EElementType)blob[index++]); // class or struct if (ret.Type == EElementType.Class || ret.Type == EElementType.ValueType || ret.Type == EElementType.CMod_Required || ret.Type == EElementType.CMod_Optional) { //next is metadata token? var tokenRaw = UncompressInt(blob, ref index); int token = (tokenRaw & ~0x03) >> 2; switch(tokenRaw & 0x03) { case 0: //typedef token |= 0x02000000; break; case 1: //typeref token |= 0x01000000; break; case 2: //typespec token |= 0x20000000; break; } var handle = MetadataTokens.Handle(token); switch (handle.Kind) { case HandleKind.TypeDefinition: ret.Target = ia.GetClassImmediate(token); break; default: throw new Exception("Go f**k yourself handle"); } } else if(ret.Type == EElementType.SzArray || ret.Type == EElementType.Reference) { ElementType next; do { next = ReadType(ia, blob, ref index); if (next.Type.IsCustomMod()) Console.WriteLine("?? SzArray custom mod ??"); } while (next.Type.IsCustomMod()); ret.Secondary = next; } else if(ret.Type == EElementType.MVar) { ret.Number = UncompressInt(blob, ref index); } return ret; }
public void Add(ElementType type) { m_internal.Add(type); }
public Constant(ElementType type, object val) : base(type) { Value = val; }
public IndirectValue(ElementType type) { Type = type; }
public Element(ElementType type) { Type = type; }