Example #1
0
        public void BeginTypeDef(TypeAttr attr, string name, BaseClassRef parent,
                                 ArrayList impl_list, Location location, GenericParameters gen_params)
        {
            TypeDef outer      = null;
            string  cache_name = CacheName(name);

            if (typedef_stack_top > 0)
            {
                StringBuilder sb = new StringBuilder();

                for (int i = 0; i < typedef_stack_top; i++)
                {
                    outer = (TypeDef)typedef_stack [i];
                    if (i == 0)
                    {
                        /* Use FullName for outermost class to get the
                         * namespace also */
                        sb.Append(outer.FullName);
                    }
                    else
                    {
                        sb.Append(outer.Name);
                    }
                    sb.Append("/");
                }
                sb.Append(name);
                cache_name = sb.ToString();
            }

            TypeDef typedef = type_manager[cache_name];

            if (typedef != null)
            {
                // Class head is allready defined, we are just reopening the class
                current_customattrtarget = current_typedef = typedef;
                current_declsectarget    = typedef;
                typedef_stack.Add(current_typedef);
                typedef_stack_top++;
                return;
            }

            typedef = new TypeDef(attr, current_namespace,
                                  name, parent, impl_list, location, gen_params, outer);

            type_manager[cache_name] = typedef;
            current_customattrtarget = current_typedef = typedef;
            current_declsectarget    = typedef;
            typedef_stack.Add(typedef);
            typedef_stack_top++;
        }
Example #2
0
        public void BeginMethodDef(MethodDef methoddef)
        {
            if (current_typedef != null)
            {
                current_typedef.AddMethodDef(methoddef);
            }
            else
            {
                global_method_table.Add(methoddef.Signature,
                                        methoddef);
            }

            current_customattrtarget = current_methoddef = methoddef;
            current_declsectarget    = methoddef;
        }
 public void EndAssemblyRef ()
 {
         current_assemblyref = null;
         current_customattrtarget = null;
         current_declsectarget = null;
 }
 public void BeginAssemblyRef (string name, AssemblyName asmb_name, PEAPI.AssemAttr attr)
 {
         current_customattrtarget = current_assemblyref = ExternTable.AddAssembly (name, asmb_name, attr);
         current_declsectarget = current_assemblyref;
 }
                public void BeginMethodDef (MethodDef methoddef)
                {
                        if (current_typedef != null) {
                                current_typedef.AddMethodDef (methoddef);
                        } else {
                                global_method_table.Add (methoddef.Signature,
                                                methoddef);
                        }

                        current_customattrtarget = current_methoddef = methoddef;
                        current_declsectarget = methoddef;
                }
                public void BeginTypeDef (TypeAttr attr, string name, BaseClassRef parent,
                                ArrayList impl_list, Location location, GenericParameters gen_params)
                {
                        TypeDef outer = null;
                        string cache_name = CacheName (name);
                        if (typedef_stack_top > 0) {
				StringBuilder sb = new StringBuilder ();

				for (int i = 0; i < typedef_stack_top; i++){
					outer = (TypeDef) typedef_stack [i];
					if (i == 0)
						/* Use FullName for outermost class to get the
						   namespace also */
						sb.Append (outer.FullName);
					else
						sb.Append (outer.Name);
					sb.Append ("/");
				}
				sb.Append (name);
				cache_name = sb.ToString ();
                        }

                        TypeDef typedef = type_manager[cache_name];

                        if (typedef != null) {
                                // Class head is allready defined, we are just reopening the class
                                current_customattrtarget = current_typedef = typedef;
                                current_declsectarget = typedef;
                                typedef_stack.Add (current_typedef);
				typedef_stack_top++;
                                return;
                        }

                        typedef = new TypeDef (attr, current_namespace,
                                        name, parent, impl_list, location, gen_params, outer);

                        type_manager[cache_name] = typedef;
                        current_customattrtarget = current_typedef = typedef;
                        current_declsectarget = typedef;
			typedef_stack.Add (typedef);
			typedef_stack_top++;
                }
Example #7
0
 public void EndAssemblyRef()
 {
     current_assemblyref      = null;
     current_customattrtarget = null;
     current_declsectarget    = null;
 }
Example #8
0
 public void BeginAssemblyRef(string name, AssemblyName asmb_name, PEAPI.AssemAttr attr)
 {
     current_customattrtarget = current_assemblyref = ExternTable.AddAssembly(name, asmb_name, attr);
     current_declsectarget    = current_assemblyref;
 }