singrdk/base/Windows/mkmsil/msil/MetaDataFile.cs

84 lines
2.0 KiB
C#

//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
using System;
namespace Bartok.MSIL
{
public class MetaDataFile: MetaDataObject {
// Constructor Methods
internal MetaDataFile(int flags, String name, byte[] hashValue) {
this.flags = flags;
this.name = name;
this.hashValue = hashValue;
}
// Access Methods
// Bitmask described by FileAttributes
public int Flags {
get {
return this.flags;
}
}
public String Name {
get {
return this.name;
}
}
public byte[] HashValue {
get {
return this.hashValue;
}
}
// Debug Methods
public override String ToString() {
return "MetaDataFile("+this.name+")";
}
public override String ToStringLong() {
System.Text.StringBuilder sb =
new System.Text.StringBuilder("MetaDataFile(");
sb.Append(this.flags.ToString("x"));
sb.Append(",");
sb.Append(this.name);
sb.Append(",[");
int count = this.hashValue.Length;
if (count > 0) {
sb.Append("0x");
sb.Append(this.hashValue[0].ToString("x2"));
for (int i = 1; i < this.hashValue.Length; i++) {
sb.Append(",0x");
sb.Append(this.hashValue[i].ToString("x2"));
}
}
sb.Append("])");
return sb.ToString();
}
// State
private readonly int flags;
private readonly String name;
private readonly byte[] hashValue;
// Internal Classes
// Section 22.1.4 of ECMA spec, Section II
public enum FileAttributes {
ContainsMetaData = 0x0000, // This is not a resource file,
ContainsNoMetaData = 0x0001 // This is a resource file or other non-metadata-containing file
}
}
}