1 // Copyright (c) 2008-2011 Novell, Inc. 2 // 3 // Permission is hereby granted, free of charge, to any person obtaining 4 // a copy of this software and associated documentation files (the 5 // "Software"), to deal in the Software without restriction, including 6 // without limitation the rights to use, copy, modify, merge, publish, 7 // distribute, sublicense, and/or sell copies of the Software, and to 8 // permit persons to whom the Software is furnished to do so, subject to 9 // the following conditions: 10 // 11 // The above copyright notice and this permission notice shall be 12 // included in all copies or substantial portions of the Software. 13 // 14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 22 23 using System; 24 using System.Runtime.InteropServices; 25 26 namespace GLib { 27 28 public enum KeyFileError { 29 UnknownEncoding, 30 Parse, 31 NotFound, 32 KeyNotFound, 33 GroupNotFound, 34 InvalidValue, 35 } 36 37 [Flags] 38 public enum KeyFileFlags { 39 None, 40 KeepComments = 1 << 0, 41 KeepTranslations = 1 << 1, 42 } 43 44 public class KeyFile { 45 46 IntPtr handle; 47 bool owned; 48 49 class FinalizerInfo { 50 IntPtr handle; 51 FinalizerInfo(IntPtr handle)52 public FinalizerInfo (IntPtr handle) 53 { 54 this.handle = handle; 55 } 56 Handler()57 public bool Handler () 58 { 59 g_key_file_free (handle); 60 return false; 61 } 62 } 63 ~KeyFile()64 ~KeyFile () 65 { 66 if (!owned) 67 return; 68 FinalizerInfo info = new FinalizerInfo (Handle); 69 Timeout.Add (50, new TimeoutHandler (info.Handler)); 70 } 71 KeyFile(IntPtr handle)72 public KeyFile (IntPtr handle) : this (handle, false) {} 73 KeyFile(IntPtr handle, bool owned)74 public KeyFile (IntPtr handle, bool owned) 75 { 76 this.handle = handle; 77 this.owned = owned; 78 } 79 KeyFile()80 public KeyFile () : this (g_key_file_new (), true) {} 81 KeyFile(string file)82 public KeyFile (string file) : this (file, KeyFileFlags.KeepComments) {} 83 KeyFile(string file, KeyFileFlags flags)84 public KeyFile (string file, KeyFileFlags flags) : this () 85 { 86 LoadFromFile (file, flags); 87 } 88 89 public string[] Groups { 90 get { return Marshaller.NullTermPtrToStringArray (g_key_file_get_groups (Handle, IntPtr.Zero), true); } 91 } 92 93 public IntPtr Handle { 94 get { return handle; } 95 } 96 97 public string StartGroup { 98 get { return Marshaller.PtrToStringGFree (g_key_file_get_start_group (Handle)); } 99 } 100 GetBoolean(string group_name, string key)101 public bool GetBoolean (string group_name, string key) 102 { 103 IntPtr error; 104 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 105 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 106 bool ret = g_key_file_get_boolean (Handle, native_group_name, native_key, out error); 107 Marshaller.Free (native_group_name); 108 Marshaller.Free (native_key); 109 if (error != IntPtr.Zero) throw new GException (error); 110 return ret; 111 } 112 GetBooleanList(string group_name, string key)113 public bool[] GetBooleanList (string group_name, string key) 114 { 115 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 116 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 117 UIntPtr native_length; 118 IntPtr error; 119 IntPtr raw_ret = g_key_file_get_boolean_list (Handle, native_group_name, native_key, out native_length, out error); 120 Marshaller.Free (native_group_name); 121 Marshaller.Free (native_key); 122 if (error != IntPtr.Zero) throw new GException (error); 123 int length = (int) (ulong) native_length; 124 int[] ints = new int [length]; 125 Marshal.Copy (raw_ret, ints, 0, length); 126 Marshaller.Free (raw_ret); 127 bool[] ret = new bool [length]; 128 for (int i = 0; i < length; i++) 129 ret [i] = ints [i] != 0; 130 return ret; 131 } 132 GetComment(string group_name, string key)133 public string GetComment (string group_name, string key) 134 { 135 IntPtr error; 136 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 137 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 138 string ret = Marshaller.PtrToStringGFree (g_key_file_get_comment (Handle, native_group_name, native_key, out error)); 139 Marshaller.Free (native_group_name); 140 Marshaller.Free (native_key); 141 if (error != IntPtr.Zero) throw new GException (error); 142 return ret; 143 } 144 GetDouble(string group_name, string key)145 public double GetDouble (string group_name, string key) 146 { 147 IntPtr error; 148 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 149 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 150 double ret = g_key_file_get_double (Handle, native_group_name, native_key, out error); 151 Marshaller.Free (native_group_name); 152 Marshaller.Free (native_key); 153 if (error != IntPtr.Zero) throw new GException (error); 154 return ret; 155 } 156 GetDoubleList(string group_name, string key)157 public double[] GetDoubleList (string group_name, string key) 158 { 159 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 160 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 161 UIntPtr native_length; 162 IntPtr error; 163 IntPtr raw_ret = g_key_file_get_double_list(Handle, native_group_name, native_key, out native_length, out error); 164 Marshaller.Free (native_group_name); 165 Marshaller.Free (native_key); 166 if (error != IntPtr.Zero) throw new GException (error); 167 int length = (int) (ulong)native_length; 168 double[] ret = new double [length]; 169 Marshal.Copy (raw_ret, ret, 0, length); 170 Marshaller.Free (raw_ret); 171 return ret; 172 } 173 GetInteger(string group_name, string key)174 public int GetInteger (string group_name, string key) 175 { 176 IntPtr error; 177 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 178 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 179 int ret = g_key_file_get_integer (Handle, native_group_name, native_key, out error); 180 Marshaller.Free (native_group_name); 181 Marshaller.Free (native_key); 182 if (error != IntPtr.Zero) throw new GException (error); 183 return ret; 184 } 185 GetIntegerList(string group_name, string key)186 public int[] GetIntegerList (string group_name, string key) 187 { 188 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 189 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 190 UIntPtr native_length; 191 IntPtr error; 192 IntPtr raw_ret = g_key_file_get_integer_list(Handle, native_group_name, native_key, out native_length, out error); 193 Marshaller.Free (native_group_name); 194 Marshaller.Free (native_key); 195 if (error != IntPtr.Zero) throw new GException (error); 196 int length = (int) (ulong) native_length; 197 int[] ret = new int [length]; 198 Marshal.Copy (raw_ret, ret, 0, length); 199 Marshaller.Free (raw_ret); 200 return ret; 201 } 202 GetKeys(string group_name)203 public string[] GetKeys (string group_name) 204 { 205 IntPtr error; 206 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 207 string[] ret = Marshaller.NullTermPtrToStringArray (g_key_file_get_keys (Handle, native_group_name, IntPtr.Zero, out error), true); 208 Marshaller.Free (native_group_name); 209 if (error != IntPtr.Zero) throw new GException (error); 210 return ret; 211 } 212 GetLocaleString(string group_name, string key, string locale)213 public string GetLocaleString (string group_name, string key, string locale) 214 { 215 IntPtr error; 216 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 217 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 218 IntPtr native_locale = Marshaller.StringToPtrGStrdup (locale); 219 string ret = Marshaller.PtrToStringGFree (g_key_file_get_locale_string (Handle, native_group_name, native_key, native_locale, out error)); 220 Marshaller.Free (native_group_name); 221 Marshaller.Free (native_key); 222 Marshaller.Free (native_locale); 223 if (error != IntPtr.Zero) throw new GException (error); 224 return ret; 225 } 226 GetLocaleStringList(string group_name, string key, string locale)227 public string[] GetLocaleStringList (string group_name, string key, string locale) 228 { 229 IntPtr error; 230 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 231 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 232 IntPtr native_locale = Marshaller.StringToPtrGStrdup (locale); 233 string[] ret = Marshaller.NullTermPtrToStringArray (g_key_file_get_locale_string_list (Handle, native_group_name, native_key, native_locale, IntPtr.Zero, out error), true); 234 Marshaller.Free (native_group_name); 235 Marshaller.Free (native_key); 236 Marshaller.Free (native_locale); 237 if (error != IntPtr.Zero) throw new GException (error); 238 return ret; 239 } 240 GetString(string group_name, string key)241 public string GetString (string group_name, string key) 242 { 243 IntPtr error; 244 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 245 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 246 string ret = Marshaller.PtrToStringGFree (g_key_file_get_string (Handle, native_group_name, native_key, out error)); 247 Marshaller.Free (native_group_name); 248 Marshaller.Free (native_key); 249 if (error != IntPtr.Zero) throw new GException (error); 250 return ret; 251 } 252 GetStringList(string group_name, string key)253 public string[] GetStringList (string group_name, string key) 254 { 255 IntPtr error; 256 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 257 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 258 string[] ret = Marshaller.NullTermPtrToStringArray (g_key_file_get_string_list (Handle, native_group_name, native_key, IntPtr.Zero, out error), true); 259 Marshaller.Free (native_group_name); 260 Marshaller.Free (native_key); 261 if (error != IntPtr.Zero) throw new GException (error); 262 return ret; 263 } 264 GetValue(string group_name, string key)265 public string GetValue (string group_name, string key) 266 { 267 IntPtr error; 268 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 269 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 270 string ret = Marshaller.PtrToStringGFree (g_key_file_get_value (Handle, native_group_name, native_key, out error)); 271 Marshaller.Free (native_group_name); 272 Marshaller.Free (native_key); 273 if (error != IntPtr.Zero) throw new GException (error); 274 return ret; 275 } 276 HasGroup(string group_name)277 public bool HasGroup (string group_name) 278 { 279 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 280 bool ret = g_key_file_has_group(Handle, native_group_name); 281 Marshaller.Free (native_group_name); 282 return ret; 283 } 284 HasKey(string group_name, string key)285 public bool HasKey (string group_name, string key) 286 { 287 IntPtr error; 288 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 289 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 290 bool ret = g_key_file_has_key (Handle, native_group_name, native_key, out error); 291 Marshaller.Free (native_group_name); 292 Marshaller.Free (native_key); 293 if (error != IntPtr.Zero) throw new GException (error); 294 return ret; 295 } 296 LoadFromData(byte[] data, KeyFileFlags flags)297 public bool LoadFromData (byte[] data, KeyFileFlags flags) 298 { 299 if (data == null) 300 throw new ArgumentNullException ("data"); 301 IntPtr error; 302 bool ret = g_key_file_load_from_data (Handle, data, new UIntPtr ((ulong) data.Length), (int) flags, out error); 303 if (error != IntPtr.Zero) throw new GException (error); 304 return ret; 305 } 306 LoadFromDataDirs(string file, out string full_path, KeyFileFlags flags)307 public bool LoadFromDataDirs (string file, out string full_path, KeyFileFlags flags) 308 { 309 IntPtr error; 310 IntPtr native_full_path; 311 IntPtr native_file = Marshaller.StringToPtrGStrdup (file); 312 bool ret = g_key_file_load_from_data_dirs(Handle, native_file, out native_full_path, (int) flags, out error); 313 Marshaller.Free (native_file); 314 if (error != IntPtr.Zero) throw new GException (error); 315 full_path = Marshaller.PtrToStringGFree (native_full_path); 316 return ret; 317 } 318 LoadFromDirs(string file, string[] search_dirs, out string full_path, KeyFileFlags flags)319 public bool LoadFromDirs (string file, string[] search_dirs, out string full_path, KeyFileFlags flags) 320 { 321 IntPtr error; 322 IntPtr native_full_path; 323 IntPtr native_file = Marshaller.StringToPtrGStrdup (file); 324 IntPtr native_search_dirs = Marshaller.StringArrayToStrvPtr (search_dirs); 325 bool ret = g_key_file_load_from_dirs (Handle, native_file, native_search_dirs, out native_full_path, (int) flags, out error); 326 Marshaller.Free (native_file); 327 Marshaller.StrFreeV (native_search_dirs); 328 if (error != IntPtr.Zero) throw new GException (error); 329 full_path = Marshaller.PtrToStringGFree (native_full_path); 330 return ret; 331 } 332 LoadFromFile(string file, KeyFileFlags flags)333 public bool LoadFromFile (string file, KeyFileFlags flags) 334 { 335 IntPtr error; 336 IntPtr native_file = Marshaller.StringToFilenamePtr (file); 337 bool ret = g_key_file_load_from_file (Handle, native_file, (int) flags, out error); 338 Marshaller.Free (native_file); 339 if (error != IntPtr.Zero) throw new GException (error); 340 return ret; 341 } 342 RemoveComment(string group_name, string key)343 public bool RemoveComment (string group_name, string key) 344 { 345 IntPtr error; 346 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 347 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 348 bool ret = g_key_file_remove_comment (Handle, native_group_name, native_key, out error); 349 Marshaller.Free (native_group_name); 350 Marshaller.Free (native_key); 351 if (error != IntPtr.Zero) throw new GException (error); 352 return ret; 353 } 354 RemoveGroup(string group_name)355 public bool RemoveGroup (string group_name) 356 { 357 IntPtr error; 358 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 359 bool ret = g_key_file_remove_group (Handle, native_group_name, out error); 360 Marshaller.Free (native_group_name); 361 if (error != IntPtr.Zero) throw new GException (error); 362 return ret; 363 } 364 RemoveKey(string group_name, string key)365 public bool RemoveKey (string group_name, string key) 366 { 367 IntPtr error; 368 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 369 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 370 bool ret = g_key_file_remove_key (Handle, native_group_name, native_key, out error); 371 Marshaller.Free (native_group_name); 372 Marshaller.Free (native_key); 373 if (error != IntPtr.Zero) throw new GException (error); 374 return ret; 375 } 376 Save(string filename)377 public void Save (string filename) 378 { 379 byte [] content = ToData (); 380 System.IO.FileStream stream = System.IO.File.Create (filename); 381 stream.Write (content, 0, content.Length); 382 stream.Close (); 383 } 384 SetBoolean(string group_name, string key, bool value)385 public void SetBoolean (string group_name, string key, bool value) 386 { 387 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 388 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 389 g_key_file_set_boolean (Handle, native_group_name, native_key, value); 390 Marshaller.Free (native_group_name); 391 Marshaller.Free (native_key); 392 } 393 SetBooleanList(string group_name, string key, bool[] list)394 public void SetBooleanList (string group_name, string key, bool[] list) 395 { 396 if (list == null) 397 throw new ArgumentNullException ("list"); 398 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 399 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 400 g_key_file_set_boolean_list (Handle, native_group_name, native_key, list, new UIntPtr ((ulong) (list.Length))); 401 Marshaller.Free (native_group_name); 402 Marshaller.Free (native_key); 403 } 404 SetComment(string group_name, string key, string comment)405 public bool SetComment (string group_name, string key, string comment) 406 { 407 IntPtr error; 408 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 409 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 410 IntPtr native_comment = Marshaller.StringToPtrGStrdup (comment); 411 bool ret = g_key_file_set_comment (Handle, native_group_name, native_key, native_comment, out error); 412 Marshaller.Free (native_group_name); 413 Marshaller.Free (native_key); 414 Marshaller.Free (native_comment); 415 if (error != IntPtr.Zero) throw new GException (error); 416 return ret; 417 } 418 SetDouble(string group_name, string key, double value)419 public void SetDouble (string group_name, string key, double value) 420 { 421 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 422 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 423 g_key_file_set_double (Handle, native_group_name, native_key, value); 424 Marshaller.Free (native_group_name); 425 Marshaller.Free (native_key); 426 } 427 SetDoubleList(string group_name, string key, double[] list)428 public void SetDoubleList (string group_name, string key, double[] list) 429 { 430 if (list == null) 431 throw new ArgumentNullException ("list"); 432 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 433 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 434 g_key_file_set_double_list (Handle, native_group_name, native_key, list, new UIntPtr ((ulong) (list.Length))); 435 Marshaller.Free (native_group_name); 436 Marshaller.Free (native_key); 437 } 438 SetInteger(string group_name, string key, int value)439 public void SetInteger (string group_name, string key, int value) 440 { 441 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 442 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 443 g_key_file_set_integer (Handle, native_group_name, native_key, value); 444 Marshaller.Free (native_group_name); 445 Marshaller.Free (native_key); 446 } 447 SetIntegerList(string group_name, string key, int[] list)448 public void SetIntegerList (string group_name, string key, int[] list) 449 { 450 if (list == null) 451 throw new ArgumentNullException ("list"); 452 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 453 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 454 g_key_file_set_integer_list (Handle, native_group_name, native_key, list, new UIntPtr ((ulong) list.Length)); 455 Marshaller.Free (native_group_name); 456 Marshaller.Free (native_key); 457 } 458 SetListSeparator(char value)459 public void SetListSeparator (char value) 460 { 461 g_key_file_set_list_separator (Handle, (byte) value); 462 } 463 SetLocaleString(string group_name, string key, string locale, string value)464 public void SetLocaleString (string group_name, string key, string locale, string value) 465 { 466 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 467 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 468 IntPtr native_locale = Marshaller.StringToPtrGStrdup (locale); 469 IntPtr native_value = Marshaller.StringToPtrGStrdup (value); 470 g_key_file_set_locale_string (Handle, native_group_name, native_key, native_locale, native_value); 471 Marshaller.Free (native_group_name); 472 Marshaller.Free (native_key); 473 Marshaller.Free (native_locale); 474 Marshaller.Free (native_value); 475 } 476 SetLocaleStringList(string group_name, string key, string locale, string[] list)477 public void SetLocaleStringList (string group_name, string key, string locale, string[] list) 478 { 479 if (key == null) 480 throw new ArgumentNullException ("key"); 481 if (locale == null) 482 throw new ArgumentNullException ("locale"); 483 if (list == null) 484 throw new ArgumentNullException ("list"); 485 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 486 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 487 IntPtr native_locale = Marshaller.StringToPtrGStrdup (locale); 488 IntPtr native_list = Marshaller.StringArrayToStrvPtr (list); 489 g_key_file_set_locale_string_list (Handle, native_group_name, native_key, native_locale, native_list, new UIntPtr ((ulong)list.Length)); 490 Marshaller.Free (native_group_name); 491 Marshaller.Free (native_key); 492 Marshaller.Free (native_locale); 493 Marshaller.StrFreeV (native_list); 494 } 495 SetString(string group_name, string key, string value)496 public void SetString (string group_name, string key, string value) 497 { 498 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 499 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 500 IntPtr native_value = Marshaller.StringToPtrGStrdup (value); 501 g_key_file_set_string (Handle, native_group_name, native_key, native_value); 502 Marshaller.Free (native_group_name); 503 Marshaller.Free (native_key); 504 Marshaller.Free (native_value); 505 } 506 SetStringList(string group_name, string key, string[] list)507 public void SetStringList (string group_name, string key, string[] list) 508 { 509 if (list == null) 510 throw new ArgumentNullException ("list"); 511 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 512 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 513 IntPtr native_list = Marshaller.StringArrayToStrvPtr (list); 514 g_key_file_set_string_list (Handle, native_group_name, native_key, native_list, new UIntPtr ((ulong)list.Length)); 515 Marshaller.Free (native_group_name); 516 Marshaller.Free (native_key); 517 Marshaller.StrFreeV (native_list); 518 } 519 SetValue(string group_name, string key, string value)520 public void SetValue (string group_name, string key, string value) 521 { 522 IntPtr native_group_name = Marshaller.StringToPtrGStrdup (group_name); 523 IntPtr native_key = Marshaller.StringToPtrGStrdup (key); 524 IntPtr native_value = Marshaller.StringToPtrGStrdup (value); 525 g_key_file_set_value (Handle, native_group_name, native_key, native_value); 526 Marshaller.Free (native_group_name); 527 Marshaller.Free (native_key); 528 Marshaller.Free (native_value); 529 } 530 ToData()531 public byte[] ToData () 532 { 533 UIntPtr native_length; 534 IntPtr raw_ret = g_key_file_to_data (Handle, out native_length, IntPtr.Zero); 535 int length = (int)native_length; 536 byte[] ret = new byte [length]; 537 Marshal.Copy (raw_ret, ret, 0, length); 538 Marshaller.Free (raw_ret); 539 return ret; 540 } 541 542 [DllImport (Global.GLibNativeDll)] g_key_file_free(IntPtr raw)543 static extern void g_key_file_free (IntPtr raw); 544 545 [DllImport (Global.GLibNativeDll)] g_key_file_get_boolean(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error)546 static extern bool g_key_file_get_boolean (IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error); 547 548 [DllImport (Global.GLibNativeDll)] g_key_file_get_boolean_list(IntPtr raw, IntPtr group_name, IntPtr key, out UIntPtr length, out IntPtr error)549 static extern IntPtr g_key_file_get_boolean_list (IntPtr raw, IntPtr group_name, IntPtr key, out UIntPtr length, out IntPtr error); 550 551 [DllImport (Global.GLibNativeDll)] g_key_file_get_comment(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error)552 static extern IntPtr g_key_file_get_comment (IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error); 553 554 [DllImport (Global.GLibNativeDll)] g_key_file_get_double(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error)555 static extern double g_key_file_get_double (IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error); 556 557 [DllImport (Global.GLibNativeDll)] g_key_file_get_double_list(IntPtr raw, IntPtr group_name, IntPtr key, out UIntPtr length, out IntPtr error)558 static extern IntPtr g_key_file_get_double_list (IntPtr raw, IntPtr group_name, IntPtr key, out UIntPtr length, out IntPtr error); 559 560 [DllImport (Global.GLibNativeDll)] g_key_file_get_groups(IntPtr raw, IntPtr dummy)561 static extern IntPtr g_key_file_get_groups (IntPtr raw, IntPtr dummy); 562 563 [DllImport (Global.GLibNativeDll)] g_key_file_get_integer(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error)564 static extern int g_key_file_get_integer (IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error); 565 566 [DllImport (Global.GLibNativeDll)] g_key_file_get_integer_list(IntPtr raw, IntPtr group_name, IntPtr key, out UIntPtr length, out IntPtr error)567 static extern IntPtr g_key_file_get_integer_list (IntPtr raw, IntPtr group_name, IntPtr key, out UIntPtr length, out IntPtr error); 568 569 [DllImport (Global.GLibNativeDll)] g_key_file_get_keys(IntPtr raw, IntPtr group_name, IntPtr dummy, out IntPtr error)570 static extern IntPtr g_key_file_get_keys (IntPtr raw, IntPtr group_name, IntPtr dummy, out IntPtr error); 571 572 [DllImport (Global.GLibNativeDll)] g_key_file_get_locale_string(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, out IntPtr error)573 static extern IntPtr g_key_file_get_locale_string (IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, out IntPtr error); 574 575 [DllImport (Global.GLibNativeDll)] g_key_file_get_locale_string_list(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, IntPtr dummy, out IntPtr error)576 static extern IntPtr g_key_file_get_locale_string_list (IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, IntPtr dummy, out IntPtr error); 577 578 [DllImport (Global.GLibNativeDll)] g_key_file_get_start_group(IntPtr raw)579 static extern IntPtr g_key_file_get_start_group (IntPtr raw); 580 581 [DllImport (Global.GLibNativeDll)] g_key_file_get_string(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error)582 static extern IntPtr g_key_file_get_string (IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error); 583 584 [DllImport (Global.GLibNativeDll)] g_key_file_get_string_list(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr dummy, out IntPtr error)585 static extern IntPtr g_key_file_get_string_list (IntPtr raw, IntPtr group_name, IntPtr key, IntPtr dummy, out IntPtr error); 586 587 [DllImport (Global.GLibNativeDll)] g_key_file_get_value(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error)588 static extern IntPtr g_key_file_get_value (IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error); 589 590 [DllImport (Global.GLibNativeDll)] g_key_file_has_group(IntPtr raw, IntPtr group_name)591 static extern bool g_key_file_has_group (IntPtr raw, IntPtr group_name); 592 593 [DllImport (Global.GLibNativeDll)] g_key_file_has_key(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error)594 static extern bool g_key_file_has_key (IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error); 595 596 [DllImport (Global.GLibNativeDll)] g_key_file_load_from_data(IntPtr raw, byte[] data, UIntPtr length, int flags, out IntPtr error)597 static extern bool g_key_file_load_from_data (IntPtr raw, byte[] data, UIntPtr length, int flags, out IntPtr error); 598 599 [DllImport (Global.GLibNativeDll)] g_key_file_load_from_data_dirs(IntPtr raw, IntPtr file, out IntPtr full_path, int flags, out IntPtr error)600 static extern bool g_key_file_load_from_data_dirs (IntPtr raw, IntPtr file, out IntPtr full_path, int flags, out IntPtr error); 601 602 [DllImport (Global.GLibNativeDll)] g_key_file_load_from_dirs(IntPtr raw, IntPtr file, IntPtr search_dirs, out IntPtr full_path, int flags, out IntPtr error)603 static extern bool g_key_file_load_from_dirs (IntPtr raw, IntPtr file, IntPtr search_dirs, out IntPtr full_path, int flags, out IntPtr error); 604 605 [DllImport (Global.GLibNativeDll)] g_key_file_load_from_file(IntPtr raw, IntPtr file, int flags, out IntPtr error)606 static extern bool g_key_file_load_from_file (IntPtr raw, IntPtr file, int flags, out IntPtr error); 607 608 [DllImport (Global.GLibNativeDll)] g_key_file_new()609 static extern IntPtr g_key_file_new (); 610 611 [DllImport (Global.GLibNativeDll)] g_key_file_remove_comment(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error)612 static extern bool g_key_file_remove_comment (IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error); 613 614 [DllImport (Global.GLibNativeDll)] g_key_file_remove_group(IntPtr raw, IntPtr group_name, out IntPtr error)615 static extern bool g_key_file_remove_group (IntPtr raw, IntPtr group_name, out IntPtr error); 616 617 [DllImport (Global.GLibNativeDll)] g_key_file_remove_key(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error)618 static extern bool g_key_file_remove_key (IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error); 619 620 [DllImport (Global.GLibNativeDll)] g_key_file_set_boolean(IntPtr raw, IntPtr group_name, IntPtr key, bool value)621 static extern void g_key_file_set_boolean (IntPtr raw, IntPtr group_name, IntPtr key, bool value); 622 623 [DllImport (Global.GLibNativeDll)] g_key_file_set_boolean_list(IntPtr raw, IntPtr group_name, IntPtr key, bool[] list, UIntPtr n_list)624 static extern void g_key_file_set_boolean_list (IntPtr raw, IntPtr group_name, IntPtr key, bool[] list, UIntPtr n_list); 625 626 [DllImport (Global.GLibNativeDll)] g_key_file_set_comment(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr comment, out IntPtr error)627 static extern bool g_key_file_set_comment (IntPtr raw, IntPtr group_name, IntPtr key, IntPtr comment, out IntPtr error); 628 629 [DllImport (Global.GLibNativeDll)] g_key_file_set_double(IntPtr raw, IntPtr group_name, IntPtr key, double value)630 static extern void g_key_file_set_double (IntPtr raw, IntPtr group_name, IntPtr key, double value); 631 632 [DllImport (Global.GLibNativeDll)] g_key_file_set_double_list(IntPtr raw, IntPtr group_name, IntPtr key, double[] list, UIntPtr n_list)633 static extern void g_key_file_set_double_list (IntPtr raw, IntPtr group_name, IntPtr key, double[] list, UIntPtr n_list); 634 635 [DllImport (Global.GLibNativeDll)] g_key_file_set_integer(IntPtr raw, IntPtr group_name, IntPtr key, int value)636 static extern void g_key_file_set_integer (IntPtr raw, IntPtr group_name, IntPtr key, int value); 637 638 [DllImport (Global.GLibNativeDll)] g_key_file_set_integer_list(IntPtr raw, IntPtr group_name, IntPtr key, int[] list, UIntPtr n_list)639 static extern void g_key_file_set_integer_list (IntPtr raw, IntPtr group_name, IntPtr key, int[] list, UIntPtr n_list); 640 641 [DllImport (Global.GLibNativeDll)] g_key_file_set_list_separator(IntPtr raw, byte separator)642 static extern void g_key_file_set_list_separator (IntPtr raw, byte separator); 643 644 [DllImport (Global.GLibNativeDll)] g_key_file_set_locale_string(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, IntPtr value)645 static extern void g_key_file_set_locale_string (IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, IntPtr value); 646 647 [DllImport (Global.GLibNativeDll)] g_key_file_set_locale_string_list(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, IntPtr list, UIntPtr length)648 static extern void g_key_file_set_locale_string_list (IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, IntPtr list, UIntPtr length); 649 650 [DllImport (Global.GLibNativeDll)] g_key_file_set_string(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr value)651 static extern void g_key_file_set_string (IntPtr raw, IntPtr group_name, IntPtr key, IntPtr value); 652 653 [DllImport (Global.GLibNativeDll)] g_key_file_set_string_list(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr list, UIntPtr n_list)654 static extern void g_key_file_set_string_list (IntPtr raw, IntPtr group_name, IntPtr key, IntPtr list, UIntPtr n_list); 655 656 [DllImport (Global.GLibNativeDll)] g_key_file_set_value(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr value)657 static extern void g_key_file_set_value (IntPtr raw, IntPtr group_name, IntPtr key, IntPtr value); 658 659 [DllImport (Global.GLibNativeDll)] g_key_file_to_data(IntPtr raw, out UIntPtr length, IntPtr dummy)660 static extern IntPtr g_key_file_to_data (IntPtr raw, out UIntPtr length, IntPtr dummy); 661 662 } 663 } 664