Exemple #1
0
        public MethodInvokeParameterUnionControl(CodeGenerateSystem.Base.ConstructionParams csParam, string param)
            : base(csParam, param)
        {
            InitConstruction();

            string[] splits = param.Split(':');
            mParamValue = splits[0];
            mParamName  = splits[1];

            if (splits[2].StartsWith("@"))
            {
                string[] splitsType = splits[2].Split('#');

                string[] linkTypeSplits = splitsType[1].Split(',');
                foreach (var linkType in linkTypeSplits)
                {
                    var str = linkType.Replace(" ", "");
                    if (mParamELinkType == CodeGenerateSystem.Base.enLinkType.All)
                    {
                        mParamELinkType = CodeGenerateSystem.Base.LinkObjInfo.GetLinkTypeFromTypeString(str);
                    }
                    else
                    {
                        mParamELinkType |= CodeGenerateSystem.Base.LinkObjInfo.GetLinkTypeFromTypeString(str);
                    }
                }

                mParamType = EngineNS.Rtti.RttiHelper.GetTypeFromTypeFullName(splitsType[0].Remove(0, 1), csParam.CSType);
            }
            else
            {
                string[] linkTypeSplits = splits[2].Split(',');
                foreach (var linkType in linkTypeSplits)
                {
                    var str = linkType.Replace(" ", "");
                    if (mParamELinkType == CodeGenerateSystem.Base.enLinkType.All)
                    {
                        mParamELinkType = CodeGenerateSystem.Base.LinkObjInfo.GetLinkTypeFromTypeString(str);
                    }
                    else
                    {
                        mParamELinkType |= CodeGenerateSystem.Base.LinkObjInfo.GetLinkTypeFromTypeString(str);
                    }
                }
            }
            AddLinkObject(mParamELinkType, mParamEllipse, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, null, true);
        }
Exemple #2
0
        public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
        {
            CodeGenerateSystem.Base.enLinkType linkType = CodeGenerateSystem.Base.enLinkType.NumbericalValue | CodeGenerateSystem.Base.enLinkType.VectorValue;

            switch (smParam.ConstructParam)
            {
            case "=":
            case "==":
            case "≠":
                linkType = linkType | CodeGenerateSystem.Base.enLinkType.Class | CodeGenerateSystem.Base.enLinkType.Bool | CodeGenerateSystem.Base.enLinkType.String;
                break;
            }

            CollectLinkPinInfo(smParam, "CtrlParamLink_1", linkType, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "CtrlParamLink_2", linkType, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "CtrlresultHandle", CodeGenerateSystem.Base.enLinkType.Bool, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, true);
        }
Exemple #3
0
        public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
        {
            CodeGenerateSystem.Base.enLinkType value1LinkType = CodeGenerateSystem.Base.enLinkType.Unknow;
            CodeGenerateSystem.Base.enLinkType value2LinkType = CodeGenerateSystem.Base.enLinkType.Unknow;
            CodeGenerateSystem.Base.enLinkType resultLinkType = CodeGenerateSystem.Base.enLinkType.Unknow;

            value1LinkType = GetLinkType(smParam);
            value2LinkType = GetLinkType(smParam);
            if (smParam.ConstructParam == "&&" || smParam.ConstructParam == "||")
            {
                value1LinkType |= CodeGenerateSystem.Base.enLinkType.Class;
                value2LinkType |= CodeGenerateSystem.Base.enLinkType.Class;
            }
            resultLinkType = GetLinkType(smParam);

            CollectLinkPinInfo(smParam, "CtrlValue1", value1LinkType, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "CtrlValue2", value2LinkType, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "CtrlResultLink", resultLinkType, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, true);
        }
 // 根据两个运算的类型获得一个合法的类型, 如果两个值不能运算则返回Unknow
 private CodeGenerateSystem.Base.enLinkType GetAvilableType(CodeGenerateSystem.Base.enLinkType type1, CodeGenerateSystem.Base.enLinkType type2)
 {
     return(CodeGenerateSystem.Base.enLinkType.Bool);
 }
Exemple #5
0
        // 根据两个运算的类型获得一个合法的类型, 如果两个值不能运算则返回Unknow
        private CodeGenerateSystem.Base.enLinkType GetAvilableType(CodeGenerateSystem.Base.enLinkType type1, CodeGenerateSystem.Base.enLinkType type2)
        {
            switch (CSParam.ConstructParam)
            {
            case "+":
            case "-":
            case "×":
            case "÷":
            {
                if (type1 == CodeGenerateSystem.Base.enLinkType.String ||
                    type2 == CodeGenerateSystem.Base.enLinkType.String)
                {
                    return(CodeGenerateSystem.Base.enLinkType.String);
                }

                if ((type1 & CodeGenerateSystem.Base.enLinkType.VectorValue) == type1 ||
                    (type1 & CodeGenerateSystem.Base.enLinkType.VectorValue) == CodeGenerateSystem.Base.enLinkType.VectorValue)
                {
                    if ((type2 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == type2 ||
                        (type2 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == CodeGenerateSystem.Base.enLinkType.NumbericalValue)
                    {
                        return(type1);
                    }
                    if (type1 == type2)
                    {
                        return(type1);
                    }
                    if ((type2 & CodeGenerateSystem.Base.enLinkType.VectorValue) == type2 ||
                        (type2 & CodeGenerateSystem.Base.enLinkType.VectorValue) == CodeGenerateSystem.Base.enLinkType.VectorValue)
                    {
                        return(type1);
                    }
                    return(CodeGenerateSystem.Base.enLinkType.Unknow);
                }
                if ((type2 & CodeGenerateSystem.Base.enLinkType.VectorValue) == type2 ||
                    (type2 & CodeGenerateSystem.Base.enLinkType.VectorValue) == CodeGenerateSystem.Base.enLinkType.VectorValue)
                {
                    if ((type1 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == type1 ||
                        (type1 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == CodeGenerateSystem.Base.enLinkType.NumbericalValue)
                    {
                        return(type2);
                    }
                    if (type1 == type2)
                    {
                        return(type1);
                    }
                    if ((type1 & CodeGenerateSystem.Base.enLinkType.VectorValue) == type1 ||
                        (type1 & CodeGenerateSystem.Base.enLinkType.VectorValue) == CodeGenerateSystem.Base.enLinkType.VectorValue)
                    {
                        return(type2);
                    }
                    return(CodeGenerateSystem.Base.enLinkType.Unknow);
                }
                if ((type1 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == type1 &&
                    (type2 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == type2)
                {
                    if (type1 == CodeGenerateSystem.Base.enLinkType.NumbericalValue &&
                        type2 == CodeGenerateSystem.Base.enLinkType.NumbericalValue)
                    {
                        return(CodeGenerateSystem.Base.enLinkType.NumbericalValue);
                    }
                    else if (type1 == CodeGenerateSystem.Base.enLinkType.Double ||
                             type2 == CodeGenerateSystem.Base.enLinkType.Double)
                    {
                        return(CodeGenerateSystem.Base.enLinkType.Double);
                    }
                    else if (type1 == CodeGenerateSystem.Base.enLinkType.Single ||
                             type2 == CodeGenerateSystem.Base.enLinkType.Single)
                    {
                        return(CodeGenerateSystem.Base.enLinkType.Single);
                    }
                    else
                    {
                        switch (type1)
                        {
                        case CodeGenerateSystem.Base.enLinkType.UInt64:
                        {
                            switch (type2)
                            {
                            case CodeGenerateSystem.Base.enLinkType.UInt64:
                            case CodeGenerateSystem.Base.enLinkType.UInt32:
                            case CodeGenerateSystem.Base.enLinkType.UInt16:
                            case CodeGenerateSystem.Base.enLinkType.Byte:
                                return(CodeGenerateSystem.Base.enLinkType.UInt64);

                            default:
                                return(CodeGenerateSystem.Base.enLinkType.Unknow);
                            }
                        }

                        case CodeGenerateSystem.Base.enLinkType.UInt32:
                        {
                            switch (type2)
                            {
                            case CodeGenerateSystem.Base.enLinkType.UInt64:
                                return(CodeGenerateSystem.Base.enLinkType.UInt64);

                            case CodeGenerateSystem.Base.enLinkType.UInt32:
                            case CodeGenerateSystem.Base.enLinkType.UInt16:
                            case CodeGenerateSystem.Base.enLinkType.Byte:
                                return(CodeGenerateSystem.Base.enLinkType.UInt32);

                            case CodeGenerateSystem.Base.enLinkType.Int64:
                            case CodeGenerateSystem.Base.enLinkType.Int32:
                            case CodeGenerateSystem.Base.enLinkType.Int16:
                            case CodeGenerateSystem.Base.enLinkType.SByte:
                                return(CodeGenerateSystem.Base.enLinkType.Int64);
                            }
                        }
                        break;

                        case CodeGenerateSystem.Base.enLinkType.UInt16:
                        {
                            switch (type2)
                            {
                            case CodeGenerateSystem.Base.enLinkType.UInt64:
                                return(CodeGenerateSystem.Base.enLinkType.UInt64);

                            case CodeGenerateSystem.Base.enLinkType.UInt32:
                                return(CodeGenerateSystem.Base.enLinkType.UInt32);

                            case CodeGenerateSystem.Base.enLinkType.UInt16:
                            case CodeGenerateSystem.Base.enLinkType.Byte:
                                return(CodeGenerateSystem.Base.enLinkType.Int32);

                            case CodeGenerateSystem.Base.enLinkType.Int64:
                                return(CodeGenerateSystem.Base.enLinkType.Int64);

                            case CodeGenerateSystem.Base.enLinkType.Int32:
                            case CodeGenerateSystem.Base.enLinkType.Int16:
                            case CodeGenerateSystem.Base.enLinkType.SByte:
                                return(CodeGenerateSystem.Base.enLinkType.Int32);
                            }
                        }
                        break;

                        case CodeGenerateSystem.Base.enLinkType.Byte:
                        {
                            switch (type2)
                            {
                            case CodeGenerateSystem.Base.enLinkType.UInt64:
                                return(CodeGenerateSystem.Base.enLinkType.UInt64);

                            case CodeGenerateSystem.Base.enLinkType.UInt32:
                                return(CodeGenerateSystem.Base.enLinkType.UInt32);

                            case CodeGenerateSystem.Base.enLinkType.UInt16:
                            case CodeGenerateSystem.Base.enLinkType.Byte:
                                return(CodeGenerateSystem.Base.enLinkType.Int32);

                            case CodeGenerateSystem.Base.enLinkType.Int64:
                                return(CodeGenerateSystem.Base.enLinkType.Int64);

                            case CodeGenerateSystem.Base.enLinkType.Int32:
                            case CodeGenerateSystem.Base.enLinkType.Int16:
                            case CodeGenerateSystem.Base.enLinkType.SByte:
                                return(CodeGenerateSystem.Base.enLinkType.Int32);
                            }
                        }
                        break;

                        case CodeGenerateSystem.Base.enLinkType.Int64:
                        {
                            switch (type2)
                            {
                            case CodeGenerateSystem.Base.enLinkType.UInt64:
                                return(CodeGenerateSystem.Base.enLinkType.Unknow);

                            case CodeGenerateSystem.Base.enLinkType.UInt32:
                            case CodeGenerateSystem.Base.enLinkType.UInt16:
                            case CodeGenerateSystem.Base.enLinkType.Byte:
                            case CodeGenerateSystem.Base.enLinkType.Int64:
                            case CodeGenerateSystem.Base.enLinkType.Int32:
                            case CodeGenerateSystem.Base.enLinkType.Int16:
                            case CodeGenerateSystem.Base.enLinkType.SByte:
                                return(CodeGenerateSystem.Base.enLinkType.Int64);
                            }
                        }
                        break;

                        case CodeGenerateSystem.Base.enLinkType.Int32:
                        {
                            switch (type2)
                            {
                            case CodeGenerateSystem.Base.enLinkType.UInt64:
                                return(CodeGenerateSystem.Base.enLinkType.Unknow);

                            case CodeGenerateSystem.Base.enLinkType.UInt32:
                            case CodeGenerateSystem.Base.enLinkType.Int64:
                                return(CodeGenerateSystem.Base.enLinkType.Int64);

                            case CodeGenerateSystem.Base.enLinkType.UInt16:
                            case CodeGenerateSystem.Base.enLinkType.Byte:
                            case CodeGenerateSystem.Base.enLinkType.Int32:
                            case CodeGenerateSystem.Base.enLinkType.Int16:
                            case CodeGenerateSystem.Base.enLinkType.SByte:
                                return(CodeGenerateSystem.Base.enLinkType.Int32);
                            }
                        }
                        break;

                        case CodeGenerateSystem.Base.enLinkType.Int16:
                        {
                            switch (type2)
                            {
                            case CodeGenerateSystem.Base.enLinkType.UInt64:
                                return(CodeGenerateSystem.Base.enLinkType.Unknow);

                            case CodeGenerateSystem.Base.enLinkType.UInt32:
                            case CodeGenerateSystem.Base.enLinkType.Int64:
                                return(CodeGenerateSystem.Base.enLinkType.Int64);

                            case CodeGenerateSystem.Base.enLinkType.UInt16:
                            case CodeGenerateSystem.Base.enLinkType.Byte:
                            case CodeGenerateSystem.Base.enLinkType.Int32:
                            case CodeGenerateSystem.Base.enLinkType.Int16:
                            case CodeGenerateSystem.Base.enLinkType.SByte:
                                return(CodeGenerateSystem.Base.enLinkType.Int32);
                            }
                        }
                        break;

                        case CodeGenerateSystem.Base.enLinkType.SByte:
                        {
                            switch (type2)
                            {
                            case CodeGenerateSystem.Base.enLinkType.UInt64:
                                return(CodeGenerateSystem.Base.enLinkType.Unknow);

                            case CodeGenerateSystem.Base.enLinkType.UInt32:
                            case CodeGenerateSystem.Base.enLinkType.Int64:
                                return(CodeGenerateSystem.Base.enLinkType.Int64);

                            case CodeGenerateSystem.Base.enLinkType.UInt16:
                            case CodeGenerateSystem.Base.enLinkType.Byte:
                            case CodeGenerateSystem.Base.enLinkType.Int32:
                            case CodeGenerateSystem.Base.enLinkType.Int16:
                            case CodeGenerateSystem.Base.enLinkType.SByte:
                                return(CodeGenerateSystem.Base.enLinkType.Int32);
                            }
                        }
                        break;

                        default:
                            return(type1);
                        }
                    }
                }
            }
            break;

            case "&&":
            case "||":
                //if (type1 == CodeGenerateSystem.Base.enLinkType.Bool && type2 == CodeGenerateSystem.Base.enLinkType.Bool)
                return(CodeGenerateSystem.Base.enLinkType.Bool);

            //break;
            case "&":
            case "|":
                if (((type1 & CodeGenerateSystem.Base.enLinkType.UnsignedNumbericalValue) == type1) &&
                    ((type2 & CodeGenerateSystem.Base.enLinkType.UnsignedNumbericalValue) == type2))
                {
                    switch (type1)
                    {
                    case CodeGenerateSystem.Base.enLinkType.Byte:
                    {
                        switch (type2)
                        {
                        case CodeGenerateSystem.Base.enLinkType.Byte:
                        case CodeGenerateSystem.Base.enLinkType.UInt16:
                            return(CodeGenerateSystem.Base.enLinkType.Int32);

                        case CodeGenerateSystem.Base.enLinkType.UInt32:
                            return(CodeGenerateSystem.Base.enLinkType.UInt32);

                        case CodeGenerateSystem.Base.enLinkType.UInt64:
                            return(CodeGenerateSystem.Base.enLinkType.UInt64);
                        }
                    }
                    break;

                    case CodeGenerateSystem.Base.enLinkType.UInt16:
                    {
                        switch (type2)
                        {
                        case CodeGenerateSystem.Base.enLinkType.Byte:
                        case CodeGenerateSystem.Base.enLinkType.UInt16:
                            return(CodeGenerateSystem.Base.enLinkType.Int32);

                        case CodeGenerateSystem.Base.enLinkType.UInt32:
                            return(CodeGenerateSystem.Base.enLinkType.UInt32);

                        case CodeGenerateSystem.Base.enLinkType.UInt64:
                            return(CodeGenerateSystem.Base.enLinkType.UInt64);
                        }
                    }
                    break;

                    case CodeGenerateSystem.Base.enLinkType.UInt32:
                    {
                        switch (type2)
                        {
                        case CodeGenerateSystem.Base.enLinkType.Byte:
                        case CodeGenerateSystem.Base.enLinkType.UInt16:
                        case CodeGenerateSystem.Base.enLinkType.UInt32:
                            return(CodeGenerateSystem.Base.enLinkType.UInt32);

                        case CodeGenerateSystem.Base.enLinkType.UInt64:
                            return(CodeGenerateSystem.Base.enLinkType.UInt64);
                        }
                    }
                    break;

                    case CodeGenerateSystem.Base.enLinkType.UInt64:
                    {
                        switch (type2)
                        {
                        case CodeGenerateSystem.Base.enLinkType.Byte:
                        case CodeGenerateSystem.Base.enLinkType.UInt16:
                        case CodeGenerateSystem.Base.enLinkType.UInt32:
                        case CodeGenerateSystem.Base.enLinkType.UInt64:
                            return(CodeGenerateSystem.Base.enLinkType.UInt64);
                        }
                    }
                    break;
                    }
                }
                break;
            }

            return(CodeGenerateSystem.Base.enLinkType.Unknow);
        }