예제 #1
0
        public IMixEvaluator MixEntryModelToMixEvaluator(MixEntryModel mixEntryModel)
        {
            if (mixEntryModel == null)
            {
                return(new NoneMixEvaluator());
            }

            switch (mixEntryModel.Type & MixType.TYPE_MASK)
            {
            case MixType.NUMBER_TYPE:
                return(NumericMixEntryModelToMixEvaluator(mixEntryModel.Type, mixEntryModel.Input));

            case MixType.STRING_TYPE:
                return(StringMixEntryModelToMixEvaluator(mixEntryModel.Type, mixEntryModel.Input));

            case MixType.NESTED_TYPE:
                return(NestedMixEntryModelToMixEvaluator(mixEntryModel));

            case MixType.RANGE_TYPE:
                return(RangeMixEntryModelToMixEvaluator(mixEntryModel.Type, mixEntryModel.Input));

            case MixType.MEMBER_TYPE:
                return(MemberMixEntryModelToMixEvaluator(mixEntryModel.Type, mixEntryModel.Input));

            default:
                DebugHelper.Assert(new CallerInfo(), mixEntryModel.Type == MixType.None, "Unexpected mix type: {0}", mixEntryModel.Type);
                return(new NoneMixEvaluator());
            }
        }
예제 #2
0
        public int Save(int mixId, bool isRoot)
        {
            List <int> allIds = new List <int>();

            foreach (IMixEvaluator mix in Mixes)
            {
                allIds.Add(mix.Save(mixId, false));
            }

            return(MixEntryModel.SaveMix(MixType, String.Join(SplitToken, allIds), mixId, isRoot));
        }
예제 #3
0
        private IMixEvaluator NestedMixEntryModelToMixEvaluator(MixEntryModel mixEntryModel)
        {
            string[]             parts = mixEntryModel.Input.Split(NestedMixEvaluator.SplitToken[0]);
            List <IMixEvaluator> mixes = new List <IMixEvaluator>();

            foreach (string s in parts)
            {
                mixes.Add(MixEntryModelToMixEvaluator(rootModel.LookupMixEntry(int.Parse(s))));
            }

            return(NestedMixEntryModelToMixEvaluator(mixEntryModel.Type, mixes));
        }
예제 #4
0
 public int Save(int mixId, bool isRoot)
 {
     return(MixEntryModel.SaveMix(MixType, Target.ToString(), mixId, isRoot));
 }
예제 #5
0
 public int Save(int mixId, bool isRoot)
 {
     return(MixEntryModel.SaveMix(MixType, string.Empty, mixId, isRoot));
 }