コード例 #1
0
        private common_method_node CreateInterfaceMethod(string name, int offset)
        {
            definition_node dn = null;
            if (members.TryGetValue(offset, out dn))
                return dn as common_method_node;
            common_method_node cmn = new common_method_node(name,null,null);
            //members[offset] = cmn;
            AddMember(cmn, offset);
            
            int name_ref = br.ReadInt32();

            cmn.is_final = br.ReadByte() == 1;
            cmn.newslot_awaited = br.ReadByte() == 1;

            ReadGenericFunctionInformation(cmn);
            //if (CanReadObject())
            //{
            //    cmn.generic_params = ReadGenericParams(cun.namespaces[0]);
            //    foreach (common_type_node par in cmn.generic_params)
            //    {
            //        par.generic_function_container = cmn;
            //        ReadTypeParameterEliminations(par);
            //    }
            //}

            if (br.ReadByte() == 1) //return_value_type
            {
                cmn.return_value_type = GetTypeReference();
                if (br.ReadByte() == 1)
                {
                    cmn.return_variable = GetLocalVariable(cmn);
                    cmn.var_definition_nodes_list.AddElement(cmn.return_variable);
                }
            }
            int num_par = br.ReadInt32();
            for (int i = 0; i < num_par; i++)
                cmn.parameters.AddElement(GetParameter(cmn));
            cmn.cont_type = (common_type_node)GetTypeReference(br.ReadInt32());
            if (name==null || true)
                cmn.SetName(GetStringInClass(cmn.cont_type, name_ref));
            cmn.attributes.AddRange(GetAttributes());
            cmn.is_constructor = br.ReadBoolean();
            cmn.is_forward = br.ReadBoolean();
            cmn.is_overload = br.ReadBoolean();
            cmn.set_access_level((SemanticTree.field_access_level)br.ReadByte());
            cmn.polymorphic_state = (SemanticTree.polymorphic_state)br.ReadByte();
            if (cmn.is_constructor && cmn.polymorphic_state == SemanticTree.polymorphic_state.ps_static)
                cmn.cont_type.static_constr = cmn;
            cmn.num_of_default_variables = br.ReadInt32();
            cmn.num_of_for_cycles = br.ReadInt32();
            br.ReadBoolean();
            int num_var = br.ReadInt32();
            for (int i = 0; i < num_var; i++)
            {
                local_variable lv = GetLocalVariable(cmn);
                if (lv != cmn.return_variable)
                    cmn.var_definition_nodes_list.AddElement(lv);
            }
            int num_consts = br.ReadInt32();
            for (int i = 0; i < num_consts; i++)
            {
                function_constant_definition fcd = GetFunctionConstant(cmn);
                cmn.constants.AddElement(fcd);
            }
            int num_nest_funcs = br.ReadInt32();
            for (int i = 0; i < num_nest_funcs; i++)
                cmn.functions_nodes_list.AddElement(GetNestedFunction());
            //br.ReadInt32();//code;
            cmn.loc = ReadDebugInfo();
            cmn.function_code = GetCode(br.ReadInt32());
            cmn.cont_type.methods.AddElement(cmn);
            
            return cmn;
        }