示例#1
0
        /// <summary>
        ///     Returns the System Type from the Specified EvalType
        /// </summary>
        /// <param name="t">The Eval Type</param>
        /// <returns>System Type associated to the EvalType</returns>
        internal static Type GetSystemType(EvalType t)
        {
            switch (t)
            {
            case EvalType.Boolean:
            {
                return(typeof(bool));
            }

            case EvalType.Date:
            {
                return(typeof(DateTime));
            }

            case EvalType.Number:
            {
                return(typeof(double));
            }

            case EvalType.String:
            {
                return(typeof(string));
            }

            default:
            {
                return(typeof(object));
            }
            }
        }
示例#2
0
        public opCodeUnary(eTokenType tt, opCode param1)
        {
            mParam1 = param1;
            mParam1.ValueChanged += mParam1_ValueChanged;
            EvalType v1Type = mParam1.EvalType;

            switch (tt)
            {
            case eTokenType.operator_not:
            {
                if (v1Type == EvalType.Boolean)
                {
                    mValueDelegate = BOOLEAN_NOT;
                    mEvalType      = EvalType.Boolean;
                }

                break;
            }

            case eTokenType.operator_minus:
            {
                if (v1Type == EvalType.Number)
                {
                    mValueDelegate = NUM_CHGSIGN;
                    mEvalType      = EvalType.Number;
                }

                break;
            }
            }
        }
 public Attribute(string name, Type type, Func <T, object> getValue)
 {
     this.Name          = name;
     this.Type          = type;
     this.ValueAccessor = getValue;
     evalType           = EntityDataReader <T> .Attribute.EvalType.ValueAccessor;
 }
        /// <summary>
        /// Salva le modifiche alla commissione
        /// </summary>
        /// <param name="Name">Nome commissione</param>
        /// <param name="Description">Descrizione Commissione</param>
        /// <param name="Tags">Stringa con i tag, separati da ,</param>
        /// <param name="IsMaster">Indica se la commissione è la commissione principale</param>
        /// <param name="EvType">Tipo di aggregazione delle valutazioni dei commissari</param>
        /// <param name="EvMinVal">Valore minimo della valutazione per il superamento della commissione</param>
        /// <param name="EvLockBool">Indica se considerare i criteri booleani ai fini del superamento</param>
        /// <param name="UpdateView">Se TRUE la pagina sarà aggiornata in automatico. A FALSE se sono necessarie altre operazioni prima del refresh.</param>
        /// <param name="StepEvType">Tipo di aggregazione tra le commissioni</param>
        /// <param name="MaxValue"></param>
        /// <param name="TemplateId">Id Template per esportazione documento commissione</param>
        /// <param name="TemplateVersionId">Id Versione Template (se -1, ultima versione)</param>
        /// <param name="criterions">Elenco criteri di valutazione</param>
        public void SaveCommitee(
            string Name,
            string Description,
            string Tags,
            bool IsMaster,
            EvalType EvType,
            int EvMinVal,
            bool EvLockBool,
            bool UpdateView,
            EvalType StepEvType,
            Double MaxValue,
            Int64 TemplateId,
            Int64 TemplateVersionId,
            List <dtoCriterion> criterions = null)
        {
            bool success = CallService.CommissionUpdate(
                View.IdComm,
                Name,
                Description,
                Tags,
                IsMaster,
                EvType,
                EvMinVal,
                EvLockBool,
                StepEvType,
                MaxValue,
                TemplateId,
                TemplateVersionId,
                criterions);

            if (success && UpdateView)
            {
                InitView();
            }
        }
示例#5
0
        public Transposition(Hashcode qHash,
#if XPHash128
                             Hashcode qHashPawn,
#endif
#if XPMoveTypes
                             MoveTypeOrdering mtOrdering,
#endif
                             Ply wMovePly,
                             Depth wDepth,
                             Eval mValue   = EvalUndefined,
                             EvalType et   = EvalType.Undefined,
                             Move moveBest = Move.Undefined)
        {
            Hash = qHash;
            Debug.Assert(Hash != 0, "Zero Hash [Transposition]");
#if XPHash128
            HashPawn = qHashPawn;
#endif
#if XPMoveTypes
            MoveTypeOrdering = mtOrdering;
#endif
            MovePly  = wMovePly;
            Depth    = wDepth;
            ibv      = IBV(mValue, et);
            BestMove = moveBest & Move.StoreMask;
        }
示例#6
0
        //
        //[ToDo]Killer updates are not thread safe.  See also the references, e.g., in sortMoves().
        //
        protected void storeKiller(Move uMaskedMove, Depth wDepth, Eval mValue, EvalType et)
        {
            var bWTM = WTM();

            Trace.Assert(EvalUndefined < mValue, "storeKiller(EvalUndefined)");
            traceVal("storeKiller", mValue, et); //[Conditional]
            var    mAdjusted = creditMate(mValue, SearchPly);
            var    store     = new GoodMove(uMaskedMove, wDepth, mAdjusted, et);
            UInt32 wPly      = State.MovePly;

#if BottleGamePly
            wPly = GamePly;
#else
            wPly += wDepth;             //[Note]wDepth value may not guarantee Ply/Color Parity
#endif
#if KillerCompositionHash
            var uMemoHash = compositionHash(true);
            wPly *= uMemoHash;
#endif
#if BottleBothSides
            var nSide = bWTM ? 0 : 1;
#else
            var nSide = 0;
#endif
            State.Bottle.Save(store, uMaskedMove, wPly, nSide);
        }
 public OPCodeSystemTypeConvert(IEvalTypedValue param1, Type type)
 {
     Param1         = param1;
     mValueDelegate = CType;
     mSystemType    = type;
     mEvalType      = Globals.GetEvalType(type);
 }
示例#8
0
        /// <summary>
        ///     Public Constructor
        /// </summary>
        /// <param name="tt">The Token Type</param>
        /// <param name="param1">The Parameter</param>
        public OPCodeUnary(TokenType tt, OPCode param1)
        {
            Param1 = param1;
            EvalType v1Type = Param1.EvalType;

            switch (tt)
            {
            case TokenType.OperatorNot:
            {
                if (v1Type == EvalType.Boolean)
                {
                    mValueDelegate = BOOLEAN_NOT;
                    mEvalType      = EvalType.Boolean;
                }

                break;
            }

            case TokenType.OperatorMinus:
            {
                if (v1Type == EvalType.Number)
                {
                    mValueDelegate = NUM_CHGSIGN;
                    mEvalType      = EvalType.Number;
                }

                break;
            }
            }
        }
示例#9
0
        private static Eval boundValue(Eval mValue, Eval mValueFound, EvalType etFound)
        {
            if (EvalUndefined < mValueFound)
            {
                //
                // Apply Upper or Lower Bound to mValue
                //
                switch (etFound)
                {
                case EvalType.Upper:    // LUB
                    if (mValueFound < mValue)
                    {
                        mValue = mValueFound;
                    }
                    break;

                case EvalType.Lower:    // GLB
                    if (mValue < mValueFound)
                    {
                        mValue = mValueFound;
                    }
                    break;

                default:
                    break;
                }
            }

            return(mValue);
        }
示例#10
0
        protected Eval storeQXP(Eval mValue, EvalType et,
                                Move moveBest = Move.Undefined)
        {
            Trace.Assert(EvalUndefined < mValue, "storeQXP(EvalUndefined)");
            traceVal("storeQXP", mValue, et); //[Conditional]
            State.IncEvalType(et);
            var mAdjusted = creditMate(mValue, SearchPly);

            if (IsFinal())
            {
                Trace.Assert(!isDefined(moveBest), "moveBest defined in a Final position.");
                moveBest = Move.EmptyMove;
            }
#if DebugMoveColor
            if (isDefinite(moveBest))
            {
                var bWTM       = WTM();
                var bWhiteMove = (moveBest & Move.WTM) != 0;
                if (bWTM != bWhiteMove)
                {
                    Debug.Assert(bWTM == bWhiteMove, "WTM != WhiteMove [storeQXP]");
                    DisplayCurrent("storeQXP()");
                }
            }
#endif
#if QXPHash128
            var store = new QuietPosition(Hash, State.MovePly, HashPawn, mAdjusted, et, moveBest);
#else
            var store = new QuietPosition(Hash, State.MovePly, mAdjusted, et, moveBest);
#endif
            State.QXPTank.Save(store);
            return(mValue);
        }
示例#11
0
        protected Boolean probeXP(Depth wDepth, Eval mAlpha, Eval mBeta, Move moveExcluded, List <GoodMove> goodMoves,
                                  out Move moveFound, out Eval mValue, out EvalType etFound)
        {
            var qDynamic = DynamicHash(moveExcluded);

#if XPHash128
#if XPMoveTypes
            var match = new Transposition(qDynamic, HashPawn, MoveTypeOrdering, State.MovePly, wDepth);
#else
            var match = new Transposition(qDynamic, HashPawn, State.MovePly, wDepth);
#endif
#else                                   // XPHash128
#if XPMoveTypes
            var match = new Transposition(qDynamic, MoveTypeOrdering, State.MovePly, wDepth);
#else
            var match = new Transposition(qDynamic, State.MovePly, wDepth);
#endif
#endif
            var bValid = State.XPTank.LoadFirst(ref match);
#if XPMoveTypes
            if (bValid)
            {
                MoveTypeOrdering = match.MoveTypeOrdering;
            }
#endif
            moveFound = adjustEmptyMove(match.BestMove);                                         //[out]3
            etFound   = match.Type;                                                              //[out]2
            var mValueFound = match.Value;
            traceVal("probeXP", mValueFound, etFound);                                           //[Conditional]
            mValue = addMove(moveFound, goodMoves, wDepth, mValueFound, mAlpha, mBeta, etFound); //[out]1
            var bValueDefined = EvalUndefined < mValue;
            return(bValid && bValueDefined);
        }
示例#12
0
 //
 // Copy Constructor:
 //
 public GoodMove(GoodMove gm)
 {
     // Value Type precludes use of gm.CopyTo(this) here:
     Move  = gm.Move;
     Value = gm.Value;
     Type  = gm.Type;
     Depth = gm.Depth;
 }
示例#13
0
文件: PM.cs 项目: 3F/vsCommandEvent
 /// <param name="msbuild">To evaluate data with MSBuild engine where it's allowed.</param>
 /// <param name="type">Allowed types of evaluation with MSBuild.</param>
 public PM(IMSBuild msbuild = null, EvalType type = EvalType.ArgStringD)
 {
     //if(msbuild == null) {
     //    throw new InvalidArgumentException("PM: The `msbuild` argument cannot be null");
     //}
     this.msbuild    = msbuild;
     teval           = type;
 }
示例#14
0
 public opCodeSystemTypeConvert(iEvalTypedValue param1, System.Type Type)
 {
     mParam1 = param1;
     mParam1.ValueChanged += mParam1_ValueChanged;
     mValueDelegate        = CType;
     mSystemType           = Type;
     mEvalType             = Globals.GetEvalType(Type);
 }
示例#15
0
 public EvalVariable(string name, object originalValue, string description, System.Type systemType)
 {
     mName        = name;
     mValue       = originalValue;
     mDescription = description;
     mSystemType  = systemType;
     mEvalType    = Globals.GetEvalType(systemType);
 }
示例#16
0
 /// <param name="msbuild">To evaluate data with MSBuild engine where it's allowed.</param>
 /// <param name="type">Allowed types of evaluation with MSBuild.</param>
 public PM(IMSBuild msbuild = null, EvalType type = EvalType.ArgStringD)
 {
     //if(msbuild == null) {
     //    throw new InvalidArgumentException("PM: The `msbuild` argument cannot be null");
     //}
     this.msbuild = msbuild;
     teval        = type;
 }
示例#17
0
        protected string eval(EvalType type, string raw)
        {
            if (type == EvalType.None || msbuild == null)
            {
                return(raw);
            }

            return(((teval & type) == type)? msbuild.parse(raw) : raw);
        }
示例#18
0
 private NumberType NT(EvalType t)
 {
     if (t is NumberType)
         return t as NumberType;
     var nl = t as NumberListType;
     if (nl.Length == 1)
         return nl[0];
     throw new Exception("Must be a number.");
 }
示例#19
0
 public GoodMove(Move move,
                 Depth wDepth = 0,
                 Eval mValue  = EvalUndefined,
                 EvalType et  = EvalType.Undefined)
 {
     Move  = move;
     Value = mValue;
     Type  = et;
     Depth = wDepth;
 }
示例#20
0
 /// <summary>
 ///     Public Constructor
 /// </summary>
 /// <param name="array">Array to Index</param>
 /// <param name="params">The Parameter of the Index Operation</param>
 public OPCodeGetArrayEntry(OPCode array, IList @params)
 {
     IEvalTypedValue[] newParams = new IEvalTypedValue[@params.Count];
     int[]             newValues = new int[@params.Count];
     @params.CopyTo(newParams, 0);
     Array             = array;
     mParams           = newParams;
     mValues           = newValues;
     mResultSystemType = array.SystemType.GetElementType();
     mResultEvalType   = Globals.GetEvalType(mResultSystemType);
 }
示例#21
0
 public opCodeGetArrayEntry(opCode array, IList <iEvalTypedValue> @params)
 {
     iEvalTypedValue[] newParams = new iEvalTypedValue[@params.Count - 1 + 1];
     int[]             newValues = new int[@params.Count - 1 + 1];
     @params.CopyTo(newParams, 0);
     mArray = array;
     mArray.ValueChanged += mBaseVariable_ValueChanged;
     mParams              = newParams;
     mValues              = newValues;
     mResultSystemType    = array.SystemType.GetElementType();
     mResultEvalType      = Globals.GetEvalType(mResultSystemType);
 }
示例#22
0
 public static Bval IBV(Eval mValue, EvalType et)
 {
     if (mValue == EvalUndefined)
     {
         return((Bval)EvalUndefined);
     }
     else
     {
         var nIBV = (mValue << nPerTwoBits) + twoBits((Int32)et);
         return((Bval)nIBV);
     }
 }
示例#23
0
文件: OPCode.cs 项目: Open-FL/Utility
 /// <summary>
 ///     Converts the Specified OPCode to the Specified EvalType
 /// </summary>
 /// <param name="tokenizer">The Tokenizer Instance</param>
 /// <param name="param1">The OPCode to Convert</param>
 /// <param name="evalType">Target Type</param>
 protected internal void Convert(Tokenizer tokenizer, ref OPCode param1, EvalType evalType)
 {
     if (param1.EvalType != evalType)
     {
         if (param1.CanReturn(evalType))
         {
             param1 = new OPCodeConvert(tokenizer, param1, evalType);
         }
         else
         {
             tokenizer.RaiseError("Cannot convert " + param1.Name + " into " + (int)evalType);
         }
     }
 }
示例#24
0
 protected internal void Convert(tokenizer tokenizer, ref opCode param1, EvalType EvalType)
 {
     if (param1.EvalType != EvalType)
     {
         if (param1.CanReturn(EvalType))
         {
             param1 = new opCodeConvert(tokenizer, param1, EvalType);
         }
         else
         {
             tokenizer.RaiseError("Cannot convert " + param1.Name + " into " + EvalType);
         }
     }
 }
示例#25
0
        protected Eval storeXP(Depth wDepth, Eval mValue, EvalType et,
                               Move moveBest     = Move.Undefined,
                               Move moveExcluded = Move.Undefined) // 10 MHz
        {
            Trace.Assert(EvalUndefined < mValue, "storeXP(EvalUndefined)");
            traceVal("storeXP", mValue, et); //[Conditional]
            State.IncEvalType(et);
            var qDynamic  = DynamicHash(moveExcluded);
            var mAdjusted = creditMate(mValue, SearchPly);

            if (IsFinal())
            {
                Trace.Assert(!isDefined(moveBest), "moveBest defined in a Final position.");
                moveBest = Move.EmptyMove;
            }
#if DebugMoveColor
            if (isDefinite(moveBest))
            {
                var bWTM       = WTM();
                var bWhiteMove = (moveBest & Move.WTM) != 0;
                if (bWTM != bWhiteMove)
                {
                    Debug.Assert(bWTM == bWhiteMove, "WTM != WhiteMove [storeXP]");
                    DisplayCurrent("storeXP()");
                }
            }
#endif
#if XPHash128
#if XPMoveTypes
            var store = new Transposition(qDynamic, HashPawn, MoveTypeOrdering, State.MovePly, wDepth,
                                          mAdjusted, et, moveBest);
#else
            var store = new Transposition(qDynamic, HashPawn, State.MovePly, wDepth,
                                          mAdjusted, et, moveBest);
#endif
#else                                   // XPHash128
#if XPMoveTypes
            var store = new Transposition(qDynamic, MoveTypeOrdering, State.MovePly, wDepth,
                                          mAdjusted, et, moveBest);
#else
            var store = new Transposition(qDynamic, State.MovePly, wDepth,
                                          mAdjusted, et, moveBest);
#endif
#endif
            State.XPTank.Save(store);
            return(mValue);
        }
示例#26
0
        protected Eval storeXPM(Depth wDepth, Eval mValue, EvalType et,
                                Move moveBest     = Move.Undefined,
                                Move moveExcluded = Move.Undefined)     // 10 MHz
        {
            Trace.Assert(EvalUndefined < mValue, "storeXPM(EvalUndefined)");
            traceVal("storeXPM", mValue, et); //[Conditional]
            State.IncEvalType(et);
#if XPMCompositionHash || DebugMoveColor
            var bWTM = WTM();
#endif
#if XPMCompositionHash
            UInt32 wPly      = State.MovePly;
            var    nSide     = bWTM ? 0 : 1;
            var    uMemoHash = compositionHash(bWTM);
            var    qDynamic  = (Hashcode)(uMemoHash * wPly + nSide);
#else
            var qDynamic = DynamicHash(moveExcluded);
#endif
            var mAdjusted = creditMate(mValue, SearchPly);

            if (IsFinal())
            {
                Trace.Assert(!isDefined(moveBest), "moveBest defined in a Final position.");
                moveBest = Move.EmptyMove;
            }
#if DebugMoveColor
            if (isDefinite(moveBest))
            {
                var bWhiteMove = (moveBest & Move.WTM) != 0;
                if (bWTM != bWhiteMove)
                {
                    Debug.Assert(bWTM == bWhiteMove, "WTM != WhiteMove [storeXPM]");
                    DisplayCurrent("storeXPM()");
                }
            }
#endif
#if XPHash128
            var store = new PositionMove(qDynamic, HashPawn, State.MovePly, wDepth,
                                         mAdjusted, et, moveBest);
#else
            var store = new PositionMove(qDynamic, State.MovePly, wDepth,
                                         mAdjusted, et, moveBest);
#endif
            State.XPMTank.Save(store);
            return(mValue);
        }
示例#27
0
        /// <summary>
        ///     Public Constructor
        /// </summary>
        /// <param name="tokenizer">Tokenizer Instance</param>
        /// <param name="param1">The First Parameter</param>
        /// <param name="evalType">The Evaluator Type</param>
        public OPCodeConvert(Tokenizer tokenizer, IEvalTypedValue param1, EvalType evalType)
        {
            Param1 = param1;
            switch (evalType)
            {
            case EvalType.Boolean:
            {
                mValueDelegate = TBool;
                mEvalType      = EvalType.Boolean;
                break;
            }

            case EvalType.Date:
            {
                mValueDelegate = TDate;
                mEvalType      = EvalType.Date;
                break;
            }

            case EvalType.Number:
            {
                mValueDelegate = TNum;
                mEvalType      = EvalType.Number;
                break;
            }

            case EvalType.String:
            {
                mValueDelegate = TStr;
                mEvalType      = EvalType.String;
                break;
            }

            default:
            {
                tokenizer.RaiseError(
                    "Cannot convert " +
                    param1.SystemType.Name +
                    " to " +
                    (int)evalType
                    );
                break;
            }
            }
        }
示例#28
0
        public QuietPosition(Hashcode qHash,
#if QXPHash128
                             Hashcode qHashPawn,
#endif
                             Ply wMovePly,
                             Eval mValue   = EvalUndefined,
                             EvalType et   = EvalType.Undefined,
                             Move moveBest = Move.Undefined)
        {
            Hash = qHash;
            Debug.Assert(Hash != 0, "Zero Hash [QuietPosition]");
#if QXPHash128
            HashPawn = qHashPawn;
#endif
            MovePly  = wMovePly;
            ibv      = IBV(mValue, et);
            BestMove = moveBest & Move.StoreMask;
        }
示例#29
0
        protected Boolean probeQXP(Eval mAlpha, Eval mBeta,
                                   out Move moveFound, out Eval mValue, out EvalType etFound)
        {
#if QXPHash128
            var match = new QuietPosition(Hash, State.MovePly, HashPawn);
#else
            var match = new QuietPosition(Hash, State.MovePly);
#endif
            var bValid   = State.QXPTank.LoadFirst(ref match);
            var moveBest = adjustEmptyMove(match.BestMove);
            moveFound = isDefined(moveBest) ? moveBest | Move.Qxnt : moveBest; //[out]3
            etFound   = match.Type;                                            //[out]2
            //[Note]Mate values are suspect because quiet moves were not considered
            var mValueFound = match.Value;
            mValue = adjustValue(mAlpha, mBeta, mValueFound, etFound, SearchPly); //[out]1
            traceVal("probeQXP", mValue, etFound);                                //[Conditional]
            var bValueDefined = EvalUndefined < mValue;
            return(bValid && bValueDefined);
        }
示例#30
0
        public PositionMove(Hashcode qHash,
#if XPMHash128
                            Hashcode qHashPawn,
#endif
                            Ply wMovePly,
                            Depth wDepth,
                            Eval mValue   = EvalUndefined,
                            EvalType et   = EvalType.Undefined,
                            Move moveBest = Move.Undefined)
        {
            Hash = qHash;
            Debug.Assert(Hash != 0, "Zero Hash [PositionMove]");
#if XPMHash128
            HashPawn = qHashPawn;
#endif
            MovePly  = wMovePly;
            Depth    = wDepth;
            ibv      = IBV(mValue, et);
            BestMove = moveBest & Move.StoreMask;
        }
示例#31
0
        public void IncEvalType(EvalType et)
        {
            switch (et)
            {
            case EvalType.Upper:
                AtomicIncrement(ref UpperCount);
                break;

            case EvalType.Exact:
                AtomicIncrement(ref ExactCount);
                break;

            case EvalType.Lower:
                AtomicIncrement(ref LowerCount);
                break;

            default:
                throw new PositionException("Unexpected EvalType");
            }
        }
示例#32
0
        public opCodeConvert(tokenizer tokenizer, iEvalTypedValue param1, EvalType EvalType)
        {
            mParam1 = param1;
            mParam1.ValueChanged += mParam1_ValueChanged;
            switch (EvalType)
            {
            case EvalType.Boolean:
            {
                mValueDelegate = TBool;
                mEvalType      = EvalType.Boolean;
                break;
            }

            case EvalType.Date:
            {
                mValueDelegate = TDate;
                mEvalType      = EvalType.Date;
                break;
            }

            case EvalType.Number:
            {
                mValueDelegate = TNum;
                mEvalType      = EvalType.Number;
                break;
            }

            case EvalType.String:
            {
                mValueDelegate = TStr;
                mEvalType      = EvalType.String;
                break;
            }

            default:
            {
                tokenizer.RaiseError("Cannot convert " + param1.SystemType.Name + " to " + EvalType);
                break;
            }
            }
        }
示例#33
0
 public EvalType Pow(EvalType right)
 {
     if (right is NumberType)
         return this ^ (right as NumberType);
     return new NumberListType(this).Pow(right);
 }
示例#34
0
 public EvalType Add(EvalType right)
 {
     if (right is StringType)
         return new StringType(ToString()).Add(right);
     return this + (NumberListType)right;
 }
示例#35
0
	public opCodeGetArrayEntry(opCode array, IList @params)
	{
		iEvalTypedValue[] newParams = new iEvalTypedValue[@params.Count];
		int[] newValues = new int[@params.Count];
		@params.CopyTo(newParams, 0);
		mArray = array;
		mParams = newParams;
		mValues = newValues;
		mResultSystemType = array.SystemType.GetElementType;
		mResultEvalType = Globals.GetEvalType(mResultSystemType);
	}
示例#36
0
	public opCodeSystemTypeConvert(iEvalTypedValue param1, Type Type)
	{
		mParam1 = param1;
		mValueDelegate = CType;
		mSystemType = Type;
		mEvalType = Globals.GetEvalType(Type);
	}
示例#37
0
	public opCodeUnary(eTokenType tt, opCode param1)
	{
		mParam1 = param1;
		EvalType v1Type = mParam1.EvalType;

		switch (tt)
		{
			case eTokenType.operator_not:
				if (v1Type == EvalType.Boolean)
				{
					mValueDelegate = BOOLEAN_NOT;
					mEvalType = EvalType.Boolean;
				}

				break;
			case eTokenType.operator_minus:
				if (v1Type == EvalType.Number)
				{
					mValueDelegate = NUM_CHGSIGN;
					mEvalType = EvalType.Number;
				}

				break;
		}
	}
示例#38
0
	protected internal void Convert(tokenizer tokenizer, ref opCode param1, EvalType EvalType)
	{
		if (param1.EvalType != EvalType)
		{
			if (param1.CanReturn(EvalType))
			{
				param1 = new opCodeConvert(tokenizer, param1, EvalType);
			}
			else
			{
				tokenizer.RaiseError("Cannot convert " + param1.Name + " into " + EvalType);
			}
		}
	}
示例#39
0
	internal Type GetSystemType(EvalType t)
	{
		switch (t)
		{
			case EvalType.Boolean:
				return typeof(bool);
			case EvalType.Date:
				return typeof(DateTime);
			case EvalType.Number:
				return typeof(double);
			case EvalType.String:
				return typeof(string);
			default:
				return typeof(object);
		}
	}
示例#40
0
 public EvalType Add(EvalType right)
 {
     if (right is NumberType)
         return this + (right as NumberType);
     else if (right is StringType)
         return new StringType(ToString()).Add(right);
     else if (right is NumberListType)
         return new NumberListType(this) + (NumberListType)right;
     throw new Exception("Right side must be a number, string, or list.");
 }
示例#41
0
 public EvalType Sub(EvalType right)
 {
     if (right is NumberType)
         return this - (right as NumberType);
     else if (right is NumberListType)
         return new NumberListType(this) - (NumberListType)right;
     throw new Exception("Right side must be a number.");
 }
示例#42
0
 public bool GreaterEql(EvalType right)
 {
     if (right is NumberType)
         return this >= (right as NumberType);
     return new NumberListType(this).GreaterEql(right);
 }
示例#43
0
 public bool LessEql(EvalType right)
 {
     if (right is NumberType)
         return this <= (right as NumberType);
     return new NumberListType(this).LessEql(right);
 }
示例#44
0
 public bool Equals(EvalType right)
 {
     if (right is NumberType)
         return this == (right as NumberType);
     else if (right is NumberListType)
         return new NumberListType(this) == (NumberListType)right;
     return new NumberListType(this).Equals(right);
 }
示例#45
0
 public EvalType Mul(EvalType right)
 {
     return this * (NumberListType)right;
 }
示例#46
0
文件: PM.cs 项目: 3F/vsCommandEvent
        protected string eval(EvalType type, string raw)
        {
            if(type == EvalType.None || msbuild == null) {
                return raw;
            }

            return ((teval & type) == type)? msbuild.parse(raw) : raw;
        }
示例#47
0
	public EvalVariable(string name, object originalValue, string description, Type systemType)
	{
		mName = name;
		mValue = originalValue;
		mDescription = description;
		mSystemType = systemType;
		mEvalType = Globals.GetEvalType(systemType);
	}
示例#48
0
文件: PM.cs 项目: 3F/vsCommandEvent
 /// <param name="raw">Initial raw data.</param>
 /// <param name="msbuild">To evaluate data with MSBuild engine where it's allowed.</param>
 /// <param name="type">Allowed types of evaluation with MSBuild.</param>
 public PM(string raw, IMSBuild msbuild = null, EvalType type = EvalType.ArgStringD /*| EvalType.RightOperandStd*/)
     : this(msbuild, type)
 {
     detect(raw);
 }
示例#49
0
	public bool CanReturn(EvalType type)
	{
		return true;
	}
示例#50
0
 public EvalType Pow(EvalType right)
 {
     throw new NotImplementedException();//return this ^ (NumberListType)right;
 }
示例#51
0
	public opCodeImmediate(EvalType EvalType, object value)
	{
		mEvalType = EvalType;
		mValue = value;
	}
示例#52
0
 public bool LessEql(EvalType right)
 {
     throw new NotImplementedException();//return this <= (NumberListType)right;
 }
示例#53
0
	public opCodeConvert(tokenizer tokenizer, iEvalTypedValue param1, EvalType EvalType)
	{
		mParam1 = param1;
		switch (EvalType)
		{
			case EvalType.Boolean:
				mValueDelegate = TBool;
				mEvalType = EvalType.Boolean;
				break;
			case EvalType.Date:
				mValueDelegate = TDate;
				mEvalType = EvalType.Date;
				break;
			case EvalType.Number:
				mValueDelegate = TNum;
				mEvalType = EvalType.Number;
				break;
			case EvalType.String:
				mValueDelegate = TStr;
				mEvalType = EvalType.String;
				break;
			default:
				tokenizer.RaiseError("Cannot convert " + param1.SystemType.Name + " to " + EvalType);
				break;
		}
	}
示例#54
0
 public bool Greater(EvalType right)
 {
     throw new NotImplementedException();// return this > (NumberListType)right;
 }
示例#55
0
	public opCodeBinary(tokenizer tokenizer, opCode param1, eTokenType tt, opCode param2)
	{
		mParam1 = param1;
		mParam2 = param2;

		EvalType v1Type = mParam1.EvalType;
		EvalType v2Type = mParam2.EvalType;

		switch (tt)
		{
			case eTokenType.operator_plus:
				if (v1Type == EvalType.Number & v2Type == EvalType.Number)
				{
					mValueDelegate = NUM_PLUS_NUM;
					mEvalType = EvalType.Number;
				}
				else if (v1Type == EvalType.Number & v2Type == EvalType.Date)
				{
					SwapParams(ref mParam1, mParam2);
					mValueDelegate = DATE_PLUS_NUM;
					mEvalType = EvalType.Date;
				}
				else if (v1Type == EvalType.Date & v2Type == EvalType.Number)
				{
					mValueDelegate = DATE_PLUS_NUM;
					mEvalType = EvalType.Date;
				}
				else if (mParam1.CanReturn(EvalType.String) & mParam2.CanReturn(EvalType.String))
				{
					Convert(tokenizer, param1, ref EvalType.String);
					mValueDelegate = STR_CONCAT_STR;
					mEvalType = EvalType.String;
				}

				break;
			case eTokenType.operator_minus:
				if (v1Type == EvalType.Number & v2Type == EvalType.Number)
				{
					mValueDelegate = NUM_MINUS_NUM;
					mEvalType = EvalType.Number;
				}
				else if (v1Type == EvalType.Date & v2Type == EvalType.Number)
				{
					mValueDelegate = DATE_MINUS_NUM;
					mEvalType = EvalType.Date;
				}
				else if (v1Type == EvalType.Date & v2Type == EvalType.Date)
				{
					mValueDelegate = DATE_MINUS_DATE;
					mEvalType = EvalType.Number;
				}

				break;
			case eTokenType.operator_mul:
				if (v1Type == EvalType.Number & v2Type == EvalType.Number)
				{
					mValueDelegate = NUM_MUL_NUM;
					mEvalType = EvalType.Number;
				}

				break;
			case eTokenType.operator_div:
				if (v1Type == EvalType.Number & v2Type == EvalType.Number)
				{
					mValueDelegate = NUM_DIV_NUM;
					mEvalType = EvalType.Number;
				}

				break;
			case eTokenType.operator_percent:
				if (v1Type == EvalType.Number & v2Type == EvalType.Number)
				{
					mValueDelegate = NUM_PERCENT_NUM;
					mEvalType = EvalType.Number;
				}

				break;
			case eTokenType.operator_and:
			case eTokenType.operator_or:
				Convert(tokenizer, mParam1, ref EvalType.Boolean);
				Convert(tokenizer, mParam2, ref EvalType.Boolean);
				switch (tt)
				{
					case eTokenType.operator_or:
						mValueDelegate = BOOL_OR_BOOL;
						mEvalType = EvalType.Boolean;
						break;
					case eTokenType.operator_and:
						mValueDelegate = BOOL_AND_BOOL;
						mEvalType = EvalType.Boolean;
						break;
				}
				break;
		}

		if (mValueDelegate == null)
		{
			tokenizer.RaiseError("Cannot apply the operator " + tt.ToString().Replace("operator_", "") + " on " + v1Type.ToString() + " and " + v2Type.ToString());
		}
	}
示例#56
0
 public bool Equals(EvalType right)
 {
     return this == (NumberListType)right;
 }
示例#57
0
 public EvalType Sub(EvalType right)
 {
     return this - (NumberListType)right;
 }
示例#58
0
 public EvalType Div(EvalType right)
 {
     return this / (NumberListType)right;
 }
示例#59
0
 public EvalType Div(EvalType right)
 {
     if (right is NumberType)
         return this / (right as NumberType);
     else if (right is NumberListType)
         return new NumberListType(this) / (NumberListType)right;
     return new NumberListType(this).Mul(right);
 }
示例#60
0
 public EvalType Mod(EvalType right)
 {
     if (right is NumberType)
         return this % (right as NumberType);
     return new NumberListType(this).Mod(right);
 }