Example #1
0
        public void AddOperatorFunction(OverrideableOperator operCode, rtti.FunctionDefine function)
        {
            var dict = operFunctions[(int)operCode];

            if (function.signature.parameters.Count == 2)
            {
                OperatorFunctionKey key = new OperatorFunctionKey(
                    function.signature.parameters[0].type,
                    function.signature.parameters[1].type
                    );
                dict.Add(key, new DefineAndFunc()
                {
                    define = function, func = null
                });
            }
            else if (operCode == OverrideableOperator.op_explicit)
            {
                OperatorFunctionKey key = new OperatorFunctionKey(
                    function.signature.parameters[0].type,
                    function.signature.returnType
                    );
                dict.Add(key, new DefineAndFunc()
                {
                    define = function, func = null
                });
            }
            else
            {
                OperatorFunctionKey key = new OperatorFunctionKey(
                    function.signature.parameters[0].type,
                    RunTimeDataType.unknown
                    );
                dict.Add(key, new DefineAndFunc()
                {
                    define = function, func = null
                });
            }
        }