static void SetIfNotPresent(PlistDictionary dict, string key, PlistObjectBase value)
 {
     if (!dict.ContainsKey(key))
     {
         dict[key] = value;
     }
 }
Esempio n. 2
0
 private void PrepareStringPool(PlistObjectBase value)
 {
     if (value is PlistArray)
     {
         var array = (PlistArray)value;
         for (int i = 0; i < array.Count; i++)
         {
             PrepareStringPool(array[i]);
         }
     }
     else if (value is PlistDictionary)
     {
         var dict = (PlistDictionary)value;
         foreach (var pair in dict)
         {
             if (!_stringPool.ContainsKey(pair.Key))
             {
                 _stringPool.Add(pair.Key, _stringPool.Count);
             }
             PrepareStringPool(pair.Value);
         }
     }
     else if (value is PlistString)
     {
         if (!_stringPool.ContainsKey(value.AsString))
         {
             _stringPool.Add(value.AsString, _stringPool.Count);
         }
     }
 }
Esempio n. 3
0
        protected void WriteValue(ContentWriter output, PlistObjectBase value)
        {
            if (value is PlistArray)
            {
                output.Write((byte)PlistDocument.ValueType.Array);

                var array = (PlistArray)value;
                output.Write(array.Count);
                for (int i = 0; i < array.Count; i++)
                {
                    WriteValue(output, array[i]);
                }
            }
            else if (value is PlistBoolean)
            {
                output.Write((byte)PlistDocument.ValueType.Bool);
                output.Write(value.AsBool);
            }
            else if (value is PlistData)
            {
                output.Write((byte)PlistDocument.ValueType.Data);
                output.Write(value.AsBinary);
            }
            else if (value is PlistDate)
            {
                output.Write((byte)PlistDocument.ValueType.Date);
                output.WriteObject(value.AsDate);
            }
            else if (value is PlistDictionary)
            {
                output.Write((byte)PlistDocument.ValueType.Dictionary);

                var dict = (PlistDictionary)value;
                output.Write(dict.Count);
                foreach (var pair in dict)
                {
                    output.Write(pair.Key);
                    WriteValue(output, pair.Value);
                }
            }
            else if (value is PlistInteger)
            {
                output.Write((byte)PlistDocument.ValueType.Integer);
                output.Write(value.AsInt);
            }
            else if (value is PlistNull)
            {
                output.Write((byte)PlistDocument.ValueType.Null);
            }
            else if (value is PlistReal)
            {
                output.Write((byte)PlistDocument.ValueType.Real);
                output.Write(value.AsFloat);
            }
            else if (value is PlistString)
            {
                output.Write((byte)PlistDocument.ValueType.String);
                output.Write(value.AsString);
            }
        }