Example #1
0
        /// <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);
        }
Example #2
0
        /// <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));
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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));
        }
Example #5
0
        /// <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);
        }