/// <summary> /// Save specific jpeg marker into result array /// </summary> /// <param name="array"></param> /// <param name="ms"></param> /// <param name="markerName"></param> /// <returns></returns> private static bool SaveMarker(ref PhpArray array, Stream ms, string markerName) { int markerLength; byte[] buffer; markerLength = ReadMarkerSize(ms); if (markerLength < 2) { return false; } markerLength -= 2; // length includes itself buffer = new byte[markerLength]; ms.Read(buffer, 0, markerLength); if (!array.Contains(markerName)) { array.Add(markerName, new PhpBytes(buffer)); } return true; }
/// <summary> /// Adds a key-value pair into a <see cref="PhpArray"/>. If a value with the same key already exists, /// a nested <see cref="PhpArray"/> containing all values with this key is created. /// </summary> /// <param name="array">The array to add the pair to.</param> /// <param name="key">The key.</param> /// <param name="value">The value.</param> private static void AddValue(PhpArray array, object key, string value) { if (!array.Contains(key)) array.Add(key, value); else { object old_value = array[key]; PhpArray nested_array = old_value as PhpArray; if (nested_array != null) nested_array.Add(value); else { nested_array = new PhpArray(); nested_array.Add(old_value); nested_array.Add(value); array[key] = nested_array; } } }