protected void Generate() { foreach (MType mtype in kp.Types) { mtype.Id = tId++; mtypeIds.Add(mtype.Id, mtype); foreach (MInstance instance in mtype.Instances) { instance.Id = iId++; instanceIds.Add(instance.Id, instance); } ExecutionStrategy ex = mtype.ExecutionStrategy; while (ex != null) { foreach (Rule r in ex.Rules) { r.Id = rId++; ruleIds.Add(r.Id, r); } ex = ex.Next; } } }
public string ToString(bool generateIds = false) { string nl = System.Environment.NewLine; if (generateIds) { new KpIdMap(this); } StringBuilder buf = new StringBuilder(); buf.AppendFormat("kP system #{0}", Id); if (HasName()) { buf.AppendFormat(". {0}", Name); } buf.AppendLine(); if (HasDescription()) { buf.AppendFormat("* {0} *", Description); buf.AppendLine(nl); } foreach (MType mt in Types) { buf.AppendLine().AppendFormat("Type {0}", mt.Name); buf.AppendLine(); foreach (MInstance instance in mt.Instances) { buf.AppendFormat("- Instance #{0}{1}: {{", instance.Id, (instance.HasName() ? "<" + instance.Name + ">" : "")); foreach (KeyValuePair <string, int> kv in instance.Multiset) { buf.AppendFormat("{0}{1} ", (kv.Value == 1 ? "" : kv.Value.ToString()), kv.Key); } buf.Replace(" ", "", buf.Length - 1, 1).AppendLine("}"); if (instance.Connections.Count > 0) { buf.Append(" - Connections: "); foreach (MInstance connection in instance.Connections) { buf.AppendFormat("#{0}{1}, ", connection.Id, (connection.HasName() ? "<" + connection.Name + ">" : "")); } buf.Replace(", ", "", buf.Length - 2, 2).AppendLine(); } } ExecutionStrategy ex = mt.ExecutionStrategy; while (ex != null) { //print Rules ex = ex.Next; } } return(buf.ToString()); }
public ExecutionStrategy(StrategyOperator op, params Rule[] rs) { rules = new List <Rule>(); if (rules != null) { rules.AddRange(rs); } Operator = op; next = null; }
public ExecutionStrategy Append(ExecutionStrategy ex) { if (ex == null) { return(this); } ExecutionStrategy es = this; while (es.Next != null) { es = es.Next; } es.Next = ex; return(ex); }
public MType Append(MType mtype) { foreach (MInstance instance in mtype.Instances) { instances.Add(instance); } if (strategy.IsEmpty()) { strategy = mtype.ExecutionStrategy; } else { strategy.Next = mtype.ExecutionStrategy; } return(this); }
public bool IsEmpty() { if (rules.Count > 0) { return(false); } else { ExecutionStrategy x = Next; while (x != null) { if (x.Rules.Count != 0) { return(false); } x = x.Next; } } return(true); }
public MType(string typeName, string description) : base(typeName, description) { instances = new List <MInstance>(); strategy = new ExecutionStrategy(); }