Beispiel #1
0
        public static VisitorTargetDetail DeriveFromMetadata(IMetadatum metadatum)
        {
            var derivedThroughInheriting = metadatum.NamedParameters.GetNamedParameter <string>("DerivedThroughInheriting");
            var targetContext            = metadatum.Parameters.GetIndexedParameter <string>(0);
            var yieldingVisitor          = metadatum.NamedParameters.GetNamedParameter <bool>("YieldingVisitor");
            var parameterlessName        = metadatum.NamedParameters.GetNamedParameter <string>("ParameterlessName");
            var contextualVisitor        = metadatum.NamedParameters.GetNamedParameter <bool>("ContextualVisitor");
            var typeParamVariations      = metadatum.Parameters.GetIndexedParameter <IType[]>(1);

            return(new VisitorTargetDetail
            {
                DerivedThroughInheriting = derivedThroughInheriting.IsEmpty
                                            ? null
                                            : derivedThroughInheriting.Value,
                TargetContext = targetContext.Value,
                ContextualVisitor = contextualVisitor.IsEmpty
                                            ? false
                                            : contextualVisitor.Value,
                YieldingVisitor = yieldingVisitor.IsEmpty
                                            ? false
                                            : yieldingVisitor.Value,
                ParameterlessName = parameterlessName.IsEmpty
                                            ? null
                                            : parameterlessName.Value,
                TypeParameterVariations = typeParamVariations.IsEmpty
                                            ? null
                                            : typeParamVariations.Value,
            });
        }
Beispiel #2
0
        public static VisitorImplementationTargetDetail DeriveFromMetadata(IMetadatum metadatum)
        {
            var targetContext        = metadatum.Parameters.GetIndexedParameter <string>(0);
            var yieldingVisitor      = metadatum.NamedParameters.GetNamedParameter <bool>("YieldingVisitor");
            var contextualVisitor    = metadatum.NamedParameters.GetNamedParameter <bool>("ContextualVisitor");
            var accessLevelModifiers = metadatum.NamedParameters.GetNamedParameter <int>("VisitRefactorAbstract");
            var @namespace           = metadatum.NamedParameters.GetNamedParameter <string>("Namespace");

            return(new VisitorImplementationTargetDetail
            {
                TargetContext = targetContext.Value,
                ContextualVisitor = contextualVisitor.IsEmpty
                                              ? false
                                              : contextualVisitor.Value,
                YieldingVisitor = yieldingVisitor.IsEmpty
                                              ? false
                                              : yieldingVisitor.Value,
                Namespace = @namespace.IsEmpty
                                              ? null
                                              : @namespace.Value,
                AccessLevelModifiers = accessLevelModifiers.IsEmpty
                                                ? AccessLevelModifiers.Public
                                                : (AccessLevelModifiers)accessLevelModifiers.Value,
            });
        }
Beispiel #3
0
        public static VisitorImplementationActionDetail DeriveFromMetadata(IMetadatum metadatum)
        {
            var targetContext      = metadatum.Parameters.GetIndexedParameter <string>(0);
            var targetType         = metadatum.Parameters.GetIndexedParameter <IType> (1);
            var targetAction       = metadatum.Parameters.GetIndexedParameter <string>(2);
            var targetPluralAction = metadatum.Parameters.GetIndexedParameter <string>(3);
            var contextualVisitor  = metadatum.NamedParameters.GetNamedParameter <bool>     ("ContextualVisitor");
            var yieldingVisitor    = metadatum.NamedParameters.GetNamedParameter <bool>     ("YieldingVisitor");
            var contextType        = metadatum.NamedParameters.GetNamedParameter <IType>    ("TContext");
            var resultType         = metadatum.NamedParameters.GetNamedParameter <IType>    ("TResult");

            return(new VisitorImplementationActionDetail
            {
                TargetAction = !targetAction.IsEmpty
                                              ? targetAction.Value
                                              : null,
                TargetType = !targetType.IsEmpty
                                              ? targetType.Value
                                              : null,
                TargetContext = !targetContext.IsEmpty
                                              ? targetContext.Value
                                              : null,
                TargetPluralAction = !targetPluralAction.IsEmpty
                                              ? targetPluralAction.Value
                                              : null,
                ContextualVisitor = contextualVisitor.IsEmpty
                                              ? false
                                              : contextualVisitor.Value,
                YieldingVisitor = yieldingVisitor.IsEmpty
                                              ? false
                                              : yieldingVisitor.Value,
            });
        }
 public bool Contains(IMetadatum item)
 {
     foreach (var _item in Parent.Metadata.Flatten())
     {
         if (_item == item)
         {
             return(true);
         }
     }
     return(false);
 }
Beispiel #5
0
 public IEnumerator <IMetadatum> GetEnumerator()
 {
     for (int metadatumIndex = 0; metadatumIndex < this.Count; metadatumIndex++)
     {
         IMetadatum current = null;
         lock (syncObject)
         {
             this.CheckItemAt(metadatumIndex);
             current = this.metadataSet[metadatumIndex];
         }
         yield return(current);
     }
 }
Beispiel #6
0
 public int IndexOf(IMetadatum element)
 {
     lock (syncObject)
     {
         for (int metadatumIndex = 0; metadatumIndex < this.Count; metadatumIndex++)
         {
             if (this.metadataSet[metadatumIndex] == element)
             {
                 return(metadatumIndex);
             }
         }
     }
     return(-1);
 }
            public IMetadatum[] ToArray()
            {
                IMetadatum[] result = new IMetadatum[this.Count];
                int          i      = 0;

                foreach (var definitions in this.Parent.Metadata)
                {
                    foreach (var definition in definitions)
                    {
                        result[i++] = definition;
                    }
                }
                return(result);
            }
            public int IndexOf(IMetadatum element)
            {
                int index = 0;

                foreach (var _item in Parent.Metadata.Flatten())
                {
                    if (_item == element)
                    {
                        return(index);
                    }
                    else
                    {
                        index++;
                    }
                }
                return(-1);
            }
Beispiel #9
0
        public static VisitorImplementationInheritanceDetail DeriveFromMetadata(IMetadatum metadatum)
        {
            var targetContext         = metadatum.Parameters.GetIndexedParameter <string> (0);
            var contextualVisitor     = metadatum.NamedParameters.GetNamedParameter <bool>     ("ContextualVisitor");
            var yieldingVisitor       = metadatum.NamedParameters.GetNamedParameter <bool>     ("YieldingVisitor");
            var contextType           = metadatum.NamedParameters.GetNamedParameter <IType>    ("TContext");
            var resultType            = metadatum.NamedParameters.GetNamedParameter <IType>    ("TResult");
            var inheritedVisitors     = metadatum.NamedParameters.GetNamedParameter <string[]> ("InheritedVisitors");
            var visitRefactorName     = metadatum.NamedParameters.GetNamedParameter <string>   ("VisitRefactorName");
            var visitRefactorAbstract = metadatum.NamedParameters.GetNamedParameter <bool>     ("VisitRefactorAbstract");
            var visitorBuilderHandler = metadatum.NamedParameters.GetNamedParameter <IType>    ("VisitorBuilderHandler");

            return(new VisitorImplementationInheritanceDetail
            {
                TargetContext = !targetContext.IsEmpty
                                              ? targetContext.Value
                                              : null,
                ContextualVisitor = contextualVisitor.IsEmpty
                                              ? false
                                              : contextualVisitor.Value,
                YieldingVisitor = yieldingVisitor.IsEmpty
                                              ? false
                                              : yieldingVisitor.Value,
                VisitRefactorName = visitRefactorName.IsEmpty
                                              ? null
                                              : visitRefactorName.Value,
                VisitRefactorAbstract = visitRefactorAbstract.IsEmpty
                                              ? false
                                              : visitRefactorAbstract.Value,
                InheritedVisitors = inheritedVisitors.IsEmpty
                                              ? null
                                              : inheritedVisitors.Value,
                TContext = contextType.IsEmpty
                                              ? null
                                              : contextType.Value,
                TResult = resultType.IsEmpty
                                              ? null
                                              : resultType.Value,
                VisitorBuilderHandler = visitorBuilderHandler.IsEmpty
                                              ? null
                                              : visitorBuilderHandler.Value,
            });
        }
Beispiel #10
0
 public IMetadatum this[IType metadatumType]
 {
     get
     {
         IMetadatum closeMatch = null;
         for (int metadatumIndex = 0; metadatumIndex < this.Count; metadatumIndex++)
         {
             lock (syncObject)
             {
                 this.CheckItemAt(metadatumIndex);
                 var currentType = this.metadataSet[metadatumIndex].Type;
                 if (currentType == metadatumType)
                 {
                     return(this.metadataSet[metadatumIndex]);
                 }
                 else if (closeMatch == null && metadatumType.IsAssignableFrom(currentType))
                 {
                     closeMatch = this.metadataSet[metadatumIndex];
                 }
             }
         }
         return(closeMatch);
     }
 }
Beispiel #11
0
 public IMetadatum[] ToArray()
 {
     IMetadatum[] result = new IMetadatum[this.Count];
     this.CopyTo(result);
     return(result);
 }
Beispiel #12
0
 public bool Contains(IMetadatum item)
 {
     lock (syncObject)
         return(this.metadataSet.Contains(item));
 }