public object Clone(SearchOperationType searchOperationType)
        {
            // clone the condition as we may need to set the parallelized flag for it, while the original must stay untouched
            object          ElementWithConditionCloned = Element is PatternCondition ? (Element as PatternCondition).Clone() : Element;
            SearchOperation so = new SearchOperation(searchOperationType, ElementWithConditionCloned, SourceSPNode, CostToEnd);

            so.Isomorphy          = (IsomorphyInformation)Isomorphy.Clone();
            so.ConnectednessCheck = (ConnectednessCheck)ConnectednessCheck.Clone();
            so.Storage            = Storage;
            so.StorageIndex       = StorageIndex;
            so.IndexAccess        = IndexAccess;
            so.NameLookup         = NameLookup;
            so.UniqueLookup       = UniqueLookup;
            so.Expression         = Expression;
            return(so);
        }
示例#2
0
        public Object Clone()
        {
            SearchOperation so = new SearchOperation(Type, Element, SourceSPNode, CostToEnd);

            so.Isomorphy    = (IsomorphyInformation)Isomorphy.Clone();
            so.Storage      = Storage;
            so.StorageIndex = StorageIndex;
            so.IndexAccess  = IndexAccess;
            so.NameLookup   = NameLookup;
            so.UniqueLookup = UniqueLookup;
            so.Expression   = Expression;
            if (so.Element is PatternCondition)
            {
                // clone the condition as we may need to set the parallelized flag for it, while the original must stay untouched
                so.Element = (so.Element as PatternCondition).Clone();
            }
            return(so);
        }