Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/tools/IFaceDisco.cs')
-rw-r--r--mcs/tools/IFaceDisco.cs105
1 files changed, 0 insertions, 105 deletions
diff --git a/mcs/tools/IFaceDisco.cs b/mcs/tools/IFaceDisco.cs
deleted file mode 100644
index 0f8a06225e9..00000000000
--- a/mcs/tools/IFaceDisco.cs
+++ /dev/null
@@ -1,105 +0,0 @@
-// IFaceDisco.cs
-//
-// Nick Drochak (ndrochak@gol.com)
-//
-// (C) 2001 Nick Drochak
-
-using System;
-using System.Reflection;
-using System.Collections;
-using System.IO;
-
-namespace Mono.Util
-{
- class IFaceDisco {
- public static void Main(string[] args) {
- Assembly asm;
- Type[] asmTypes;
- InterfaceMapping map;
- Type[] interfaces;
- ArrayList TypesList = new ArrayList();
- ArrayList implementingTypes = new ArrayList();
- string asmFullPath = null;
- string ifaceToDiscover = null;
-
- if (args.Length < 1 || args.Length > 3) {
- Usage();
- return;
- }
-
- for (int i = 0; i < args.Length; i++) {
- string arg = args[i];
-
- if (arg.StartsWith("-") && ((i + 1) < args.Length)) {
- if (arg == "--asm") {
- asmFullPath = args[++i];
- } else {
- Usage();
- return;
- }
- } else {
- // allow only one interface to discover
- if (ifaceToDiscover != null){
- Usage();
- return;
- }
- ifaceToDiscover = arg;
- }
- }
-
- // find the assembly
- if (null == asmFullPath){
- asm = Assembly.GetAssembly(typeof (System.Object));
- }
- else {
- try{
- asm = Assembly.LoadFrom(asmFullPath);
- }
- catch(Exception e){
- Console.WriteLine("Could not open assembly '{0}' for discovery. Error is: "+e.Message, asmFullPath);
- return;
- }
- }
- asmTypes = asm.GetTypes();
-
- // examine all the public types
- foreach(Type t in asmTypes) {
- if (t.IsPublic) {
- // find out which, if any, interfaces are "in" the type
- interfaces= t.GetInterfaces();
- if (null != interfaces){
- // look for the interface we want to discover
- foreach (Type iface in interfaces) {
- // this area seems to throw an exception sometimes, just ignore it
- try{
- if (iface.FullName.ToLower() == args[0].ToLower()) {
- // find out if this type is the one which "declares" the interface
- map = t.GetInterfaceMap(iface);
- if (map.TargetMethods[0].DeclaringType.FullName == t.FullName){
- // if so, then we found a class to report
- implementingTypes.Add(t.FullName);
- } // if
- } // if
- }catch{}
- } // foreach
- } // if
- } // if
- } // foreach
-
- // sort the list to make it easier to find what you are looking for
- implementingTypes.Sort();
- Console.WriteLine(XMLUtil.ToXML(implementingTypes, "Type", "ImplementingTypes"));
- } // Main()
-
- private static void Usage() {
- Console.WriteLine (
- "Mono Interface Discovery Tool\n" +
- "usage: ifacedisco [--asm assembly] interface\n\n" +
- " The full path to 'assembly' should be specified when using --asm.\n" +
- " If 'assembly' is not specified, the assembly that contains System.Object will be used.\n" +
- " Use the fully qualified form for 'interface', e.g. System.Runtime.Serialization.ISerializable\n"
- );
- } // Usage()
-
- } // class IFaceDisco
-} // namespace Mono.Util