public FCValueType() { m_nTemplateType = fc_value_tempalte_type.template_none; m_nKeyType = fc_value_type.fc_value_unknow; m_nValueType = fc_value_type.fc_value_unknow; m_bRef = false; }
// 功能:分析类型 public void SetType(Type nType) { if (nType.IsArray) { m_nTemplateType = fc_value_tempalte_type.template_array; m_key = m_value = nType.GetElementType(); m_nKeyType = m_nValueType = GetBaseFCType(m_value); return; } string szTypeName = nType.Name; string szSpaceName = nType.Namespace; if (szTypeName == "List`1" || szTypeName == "List`1&") { Type[] argtypes = nType.GetGenericArguments(); // 模板的参数 m_nTemplateType = fc_value_tempalte_type.template_list; m_key = m_value = argtypes[0]; m_nKeyType = m_nValueType = GetBaseFCType(m_value); return; } if (szTypeName == "Dictionary`2" || szTypeName == "Dictionary`2&") { Type[] argtypes = nType.GetGenericArguments(); // 模板的参数 m_nTemplateType = fc_value_tempalte_type.template_map; m_key = argtypes[0]; m_value = argtypes[1]; m_nKeyType = GetBaseFCType(m_key); m_nValueType = GetBaseFCType(m_value); return; } if (szTypeName == "Task`1") { Type[] argtypes = nType.GetGenericArguments(); // 模板的参数 m_nTemplateType = fc_value_tempalte_type.template_task; m_key = m_value = argtypes[0]; m_nKeyType = m_nValueType = GetBaseFCType(m_value); return; } m_nTemplateType = fc_value_tempalte_type.template_none; m_key = m_value = nType; m_nKeyType = m_nValueType = GetBaseFCType(m_value); }
public static fc_value_type GetBaseFCType(Type nType) { if (s_BaseTypeFinder == null) { InitBaseTypeFinder(); } fc_value_type nFCType = fc_value_type.fc_value_unknow; if (s_BaseTypeFinder.TryGetValue(nType, out nFCType)) { return(nFCType); } if (nType.IsEnum) { return(fc_value_type.fc_value_enum); } if (typeof(System.MulticastDelegate).IsAssignableFrom(nType) || nType == typeof(System.MulticastDelegate)) { return(fc_value_type.fc_value_delegate); } return(fc_value_type.fc_value_object); }
public static bool IsRefType(fc_value_type nType) { switch (nType) { case fc_value_type.fc_value_vector2: case fc_value_type.fc_value_vector3: case fc_value_type.fc_value_vector4: case fc_value_type.fc_value_plane: case fc_value_type.fc_value_bounds: case fc_value_type.fc_value_matrix: case fc_value_type.fc_value_ray: case fc_value_type.fc_value_sphere: case fc_value_type.fc_value_quaternion: case fc_value_type.fc_value_color32: case fc_value_type.fc_value_color: case fc_value_type.fc_value_intrect: case fc_value_type.fc_value_rect: return(true); default: break; } return(false); }
public static string GetFCLibFuncShortName(fc_value_type nType) { switch (nType) { case fc_value_type.fc_value_bool: return("bool"); case fc_value_type.fc_value_char: return("char"); case fc_value_type.fc_value_byte: return("byte"); case fc_value_type.fc_value_short: return("short"); case fc_value_type.fc_value_ushort: return("ushort"); case fc_value_type.fc_value_int: return("int"); case fc_value_type.fc_value_uint: return("uint"); case fc_value_type.fc_value_float: return("float"); case fc_value_type.fc_value_double: return("double"); case fc_value_type.fc_value_int64: return("int64"); case fc_value_type.fc_value_uint64: return("uint64"); case fc_value_type.fc_value_string_a: return("string_a"); case fc_value_type.fc_value_vector2: return("vector2"); case fc_value_type.fc_value_vector3: return("vector3"); case fc_value_type.fc_value_vector4: return("vector4"); case fc_value_type.fc_value_plane: return("plane"); case fc_value_type.fc_value_ray: return("ray"); case fc_value_type.fc_value_matrix: return("matrix"); case fc_value_type.fc_value_sphere: return("sphere"); case fc_value_type.fc_value_quaternion: return("quaternion"); case fc_value_type.fc_value_bounds: return("bounds"); case fc_value_type.fc_value_rect: return("rect"); case fc_value_type.fc_value_intrect: return("intrect"); case fc_value_type.fc_value_color: return("color"); case fc_value_type.fc_value_color32: return("color32"); case fc_value_type.fc_value_int_ptr: return("void_ptr"); //case fc_value_type.fc_value_system_object: //case fc_value_type.fc_value_object: // return "intptr"; default: break; } return(string.Empty); }
public static string GetBaseValueTypeName(fc_value_type nFCType, Type nType, bool bCSharp, bool bFullName) { if (nType.IsByRef) { Type nRealType = nType.GetElementType(); if (nRealType != null) { FCValueType v = TransType(nRealType); nFCType = v.m_nValueType; nType = nRealType; } } switch (nFCType) { case fc_value_type.fc_value_bool: return("bool"); case fc_value_type.fc_value_byte: return("byte"); case fc_value_type.fc_value_char: return("char"); case fc_value_type.fc_value_short: return("short"); case fc_value_type.fc_value_ushort: return("ushort"); case fc_value_type.fc_value_int: return("int"); case fc_value_type.fc_value_uint: return("uint"); case fc_value_type.fc_value_float: return("float"); case fc_value_type.fc_value_double: return("double"); case fc_value_type.fc_value_int64: return(bCSharp ? "long": "long"); case fc_value_type.fc_value_uint64: return(bCSharp ? "ulong" : "ulong"); case fc_value_type.fc_value_string_a: return(bCSharp ? "string" : "StringA"); case fc_value_type.fc_value_void: return("void"); case fc_value_type.fc_value_vector2: return("Vector2"); case fc_value_type.fc_value_vector3: return("Vector3"); case fc_value_type.fc_value_vector4: return("Vector4"); case fc_value_type.fc_value_plane: return("Plane"); case fc_value_type.fc_value_bounds: return("Bounds"); case fc_value_type.fc_value_matrix: return(bCSharp ? "Matrix4x4" : "Matrix"); case fc_value_type.fc_value_ray: return("Ray"); case fc_value_type.fc_value_sphere: return("Sphere"); case fc_value_type.fc_value_quaternion: return("Quaternion"); case fc_value_type.fc_value_color32: return("Color32"); case fc_value_type.fc_value_color: return("Color"); case fc_value_type.fc_value_intrect: return("IntRect"); case fc_value_type.fc_value_rect: return("Rect"); case fc_value_type.fc_value_int_ptr: return("IntPtr"); case fc_value_type.fc_value_system_object: return(bCSharp ? "System.Object" : "Object"); case fc_value_type.fc_value_unity_object: return(bCSharp ? "UnityObject" : "UnityObject"); //return bCSharp ? "UnityEngine.Object" : "UnityObject"; case fc_value_type.fc_value_delegate: { return(GetDeleteExportName(nType, bCSharp, bFullName)); } case fc_value_type.fc_value_task: return("Task"); default: break; } string szCSharpName = bFullName ? nType.FullName : nType.Name; if (string.IsNullOrEmpty(szCSharpName)) { return(string.Empty); } if (!bFullName && !bCSharp) { if (nType.IsNested && nType.IsEnum) { string szFullName = nType.FullName; int nIndex = szFullName.LastIndexOf('.'); if (nIndex != -1) { szCSharpName = szFullName.Substring(nIndex + 1); } else { szCSharpName = szFullName; } } } szCSharpName = szCSharpName.Replace('+', '.'); szCSharpName = szCSharpName.Replace("&", ""); return(szCSharpName); }
public static bool IsObjectType(fc_value_type nValueType) { return(nValueType == fc_value_type.fc_value_system_object || nValueType == fc_value_type.fc_value_object || nValueType == fc_value_type.fc_value_unity_object); }
public static bool IsGraphicType(fc_value_type nValueType) { return(nValueType != fc_value_type.fc_value_object && nValueType >= fc_value_type.fc_value_vector2); }
public static bool IsBaseType(fc_value_type nValueType) { return(nValueType < fc_value_type.fc_value_system_object); }
public void SetType(Type nType) { m_bRef = nType.IsByRef; if (m_bRef) { Type nRealType = nType.GetElementType(); if (nRealType != null) { nType = nRealType; } } if (nType.IsArray) { m_nTemplateType = fc_value_tempalte_type.template_array; m_key = m_value = nType.GetElementType(); m_nKeyType = m_nValueType = GetBaseFCType(m_value); return; } string szTypeName = nType.Name; string szSpaceName = nType.Namespace; if (szTypeName == "List`1" || szTypeName == "List`1&") { Type[] argtypes = nType.GetGenericArguments(); m_nTemplateType = fc_value_tempalte_type.template_list; m_key = m_value = argtypes[0]; m_nKeyType = m_nValueType = GetBaseFCType(m_value); return; } if (szTypeName == "Dictionary`2" || szTypeName == "Dictionary`2&") { Type[] argtypes = nType.GetGenericArguments(); m_nTemplateType = fc_value_tempalte_type.template_map; m_key = argtypes[0]; m_value = argtypes[1]; m_nKeyType = GetBaseFCType(m_key); m_nValueType = GetBaseFCType(m_value); return; } if (szTypeName == "Task`1") { Type[] argtypes = nType.GetGenericArguments(); m_nTemplateType = fc_value_tempalte_type.template_task; m_key = m_value = argtypes[0]; m_nKeyType = m_nValueType = GetBaseFCType(m_value); return; } if (szTypeName == "IEnumerable`1") { Type[] argtypes = nType.GetGenericArguments(); m_nTemplateType = fc_value_tempalte_type.template_ienumerable; m_key = m_value = argtypes[0]; m_nKeyType = m_nValueType = GetBaseFCType(m_value); return; } m_bCustomTemplate = IsCustomTemplate(szTypeName); m_nTemplateType = fc_value_tempalte_type.template_none; m_key = m_value = nType; m_nKeyType = m_nValueType = GetBaseFCType(m_value); }
// 功能:得到变量的类型名 public static string GetBaseValueTypeName(fc_value_type nFCType, Type nType, bool bCSharp, bool bFullName) { switch (nFCType) { case fc_value_type.fc_value_bool: return("bool"); case fc_value_type.fc_value_byte: return("byte"); case fc_value_type.fc_value_char: return("char"); case fc_value_type.fc_value_short: return("short"); case fc_value_type.fc_value_ushort: return("ushort"); case fc_value_type.fc_value_int: return("int"); case fc_value_type.fc_value_uint: return("uint"); case fc_value_type.fc_value_float: return("float"); case fc_value_type.fc_value_double: return("double"); case fc_value_type.fc_value_int64: return(bCSharp ? "long": "int64"); case fc_value_type.fc_value_uint64: return(bCSharp ? "ulong" : "uint64"); case fc_value_type.fc_value_string_a: return(bCSharp ? "string" : "StringA"); case fc_value_type.fc_value_void: return("void"); case fc_value_type.fc_value_vector2: return("Vector2"); case fc_value_type.fc_value_vector3: return("Vector3"); case fc_value_type.fc_value_vector4: return("Vector4"); case fc_value_type.fc_value_plane: return("Plane"); case fc_value_type.fc_value_bounds: return("Bounds"); case fc_value_type.fc_value_matrix: return(bCSharp ? "Matrix4x4" : "Matrix"); case fc_value_type.fc_value_ray: return("Ray"); case fc_value_type.fc_value_sphere: return("Sphere"); case fc_value_type.fc_value_quaternion: return("Quaternion"); case fc_value_type.fc_value_color32: return("Color32"); case fc_value_type.fc_value_color: return("Color"); case fc_value_type.fc_value_intrect: return("IntRect"); case fc_value_type.fc_value_rect: return("Rect"); case fc_value_type.fc_value_system_object: return(bCSharp ? "System.Object" : "Object"); case fc_value_type.fc_value_unity_object: return(bCSharp ? "UnityObject" : "UnityObject"); //return bCSharp ? "UnityEngine.Object" : "UnityObject"; case fc_value_type.fc_value_delegate: { return(GetDeleteExportName(nType, bCSharp, bFullName)); } case fc_value_type.fc_value_task: return("Task"); default: break; } string szCSharpName = bFullName ? nType.FullName : nType.Name; szCSharpName = szCSharpName.Replace('+', '.'); return(szCSharpName); }
bool AddKeyValueCall(fc_value_type nValueType, string szLeftName, string szPtrName, string szCSharpName) { StringBuilder fileData = m_szTempBuilder; bool bSuc = true; switch (nValueType) { case fc_value_type.fc_value_bool: case fc_value_type.fc_value_byte: case fc_value_type.fc_value_short: case fc_value_type.fc_value_ushort: case fc_value_type.fc_value_int: case fc_value_type.fc_value_uint: case fc_value_type.fc_value_float: case fc_value_type.fc_value_double: case fc_value_type.fc_value_vector2: case fc_value_type.fc_value_vector3: case fc_value_type.fc_value_vector4: case fc_value_type.fc_value_rect: case fc_value_type.fc_value_color32: case fc_value_type.fc_value_color: { fileData.AppendFormat(" {0} {1} = FCLibHelper.fc_get_value_{2}({3});\r\n", szCSharpName, szLeftName, szCSharpName, szPtrName); } break; case fc_value_type.fc_value_int64: { fileData.AppendFormat(" {0} {1} = FCLibHelper.fc_get_value_int64({2});\r\n", szCSharpName, szLeftName, szPtrName); } break; case fc_value_type.fc_value_uint64: { fileData.AppendFormat(" {0} {1} = FCLibHelper.fc_get_value_uint64({2});\r\n", szCSharpName, szLeftName, szPtrName); } break; case fc_value_type.fc_value_string_a: { fileData.AppendFormat(" string {0} = FCLibHelper.fc_get_value_string_a({1});\r\n", szLeftName, szPtrName); } break; case fc_value_type.fc_value_system_object: case fc_value_type.fc_value_unity_object: case fc_value_type.fc_value_object: { fileData.AppendFormat(" {0} {1} = FCGetObj.GetObj<{2}>({3});\r\n", szCSharpName, szLeftName, szCSharpName, szPtrName); } break; case fc_value_type.fc_value_enum: { fileData.AppendFormat(" {0} {1} = ({2})FCLibHelper.fc_set_array_int({3});\r\n", szCSharpName, szLeftName, szCSharpName, szPtrName); } break; default: bSuc = false; break; } return(bSuc); }