public bool RegisterType(Classifier type) { if (type == null) { throw new NullReferenceException("Type is null."); } TypeRecord newTypeRecord = CreateTypeRecord(type); if (newTypeRecord == null) { return(false); } CreateEdgeForRecord(newTypeRecord); if (Library.DefaultLazyOperation != null) { Library.DefaultLazyOperation(type); } return(true); }
private void CreateEdgeForRecord(TypeRecord rec) { foreach (TypeRecord old in matrix) { if (rec.Type.ConformsToRegister(old.Type)) { rec.EdgesIndex.Add(old.MatrixIndex); } if (old.Type.ConformsToRegister(rec.Type)) { old.EdgesIndex.Add(rec.MatrixIndex); } } }
private TypeRecord CreateTypeRecord(Classifier type) { if (table.ContainsKey(type)) { return(null); } TypeRecord newTypeRecord = new TypeRecord(); newTypeRecord.Type = type; newTypeRecord.MatrixIndex = matrix.Count; matrix.Add(newTypeRecord); table.Add(type, newTypeRecord); return(newTypeRecord); }