コード例 #1
0
ファイル: SetterLookup.cs プロジェクト: woxihuanjia/Jil
        private static Func <TextReader, int> CreateFindMember(IEnumerable <string> names)
        {
            var nameToResults =
                names
                .Select((name, index) => NameAutomata <int> .CreateName(name, emit => emit.LoadConstant(index)))
                .ToList();

            return(NameAutomata <int> .Create(nameToResults, true, defaultValue : -1));
        }
コード例 #2
0
        private static SetterLookupThunkReaderDelegate CreateFindMemberThunkReader(IEnumerable <string> names)
        {
            var nameToResults =
                names
                .Select((name, index) => NameAutomata <int> .CreateName(typeof(ThunkReader).MakeByRefType(), name, emit => emit.LoadConstant(index)))
                .ToList();

            var ret = NameAutomata <int> .Create <SetterLookupThunkReaderDelegate>(typeof(ThunkReader).MakeByRefType(), nameToResults, true, defaultValue : -1);

            return((SetterLookupThunkReaderDelegate)ret);
        }
コード例 #3
0
ファイル: EnumLookup.cs プロジェクト: woxihuanjia/Jil
        private static Func <TextReader, EnumType> CreateFindEnum(IEnumerable <Tuple <string, object> > names)
        {
            var underlyingType = Enum.GetUnderlyingType(typeof(EnumType));

            var nameToResults =
                names
                .Select(name => NameAutomata <EnumType> .CreateName(name.Item1, emit => LoadConstantOfType(emit, name.Item2, underlyingType)))
                .ToList();

            return
                (NameAutomata <EnumType> .Create(
                     nameToResults,
                     false,
                     defaultValue : null
                     ));
        }
コード例 #4
0
        private static EnumThunkReaderDelegate <EnumType> CreateFindEnumThunkReader(IEnumerable <Tuple <string, object> > names)
        {
            var thunkReaderRef = typeof(ThunkReader).MakeByRefType();

            var underlyingType = Enum.GetUnderlyingType(typeof(EnumType));

            var nameToResults =
                names
                .Select(name => NameAutomata <EnumType> .CreateName(thunkReaderRef, name.Item1, emit => LoadConstantOfType(emit, name.Item2, underlyingType)))
                .ToList();

            var ret =
                NameAutomata <EnumType> .Create <EnumThunkReaderDelegate <EnumType> >(
                    thunkReaderRef,
                    nameToResults,
                    false,
                    defaultValue : null
                    );

            return((EnumThunkReaderDelegate <EnumType>)ret);
        }