Ejemplo n.º 1
0
        protected override int?GetChildrenPriority(IUnparser unparser, object astValue, Unparser.Children children, Unparser.Direction direction)
        {
            UnparsableAst mainChild = children.Single(childValue => IsMainChild(childValue.BnfTerm));

            if (astValue.GetType() == this.domainType)
            {
                return(unparser.GetPriority(mainChild));
            }
            else
            {
                IBnfiTerm mainChildWithDomainType = mainChild.BnfTerm as IBnfiTerm;

                if (mainChildWithDomainType == null || mainChildWithDomainType.DomainType == null)
                {
                    throw new UnparseException(string.Format("Cannot unparse '{0}' (type: '{1}'). BnfTerm '{2}' is not an IBnfiTerm or it has no domain type.",
                                                             astValue, astValue.GetType().Name, mainChild.BnfTerm));
                }

                int?priority = mainChildWithDomainType.DomainType == typeof(object)
                    ? int.MinValue
                    : 0 - mainChildWithDomainType.DomainType.GetInheritanceDistance(astValue);

                Unparser.tsPriorities.Indent();
                priority.DebugWriteLinePriority(Unparser.tsPriorities, mainChild);
                Unparser.tsPriorities.Unindent();

                return(priority);
            }
        }
Ejemplo n.º 2
0
 public static BnfiTermConversion <TDOut> ConvertOptRef <TDIn, TDOut>(IBnfiTerm <TDIn> bnfiTerm, ValueConverter <TDIn, TDOut> valueConverter,
                                                                      ValueConverter <TDOut, TDIn> inverseValueConverterForUnparse, TDOut defaultValue)
     where TDIn : class
     where TDOut : class
 {
     return(ConvertOpt(bnfiTerm, valueConverter, inverseValueConverterForUnparse, defaultValue));
 }
Ejemplo n.º 3
0
 public static BnfiTermConversion <TDOut> ConvertOptVal <TDIn, TDOut>(IBnfiTerm <TDIn> bnfiTerm, ValueConverter <TDIn, TDOut> valueConverter,
                                                                      ValueConverter <TDOut, TDIn> inverseValueConverterForUnparse, TDOut defaultValue)
     where TDIn : struct
     where TDOut : struct
 {
     return(ConvertOpt <TDIn, TDOut>(bnfiTerm, valueConverter, inverseValueConverterForUnparse, defaultValue));
 }
Ejemplo n.º 4
0
 public static BnfiTermConversion <TDOut> Convert <TDIn, TDOut>(IBnfiTerm <TDIn> bnfiTerm, ValueConverter <TDIn, TDOut> valueConverter, ValueConverter <TDOut, TDIn> inverseValueConverterForUnparse)
 {
     return(new BnfiTermConversion <TDOut>(
                bnfiTerm.AsBnfTerm(),
                ConvertValueConverterToValueIntroducer(valueConverter),
                CastValueConverter <TDOut, TDIn, TDOut, object>(inverseValueConverterForUnparse),
                defaultValue: default(TDOut),
                isOptionalValue: false,
                name: typeof(TDIn).Name.ToLower() + "_convertTo_" + typeof(TDOut).Name.ToLower(),
                astForChild: true
                ));
 }
Ejemplo n.º 5
0
 public static MemberTL Bind <TMemberType, TValueType>(Expression <Func <TMemberType> > exprForFieldOrPropertyAccess, IBnfiTerm <TValueType> bnfiTerm)
     where TValueType : TMemberType
 {
     return(Bind(exprForFieldOrPropertyAccess, bnfiTerm.AsBnfTerm()));
 }
Ejemplo n.º 6
0
 public static BnfiTermConversion <TDOut> Cast <TDIn, TDOut>(this IBnfiTerm <TDIn> bnfTerm, IBnfiTerm <TDOut> dummyBnfTerm)
 {
     return(BnfiTermConversion.Cast <TDIn, TDOut>(bnfTerm));
 }
Ejemplo n.º 7
0
 public static BnfiTermConversion <TDOut> Cast <TDIn, TDOut>(IBnfiTerm <TDIn> bnfTerm)
 {
     return(Convert(bnfTerm, IdentityFunctionForceCast <TDIn, TDOut>, IdentityFunctionForceCast <TDOut, TDIn>));
 }
Ejemplo n.º 8
0
 public static BnfiTermConversion <TDOut> ConvertValue <TDIn, TDOut>(this IBnfiTerm <TDIn> bnfiTerm, ValueConverter <TDIn, TDOut> valueConverter,
                                                                     ValueConverter <TDOut, TDIn> inverseValueConverterForUnparse)
 {
     return(BnfiTermConversion.Convert(bnfiTerm, valueConverter, inverseValueConverterForUnparse));
 }
Ejemplo n.º 9
0
 public static BnfiTermConversion <TDOut> ConvertOptRef <TDIn, TDOut>(IBnfiTerm <TDIn> bnfiTerm, ValueConverter <TDIn, TDOut> valueConverter, TDOut defaultValue)
     where TDIn : class
     where TDOut : class
 {
     return(ConvertOptRef <TDIn, TDOut>(bnfiTerm, valueConverter, NoUnparseByInverse <TDOut, TDIn>(), defaultValue));
 }
Ejemplo n.º 10
0
 public static BnfiTermCopy <TDerived> Copy <TBase, TDerived>(IBnfiTermCopyable <TBase> bnfiTerm, IBnfiTerm <TDerived> dummyBnfiTerm)
     where TDerived : TBase
 {
     return(Copy <TBase, TDerived>(bnfiTerm));
 }
Ejemplo n.º 11
0
 public static BnfiTermCollection <List <TElementType>, TElementType> PlusList <TElementType>(IBnfiTerm <TElementType> bnfTermElement, BnfTerm delimiter = null)
 {
     return(PlusList <List <TElementType>, TElementType>(bnfTermElement, delimiter));
 }
Ejemplo n.º 12
0
 public static Member <TDeclaringType> Bind <TDeclaringType, TMemberElementType, TValueElementType>(IBnfiTerm <TDeclaringType> dummyBnfiTerm,
                                                                                                    Expression <Func <TDeclaringType, IList <TMemberElementType> > > exprForFieldOrPropertyAccess, IBnfiTerm <IEnumerable <TValueElementType> > bnfiTerm)
     where TValueElementType : TMemberElementType
 {
     return(Bind(exprForFieldOrPropertyAccess, bnfiTerm.AsBnfTerm()));
 }
Ejemplo n.º 13
0
 public static BnfiTermConversion <T?> QVal <T>(this IBnfiTerm <T> bnfTerm)
     where T : struct
 {
     return(BnfiTermConversion.ConvertOptVal(bnfTerm));
 }
Ejemplo n.º 14
0
 public static BnfiTermConversion <TDOut> Convert <TDIn, TDOut>(IBnfiTerm <TDIn> bnfiTerm, ValueConverter <TDIn, TDOut> valueConverter)
 {
     return(Convert <TDIn, TDOut>(bnfiTerm, valueConverter, NoUnparseByInverse <TDOut, TDIn>()));
 }
Ejemplo n.º 15
0
 public static MemberTL Bind <TMemberElementType, TValueElementType>(Expression <Func <IList <TMemberElementType> > > exprForFieldOrPropertyAccess,
                                                                     IBnfiTerm <IEnumerable <TValueElementType> > bnfiTerm)
     where TValueElementType : TMemberElementType
 {
     return(Bind(exprForFieldOrPropertyAccess, bnfiTerm.AsBnfTerm()));
 }
Ejemplo n.º 16
0
 public static BnfiTermCollection <TCollectionType, TElementType> PlusList <TCollectionType, TElementType>(this IBnfiTerm <TElementType> bnfTermElement, BnfTerm delimiter = null)
     where TCollectionType : ICollection <TElementType>, new()
 {
     return(BnfiTermCollection.PlusList <TCollectionType, TElementType>(bnfTermElement, delimiter));
 }
Ejemplo n.º 17
0
 public static BnfiTermCollection <List <TElementType>, TElementType> StarList <TElementType>(this IBnfiTerm <TElementType> bnfTermElement, BnfTerm delimiter = null)
 {
     return(BnfiTermCollection.StarList(bnfTermElement, delimiter));
 }
Ejemplo n.º 18
0
 public static BnfiTermConversion <T> QRef <T>(this IBnfiTerm <T> bnfTerm, T defaultValue)
     where T : class
 {
     return(BnfiTermConversion.ConvertOptRef(bnfTerm, defaultValue));
 }
Ejemplo n.º 19
0
 public static BnfiTermConversion <T> QVal <T>(this IBnfiTerm <T> bnfTerm, T defaultValue)
     where T : struct
 {
     return(BnfiTermConversion.ConvertOptVal(bnfTerm, defaultValue));
 }
Ejemplo n.º 20
0
 public static BnfiTermConversion <T> QRef <T>(this IBnfiTerm <T> bnfTerm)
     where T : class
 {
     return(BnfiTermConversion.ConvertOptRef(bnfTerm));
 }
Ejemplo n.º 21
0
 public static Member <TDeclaringType> Bind <TDeclaringType, TMemberType, TValueType>(IBnfiTerm <TDeclaringType> dummyBnfiTerm,
                                                                                      Expression <Func <TDeclaringType, TMemberType> > exprForFieldOrPropertyAccess, IBnfiTerm <TValueType> bnfiTerm)
     where TValueType : TMemberType
 {
     return(Bind(exprForFieldOrPropertyAccess, bnfiTerm));
 }
Ejemplo n.º 22
0
 public static BnfiTermConversion <TDOut?> ConvertOptVal <TDIn, TDOut>(IBnfiTerm <TDIn> bnfTerm, ValueConverter <TDIn, TDOut> valueConverter)
     where TDIn : struct
     where TDOut : struct
 {
     return(ConvertOptVal <TDIn, TDOut>(bnfTerm, valueConverter, NoUnparseByInverse <TDOut, TDIn>()));
 }
Ejemplo n.º 23
0
 public static Member <TDeclaringType> Bind <TDeclaringType, TMemberType>(Expression <Func <TDeclaringType, TMemberType> > exprForFieldOrPropertyAccess,
                                                                          IBnfiTerm <TDeclaringType> dummyBnfiTerm, IBnfiTermTL bnfiTerm)
 {
     return(Bind(exprForFieldOrPropertyAccess, bnfiTerm.AsBnfTerm()));
 }
Ejemplo n.º 24
0
 public static BnfiTermConversion <TDOut?> ConvertOptVal <TDIn, TDOut>(IBnfiTerm <TDIn> bnfTerm, ValueConverter <TDIn, TDOut> valueConverter, ValueConverter <TDOut, TDIn> inverseValueConverterForUnparse)
     where TDIn : struct
     where TDOut : struct
 {
     return(ConvertOpt <TDIn, TDOut?>(bnfTerm, value => valueConverter(value), value => inverseValueConverterForUnparse(value.Value)));
 }
Ejemplo n.º 25
0
 public static BnfiTermCollection <TCollectionType, TElementType> MakeStarRule <TCollectionType, TElementType>(BnfiTermCollection <TCollectionType, TElementType> bnfiTermCollection, BnfTerm delimiter, IBnfiTerm <TElementType> element)
     where TCollectionType : ICollection <TElementType>, new()
 {
     return(BnfiTermCollection.MakeStarRule(bnfiTermCollection, delimiter, element));
 }
Ejemplo n.º 26
0
 public static BnfiTermConversion <T> ConvertOptVal <T>(IBnfiTerm <T> bnfiTerm, T defaultValue)
     where T : struct
 {
     return(ConvertOptVal(bnfiTerm, value => value, value => value, defaultValue));
 }
Ejemplo n.º 27
0
        public static BnfiTermCollection <TCollectionType, TElementType> PlusList <TCollectionType, TElementType>(IBnfiTerm <TElementType> bnfTermElement, BnfTerm delimiter = null)
            where TCollectionType : ICollection <TElementType>, new()
        {
            var bnfiTermCollection = BnfiTermCollection <TCollectionType, TElementType> .CreateContractible();

            MakePlusRule(bnfiTermCollection, delimiter, bnfTermElement);
            return(bnfiTermCollection);
        }
Ejemplo n.º 28
0
 public static BnfiTermConversion <T> ConvertOptRef <T>(IBnfiTerm <T> bnfiTerm, T defaultValue)
     where T : class
 {
     return(ConvertOptRef(bnfiTerm, value => value, value => value, defaultValue));
 }
Ejemplo n.º 29
0
 internal static BnfiTermCollection <TCollectionType, TElementType> MakeStarRule <TCollectionType, TElementType>(BnfiTermCollection <TCollectionType, TElementType> bnfiTermCollection, BnfTerm delimiter, IBnfiTerm <TElementType> element)
     where TCollectionType : ICollection <TElementType>, new()
 {
     return((BnfiTermCollection <TCollectionType, TElementType>)_MakeStarRule(bnfiTermCollection, delimiter, element.AsBnfTerm()));
 }
Ejemplo n.º 30
0
 public static BnfiTermConversion <TDOut> ConvertValue <TDIn, TDOut>(this IBnfiTerm <TDIn> bnfiTerm, ValueConverter <TDIn, TDOut> valueConverter)
 {
     return(BnfiTermConversion.Convert(bnfiTerm, valueConverter));
 }