64 lines
1.4 KiB
C#
64 lines
1.4 KiB
C#
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
|
||
|
using System;
|
||
|
using System.Collections;
|
||
|
using System.IO;
|
||
|
|
||
|
namespace Bartok.MSIL
|
||
|
{
|
||
|
|
||
|
public abstract class MetaDataObject {
|
||
|
|
||
|
// This class's primary reason for existence is its place in the
|
||
|
// class hierarchy.
|
||
|
|
||
|
// Convenient place to store CustomAttribute information
|
||
|
|
||
|
public ArrayList CustomAttributes {
|
||
|
get { return this.customAttributes; }
|
||
|
}
|
||
|
|
||
|
internal void AddCustomAttribute(MetaDataCustomAttribute ca) {
|
||
|
if (this.customAttributes == null) {
|
||
|
this.customAttributes = new ArrayList(2);
|
||
|
}
|
||
|
this.customAttributes.Add(ca);
|
||
|
}
|
||
|
|
||
|
#region SyncBlockHack
|
||
|
// Equality methods
|
||
|
|
||
|
public override bool Equals(Object o) {
|
||
|
return this == o;
|
||
|
}
|
||
|
|
||
|
public override int GetHashCode() {
|
||
|
if (hash == 0) {
|
||
|
if (nextHash == 0) {
|
||
|
nextHash++;
|
||
|
}
|
||
|
hash = nextHash++;
|
||
|
}
|
||
|
return hash;
|
||
|
}
|
||
|
#endregion
|
||
|
|
||
|
// Debug Methods
|
||
|
|
||
|
public virtual String ToStringLong() {
|
||
|
return this.ToString();
|
||
|
}
|
||
|
|
||
|
// Fields
|
||
|
|
||
|
private ArrayList customAttributes;
|
||
|
#region SyncBlockHack
|
||
|
private int hash;
|
||
|
private static int nextHash;
|
||
|
#endregion
|
||
|
}
|
||
|
|
||
|
}
|