|
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.
|