示例#1
0
        static int _m_GetTypeCode(RealStatePtr L)
        {
            ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


            System.Enum __cl_gen_to_be_invoked = (System.Enum)translator.FastGetCSObj(L, 1);


            try {
                {
                    System.TypeCode __cl_gen_ret = __cl_gen_to_be_invoked.GetTypeCode(  );
                    translator.Push(L, __cl_gen_ret);



                    return(1);
                }
            } catch (System.Exception __gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + __gen_e));
            }
        }
        public static object ToEnumsNumericType(System.Enum e)
        {
            if (e == null)
            {
                return(null);
            }

            switch (e.GetTypeCode())
            {
            case System.TypeCode.SByte:
                return(System.Convert.ToSByte(e));

            case System.TypeCode.Byte:
                return(System.Convert.ToByte(e));

            case System.TypeCode.Int16:
                return(System.Convert.ToInt16(e));

            case System.TypeCode.UInt16:
                return(System.Convert.ToUInt16(e));

            case System.TypeCode.Int32:
                return(System.Convert.ToInt32(e));

            case System.TypeCode.UInt32:
                return(System.Convert.ToUInt32(e));

            case System.TypeCode.Int64:
                return(System.Convert.ToInt64(e));

            case System.TypeCode.UInt64:
                return(System.Convert.ToUInt64(e));

            default:
                return(null);
            }
        }
示例#3
0
        public static bool Contains(this System.Enum e, System.Enum value)
        {
            if (e.GetType() != value.GetType())
            {
                throw new System.ArgumentException("Type mismatch");
            }
            var typeCode = e.GetTypeCode();

            switch (typeCode)
            {
            case System.TypeCode.SByte:
                return((System.Convert.ToSByte(e) & System.Convert.ToSByte(value)) != 0);

            case System.TypeCode.Int16:
                return((System.Convert.ToInt16(e) & System.Convert.ToInt16(value)) != 0);

            case System.TypeCode.Int32:
                return((System.Convert.ToInt32(e) & System.Convert.ToInt32(value)) != 0);

            case System.TypeCode.Int64:
                return((System.Convert.ToInt64(e) & System.Convert.ToInt64(value)) != 0);

            case System.TypeCode.Byte:
                return((System.Convert.ToByte(e) & System.Convert.ToByte(value)) != 0);

            case System.TypeCode.UInt16:
                return((System.Convert.ToUInt16(e) & System.Convert.ToUInt16(value)) != 0);

            case System.TypeCode.UInt32:
                return((System.Convert.ToUInt32(e) & System.Convert.ToUInt32(value)) != 0);

            case System.TypeCode.UInt64:
                return((System.Convert.ToUInt64(e) & System.Convert.ToUInt64(value)) != 0);
            }
            throw new System.InvalidOperationException(string.Format("The comparison of the type {0} is not implemented.", e.GetType().Name));
        }
        public static IEnumerable <System.Enum> GetFlags(System.Enum e)
        {
            if (e == null)
            {
                throw new System.ArgumentNullException("e");
            }

            var   tp  = e.GetType();
            ulong max = 0;

            foreach (var en in System.Enum.GetValues(tp))
            {
                ulong v = System.Convert.ToUInt64(en);
                if (v > max)
                {
                    max = v;
                }
            }
            int loops = (int)System.Math.Log(max, 2) + 1;


            ulong ie = System.Convert.ToUInt64(e);

            for (int i = 0; i < loops; i++)
            {
                ulong j = (ulong)System.Math.Pow(2, i);
                if ((ie & j) != 0)
                {
                    var js = ToEnumsNumericType(j, e.GetTypeCode());
                    if (System.Enum.IsDefined(tp, js))
                    {
                        yield return((System.Enum)System.Enum.Parse(tp, js.ToString()));
                    }
                }
            }
        }
示例#5
0
        /** Convert
         */
        public static JsonItem Convert(System.Object a_from_object, ConvertToJsonItemOption a_from_option)
        {
            if ((a_from_option & ConvertToJsonItemOption.EnumString) > 0)
            {
                //enumの文字列化。

                string t_value = a_from_object.ToString();

                if (t_value != null)
                {
                    return(new JsonItem(new Value_StringData(t_value)));
                }
                else
                {
                    //NULL処理。
                    return(null);
                }
            }
            else
            {
                //enumの数値化。

                System.Enum t_enum = (System.Enum)a_from_object;
                if (t_enum != null)
                {
                                        #pragma warning disable 0162
                    switch (t_enum.GetTypeCode())
                    {
                    case System.TypeCode.Byte:
                    {
                        return(new JsonItem(new Value_Number <System.Byte>((System.Byte)a_from_object)));
                    } break;

                    case System.TypeCode.SByte:
                    {
                        return(new JsonItem(new Value_Number <System.SByte>((System.SByte)a_from_object)));
                    } break;

                    case System.TypeCode.Int16:
                    {
                        return(new JsonItem(new Value_Number <System.Int16>((System.Int16)a_from_object)));
                    } break;

                    case System.TypeCode.UInt16:
                    {
                        return(new JsonItem(new Value_Number <System.UInt16>((System.UInt16)a_from_object)));
                    } break;

                    case System.TypeCode.Int32:
                    {
                        return(new JsonItem(new Value_Number <System.Int32>((System.Int32)a_from_object)));
                    } break;

                    case System.TypeCode.UInt32:
                    {
                        return(new JsonItem(new Value_Number <System.UInt32>((System.UInt32)a_from_object)));
                    } break;

                    case System.TypeCode.Int64:
                    {
                        return(new JsonItem(new Value_Number <System.Int64>((System.Int64)a_from_object)));
                    } break;

                    case System.TypeCode.UInt64:
                    {
                        return(new JsonItem(new Value_Number <System.UInt64>((System.UInt64)a_from_object)));
                    } break;

                    default:
                    {
                                                        #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                        DebugTool.Assert(false);
                                                        #endif

                        return(null);
                    } break;
                    }
                                        #pragma warning restore
                }
                else
                {
                                        #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                    DebugTool.Assert(false);
                                        #endif

                    return(null);
                }
            }
        }
示例#6
0
        /** Convert
         */
        public static void Convert(ref System.Object a_to_refobject, System.Type a_to_type, JsonItem a_from_jsonitem)
        {
                        #pragma warning disable 0162
            switch (a_to_type.FullName)
            {
            case "System." + nameof(System.Char):
            {
                a_to_refobject = a_from_jsonitem.CastToChar();
                return;
            } break;

            case "System." + nameof(System.SByte):
            {
                a_to_refobject = a_from_jsonitem.CastToSbyte();
                return;
            } break;

            case "System." + nameof(System.Byte):
            {
                a_to_refobject = a_from_jsonitem.CastToByte();
                return;
            } break;

            case "System." + nameof(System.Int16):
            {
                a_to_refobject = a_from_jsonitem.CastToInt16();
                return;
            } break;

            case "System." + nameof(System.UInt16):
            {
                a_to_refobject = a_from_jsonitem.CastToUint16();
                return;
            } break;

            case "System." + nameof(System.Int32):
            {
                a_to_refobject = a_from_jsonitem.CastToInt32();
                return;
            } break;

            case "System." + nameof(System.UInt32):
            {
                a_to_refobject = a_from_jsonitem.CastToUint32();
                return;
            } break;

            case "System." + nameof(System.Int64):
            {
                a_to_refobject = a_from_jsonitem.CastToInt64();
                return;
            } break;

            case "System." + nameof(System.UInt64):
            {
                a_to_refobject = a_from_jsonitem.CastToUint64();
                return;
            } break;

            case "System." + nameof(System.Single):
            {
                a_to_refobject = a_from_jsonitem.CastToSingle();
                return;
            } break;

            case "System." + nameof(System.Double):
            {
                a_to_refobject = a_from_jsonitem.CastToDouble();
                return;
            } break;

            case "System." + nameof(System.Boolean):
            {
                a_to_refobject = a_from_jsonitem.CastToBoolData();
                return;
            } break;

            case "System." + nameof(System.Decimal):
            {
                a_to_refobject = a_from_jsonitem.CastToDecimal();
                return;
            } break;

            case "System." + nameof(System.String):
            {
                switch (a_from_jsonitem.GetValueType())
                {
                case ValueType.SignedNumber:
                {
                    a_to_refobject = a_from_jsonitem.GetSignedNumber().ToString();
                    return;
                } break;

                case ValueType.UnsignedNumber:
                {
                    a_to_refobject = a_from_jsonitem.GetUnsignedNumber().ToString();
                    return;
                } break;

                case ValueType.FloatingNumber:
                {
                    a_to_refobject = a_from_jsonitem.GetFloatingNumber().ToString();
                    return;
                } break;

                case ValueType.DecimalNumber:
                {
                    a_to_refobject = a_from_jsonitem.GetDecimalNumber().ToString();
                    return;
                } break;

                case ValueType.BoolData:
                {
                    a_to_refobject = a_from_jsonitem.GetBoolData().ToString();
                    return;
                } break;

                default:
                {
                    //失敗。

                                                        #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                    DebugTool.Assert(false);
                                                        #endif

                    return;
                } break;
                }
            } break;

            default:
            {
                if (a_to_type.IsEnum == true)
                {
                    System.Enum t_enum = (System.Enum)a_to_refobject;
                    if (t_enum != null)
                    {
                        switch (t_enum.GetTypeCode())
                        {
                        case System.TypeCode.Byte:
                        {
                            a_to_refobject = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToByte());
                            return;
                        } break;

                        case System.TypeCode.SByte:
                        {
                            a_to_refobject = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToSbyte());
                            return;
                        } break;

                        case System.TypeCode.Int16:
                        {
                            a_to_refobject = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToInt16());
                            return;
                        } break;

                        case System.TypeCode.UInt16:
                        {
                            a_to_refobject = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToUint16());
                            return;
                        } break;

                        case System.TypeCode.Int32:
                        {
                            a_to_refobject = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToInt32());
                            return;
                        } break;

                        case System.TypeCode.UInt32:
                        {
                            a_to_refobject = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToUint32());
                            return;
                        } break;

                        case System.TypeCode.Int64:
                        {
                            a_to_refobject = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToInt64());
                            return;
                        } break;

                        case System.TypeCode.UInt64:
                        {
                            a_to_refobject = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToUint64());
                            return;
                        } break;

                        default:
                        {
                            //失敗。

                                                                        #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                            DebugTool.Assert(false);
                                                                        #endif

                            return;
                        } break;
                        }
                    }
                    else
                    {
                        //失敗。

                                                        #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                        DebugTool.Assert(false);
                                                        #endif

                        return;
                    }
                }
                else
                {
                    //失敗。

                                                #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                    DebugTool.Assert(false);
                                                #endif

                    return;
                }
            } break;
            }
                        #pragma warning restore
        }
        /** Convert
         */
        public static JsonItem Convert(System.Object a_from_object, ConvertToJsonItemOption a_from_option)
        {
            if ((a_from_option & ConvertToJsonItemOption.EnumString) > 0)
            {
                //enumの文字列化。

                string t_value = a_from_object.ToString();

                if (t_value != null)
                {
                    return(new JsonItem(new Value_StringData(t_value)));
                }
                else
                {
                    //NULL処理。
                    return(null);
                }
            }
            else
            {
                //enumの数値化。

                System.Enum t_enum = (System.Enum)a_from_object;
                if (t_enum != null)
                {
                    switch (t_enum.GetTypeCode())
                    {
                    case System.TypeCode.Byte:
                    {
                        return(new JsonItem(new Value_Number <System.Byte>((System.Byte)a_from_object)));
                    } break;

                    case System.TypeCode.SByte:
                    {
                        return(new JsonItem(new Value_Number <System.SByte>((System.SByte)a_from_object)));
                    } break;

                    case System.TypeCode.Int16:
                    {
                        return(new JsonItem(new Value_Number <System.Int16>((System.Int16)a_from_object)));
                    } break;

                    case System.TypeCode.UInt16:
                    {
                        return(new JsonItem(new Value_Number <System.UInt16>((System.UInt16)a_from_object)));
                    } break;

                    case System.TypeCode.Int32:
                    {
                        return(new JsonItem(new Value_Number <System.Int32>((System.Int32)a_from_object)));
                    } break;

                    case System.TypeCode.UInt32:
                    {
                        return(new JsonItem(new Value_Number <System.UInt32>((System.UInt32)a_from_object)));
                    } break;

                    case System.TypeCode.Int64:
                    {
                        return(new JsonItem(new Value_Number <System.Int64>((System.Int64)a_from_object)));
                    } break;

                    case System.TypeCode.UInt64:
                    {
                        return(new JsonItem(new Value_Number <System.UInt64>((System.UInt64)a_from_object)));
                    } break;

                    default:
                    {
                        Tool.Assert(false);
                    } break;
                    }
                }
            }

            //失敗。
            Tool.Assert(false);
            return(null);
        }
        /** Convert
         */
        public static void Convert(ref System.Object a_to_ref_object, System.Type a_to_type, JsonItem a_from_jsonitem)
        {
            try{
                switch (a_to_type.FullName)
                {
                case "System." + nameof(System.Char):
                {
                    a_to_ref_object = a_from_jsonitem.CastToChar();
                    return;
                } break;

                case "System." + nameof(System.SByte):
                {
                    a_to_ref_object = a_from_jsonitem.CastToSbyte();
                    return;
                } break;

                case "System." + nameof(System.Byte):
                {
                    a_to_ref_object = a_from_jsonitem.CastToByte();
                    return;
                } break;

                case "System." + nameof(System.Int16):
                {
                    a_to_ref_object = a_from_jsonitem.CastToInt16();
                    return;
                } break;

                case "System." + nameof(System.UInt16):
                {
                    a_to_ref_object = a_from_jsonitem.CastToUint16();
                    return;
                } break;

                case "System." + nameof(System.Int32):
                {
                    a_to_ref_object = a_from_jsonitem.CastToInt32();
                    return;
                } break;

                case "System." + nameof(System.UInt32):
                {
                    a_to_ref_object = a_from_jsonitem.CastToUint32();
                    return;
                } break;

                case "System." + nameof(System.Int64):
                {
                    a_to_ref_object = a_from_jsonitem.CastToInt64();
                    return;
                } break;

                case "System." + nameof(System.UInt64):
                {
                    a_to_ref_object = a_from_jsonitem.CastToUint64();
                    return;
                } break;

                case "System." + nameof(System.Single):
                {
                    a_to_ref_object = a_from_jsonitem.CastToSingle();
                    return;
                } break;

                case "System." + nameof(System.Double):
                {
                    a_to_ref_object = a_from_jsonitem.CastToDouble();
                    return;
                } break;

                case "System." + nameof(System.Boolean):
                {
                    a_to_ref_object = a_from_jsonitem.CastToBoolData();
                    return;
                } break;

                case "System." + nameof(System.Decimal):
                {
                    a_to_ref_object = a_from_jsonitem.CastToDecimal();
                    return;
                } break;

                default:
                {
                    if (a_to_type.IsEnum == true)
                    {
                        System.Enum t_enum = (System.Enum)a_to_ref_object;
                        if (t_enum != null)
                        {
                            switch (t_enum.GetTypeCode())
                            {
                            case System.TypeCode.Byte:
                            {
                                a_to_ref_object = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToByte());
                                return;
                            } break;

                            case System.TypeCode.SByte:
                            {
                                a_to_ref_object = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToSbyte());
                                return;
                            } break;

                            case System.TypeCode.Int16:
                            {
                                a_to_ref_object = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToInt16());
                                return;
                            } break;

                            case System.TypeCode.UInt16:
                            {
                                a_to_ref_object = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToUint16());
                                return;
                            } break;

                            case System.TypeCode.Int32:
                            {
                                a_to_ref_object = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToInt32());
                                return;
                            } break;

                            case System.TypeCode.UInt32:
                            {
                                a_to_ref_object = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToUint32());
                                return;
                            } break;

                            case System.TypeCode.Int64:
                            {
                                a_to_ref_object = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToInt64());
                                return;
                            } break;

                            case System.TypeCode.UInt64:
                            {
                                a_to_ref_object = System.Enum.ToObject(a_to_type, a_from_jsonitem.CastToUint64());
                                return;
                            } break;
                            }
                        }
                    }
                } break;
                }
            }catch (System.Exception t_exception) {
                Tool.DebugReThrow(t_exception);
            }

            //失敗。
            Tool.Assert(false);
        }