Beispiel #1
0
        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);
        }
Beispiel #2
0
 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);
         }
     }
 }
Beispiel #3
0
        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);
        }