From: <ac...@us...> - 2010-03-29 22:52:57
|
Revision: 21 http://clibinutils.svn.sourceforge.net/clibinutils/?rev=21&view=rev Author: aco Date: 2010-03-29 22:52:50 +0000 (Mon, 29 Mar 2010) Log Message: ----------- initial refactory of CFile Modified Paths: -------------- mono-based-binutils/branches/aco-dev/tools/Makefile.am mono-based-binutils/branches/aco-dev/tools/Makefile.in mono-based-binutils/branches/aco-dev/tools/gcc4cli/ar/Driver.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/nm/Driver.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/objcopy/Driver.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/objdump/Driver.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFile.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFileBuilder.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFileFactory.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CObject.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CStaticLibrary.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileBuilder.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileModifier.cs Added Paths: ----------- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFile.cs mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileNames.cs Modified: mono-based-binutils/branches/aco-dev/tools/Makefile.am =================================================================== --- mono-based-binutils/branches/aco-dev/tools/Makefile.am 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/Makefile.am 2010-03-29 22:52:50 UTC (rev 21) @@ -52,8 +52,10 @@ gcc4cli/utils/RedefinitionException.cs \ gcc4cli/utils/TypeMismatchException.cs \ gcc4cli/utils/WrongFileFormatException.cs \ + gcc4cli/utils/ICFile.cs \ gcc4cli/utils/ICFileBuilder.cs \ gcc4cli/utils/ICFileModifier.cs \ + gcc4cli/utils/ICFileNames.cs \ gcc4cli/utils/IReferenceGetters.cs \ gcc4cli/utils/ReferenceGetters.cs \ gcc4cli/utils/ReferenceGettersCached.cs \ Modified: mono-based-binutils/branches/aco-dev/tools/Makefile.in =================================================================== --- mono-based-binutils/branches/aco-dev/tools/Makefile.in 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/Makefile.in 2010-03-29 22:52:50 UTC (rev 21) @@ -188,8 +188,10 @@ gcc4cli/utils/RedefinitionException.cs \ gcc4cli/utils/TypeMismatchException.cs \ gcc4cli/utils/WrongFileFormatException.cs \ + gcc4cli/utils/ICFile.cs \ gcc4cli/utils/ICFileBuilder.cs \ gcc4cli/utils/ICFileModifier.cs \ + gcc4cli/utils/ICFileNames.cs \ gcc4cli/utils/IReferenceGetters.cs \ gcc4cli/utils/ReferenceGetters.cs \ gcc4cli/utils/ReferenceGettersCached.cs \ Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/ar/Driver.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/ar/Driver.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/ar/Driver.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -136,7 +136,7 @@ lib = CFileFactory.CreateCStaticLibrary (ArchiveName); } else { - CFile myfile = CFileFactory.LoadCFile (ArchiveFileName); + ICFile myfile = CFileFactory.LoadCFile (ArchiveFileName); if (myfile is CStaticLibrary) lib = myfile as CStaticLibrary; else @@ -147,7 +147,7 @@ lib.StartBuilding (); while (files.Count > 0) { String filename = (string) files.Dequeue (); - CFile obj = CFileFactory.LoadCFile (filename); + ICFile obj = CFileFactory.LoadCFile (filename); if (update && lib.Contains (obj.Name)) lib.Remove (obj.Name); lib.Add (obj); Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/nm/Driver.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/nm/Driver.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/nm/Driver.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -92,7 +92,7 @@ if (printFilename) Console.WriteLine (filename + ":"); try { - CFile myfile = CFileFactory.LoadCFile (filename); + ICFile myfile = CFileFactory.LoadCFile (filename); if (myfile is CStaticLibrary) { CStaticLibrary lib = myfile as CStaticLibrary; @@ -101,7 +101,7 @@ dump (obj.Name, obj); } } else { - dump (filename, myfile); + dump (filename, (CFile)myfile); } } catch (CFileException e) { Console.WriteLine ("Error : {0}", e.Message); Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/objcopy/Driver.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/objcopy/Driver.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/objcopy/Driver.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -31,7 +31,7 @@ void Run () { try { - CFile cfile = CFileFactory.LoadCFile (m_inputFile); + ICFile cfile = CFileFactory.LoadCFile (m_inputFile); if (cfile is CStaticLibrary) Error (prog_name + " cannot handle Static Libraries"); Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/objdump/Driver.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/objdump/Driver.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/objdump/Driver.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -36,7 +36,7 @@ while (files.Count > 0) { String AssemblyName = (string) files.Dequeue (); if (CFileFactory.CheckIsCFile (AssemblyName)) { - CFile cfile = CFileFactory.LoadCFile (AssemblyName); + ICFile cfile = CFileFactory.LoadCFile (AssemblyName); if (cfile is CStaticLibrary) { Writer.WriteLine ("//++++ objdump of CStaticLibrary: " + cfile.Name); foreach (CObject obj in (cfile as CStaticLibrary).Objects) { Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFile.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFile.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFile.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -7,7 +7,7 @@ namespace gcc4cli.util { - public abstract class CFile { + public abstract class CFile : ICFile, ICFileNames { public static readonly string ExternalAssemblyName = "ExternalAssembly"; public static readonly string ExternalTypeName = "ExternalAssembly"; @@ -128,31 +128,6 @@ throw new NotFoundException ("Can't find member '" + name + "' in assembly " + Name, name); } - public ICollection AllDefTypes () - { - return Module.Types; - } - - public ICollection AllDefMethods () - { - return MainType.Methods; - } - - public ICollection AllDefFields () - { - return MainType.Fields; - } - - public ICollection AllRefTypes () - { - return Module.TypeReferences; - } - - public ICollection AllRefMembers () - { - return Module.MemberReferences; - } - protected void FillTables () { Module.FullLoad (); Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFileBuilder.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFileBuilder.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFileBuilder.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -44,7 +44,7 @@ } } - public void Add (CFile cfile) + public void Add (ICFile cfile) { if (!building) throw new Exception ("StartBuilding not called"); Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFileFactory.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFileFactory.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFileFactory.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -23,9 +23,9 @@ return false; } - public static CFile LoadCLibrary (string asm_name) + public static ICFile LoadCLibrary (string asm_name) { - CFile result = null; + ICFile result = null; AssemblyDefinition asm = AssemblyResolver.DefaultResolver.Resolve (asm_name); result = LoadCFile (asm); if (!(result is CStaticLibrary || result is CDynamicLibrary)) @@ -45,13 +45,13 @@ return false; } - public static CFile LoadCFile (string asm_name) + public static ICFile LoadCFile (string asm_name) { AssemblyDefinition asm = AssemblyResolver.DefaultResolver.ResolveWithoutLibPath (asm_name); return LoadCFile (asm); } - static CFile LoadCFile (AssemblyDefinition asm) + static ICFile LoadCFile (AssemblyDefinition asm) { if (CFileAttributes.AssemblyIsCExecutable (asm)) { Tracer.Trace ("Loading a C Executable: " + asm.Name.Name); Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CObject.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CObject.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CObject.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -92,6 +92,32 @@ base.EndBuilding (); } } + + internal ICollection AllDefTypes () + { + return Module.Types; + } + + internal ICollection AllDefMethods () + { + return MainType.Methods; + } + + internal ICollection AllDefFields () + { + return MainType.Fields; + } + + internal ICollection AllRefTypes () + { + return Module.TypeReferences; + } + + internal ICollection AllRefMembers () + { + return Module.MemberReferences; + } + } } Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CStaticLibrary.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CStaticLibrary.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CStaticLibrary.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -109,7 +109,7 @@ } } - public void Add (CFile cfile) + public void Add (ICFile cfile) { if (!building) throw new Exception ("StartBuilding not called"); Added: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFile.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFile.cs (rev 0) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFile.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -0,0 +1,25 @@ + +using System; +using System.Collections; + +using Mono.Cecil; + +namespace gcc4cli.util { + + public interface ICFile { + + string Name { get; } + + AssemblyDefinition Assembly { get; } + + ModuleDefinition Module { get; } + + TypeDefinition MainType { get; } + + TypeDefinition GetDefType (string name); + IMemberDefinition GetDefMember (string name); + + void Save (string filename); + } + +} Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileBuilder.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileBuilder.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileBuilder.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -7,7 +7,7 @@ void StartBuilding (); - void Add (CFile cfile); + void Add (ICFile cfile); void EndBuilding (); } Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileModifier.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileModifier.cs 2010-03-29 22:36:27 UTC (rev 20) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileModifier.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -5,7 +5,6 @@ public interface ICFileModifier { - void AddSymbolPrefix (string prefix); void AddTypePrefix (string prefix); Added: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileNames.cs =================================================================== --- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileNames.cs (rev 0) +++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileNames.cs 2010-03-29 22:52:50 UTC (rev 21) @@ -0,0 +1,21 @@ + +using System; +using System.Collections; + +using Mono.Cecil; + +namespace gcc4cli.util { + + public interface ICFileNames { + + ICollection DefinedSymbols (); + ICollection DefinedTypes (); + ICollection UndefinedSymbols (); + ICollection UndefinedTypes (); + ICollection IncompleteTypes (); + ICollection PrivateSymbols (); + ICollection RefSymbols (); + + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |