6bdd276d05
Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
158 lines
4.8 KiB
C#
158 lines
4.8 KiB
C#
//
|
|
// Mono.ILASM.Report
|
|
//
|
|
// Author(s):
|
|
// Jackson Harper (Jackson@LatitudeGeo.com)
|
|
//
|
|
// (C) 2003 Jackson Harper, All rights reserved
|
|
//
|
|
|
|
|
|
using System;
|
|
using System.IO;
|
|
|
|
namespace Mono.ILASM {
|
|
|
|
public abstract class Report {
|
|
|
|
private static int error_count;
|
|
private static bool quiet;
|
|
/* Current file being processed */
|
|
private static string file_path;
|
|
|
|
static Report ()
|
|
{
|
|
error_count = 0;
|
|
quiet = false;
|
|
}
|
|
|
|
public static int ErrorCount {
|
|
get { return error_count; }
|
|
}
|
|
|
|
public static bool Quiet {
|
|
get { return quiet; }
|
|
set { quiet = value; }
|
|
}
|
|
|
|
public static string FilePath {
|
|
get { return file_path; }
|
|
set { file_path = value; }
|
|
}
|
|
|
|
public static void AssembleFile (string file, string listing,
|
|
string target, string output)
|
|
{
|
|
if (quiet)
|
|
return;
|
|
Console.WriteLine ("Assembling '{0}' , {1}, to {2} --> '{3}'", file,
|
|
GetListing (listing), target, output);
|
|
Console.WriteLine ();
|
|
}
|
|
|
|
public static void Error (string message)
|
|
{
|
|
Error (null, message);
|
|
}
|
|
|
|
public static void Error (Location location, string message)
|
|
{
|
|
error_count++;
|
|
throw new ILAsmException (file_path, location, message);
|
|
}
|
|
|
|
public static void Warning (string message)
|
|
{
|
|
Warning (null, message);
|
|
}
|
|
|
|
public static void Warning (Location location, string message)
|
|
{
|
|
string location_str = " : ";
|
|
if (location != null)
|
|
location_str = " (" + location.line + ", " + location.column + ") : ";
|
|
|
|
Console.Error.WriteLine (String.Format ("{0}{1}Warning -- {2}",
|
|
(file_path != null ? file_path : ""), location_str, message));
|
|
}
|
|
|
|
public static void Message (string message)
|
|
{
|
|
if (quiet)
|
|
return;
|
|
Console.WriteLine (message);
|
|
}
|
|
|
|
private static string GetListing (string listing)
|
|
{
|
|
if (listing == null)
|
|
return "no listing file";
|
|
return listing;
|
|
}
|
|
|
|
}
|
|
|
|
public class ILAsmException : Exception {
|
|
|
|
string message;
|
|
string file_path;
|
|
Location location;
|
|
|
|
public ILAsmException (string file_path, Location location, string message)
|
|
{
|
|
this.file_path = file_path;
|
|
this.location = location;
|
|
this.message = message;
|
|
}
|
|
|
|
public ILAsmException (Location location, string message)
|
|
: this (null, location, message)
|
|
{
|
|
}
|
|
|
|
public ILAsmException (string message)
|
|
: this (null, null, message)
|
|
{
|
|
}
|
|
|
|
public override string Message {
|
|
get { return message; }
|
|
}
|
|
|
|
public Location Location {
|
|
get { return location; }
|
|
set { location = value; }
|
|
}
|
|
|
|
public string FilePath {
|
|
get { return file_path; }
|
|
set { file_path = value; }
|
|
}
|
|
|
|
public override string ToString ()
|
|
{
|
|
string location_str = " : ";
|
|
if (location != null)
|
|
location_str = " (" + location.line + ", " + location.column + ") : ";
|
|
|
|
return String.Format ("{0}{1}Error : {2}",
|
|
(file_path != null ? file_path : ""), location_str, message);
|
|
}
|
|
|
|
}
|
|
|
|
public class InternalErrorException : Exception {
|
|
public InternalErrorException ()
|
|
: base ("Internal error")
|
|
{
|
|
}
|
|
|
|
public InternalErrorException (string message)
|
|
: base (message)
|
|
{
|
|
}
|
|
}
|
|
|
|
}
|
|
|