import {Base} from '../lang/Base';
import {AnnotationEnum} from './AnnotationEnum';
import {Class} from './Class';
//============================================================
// 描述类。
//
// @property
// @param name:String 名称
// @author maocy
// @version 150104
//============================================================
export class Annotation extends Base {
// 类对象
public clazz: Class;
// 描述器类型
protected _annotationCd: AnnotationEnum;
// 名称
protected _name: string;
// 内容
protected _value: any;
// 可继承
protected _inherit: boolean;
// 可重复
protected _duplicate: boolean;
// 可有序
protected _ordered: boolean;
//============================================================
// 构造处理。
//
// @param name 名称
//============================================================
public constructor(name: string) {
super();
// 设置属性
this._name = name;
}
//============================================================
// 获得描述类型。
//
// @return 描述类型
//============================================================
public get annotationCd(): AnnotationEnum {
return this._annotationCd;
}
//============================================================
// 获得名称。
//
// @return 名称
//============================================================
public get name(): string {
return this._name;
}
//============================================================
// 获得代码。
//
// @return 代码
//============================================================
public get code(): string {
return this._name;
}
//==========================================================
// 获得内容。
//
// @return 内容
//==========================================================
public get value() {
return this._value;
}
//============================================================
// 判断是否允许继承。
//
// @return 是否允许继承
//============================================================
public isInherit(): boolean {
return this._inherit;
}
//============================================================
// 判断是否允许重复。
//
// @return 是否允许重复
//============================================================
public isDuplicate(): boolean {
return this._duplicate;
}
//============================================================
// 判断是否允许有序。
//
// @return 是否允许有序
//============================================================
public isOrdered(): boolean {
return this._ordered;
}
//============================================================
// 接收处理。
//
// @param annotation 描述器
//============================================================
public assign(annotation: Annotation) {
this._name = annotation._name;
this._value = annotation._value;
}
}