#region License Information /* HeuristicLab * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL) * * This file is part of HeuristicLab. * * HeuristicLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * HeuristicLab is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HeuristicLab. If not, see . */ #endregion using System; namespace HeuristicLab.Grammars { public sealed class AttributeType { public static readonly AttributeType In = new AttributeType(""); public static readonly AttributeType Out = new AttributeType("out"); public static readonly AttributeType Ref = new AttributeType("ref"); private string attributeType; private AttributeType(string attributeType) { this.attributeType = attributeType; } public static AttributeType Parse(string attributeType) { if (string.IsNullOrEmpty(attributeType)) return In; else if (attributeType == "ref") return Ref; else if (attributeType == "out") return Out; else throw new ArgumentException("Unknown attribute type string.", attributeType); } public override string ToString() { return attributeType; } }; public class Attribute : IAttribute { public AttributeType AttributeType { get; private set; } public string Type { get; private set; } public string Name { get; private set; } public Attribute(string name, string type) : this(name, type, AttributeType.In) { } public Attribute(string name, string type, AttributeType attributeType) { this.Name = name; this.Type = type; this.AttributeType = attributeType; } public override string ToString() { return AttributeType + " " + Type + " " + Name; } } }