singrdk/base/Kernel/SingSharp.Runtime/Reflection/Attributes.cs

119 lines
2.8 KiB
C#

///////////////////////////////////////////////////////////////////////////////
//
// Microsoft Research Singularity
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
using System;
namespace Microsoft.SingSharp.Reflection{
public class AttributePatternAttribute : Attribute {
Object type;
public Object Type {
get { return type; }
set { type = value; }
}
object[] expressions;
public object[] Expressions{
get { return expressions; }
set { expressions = value; }
}
}
public class ForAllStatementIndex : Attribute {
public ForAllStatementIndex(int index) {}
}
public class ForAllSummaryAttribute : Attribute {
public ForAllSummaryAttribute(string summary){}
}
public class ReflectionAttribute : Attribute {
public enum Type {
None,
Index,
IndexMap,
Generate,
Implement,
Container,
NodeMap,
Pattern,
Subtype,
Shadow,
Reflective,
ExpressionBinding,
Scope,
}
public ReflectionAttribute(Type type){}
uint flags;
public uint Flags {
get {return flags; }
set {flags = value; }
}
}
#region parameter attributes
[AttributeUsage(AttributeTargets.Parameter)]
public class ParameterPatternAttribute : Attribute {
string type;
public string Type{
get {return type; }
set {type = value; }
}
bool typeIsVariable;
public bool TypeIsVariable {
get {return typeIsVariable; }
set {typeIsVariable = value; }
}
}
[AttributeUsage(AttributeTargets.Parameter)]
public class StarParameterPatternAttribute : ParameterPatternAttribute {}
#endregion
[AttributeUsage(AttributeTargets.Module | AttributeTargets.Assembly,
AllowMultiple=true)]
public class TransformAttribute : Attribute {
public Type Transform;
public TransformAttribute(Type transformToRun) {
this.Transform = transformToRun;
}
string[] namespaces;
public string[] Namespaces {
get { return namespaces; }
set { namespaces = value; }
}
string [] files;
public string[] Files {
get { return files; }
set { files = value; }
}
Type[] types;
public Type[] Types {
get { return types; }
set { types = Types; }
}
}
}
#if CCINamespace
namespace Microsoft.Cci.TypeExtensions {
#else
namespace System.Compiler.TypeExtensions {
#endif
public interface IReflectionTransform {}
// scope pattern
public interface IReflectionScopePattern { }
// end scope pattern
public interface IReflectionContainer {}
public interface IReflectionTypeVariable {}
}