Esempio n. 1
0
        public short AddConstantNameAndType(string name, IMember type)
        {
            if (name == null || type == null) return 0;

            short nameIndex = AddConstantUtf8(name);
            short typeIndex = AddConstantUtf8(type.GetDescriptor());
            CompileConstantNameAndType nameAndTypeConst =
                ConstantPool.OfType<CompileConstantNameAndType>().FirstOrDefault(
                    x => x.NameIndex == nameIndex && x.DescriptorIndex == typeIndex);

            if (nameAndTypeConst == null)
            {
                nameAndTypeConst = new CompileConstantNameAndType
                                       {
                                           PoolIndex = nextConstantIndex++,
                                           NameIndex = nameIndex,
                                           DescriptorIndex = typeIndex
                                       };

                ConstantPool.Add(nameAndTypeConst);
            }

            return nameAndTypeConst.PoolIndex;
        }