/// <summary> /// /// </summary> /// <param name="fieldPath"></param> /// <param name="data"></param> /// <param name="dataOffset"></param> /// <param name="dataSize"></param> /// <param name="reqType"></param> /// <param name="value"></param> public void SetInstValue(string fieldPath, byte[] data, long dataOffset, int dataSize, char reqType, object value) { int arrayIndex, byteOffset; string remainder; HfaField field = ParseFieldPath(fieldPath, data, dataOffset, out remainder, out arrayIndex, out byteOffset); field.SetInstValue(remainder, arrayIndex, data, dataOffset + byteOffset, dataSize - byteOffset, reqType, value); }
/// <summary> /// Extracts the value form the byte array /// </summary> /// <param name="fieldPath"></param> /// <param name="data"></param> /// <param name="dataOffset"></param> /// <param name="dataSize"></param> /// <param name="reqType"></param> /// <param name="reqReturn"></param> /// <returns></returns> public bool ExtractInstValue(string fieldPath, byte[] data, long dataOffset, int dataSize, char reqType, out object reqReturn) { reqReturn = null; int arrayIndex, byteOffset, extraOffset; string remainder; HfaField field = ParseFieldPath(fieldPath, data, dataOffset, out remainder, out arrayIndex, out byteOffset); return(field != null && field.ExtractInstValue(remainder, arrayIndex, data, dataOffset + byteOffset, dataSize - byteOffset, reqType, out reqReturn, out extraOffset)); }
/// <summary> /// Attempts to find the specified field in the field path and extracts the size of the specified field in bytes /// </summary> /// <param name="fieldPath"></param> /// <param name="data"></param> /// <param name="dataOffset"></param> /// <param name="dataSize"></param> /// <returns></returns> public int GetInstCount(string fieldPath, byte[] data, long dataOffset, int dataSize) { int arrayIndex, byteOffset; string remainder; HfaField field = ParseFieldPath(fieldPath, data, dataOffset, out remainder, out arrayIndex, out byteOffset); if (field != null) { return(field.GetInstCount(data, dataOffset + byteOffset)); } return(-1); }
/// <summary> /// Originally Initialize /// </summary> /// <param name="input">The input string that contains content for this type</param> /// <returns>The remaining string content, unless this fails in which case this may return null</returns> public string Intialize(string input) { if (!input.Contains("{")) { return(null); } string partialInput = input.SkipTo("{"); while (partialInput != null && partialInput[0] != '}') { HfaField fld = new HfaField(); // If the initialize fails, the return string is null. partialInput = fld.Initialize(partialInput); if (partialInput == null) { continue; } if (Fields == null) { Fields = new List <HfaField>(); } Fields.Add(fld); FieldCount++; } // If we have run out of content, we can't complete the type. if (partialInput == null) { return(null); } // Get the name int start = 0; TypeName = partialInput.ExtractTo(ref start, ","); return(partialInput.Substring(start, partialInput.Length - start)); }
/// <summary> /// Originally Initialize /// </summary> /// <param name="input">The input string that contains content for this type</param> /// <returns>The remaining string content, unless this fails in which case this may return null</returns> public string Intialize(string input) { if (!input.Contains("{")) return null; string partialInput = input.SkipTo("{"); while (partialInput != null && partialInput[0] != '}') { HfaField fld = new HfaField(); // If the initialize fails, the return string is null. partialInput = fld.Initialize(partialInput); if (partialInput == null) continue; if (_fields == null) _fields = new List<HfaField>(); _fields.Add(fld); _fieldCount++; } // If we have run out of content, we can't complete the type. if (partialInput == null) return null; // Get the name int start = 0; _typeName = partialInput.ExtractTo(ref start, ","); return partialInput.Substring(start, partialInput.Length - start); }