/// <summary> /// creates a string /// if parse is true, this function automatically detects correct value type and parse to int, float... /// </summary> /// <param name="s">input string</param> /// <param name="parse">automatically detect correct value type and parse</param> public FBValue(string s, bool parse = false) { if (parse) { dataType = FBDataType.None; // try parsing to int try { intValue = int.Parse(s); dataType = FBDataType.Int; } catch { intValue = 0; } // try parsing to float if (s.Contains(".")) { try { floatValue = float.Parse(s); dataType = FBDataType.Float; } catch { floatValue = intValue; } } else { floatValue = intValue; } // cannot parse if (dataType == FBDataType.None) { stringValue = s; dataType = FBDataType.String; } } else { stringValue = s; dataType = FBDataType.String; } }
/// <summary> /// creates from raw json data /// </summary> /// <param name="dataType">data type</param> /// <param name="rawData">raw json data</param> public FBValue(FBDataType dataType, string rawData) { this.dataType = dataType; if (dataType == FBDataType.Float) { floatValue = float.Parse(rawData); } else if (dataType == FBDataType.Int || dataType >= FBDataType.Class1) { intValue = int.Parse(rawData); } else if (dataType == FBDataType.String || dataType == FBDataType.Image) { stringValue = rawData; } }
/// <summary> /// loads all class definition /// </summary> /// <param name="json">json string</param> /// <returns>true on success, false on failure</returns> bool loadAllClassDefinition(string json) { JArray classDefinesJson = JsonConvert.DeserializeObject(json) as JArray; for (int i = 0; i < classDefinesJson.Count; i++) { JObject classDefineJson = classDefinesJson[i] as JObject; int classId = int.Parse((string)classDefineJson["id"]); string className = ((string)classDefineJson["name"]); JArray classFields = classDefineJson["data"] as JArray; FBClassDefinition classDefine = new FBClassDefinition(classId, className); for (int j = 0; j < classFields.Count; j++) { JObject classFieldJson = classFields[j] as JObject; string fieldName = ((string)classFieldJson["fieldName"]); FBDataType fieldType = (FBDataType)((int)classFieldJson["dataType"]); FBClassField classField = new FBClassField(fieldName, fieldType); classDefine.setField(classField); } FBClassData classData = new FBClassData(classDefine); addClassData(classData); } return(true); }
/// <summary> /// creates a float /// </summary> /// <param name="f">float</param> public FBValue(float f) { floatValue = f; dataType = FBDataType.Float; }
/// <summary> /// creates an in /// </summary> /// <param name="i">int</param> public FBValue(int i) { intValue = i; dataType = FBDataType.Int; }
/// <summary> /// ctor /// </summary> /// <param name="name">name</param> /// <param name="dataType">dataType</param> public FBClassField(string name, FBDataType dataType) { this.name = name; this.dataType = dataType; }
/// <summary> /// creates a class object id /// </summary> /// <param name="classId">class id</param> /// <param name="objId">object id</param> public FBValue(FBDataType classId, int objId) { intValue = objId; dataType = classId; }