static int Main(string[] args)
    {
        string testname;
        string typename;

        TypeMapEntry[] types = typemap;
        TestMapEntry[] tests = testmap;

        filename = "test.il";

        foreach (string a in args)
        {
            int len = a.Length;
            if (len >= 2 && (a[0] == '/' || a[0] == '-'))
            {
                switch (Char.ToUpper(a[1]))
                {
                case 'I':
                    testname = a.Substring(3);
                    if (testname != "*")
                    {
                        tests = new TestMapEntry[1];
                        try { tests[0] = LookupTest(testname); }
                        catch (NotFound) { Console.WriteLine("No such test: " + testname); return(1); }
                    }
                    break;

                case 'T':
                    typename = a.Substring(3);
                    if (typename != "*")
                    {
                        types = new TypeMapEntry[1];
                        try { types[0] = LookupType(typename); }
                        catch (NotFound) { Console.WriteLine("No such type: " + typename); return(1); }
                    }
                    break;

                case 'F':
                    filename = a.Substring(3);
                    break;

                case 'X':
                    System.AppDomain.CurrentDomain.ExecuteAssembly("ilasm");
                    break;

                case '?':
                    Usage();
                    return(0);
                }
            }
        }

        FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None);

        outstream = new StreamWriter(fs);

        Console.Write("Generating IL to " + filename + "...");
        EmitHeader();

        foreach (TestMapEntry test in tests)
        {
            EmitPrintString("********************************* " + test.description + " *************************\\n");
            foreach (TypeMapEntry type in types)
            {
                EmitPrintString("  on type " + type.ty + ": ");
                test.emitter(type);
            }
        }


        EmitFooter();
        outstream.Close();
        Console.Write("done.\n");
        return(0);
    }
static int Main(string[] args)
{
  string testname;
  string typename;
  TypeMapEntry[] types = typemap;
  TestMapEntry[] tests = testmap;

  filename = "test.il";

  foreach (string a in args)
  {
    int len = a.Length;
    if (len >= 2 && (a[0] == '/' || a[0] == '-')) 
    {
      switch (Char.ToUpper(a[1])) 
      {
	case 'I':
          testname = a.Substring(3);
          if (testname != "*")          
          {
            tests = new TestMapEntry[1];
            try { tests[0] = LookupTest(testname); } 
            catch (NotFound) { Console.WriteLine("No such test: " + testname); return 1; }
          }
          break;
        case 'T':
          typename = a.Substring(3);
          if (typename != "*")
          {
            types = new TypeMapEntry[1];
            try { types[0] = LookupType(typename); }
            catch (NotFound) { Console.WriteLine("No such type: " + typename); return 1; }
          }
          break;
        case 'F':
          filename = a.Substring(3);
          break;
        case 'X':
          System.AppDomain.CurrentDomain.ExecuteAssembly("ilasm");
          break;
        case '?':
          Usage();
          return 0;
      }
    }
  }

  FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None);
  outstream = new StreamWriter(fs);

  Console.Write("Generating IL to " + filename + "...");
  EmitHeader();

  foreach (TestMapEntry test in tests)  
  {
    EmitPrintString("********************************* " + test.description + " *************************\\n");
    foreach (TypeMapEntry type in types)
    {
      EmitPrintString("  on type " + type.ty + ": ");
      test.emitter(type);
    }
  }


  EmitFooter();
  outstream.Close();
  Console.Write("done.\n");
  return 0;
}