;; -*- scheme -*-
; object definitions ...
;; Enumerations and flags ...

(define-enum FileError
  (in-module "GBookmark")
  (c-name "GBookmarkFileError")
  (gtype-id "G_TYPE_BOOKMARK_FILE_ERROR")
  (values
    '("invalid-uri" "G_BOOKMARK_FILE_ERROR_INVALID_URI")
    '("invalid-value" "G_BOOKMARK_FILE_ERROR_INVALID_VALUE")
    '("app-not-registered" "G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED")
    '("uri-not-found" "G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND")
    '("read" "G_BOOKMARK_FILE_ERROR_READ")
    '("unknown-encoding" "G_BOOKMARK_FILE_ERROR_UNKNOWN_ENCODING")
    '("write" "G_BOOKMARK_FILE_ERROR_WRITE")
    '("file-not-found" "G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND")
  )
)

(define-flags ArrayFlags
  (in-module "GBSearch")
  (c-name "GBSearchArrayFlags")
  (gtype-id "G_TYPE_B_SEARCH_ARRAY_FLAGS")
  (values
    '("align-power2" "G_BSEARCH_ARRAY_ALIGN_POWER2")
    '("auto-shrink" "G_BSEARCH_ARRAY_AUTO_SHRINK")
  )
)

(define-enum Type
  (in-module "GChecksum")
  (c-name "GChecksumType")
  (gtype-id "G_TYPE_CHECKSUM_TYPE")
  (values
    '("md5" "G_CHECKSUM_MD5")
    '("sha1" "G_CHECKSUM_SHA1")
    '("sha256" "G_CHECKSUM_SHA256")
    '("sha512" "G_CHECKSUM_SHA512")
    '("sha384" "G_CHECKSUM_SHA384")
  )
)

(define-enum Error
  (in-module "GConvert")
  (c-name "GConvertError")
  (gtype-id "G_TYPE_CONVERT_ERROR")
  (values
    '("no-conversion" "G_CONVERT_ERROR_NO_CONVERSION")
    '("illegal-sequence" "G_CONVERT_ERROR_ILLEGAL_SEQUENCE")
    '("failed" "G_CONVERT_ERROR_FAILED")
    '("partial-input" "G_CONVERT_ERROR_PARTIAL_INPUT")
    '("bad-uri" "G_CONVERT_ERROR_BAD_URI")
    '("not-absolute-path" "G_CONVERT_ERROR_NOT_ABSOLUTE_PATH")
    '("no-memory" "G_CONVERT_ERROR_NO_MEMORY")
    '("embedded-nul" "G_CONVERT_ERROR_EMBEDDED_NUL")
  )
)

(define-enum DMY
  (in-module "GDate")
  (c-name "GDateDMY")
  (gtype-id "G_TYPE_DATE_DMY")
  (values
    '("day" "G_DATE_DAY")
    '("month" "G_DATE_MONTH")
    '("year" "G_DATE_YEAR")
  )
)

(define-enum Weekday
  (in-module "GDate")
  (c-name "GDateWeekday")
  (gtype-id "G_TYPE_DATE_WEEKDAY")
  (values
    '("bad-weekday" "G_DATE_BAD_WEEKDAY")
    '("monday" "G_DATE_MONDAY")
    '("tuesday" "G_DATE_TUESDAY")
    '("wednesday" "G_DATE_WEDNESDAY")
    '("thursday" "G_DATE_THURSDAY")
    '("friday" "G_DATE_FRIDAY")
    '("saturday" "G_DATE_SATURDAY")
    '("sunday" "G_DATE_SUNDAY")
  )
)

(define-enum Month
  (in-module "GDate")
  (c-name "GDateMonth")
  (gtype-id "G_TYPE_DATE_MONTH")
  (values
    '("bad-month" "G_DATE_BAD_MONTH")
    '("january" "G_DATE_JANUARY")
    '("february" "G_DATE_FEBRUARY")
    '("march" "G_DATE_MARCH")
    '("april" "G_DATE_APRIL")
    '("may" "G_DATE_MAY")
    '("june" "G_DATE_JUNE")
    '("july" "G_DATE_JULY")
    '("august" "G_DATE_AUGUST")
    '("september" "G_DATE_SEPTEMBER")
    '("october" "G_DATE_OCTOBER")
    '("november" "G_DATE_NOVEMBER")
    '("december" "G_DATE_DECEMBER")
  )
)

(define-enum Error
  (in-module "GFile")
  (c-name "GFileError")
  (gtype-id "G_TYPE_FILE_ERROR")
  (values
    '("exist" "G_FILE_ERROR_EXIST")
    '("isdir" "G_FILE_ERROR_ISDIR")
    '("acces" "G_FILE_ERROR_ACCES")
    '("nametoolong" "G_FILE_ERROR_NAMETOOLONG")
    '("noent" "G_FILE_ERROR_NOENT")
    '("notdir" "G_FILE_ERROR_NOTDIR")
    '("nxio" "G_FILE_ERROR_NXIO")
    '("nodev" "G_FILE_ERROR_NODEV")
    '("rofs" "G_FILE_ERROR_ROFS")
    '("txtbsy" "G_FILE_ERROR_TXTBSY")
    '("fault" "G_FILE_ERROR_FAULT")
    '("loop" "G_FILE_ERROR_LOOP")
    '("nospc" "G_FILE_ERROR_NOSPC")
    '("nomem" "G_FILE_ERROR_NOMEM")
    '("mfile" "G_FILE_ERROR_MFILE")
    '("nfile" "G_FILE_ERROR_NFILE")
    '("badf" "G_FILE_ERROR_BADF")
    '("inval" "G_FILE_ERROR_INVAL")
    '("pipe" "G_FILE_ERROR_PIPE")
    '("again" "G_FILE_ERROR_AGAIN")
    '("intr" "G_FILE_ERROR_INTR")
    '("io" "G_FILE_ERROR_IO")
    '("perm" "G_FILE_ERROR_PERM")
    '("nosys" "G_FILE_ERROR_NOSYS")
    '("failed" "G_FILE_ERROR_FAILED")
  )
)

(define-flags Test
  (in-module "GFile")
  (c-name "GFileTest")
  (gtype-id "G_TYPE_FILE_TEST")
  (values
    '("is-regular" "G_FILE_TEST_IS_REGULAR")
    '("is-symlink" "G_FILE_TEST_IS_SYMLINK")
    '("is-dir" "G_FILE_TEST_IS_DIR")
    '("is-executable" "G_FILE_TEST_IS_EXECUTABLE")
    '("exists" "G_FILE_TEST_EXISTS")
  )
)

(define-flags SetContentsFlags
  (in-module "GFile")
  (c-name "GFileSetContentsFlags")
  (gtype-id "G_TYPE_FILE_SET_CONTENTS_FLAGS")
  (values
    '("none" "G_FILE_SET_CONTENTS_NONE")
    '("consistent" "G_FILE_SET_CONTENTS_CONSISTENT")
    '("durable" "G_FILE_SET_CONTENTS_DURABLE")
    '("only-existing" "G_FILE_SET_CONTENTS_ONLY_EXISTING")
  )
)

(define-flags FlagMask
  (in-module "GHook")
  (c-name "GHookFlagMask")
  (gtype-id "G_TYPE_HOOK_FLAG_MASK")
  (values
    '("active" "G_HOOK_FLAG_ACTIVE")
    '("in-call" "G_HOOK_FLAG_IN_CALL")
    '("mask" "G_HOOK_FLAG_MASK")
  )
)

(define-enum r
  (in-module "GIOErro")
  (c-name "GIOError")
  (gtype-id "G_TYPE_IO_ERROR")
  (values
    '("none" "G_IO_ERROR_NONE")
    '("again" "G_IO_ERROR_AGAIN")
    '("inval" "G_IO_ERROR_INVAL")
    '("unknown" "G_IO_ERROR_UNKNOWN")
  )
)

(define-enum Error
  (in-module "GIOChannel")
  (c-name "GIOChannelError")
  (gtype-id "G_TYPE_IO_CHANNEL_ERROR")
  (values
    '("fbig" "G_IO_CHANNEL_ERROR_FBIG")
    '("inval" "G_IO_CHANNEL_ERROR_INVAL")
    '("io" "G_IO_CHANNEL_ERROR_IO")
    '("isdir" "G_IO_CHANNEL_ERROR_ISDIR")
    '("nospc" "G_IO_CHANNEL_ERROR_NOSPC")
    '("nxio" "G_IO_CHANNEL_ERROR_NXIO")
    '("overflow" "G_IO_CHANNEL_ERROR_OVERFLOW")
    '("pipe" "G_IO_CHANNEL_ERROR_PIPE")
    '("failed" "G_IO_CHANNEL_ERROR_FAILED")
  )
)

(define-enum s
  (in-module "GIOStatu")
  (c-name "GIOStatus")
  (gtype-id "G_TYPE_IO_STATUS")
  (values
    '("error" "G_IO_STATUS_ERROR")
    '("normal" "G_IO_STATUS_NORMAL")
    '("eof" "G_IO_STATUS_EOF")
    '("again" "G_IO_STATUS_AGAIN")
  )
)

(define-enum Type
  (in-module "GSeek")
  (c-name "GSeekType")
  (gtype-id "G_TYPE_SEEK_TYPE")
  (values
    '("cur" "G_SEEK_CUR")
    '("set" "G_SEEK_SET")
    '("end" "G_SEEK_END")
  )
)

(define-flags s
  (in-module "GIOFlag")
  (c-name "GIOFlags")
  (gtype-id "G_TYPE_IO_FLAGS")
  (values
    '("append" "G_IO_FLAG_APPEND")
    '("nonblock" "G_IO_FLAG_NONBLOCK")
    '("is-readable" "G_IO_FLAG_IS_READABLE")
    '("is-writable" "G_IO_FLAG_IS_WRITABLE")
    '("is-writeable" "G_IO_FLAG_IS_WRITEABLE")
    '("is-seekable" "G_IO_FLAG_IS_SEEKABLE")
    '("mask" "G_IO_FLAG_MASK")
    '("get-mask" "G_IO_FLAG_GET_MASK")
    '("set-mask" "G_IO_FLAG_SET_MASK")
  )
)

(define-enum FileError
  (in-module "GKey")
  (c-name "GKeyFileError")
  (gtype-id "G_TYPE_KEY_FILE_ERROR")
  (values
    '("unknown-encoding" "G_KEY_FILE_ERROR_UNKNOWN_ENCODING")
    '("parse" "G_KEY_FILE_ERROR_PARSE")
    '("not-found" "G_KEY_FILE_ERROR_NOT_FOUND")
    '("key-not-found" "G_KEY_FILE_ERROR_KEY_NOT_FOUND")
    '("group-not-found" "G_KEY_FILE_ERROR_GROUP_NOT_FOUND")
    '("invalid-value" "G_KEY_FILE_ERROR_INVALID_VALUE")
  )
)

(define-flags FileFlags
  (in-module "GKey")
  (c-name "GKeyFileFlags")
  (gtype-id "G_TYPE_KEY_FILE_FLAGS")
  (values
    '("none" "G_KEY_FILE_NONE")
    '("keep-comments" "G_KEY_FILE_KEEP_COMMENTS")
    '("keep-translations" "G_KEY_FILE_KEEP_TRANSLATIONS")
  )
)

(define-enum n
  (in-module "GIOConditio")
  (c-name "GIOCondition")
  (gtype-id "G_TYPE_IO_CONDITION")
  (values
    '("in" "G_IO_IN")
    '("out" "G_IO_OUT")
    '("pri" "G_IO_PRI")
    '("err" "G_IO_ERR")
    '("hup" "G_IO_HUP")
    '("nval" "G_IO_NVAL")
  )
)

(define-enum Error
  (in-module "GMarkup")
  (c-name "GMarkupError")
  (gtype-id "G_TYPE_MARKUP_ERROR")
  (values
    '("bad-utf8" "G_MARKUP_ERROR_BAD_UTF8")
    '("empty" "G_MARKUP_ERROR_EMPTY")
    '("parse" "G_MARKUP_ERROR_PARSE")
    '("unknown-element" "G_MARKUP_ERROR_UNKNOWN_ELEMENT")
    '("unknown-attribute" "G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE")
    '("invalid-content" "G_MARKUP_ERROR_INVALID_CONTENT")
    '("missing-attribute" "G_MARKUP_ERROR_MISSING_ATTRIBUTE")
  )
)

(define-flags ParseFlags
  (in-module "GMarkup")
  (c-name "GMarkupParseFlags")
  (gtype-id "G_TYPE_MARKUP_PARSE_FLAGS")
  (values
    '("do-not-use-this-unsupported-flag" "G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG")
    '("treat-cdata-as-text" "G_MARKUP_TREAT_CDATA_AS_TEXT")
    '("prefix-error-position" "G_MARKUP_PREFIX_ERROR_POSITION")
    '("ignore-qualified" "G_MARKUP_IGNORE_QUALIFIED")
  )
)

(define-flags CollectType
  (in-module "GMarkup")
  (c-name "GMarkupCollectType")
  (gtype-id "G_TYPE_MARKUP_COLLECT_TYPE")
  (values
    '("invalid" "G_MARKUP_COLLECT_INVALID")
    '("string" "G_MARKUP_COLLECT_STRING")
    '("strdup" "G_MARKUP_COLLECT_STRDUP")
    '("boolean" "G_MARKUP_COLLECT_BOOLEAN")
    '("tristate" "G_MARKUP_COLLECT_TRISTATE")
    '("optional" "G_MARKUP_COLLECT_OPTIONAL")
  )
)

(define-flags LevelFlags
  (in-module "GLog")
  (c-name "GLogLevelFlags")
  (gtype-id "G_TYPE_LOG_LEVEL_FLAGS")
  (values
    '("flag-recursion" "G_LOG_FLAG_RECURSION")
    '("flag-fatal" "G_LOG_FLAG_FATAL")
    '("level-error" "G_LOG_LEVEL_ERROR")
    '("level-critical" "G_LOG_LEVEL_CRITICAL")
    '("level-warning" "G_LOG_LEVEL_WARNING")
    '("level-message" "G_LOG_LEVEL_MESSAGE")
    '("level-info" "G_LOG_LEVEL_INFO")
    '("level-debug" "G_LOG_LEVEL_DEBUG")
    '("level-mask" "G_LOG_LEVEL_MASK")
  )
)

(define-enum WriterOutput
  (in-module "GLog")
  (c-name "GLogWriterOutput")
  (gtype-id "G_TYPE_LOG_WRITER_OUTPUT")
  (values
    '("handled" "G_LOG_WRITER_HANDLED")
    '("unhandled" "G_LOG_WRITER_UNHANDLED")
  )
)

(define-flags Flags
  (in-module "GTraverse")
  (c-name "GTraverseFlags")
  (gtype-id "G_TYPE_TRAVERSE_FLAGS")
  (values
    '("leaves" "G_TRAVERSE_LEAVES")
    '("non-leaves" "G_TRAVERSE_NON_LEAVES")
    '("all" "G_TRAVERSE_ALL")
    '("mask" "G_TRAVERSE_MASK")
    '("leafs" "G_TRAVERSE_LEAFS")
    '("non-leafs" "G_TRAVERSE_NON_LEAFS")
  )
)

(define-enum Type
  (in-module "GTraverse")
  (c-name "GTraverseType")
  (gtype-id "G_TYPE_TRAVERSE_TYPE")
  (values
    '("in-order" "G_IN_ORDER")
    '("pre-order" "G_PRE_ORDER")
    '("post-order" "G_POST_ORDER")
    '("level-order" "G_LEVEL_ORDER")
  )
)

(define-flags Flags
  (in-module "GOption")
  (c-name "GOptionFlags")
  (gtype-id "G_TYPE_OPTION_FLAGS")
  (values
    '("none" "G_OPTION_FLAG_NONE")
    '("hidden" "G_OPTION_FLAG_HIDDEN")
    '("in-main" "G_OPTION_FLAG_IN_MAIN")
    '("reverse" "G_OPTION_FLAG_REVERSE")
    '("no-arg" "G_OPTION_FLAG_NO_ARG")
    '("filename" "G_OPTION_FLAG_FILENAME")
    '("optional-arg" "G_OPTION_FLAG_OPTIONAL_ARG")
    '("noalias" "G_OPTION_FLAG_NOALIAS")
  )
)

(define-enum Arg
  (in-module "GOption")
  (c-name "GOptionArg")
  (gtype-id "G_TYPE_OPTION_ARG")
  (values
    '("none" "G_OPTION_ARG_NONE")
    '("string" "G_OPTION_ARG_STRING")
    '("int" "G_OPTION_ARG_INT")
    '("callback" "G_OPTION_ARG_CALLBACK")
    '("filename" "G_OPTION_ARG_FILENAME")
    '("string-array" "G_OPTION_ARG_STRING_ARRAY")
    '("filename-array" "G_OPTION_ARG_FILENAME_ARRAY")
    '("double" "G_OPTION_ARG_DOUBLE")
    '("int64" "G_OPTION_ARG_INT64")
  )
)

(define-enum Error
  (in-module "GOption")
  (c-name "GOptionError")
  (gtype-id "G_TYPE_OPTION_ERROR")
  (values
    '("unknown-option" "G_OPTION_ERROR_UNKNOWN_OPTION")
    '("bad-value" "G_OPTION_ERROR_BAD_VALUE")
    '("failed" "G_OPTION_ERROR_FAILED")
  )
)

(define-enum Error
  (in-module "GRegex")
  (c-name "GRegexError")
  (gtype-id "G_TYPE_REGEX_ERROR")
  (values
    '("compile" "G_REGEX_ERROR_COMPILE")
    '("optimize" "G_REGEX_ERROR_OPTIMIZE")
    '("replace" "G_REGEX_ERROR_REPLACE")
    '("match" "G_REGEX_ERROR_MATCH")
    '("internal" "G_REGEX_ERROR_INTERNAL")
    '("stray-backslash" "G_REGEX_ERROR_STRAY_BACKSLASH")
    '("missing-control-char" "G_REGEX_ERROR_MISSING_CONTROL_CHAR")
    '("unrecognized-escape" "G_REGEX_ERROR_UNRECOGNIZED_ESCAPE")
    '("quantifiers-out-of-order" "G_REGEX_ERROR_QUANTIFIERS_OUT_OF_ORDER")
    '("quantifier-too-big" "G_REGEX_ERROR_QUANTIFIER_TOO_BIG")
    '("unterminated-character-class" "G_REGEX_ERROR_UNTERMINATED_CHARACTER_CLASS")
    '("invalid-escape-in-character-class" "G_REGEX_ERROR_INVALID_ESCAPE_IN_CHARACTER_CLASS")
    '("range-out-of-order" "G_REGEX_ERROR_RANGE_OUT_OF_ORDER")
    '("nothing-to-repeat" "G_REGEX_ERROR_NOTHING_TO_REPEAT")
    '("unrecognized-character" "G_REGEX_ERROR_UNRECOGNIZED_CHARACTER")
    '("posix-named-class-outside-class" "G_REGEX_ERROR_POSIX_NAMED_CLASS_OUTSIDE_CLASS")
    '("unmatched-parenthesis" "G_REGEX_ERROR_UNMATCHED_PARENTHESIS")
    '("inexistent-subpattern-reference" "G_REGEX_ERROR_INEXISTENT_SUBPATTERN_REFERENCE")
    '("unterminated-comment" "G_REGEX_ERROR_UNTERMINATED_COMMENT")
    '("expression-too-large" "G_REGEX_ERROR_EXPRESSION_TOO_LARGE")
    '("memory-error" "G_REGEX_ERROR_MEMORY_ERROR")
    '("variable-length-lookbehind" "G_REGEX_ERROR_VARIABLE_LENGTH_LOOKBEHIND")
    '("malformed-condition" "G_REGEX_ERROR_MALFORMED_CONDITION")
    '("too-many-conditional-branches" "G_REGEX_ERROR_TOO_MANY_CONDITIONAL_BRANCHES")
    '("assertion-expected" "G_REGEX_ERROR_ASSERTION_EXPECTED")
    '("unknown-posix-class-name" "G_REGEX_ERROR_UNKNOWN_POSIX_CLASS_NAME")
    '("posix-collating-elements-not-supported" "G_REGEX_ERROR_POSIX_COLLATING_ELEMENTS_NOT_SUPPORTED")
    '("hex-code-too-large" "G_REGEX_ERROR_HEX_CODE_TOO_LARGE")
    '("invalid-condition" "G_REGEX_ERROR_INVALID_CONDITION")
    '("single-byte-match-in-lookbehind" "G_REGEX_ERROR_SINGLE_BYTE_MATCH_IN_LOOKBEHIND")
    '("infinite-loop" "G_REGEX_ERROR_INFINITE_LOOP")
    '("missing-subpattern-name-terminator" "G_REGEX_ERROR_MISSING_SUBPATTERN_NAME_TERMINATOR")
    '("duplicate-subpattern-name" "G_REGEX_ERROR_DUPLICATE_SUBPATTERN_NAME")
    '("malformed-property" "G_REGEX_ERROR_MALFORMED_PROPERTY")
    '("unknown-property" "G_REGEX_ERROR_UNKNOWN_PROPERTY")
    '("subpattern-name-too-long" "G_REGEX_ERROR_SUBPATTERN_NAME_TOO_LONG")
    '("too-many-subpatterns" "G_REGEX_ERROR_TOO_MANY_SUBPATTERNS")
    '("invalid-octal-value" "G_REGEX_ERROR_INVALID_OCTAL_VALUE")
    '("too-many-branches-in-define" "G_REGEX_ERROR_TOO_MANY_BRANCHES_IN_DEFINE")
    '("define-repetion" "G_REGEX_ERROR_DEFINE_REPETION")
    '("inconsistent-newline-options" "G_REGEX_ERROR_INCONSISTENT_NEWLINE_OPTIONS")
    '("missing-back-reference" "G_REGEX_ERROR_MISSING_BACK_REFERENCE")
    '("invalid-relative-reference" "G_REGEX_ERROR_INVALID_RELATIVE_REFERENCE")
    '("backtracking-control-verb-argument-forbidden" "G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_FORBIDDEN")
    '("unknown-backtracking-control-verb" "G_REGEX_ERROR_UNKNOWN_BACKTRACKING_CONTROL_VERB")
    '("number-too-big" "G_REGEX_ERROR_NUMBER_TOO_BIG")
    '("missing-subpattern-name" "G_REGEX_ERROR_MISSING_SUBPATTERN_NAME")
    '("missing-digit" "G_REGEX_ERROR_MISSING_DIGIT")
    '("invalid-data-character" "G_REGEX_ERROR_INVALID_DATA_CHARACTER")
    '("extra-subpattern-name" "G_REGEX_ERROR_EXTRA_SUBPATTERN_NAME")
    '("backtracking-control-verb-argument-required" "G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_REQUIRED")
    '("invalid-control-char" "G_REGEX_ERROR_INVALID_CONTROL_CHAR")
    '("missing-name" "G_REGEX_ERROR_MISSING_NAME")
    '("not-supported-in-class" "G_REGEX_ERROR_NOT_SUPPORTED_IN_CLASS")
    '("too-many-forward-references" "G_REGEX_ERROR_TOO_MANY_FORWARD_REFERENCES")
    '("name-too-long" "G_REGEX_ERROR_NAME_TOO_LONG")
    '("character-value-too-large" "G_REGEX_ERROR_CHARACTER_VALUE_TOO_LARGE")
  )
)

(define-flags CompileFlags
  (in-module "GRegex")
  (c-name "GRegexCompileFlags")
  (gtype-id "G_TYPE_REGEX_COMPILE_FLAGS")
  (values
    '("caseless" "G_REGEX_CASELESS")
    '("multiline" "G_REGEX_MULTILINE")
    '("dotall" "G_REGEX_DOTALL")
    '("extended" "G_REGEX_EXTENDED")
    '("anchored" "G_REGEX_ANCHORED")
    '("dollar-endonly" "G_REGEX_DOLLAR_ENDONLY")
    '("ungreedy" "G_REGEX_UNGREEDY")
    '("raw" "G_REGEX_RAW")
    '("no-auto-capture" "G_REGEX_NO_AUTO_CAPTURE")
    '("optimize" "G_REGEX_OPTIMIZE")
    '("firstline" "G_REGEX_FIRSTLINE")
    '("dupnames" "G_REGEX_DUPNAMES")
    '("newline-cr" "G_REGEX_NEWLINE_CR")
    '("newline-lf" "G_REGEX_NEWLINE_LF")
    '("newline-crlf" "G_REGEX_NEWLINE_CRLF")
    '("newline-anycrlf" "G_REGEX_NEWLINE_ANYCRLF")
    '("bsr-anycrlf" "G_REGEX_BSR_ANYCRLF")
    '("javascript-compat" "G_REGEX_JAVASCRIPT_COMPAT")
  )
)

(define-flags MatchFlags
  (in-module "GRegex")
  (c-name "GRegexMatchFlags")
  (gtype-id "G_TYPE_REGEX_MATCH_FLAGS")
  (values
    '("anchored" "G_REGEX_MATCH_ANCHORED")
    '("notbol" "G_REGEX_MATCH_NOTBOL")
    '("noteol" "G_REGEX_MATCH_NOTEOL")
    '("notempty" "G_REGEX_MATCH_NOTEMPTY")
    '("partial" "G_REGEX_MATCH_PARTIAL")
    '("newline-cr" "G_REGEX_MATCH_NEWLINE_CR")
    '("newline-lf" "G_REGEX_MATCH_NEWLINE_LF")
    '("newline-crlf" "G_REGEX_MATCH_NEWLINE_CRLF")
    '("newline-any" "G_REGEX_MATCH_NEWLINE_ANY")
    '("newline-anycrlf" "G_REGEX_MATCH_NEWLINE_ANYCRLF")
    '("bsr-anycrlf" "G_REGEX_MATCH_BSR_ANYCRLF")
    '("bsr-any" "G_REGEX_MATCH_BSR_ANY")
    '("partial-soft" "G_REGEX_MATCH_PARTIAL_SOFT")
    '("partial-hard" "G_REGEX_MATCH_PARTIAL_HARD")
    '("notempty-atstart" "G_REGEX_MATCH_NOTEMPTY_ATSTART")
  )
)

(define-enum Type
  (in-module "GError")
  (c-name "GErrorType")
  (gtype-id "G_TYPE_ERROR_TYPE")
  (values
    '("unknown" "G_ERR_UNKNOWN")
    '("unexp-eof" "G_ERR_UNEXP_EOF")
    '("unexp-eof-in-string" "G_ERR_UNEXP_EOF_IN_STRING")
    '("unexp-eof-in-comment" "G_ERR_UNEXP_EOF_IN_COMMENT")
    '("non-digit-in-const" "G_ERR_NON_DIGIT_IN_CONST")
    '("digit-radix" "G_ERR_DIGIT_RADIX")
    '("float-radix" "G_ERR_FLOAT_RADIX")
    '("float-malformed" "G_ERR_FLOAT_MALFORMED")
  )
)

(define-enum Error
  (in-module "GShell")
  (c-name "GShellError")
  (gtype-id "G_TYPE_SHELL_ERROR")
  (values
    '("bad-quoting" "G_SHELL_ERROR_BAD_QUOTING")
    '("empty-string" "G_SHELL_ERROR_EMPTY_STRING")
    '("failed" "G_SHELL_ERROR_FAILED")
  )
)

(define-enum Config
  (in-module "GSlice")
  (c-name "GSliceConfig")
  (gtype-id "G_TYPE_SLICE_CONFIG")
  (values
    '("always-malloc" "G_SLICE_CONFIG_ALWAYS_MALLOC")
    '("bypass-magazines" "G_SLICE_CONFIG_BYPASS_MAGAZINES")
    '("working-set-msecs" "G_SLICE_CONFIG_WORKING_SET_MSECS")
    '("color-increment" "G_SLICE_CONFIG_COLOR_INCREMENT")
    '("chunk-sizes" "G_SLICE_CONFIG_CHUNK_SIZES")
    '("contention-counter" "G_SLICE_CONFIG_CONTENTION_COUNTER")
  )
)

(define-enum Error
  (in-module "GSpawn")
  (c-name "GSpawnError")
  (gtype-id "G_TYPE_SPAWN_ERROR")
  (values
    '("fork" "G_SPAWN_ERROR_FORK")
    '("read" "G_SPAWN_ERROR_READ")
    '("chdir" "G_SPAWN_ERROR_CHDIR")
    '("acces" "G_SPAWN_ERROR_ACCES")
    '("perm" "G_SPAWN_ERROR_PERM")
    '("too-big" "G_SPAWN_ERROR_TOO_BIG")
    '("2big" "G_SPAWN_ERROR_2BIG")
    '("noexec" "G_SPAWN_ERROR_NOEXEC")
    '("nametoolong" "G_SPAWN_ERROR_NAMETOOLONG")
    '("noent" "G_SPAWN_ERROR_NOENT")
    '("nomem" "G_SPAWN_ERROR_NOMEM")
    '("notdir" "G_SPAWN_ERROR_NOTDIR")
    '("loop" "G_SPAWN_ERROR_LOOP")
    '("txtbusy" "G_SPAWN_ERROR_TXTBUSY")
    '("io" "G_SPAWN_ERROR_IO")
    '("nfile" "G_SPAWN_ERROR_NFILE")
    '("mfile" "G_SPAWN_ERROR_MFILE")
    '("inval" "G_SPAWN_ERROR_INVAL")
    '("isdir" "G_SPAWN_ERROR_ISDIR")
    '("libbad" "G_SPAWN_ERROR_LIBBAD")
    '("failed" "G_SPAWN_ERROR_FAILED")
  )
)

(define-flags Flags
  (in-module "GSpawn")
  (c-name "GSpawnFlags")
  (gtype-id "G_TYPE_SPAWN_FLAGS")
  (values
    '("default" "G_SPAWN_DEFAULT")
    '("leave-descriptors-open" "G_SPAWN_LEAVE_DESCRIPTORS_OPEN")
    '("do-not-reap-child" "G_SPAWN_DO_NOT_REAP_CHILD")
    '("search-path" "G_SPAWN_SEARCH_PATH")
    '("stdout-to-dev-null" "G_SPAWN_STDOUT_TO_DEV_NULL")
    '("stderr-to-dev-null" "G_SPAWN_STDERR_TO_DEV_NULL")
    '("child-inherits-stdin" "G_SPAWN_CHILD_INHERITS_STDIN")
    '("file-and-argv-zero" "G_SPAWN_FILE_AND_ARGV_ZERO")
    '("search-path-from-envp" "G_SPAWN_SEARCH_PATH_FROM_ENVP")
    '("cloexec-pipes" "G_SPAWN_CLOEXEC_PIPES")
  )
)

(define-flags Type
  (in-module "GAscii")
  (c-name "GAsciiType")
  (gtype-id "G_TYPE_ASCII_TYPE")
  (values
    '("alnum" "G_ASCII_ALNUM")
    '("alpha" "G_ASCII_ALPHA")
    '("cntrl" "G_ASCII_CNTRL")
    '("digit" "G_ASCII_DIGIT")
    '("graph" "G_ASCII_GRAPH")
    '("lower" "G_ASCII_LOWER")
    '("print" "G_ASCII_PRINT")
    '("punct" "G_ASCII_PUNCT")
    '("space" "G_ASCII_SPACE")
    '("upper" "G_ASCII_UPPER")
    '("xdigit" "G_ASCII_XDIGIT")
  )
)

(define-enum ParserError
  (in-module "GNumber")
  (c-name "GNumberParserError")
  (gtype-id "G_TYPE_NUMBER_PARSER_ERROR")
  (values
    '("invalid" "G_NUMBER_PARSER_ERROR_INVALID")
    '("out-of-bounds" "G_NUMBER_PARSER_ERROR_OUT_OF_BOUNDS")
  )
)

(define-flags TrapFlags
  (in-module "GTest")
  (c-name "GTestTrapFlags")
  (gtype-id "G_TYPE_TEST_TRAP_FLAGS")
  (values
    '("silence-stdout" "G_TEST_TRAP_SILENCE_STDOUT")
    '("silence-stderr" "G_TEST_TRAP_SILENCE_STDERR")
    '("inherit-stdin" "G_TEST_TRAP_INHERIT_STDIN")
  )
)

(define-flags SubprocessFlags
  (in-module "GTest")
  (c-name "GTestSubprocessFlags")
  (gtype-id "G_TYPE_TEST_SUBPROCESS_FLAGS")
  (values
    '("stdin" "G_TEST_SUBPROCESS_INHERIT_STDIN")
    '("stdout" "G_TEST_SUBPROCESS_INHERIT_STDOUT")
    '("stderr" "G_TEST_SUBPROCESS_INHERIT_STDERR")
  )
)

(define-enum Result
  (in-module "GTest")
  (c-name "GTestResult")
  (gtype-id "G_TYPE_TEST_RESULT")
  (values
    '("success" "G_TEST_RUN_SUCCESS")
    '("skipped" "G_TEST_RUN_SKIPPED")
    '("failure" "G_TEST_RUN_FAILURE")
    '("incomplete" "G_TEST_RUN_INCOMPLETE")
  )
)

(define-enum LogType
  (in-module "GTest")
  (c-name "GTestLogType")
  (gtype-id "G_TYPE_TEST_LOG_TYPE")
  (values
    '("none" "G_TEST_LOG_NONE")
    '("error" "G_TEST_LOG_ERROR")
    '("start-binary" "G_TEST_LOG_START_BINARY")
    '("list-case" "G_TEST_LOG_LIST_CASE")
    '("skip-case" "G_TEST_LOG_SKIP_CASE")
    '("start-case" "G_TEST_LOG_START_CASE")
    '("stop-case" "G_TEST_LOG_STOP_CASE")
    '("min-result" "G_TEST_LOG_MIN_RESULT")
    '("max-result" "G_TEST_LOG_MAX_RESULT")
    '("message" "G_TEST_LOG_MESSAGE")
    '("start-suite" "G_TEST_LOG_START_SUITE")
    '("stop-suite" "G_TEST_LOG_STOP_SUITE")
  )
)

(define-enum FileType
  (in-module "GTest")
  (c-name "GTestFileType")
  (gtype-id "G_TYPE_TEST_FILE_TYPE")
  (values
    '("dist" "G_TEST_DIST")
    '("built" "G_TEST_BUILT")
  )
)

(define-enum Error
  (in-module "GThread")
  (c-name "GThreadError")
  (gtype-id "G_TYPE_THREAD_ERROR")
  (values
    '("again" "G_THREAD_ERROR_AGAIN")
  )
)

(define-enum Status
  (in-module "GOnce")
  (c-name "GOnceStatus")
  (gtype-id "G_TYPE_ONCE_STATUS")
  (values
    '("notcalled" "G_ONCE_STATUS_NOTCALLED")
    '("progress" "G_ONCE_STATUS_PROGRESS")
    '("ready" "G_ONCE_STATUS_READY")
  )
)

(define-enum Type
  (in-module "GTime")
  (c-name "GTimeType")
  (gtype-id "G_TYPE_TIME_TYPE")
  (values
    '("standard" "G_TIME_TYPE_STANDARD")
    '("daylight" "G_TIME_TYPE_DAYLIGHT")
    '("universal" "G_TIME_TYPE_UNIVERSAL")
  )
)

(define-enum Type
  (in-module "GUnicode")
  (c-name "GUnicodeType")
  (gtype-id "G_TYPE_UNICODE_TYPE")
  (values
    '("control" "G_UNICODE_CONTROL")
    '("format" "G_UNICODE_FORMAT")
    '("unassigned" "G_UNICODE_UNASSIGNED")
    '("private-use" "G_UNICODE_PRIVATE_USE")
    '("surrogate" "G_UNICODE_SURROGATE")
    '("lowercase-letter" "G_UNICODE_LOWERCASE_LETTER")
    '("modifier-letter" "G_UNICODE_MODIFIER_LETTER")
    '("other-letter" "G_UNICODE_OTHER_LETTER")
    '("titlecase-letter" "G_UNICODE_TITLECASE_LETTER")
    '("uppercase-letter" "G_UNICODE_UPPERCASE_LETTER")
    '("spacing-mark" "G_UNICODE_SPACING_MARK")
    '("enclosing-mark" "G_UNICODE_ENCLOSING_MARK")
    '("non-spacing-mark" "G_UNICODE_NON_SPACING_MARK")
    '("decimal-number" "G_UNICODE_DECIMAL_NUMBER")
    '("letter-number" "G_UNICODE_LETTER_NUMBER")
    '("other-number" "G_UNICODE_OTHER_NUMBER")
    '("connect-punctuation" "G_UNICODE_CONNECT_PUNCTUATION")
    '("dash-punctuation" "G_UNICODE_DASH_PUNCTUATION")
    '("close-punctuation" "G_UNICODE_CLOSE_PUNCTUATION")
    '("final-punctuation" "G_UNICODE_FINAL_PUNCTUATION")
    '("initial-punctuation" "G_UNICODE_INITIAL_PUNCTUATION")
    '("other-punctuation" "G_UNICODE_OTHER_PUNCTUATION")
    '("open-punctuation" "G_UNICODE_OPEN_PUNCTUATION")
    '("currency-symbol" "G_UNICODE_CURRENCY_SYMBOL")
    '("modifier-symbol" "G_UNICODE_MODIFIER_SYMBOL")
    '("math-symbol" "G_UNICODE_MATH_SYMBOL")
    '("other-symbol" "G_UNICODE_OTHER_SYMBOL")
    '("line-separator" "G_UNICODE_LINE_SEPARATOR")
    '("paragraph-separator" "G_UNICODE_PARAGRAPH_SEPARATOR")
    '("space-separator" "G_UNICODE_SPACE_SEPARATOR")
  )
)

(define-enum BreakType
  (in-module "GUnicode")
  (c-name "GUnicodeBreakType")
  (gtype-id "G_TYPE_UNICODE_BREAK_TYPE")
  (values
    '("mandatory" "G_UNICODE_BREAK_MANDATORY")
    '("carriage-return" "G_UNICODE_BREAK_CARRIAGE_RETURN")
    '("line-feed" "G_UNICODE_BREAK_LINE_FEED")
    '("combining-mark" "G_UNICODE_BREAK_COMBINING_MARK")
    '("surrogate" "G_UNICODE_BREAK_SURROGATE")
    '("zero-width-space" "G_UNICODE_BREAK_ZERO_WIDTH_SPACE")
    '("inseparable" "G_UNICODE_BREAK_INSEPARABLE")
    '("non-breaking-glue" "G_UNICODE_BREAK_NON_BREAKING_GLUE")
    '("contingent" "G_UNICODE_BREAK_CONTINGENT")
    '("space" "G_UNICODE_BREAK_SPACE")
    '("after" "G_UNICODE_BREAK_AFTER")
    '("before" "G_UNICODE_BREAK_BEFORE")
    '("before-and-after" "G_UNICODE_BREAK_BEFORE_AND_AFTER")
    '("hyphen" "G_UNICODE_BREAK_HYPHEN")
    '("non-starter" "G_UNICODE_BREAK_NON_STARTER")
    '("open-punctuation" "G_UNICODE_BREAK_OPEN_PUNCTUATION")
    '("close-punctuation" "G_UNICODE_BREAK_CLOSE_PUNCTUATION")
    '("quotation" "G_UNICODE_BREAK_QUOTATION")
    '("exclamation" "G_UNICODE_BREAK_EXCLAMATION")
    '("ideographic" "G_UNICODE_BREAK_IDEOGRAPHIC")
    '("numeric" "G_UNICODE_BREAK_NUMERIC")
    '("infix-separator" "G_UNICODE_BREAK_INFIX_SEPARATOR")
    '("symbol" "G_UNICODE_BREAK_SYMBOL")
    '("alphabetic" "G_UNICODE_BREAK_ALPHABETIC")
    '("prefix" "G_UNICODE_BREAK_PREFIX")
    '("postfix" "G_UNICODE_BREAK_POSTFIX")
    '("complex-context" "G_UNICODE_BREAK_COMPLEX_CONTEXT")
    '("ambiguous" "G_UNICODE_BREAK_AMBIGUOUS")
    '("unknown" "G_UNICODE_BREAK_UNKNOWN")
    '("next-line" "G_UNICODE_BREAK_NEXT_LINE")
    '("word-joiner" "G_UNICODE_BREAK_WORD_JOINER")
    '("hangul-l-jamo" "G_UNICODE_BREAK_HANGUL_L_JAMO")
    '("hangul-v-jamo" "G_UNICODE_BREAK_HANGUL_V_JAMO")
    '("hangul-t-jamo" "G_UNICODE_BREAK_HANGUL_T_JAMO")
    '("hangul-lv-syllable" "G_UNICODE_BREAK_HANGUL_LV_SYLLABLE")
    '("hangul-lvt-syllable" "G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE")
    '("close-paranthesis" "G_UNICODE_BREAK_CLOSE_PARANTHESIS")
    '("conditional-japanese-starter" "G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER")
    '("hebrew-letter" "G_UNICODE_BREAK_HEBREW_LETTER")
    '("regional-indicator" "G_UNICODE_BREAK_REGIONAL_INDICATOR")
    '("emoji-base" "G_UNICODE_BREAK_EMOJI_BASE")
    '("emoji-modifier" "G_UNICODE_BREAK_EMOJI_MODIFIER")
    '("zero-width-joiner" "G_UNICODE_BREAK_ZERO_WIDTH_JOINER")
  )
)

(define-enum Script
  (in-module "GUnicode")
  (c-name "GUnicodeScript")
  (gtype-id "G_TYPE_UNICODE_SCRIPT")
  (values
    '("invalid-code" "G_UNICODE_SCRIPT_INVALID_CODE")
    '("common" "G_UNICODE_SCRIPT_COMMON")
    '("inherited" "G_UNICODE_SCRIPT_INHERITED")
    '("arabic" "G_UNICODE_SCRIPT_ARABIC")
    '("armenian" "G_UNICODE_SCRIPT_ARMENIAN")
    '("bengali" "G_UNICODE_SCRIPT_BENGALI")
    '("bopomofo" "G_UNICODE_SCRIPT_BOPOMOFO")
    '("cherokee" "G_UNICODE_SCRIPT_CHEROKEE")
    '("coptic" "G_UNICODE_SCRIPT_COPTIC")
    '("cyrillic" "G_UNICODE_SCRIPT_CYRILLIC")
    '("deseret" "G_UNICODE_SCRIPT_DESERET")
    '("devanagari" "G_UNICODE_SCRIPT_DEVANAGARI")
    '("ethiopic" "G_UNICODE_SCRIPT_ETHIOPIC")
    '("georgian" "G_UNICODE_SCRIPT_GEORGIAN")
    '("gothic" "G_UNICODE_SCRIPT_GOTHIC")
    '("greek" "G_UNICODE_SCRIPT_GREEK")
    '("gujarati" "G_UNICODE_SCRIPT_GUJARATI")
    '("gurmukhi" "G_UNICODE_SCRIPT_GURMUKHI")
    '("han" "G_UNICODE_SCRIPT_HAN")
    '("hangul" "G_UNICODE_SCRIPT_HANGUL")
    '("hebrew" "G_UNICODE_SCRIPT_HEBREW")
    '("hiragana" "G_UNICODE_SCRIPT_HIRAGANA")
    '("kannada" "G_UNICODE_SCRIPT_KANNADA")
    '("katakana" "G_UNICODE_SCRIPT_KATAKANA")
    '("khmer" "G_UNICODE_SCRIPT_KHMER")
    '("lao" "G_UNICODE_SCRIPT_LAO")
    '("latin" "G_UNICODE_SCRIPT_LATIN")
    '("malayalam" "G_UNICODE_SCRIPT_MALAYALAM")
    '("mongolian" "G_UNICODE_SCRIPT_MONGOLIAN")
    '("myanmar" "G_UNICODE_SCRIPT_MYANMAR")
    '("ogham" "G_UNICODE_SCRIPT_OGHAM")
    '("old-italic" "G_UNICODE_SCRIPT_OLD_ITALIC")
    '("oriya" "G_UNICODE_SCRIPT_ORIYA")
    '("runic" "G_UNICODE_SCRIPT_RUNIC")
    '("sinhala" "G_UNICODE_SCRIPT_SINHALA")
    '("syriac" "G_UNICODE_SCRIPT_SYRIAC")
    '("tamil" "G_UNICODE_SCRIPT_TAMIL")
    '("telugu" "G_UNICODE_SCRIPT_TELUGU")
    '("thaana" "G_UNICODE_SCRIPT_THAANA")
    '("thai" "G_UNICODE_SCRIPT_THAI")
    '("tibetan" "G_UNICODE_SCRIPT_TIBETAN")
    '("canadian-aboriginal" "G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL")
    '("yi" "G_UNICODE_SCRIPT_YI")
    '("tagalog" "G_UNICODE_SCRIPT_TAGALOG")
    '("hanunoo" "G_UNICODE_SCRIPT_HANUNOO")
    '("buhid" "G_UNICODE_SCRIPT_BUHID")
    '("tagbanwa" "G_UNICODE_SCRIPT_TAGBANWA")
    '("braille" "G_UNICODE_SCRIPT_BRAILLE")
    '("cypriot" "G_UNICODE_SCRIPT_CYPRIOT")
    '("limbu" "G_UNICODE_SCRIPT_LIMBU")
    '("osmanya" "G_UNICODE_SCRIPT_OSMANYA")
    '("shavian" "G_UNICODE_SCRIPT_SHAVIAN")
    '("linear-b" "G_UNICODE_SCRIPT_LINEAR_B")
    '("tai-le" "G_UNICODE_SCRIPT_TAI_LE")
    '("ugaritic" "G_UNICODE_SCRIPT_UGARITIC")
    '("new-tai-lue" "G_UNICODE_SCRIPT_NEW_TAI_LUE")
    '("buginese" "G_UNICODE_SCRIPT_BUGINESE")
    '("glagolitic" "G_UNICODE_SCRIPT_GLAGOLITIC")
    '("tifinagh" "G_UNICODE_SCRIPT_TIFINAGH")
    '("syloti-nagri" "G_UNICODE_SCRIPT_SYLOTI_NAGRI")
    '("old-persian" "G_UNICODE_SCRIPT_OLD_PERSIAN")
    '("kharoshthi" "G_UNICODE_SCRIPT_KHAROSHTHI")
    '("unknown" "G_UNICODE_SCRIPT_UNKNOWN")
    '("balinese" "G_UNICODE_SCRIPT_BALINESE")
    '("cuneiform" "G_UNICODE_SCRIPT_CUNEIFORM")
    '("phoenician" "G_UNICODE_SCRIPT_PHOENICIAN")
    '("phags-pa" "G_UNICODE_SCRIPT_PHAGS_PA")
    '("nko" "G_UNICODE_SCRIPT_NKO")
    '("kayah-li" "G_UNICODE_SCRIPT_KAYAH_LI")
    '("lepcha" "G_UNICODE_SCRIPT_LEPCHA")
    '("rejang" "G_UNICODE_SCRIPT_REJANG")
    '("sundanese" "G_UNICODE_SCRIPT_SUNDANESE")
    '("saurashtra" "G_UNICODE_SCRIPT_SAURASHTRA")
    '("cham" "G_UNICODE_SCRIPT_CHAM")
    '("ol-chiki" "G_UNICODE_SCRIPT_OL_CHIKI")
    '("vai" "G_UNICODE_SCRIPT_VAI")
    '("carian" "G_UNICODE_SCRIPT_CARIAN")
    '("lycian" "G_UNICODE_SCRIPT_LYCIAN")
    '("lydian" "G_UNICODE_SCRIPT_LYDIAN")
    '("avestan" "G_UNICODE_SCRIPT_AVESTAN")
    '("bamum" "G_UNICODE_SCRIPT_BAMUM")
    '("egyptian-hieroglyphs" "G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS")
    '("imperial-aramaic" "G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC")
    '("inscriptional-pahlavi" "G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI")
    '("inscriptional-parthian" "G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN")
    '("javanese" "G_UNICODE_SCRIPT_JAVANESE")
    '("kaithi" "G_UNICODE_SCRIPT_KAITHI")
    '("lisu" "G_UNICODE_SCRIPT_LISU")
    '("meetei-mayek" "G_UNICODE_SCRIPT_MEETEI_MAYEK")
    '("old-south-arabian" "G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN")
    '("old-turkic" "G_UNICODE_SCRIPT_OLD_TURKIC")
    '("samaritan" "G_UNICODE_SCRIPT_SAMARITAN")
    '("tai-tham" "G_UNICODE_SCRIPT_TAI_THAM")
    '("tai-viet" "G_UNICODE_SCRIPT_TAI_VIET")
    '("batak" "G_UNICODE_SCRIPT_BATAK")
    '("brahmi" "G_UNICODE_SCRIPT_BRAHMI")
    '("mandaic" "G_UNICODE_SCRIPT_MANDAIC")
    '("chakma" "G_UNICODE_SCRIPT_CHAKMA")
    '("meroitic-cursive" "G_UNICODE_SCRIPT_MEROITIC_CURSIVE")
    '("meroitic-hieroglyphs" "G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS")
    '("miao" "G_UNICODE_SCRIPT_MIAO")
    '("sharada" "G_UNICODE_SCRIPT_SHARADA")
    '("sora-sompeng" "G_UNICODE_SCRIPT_SORA_SOMPENG")
    '("takri" "G_UNICODE_SCRIPT_TAKRI")
    '("bassa-vah" "G_UNICODE_SCRIPT_BASSA_VAH")
    '("caucasian-albanian" "G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN")
    '("duployan" "G_UNICODE_SCRIPT_DUPLOYAN")
    '("elbasan" "G_UNICODE_SCRIPT_ELBASAN")
    '("grantha" "G_UNICODE_SCRIPT_GRANTHA")
    '("khojki" "G_UNICODE_SCRIPT_KHOJKI")
    '("khudawadi" "G_UNICODE_SCRIPT_KHUDAWADI")
    '("linear-a" "G_UNICODE_SCRIPT_LINEAR_A")
    '("mahajani" "G_UNICODE_SCRIPT_MAHAJANI")
    '("manichaean" "G_UNICODE_SCRIPT_MANICHAEAN")
    '("mende-kikakui" "G_UNICODE_SCRIPT_MENDE_KIKAKUI")
    '("modi" "G_UNICODE_SCRIPT_MODI")
    '("mro" "G_UNICODE_SCRIPT_MRO")
    '("nabataean" "G_UNICODE_SCRIPT_NABATAEAN")
    '("old-north-arabian" "G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN")
    '("old-permic" "G_UNICODE_SCRIPT_OLD_PERMIC")
    '("pahawh-hmong" "G_UNICODE_SCRIPT_PAHAWH_HMONG")
    '("palmyrene" "G_UNICODE_SCRIPT_PALMYRENE")
    '("pau-cin-hau" "G_UNICODE_SCRIPT_PAU_CIN_HAU")
    '("psalter-pahlavi" "G_UNICODE_SCRIPT_PSALTER_PAHLAVI")
    '("siddham" "G_UNICODE_SCRIPT_SIDDHAM")
    '("tirhuta" "G_UNICODE_SCRIPT_TIRHUTA")
    '("warang-citi" "G_UNICODE_SCRIPT_WARANG_CITI")
    '("ahom" "G_UNICODE_SCRIPT_AHOM")
    '("anatolian-hieroglyphs" "G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS")
    '("hatran" "G_UNICODE_SCRIPT_HATRAN")
    '("multani" "G_UNICODE_SCRIPT_MULTANI")
    '("old-hungarian" "G_UNICODE_SCRIPT_OLD_HUNGARIAN")
    '("signwriting" "G_UNICODE_SCRIPT_SIGNWRITING")
    '("adlam" "G_UNICODE_SCRIPT_ADLAM")
    '("bhaiksuki" "G_UNICODE_SCRIPT_BHAIKSUKI")
    '("marchen" "G_UNICODE_SCRIPT_MARCHEN")
    '("newa" "G_UNICODE_SCRIPT_NEWA")
    '("osage" "G_UNICODE_SCRIPT_OSAGE")
    '("tangut" "G_UNICODE_SCRIPT_TANGUT")
    '("masaram-gondi" "G_UNICODE_SCRIPT_MASARAM_GONDI")
    '("nushu" "G_UNICODE_SCRIPT_NUSHU")
    '("soyombo" "G_UNICODE_SCRIPT_SOYOMBO")
    '("zanabazar-square" "G_UNICODE_SCRIPT_ZANABAZAR_SQUARE")
    '("dogra" "G_UNICODE_SCRIPT_DOGRA")
    '("gunjala-gondi" "G_UNICODE_SCRIPT_GUNJALA_GONDI")
    '("hanifi-rohingya" "G_UNICODE_SCRIPT_HANIFI_ROHINGYA")
    '("makasar" "G_UNICODE_SCRIPT_MAKASAR")
    '("medefaidrin" "G_UNICODE_SCRIPT_MEDEFAIDRIN")
    '("old-sogdian" "G_UNICODE_SCRIPT_OLD_SOGDIAN")
    '("sogdian" "G_UNICODE_SCRIPT_SOGDIAN")
    '("elymaic" "G_UNICODE_SCRIPT_ELYMAIC")
    '("nandinagari" "G_UNICODE_SCRIPT_NANDINAGARI")
    '("nyiakeng-puachue-hmong" "G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG")
    '("wancho" "G_UNICODE_SCRIPT_WANCHO")
    '("chorasmian" "G_UNICODE_SCRIPT_CHORASMIAN")
    '("dives-akuru" "G_UNICODE_SCRIPT_DIVES_AKURU")
    '("khitan-small-script" "G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT")
    '("yezidi" "G_UNICODE_SCRIPT_YEZIDI")
  )
)

(define-enum Mode
  (in-module "GNormalize")
  (c-name "GNormalizeMode")
  (gtype-id "G_TYPE_NORMALIZE_MODE")
  (values
    '("default" "G_NORMALIZE_DEFAULT")
    '("nfd" "G_NORMALIZE_NFD")
    '("default-compose" "G_NORMALIZE_DEFAULT_COMPOSE")
    '("nfc" "G_NORMALIZE_NFC")
    '("all" "G_NORMALIZE_ALL")
    '("nfkd" "G_NORMALIZE_NFKD")
    '("all-compose" "G_NORMALIZE_ALL_COMPOSE")
    '("nfkc" "G_NORMALIZE_NFKC")
  )
)

(define-flags Flags
  (in-module "GUri")
  (c-name "GUriFlags")
  (gtype-id "G_TYPE_URI_FLAGS")
  (values
    '("none" "G_URI_FLAGS_NONE")
    '("parse-relaxed" "G_URI_FLAGS_PARSE_RELAXED")
    '("has-password" "G_URI_FLAGS_HAS_PASSWORD")
    '("has-auth-params" "G_URI_FLAGS_HAS_AUTH_PARAMS")
    '("encoded" "G_URI_FLAGS_ENCODED")
    '("non-dns" "G_URI_FLAGS_NON_DNS")
    '("encoded-query" "G_URI_FLAGS_ENCODED_QUERY")
    '("encoded-path" "G_URI_FLAGS_ENCODED_PATH")
    '("encoded-fragment" "G_URI_FLAGS_ENCODED_FRAGMENT")
  )
)

(define-flags HideFlags
  (in-module "GUri")
  (c-name "GUriHideFlags")
  (gtype-id "G_TYPE_URI_HIDE_FLAGS")
  (values
    '("none" "G_URI_HIDE_NONE")
    '("userinfo" "G_URI_HIDE_USERINFO")
    '("password" "G_URI_HIDE_PASSWORD")
    '("auth-params" "G_URI_HIDE_AUTH_PARAMS")
    '("query" "G_URI_HIDE_QUERY")
    '("fragment" "G_URI_HIDE_FRAGMENT")
  )
)

(define-flags ParamsFlags
  (in-module "GUri")
  (c-name "GUriParamsFlags")
  (gtype-id "G_TYPE_URI_PARAMS_FLAGS")
  (values
    '("none" "G_URI_PARAMS_NONE")
    '("case-insensitive" "G_URI_PARAMS_CASE_INSENSITIVE")
    '("www-form" "G_URI_PARAMS_WWW_FORM")
    '("parse-relaxed" "G_URI_PARAMS_PARSE_RELAXED")
  )
)

(define-enum Error
  (in-module "GUri")
  (c-name "GUriError")
  (gtype-id "G_TYPE_URI_ERROR")
  (values
    '("failed" "G_URI_ERROR_FAILED")
    '("bad-scheme" "G_URI_ERROR_BAD_SCHEME")
    '("bad-user" "G_URI_ERROR_BAD_USER")
    '("bad-password" "G_URI_ERROR_BAD_PASSWORD")
    '("bad-auth-params" "G_URI_ERROR_BAD_AUTH_PARAMS")
    '("bad-host" "G_URI_ERROR_BAD_HOST")
    '("bad-port" "G_URI_ERROR_BAD_PORT")
    '("bad-path" "G_URI_ERROR_BAD_PATH")
    '("bad-query" "G_URI_ERROR_BAD_QUERY")
    '("bad-fragment" "G_URI_ERROR_BAD_FRAGMENT")
  )
)

(define-enum Directory
  (in-module "GUser")
  (c-name "GUserDirectory")
  (gtype-id "G_TYPE_USER_DIRECTORY")
  (values
    '("directory-desktop" "G_USER_DIRECTORY_DESKTOP")
    '("directory-documents" "G_USER_DIRECTORY_DOCUMENTS")
    '("directory-download" "G_USER_DIRECTORY_DOWNLOAD")
    '("directory-music" "G_USER_DIRECTORY_MUSIC")
    '("directory-pictures" "G_USER_DIRECTORY_PICTURES")
    '("directory-public-share" "G_USER_DIRECTORY_PUBLIC_SHARE")
    '("directory-templates" "G_USER_DIRECTORY_TEMPLATES")
    '("directory-videos" "G_USER_DIRECTORY_VIDEOS")
    '("n-directories" "G_USER_N_DIRECTORIES")
  )
)

(define-flags SizeFlags
  (in-module "GFormat")
  (c-name "GFormatSizeFlags")
  (gtype-id "G_TYPE_FORMAT_SIZE_FLAGS")
  (values
    '("default" "G_FORMAT_SIZE_DEFAULT")
    '("long-format" "G_FORMAT_SIZE_LONG_FORMAT")
    '("iec-units" "G_FORMAT_SIZE_IEC_UNITS")
    '("bits" "G_FORMAT_SIZE_BITS")
  )
)

(define-enum Class
  (in-module "GVariant")
  (c-name "GVariantClass")
  (gtype-id "G_TYPE_VARIANT_CLASS")
  (values
    '("boolean" "G_VARIANT_CLASS_BOOLEAN")
    '("byte" "G_VARIANT_CLASS_BYTE")
    '("int16" "G_VARIANT_CLASS_INT16")
    '("uint16" "G_VARIANT_CLASS_UINT16")
    '("int32" "G_VARIANT_CLASS_INT32")
    '("uint32" "G_VARIANT_CLASS_UINT32")
    '("int64" "G_VARIANT_CLASS_INT64")
    '("uint64" "G_VARIANT_CLASS_UINT64")
    '("handle" "G_VARIANT_CLASS_HANDLE")
    '("double" "G_VARIANT_CLASS_DOUBLE")
    '("string" "G_VARIANT_CLASS_STRING")
    '("object-path" "G_VARIANT_CLASS_OBJECT_PATH")
    '("signature" "G_VARIANT_CLASS_SIGNATURE")
    '("variant" "G_VARIANT_CLASS_VARIANT")
    '("maybe" "G_VARIANT_CLASS_MAYBE")
    '("array" "G_VARIANT_CLASS_ARRAY")
    '("tuple" "G_VARIANT_CLASS_TUPLE")
    '("dict-entry" "G_VARIANT_CLASS_DICT_ENTRY")
  )
)

(define-enum ParseError
  (in-module "GVariant")
  (c-name "GVariantParseError")
  (gtype-id "G_TYPE_VARIANT_PARSE_ERROR")
  (values
    '("failed" "G_VARIANT_PARSE_ERROR_FAILED")
    '("basic-type-expected" "G_VARIANT_PARSE_ERROR_BASIC_TYPE_EXPECTED")
    '("cannot-infer-type" "G_VARIANT_PARSE_ERROR_CANNOT_INFER_TYPE")
    '("definite-type-expected" "G_VARIANT_PARSE_ERROR_DEFINITE_TYPE_EXPECTED")
    '("input-not-at-end" "G_VARIANT_PARSE_ERROR_INPUT_NOT_AT_END")
    '("invalid-character" "G_VARIANT_PARSE_ERROR_INVALID_CHARACTER")
    '("invalid-format-string" "G_VARIANT_PARSE_ERROR_INVALID_FORMAT_STRING")
    '("invalid-object-path" "G_VARIANT_PARSE_ERROR_INVALID_OBJECT_PATH")
    '("invalid-signature" "G_VARIANT_PARSE_ERROR_INVALID_SIGNATURE")
    '("invalid-type-string" "G_VARIANT_PARSE_ERROR_INVALID_TYPE_STRING")
    '("no-common-type" "G_VARIANT_PARSE_ERROR_NO_COMMON_TYPE")
    '("number-out-of-range" "G_VARIANT_PARSE_ERROR_NUMBER_OUT_OF_RANGE")
    '("number-too-big" "G_VARIANT_PARSE_ERROR_NUMBER_TOO_BIG")
    '("type-error" "G_VARIANT_PARSE_ERROR_TYPE_ERROR")
    '("unexpected-token" "G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN")
    '("unknown-keyword" "G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD")
    '("unterminated-string-constant" "G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT")
    '("value-expected" "G_VARIANT_PARSE_ERROR_VALUE_EXPECTED")
    '("recursion" "G_VARIANT_PARSE_ERROR_RECURSION")
  )
)

(define-enum Priority
  (in-module "GThread")
  (c-name "GThreadPriority")
  (gtype-id "G_TYPE_THREAD_PRIORITY")
  (values
    '("low" "G_THREAD_PRIORITY_LOW")
    '("normal" "G_THREAD_PRIORITY_NORMAL")
    '("high" "G_THREAD_PRIORITY_HIGH")
    '("urgent" "G_THREAD_PRIORITY_URGENT")
  )
)


;; From galloca.h

(define-function alloca
  (c-name "alloca")
  (return-type "char*")
  (parameters
  )
)



;; From garray.h

(define-function g_array_new
  (c-name "g_array_new")
  (is-constructor-of "GArray")
  (return-type "GArray*")
  (parameters
    '("gboolean" "zero_terminated")
    '("gboolean" "clear_")
    '("guint" "element_size")
  )
)

(define-method steal
  (of-object "GArray")
  (c-name "g_array_steal")
  (return-type "gpointer")
  (parameters
    '("gsize*" "len")
  )
)

(define-function g_array_sized_new
  (c-name "g_array_sized_new")
  (is-constructor-of "GArraySized")
  (return-type "GArray*")
  (parameters
    '("gboolean" "zero_terminated")
    '("gboolean" "clear_")
    '("guint" "element_size")
    '("guint" "reserved_size")
  )
)

(define-method copy
  (of-object "GArray")
  (c-name "g_array_copy")
  (return-type "GArray*")
)

(define-method free
  (of-object "GArray")
  (c-name "g_array_free")
  (return-type "gchar*")
  (parameters
    '("gboolean" "free_segment")
  )
)

(define-method ref
  (of-object "GArray")
  (c-name "g_array_ref")
  (return-type "GArray*")
)

(define-method unref
  (of-object "GArray")
  (c-name "g_array_unref")
  (return-type "none")
)

(define-method get_element_size
  (of-object "GArray")
  (c-name "g_array_get_element_size")
  (return-type "guint")
)

(define-method append_vals
  (of-object "GArray")
  (c-name "g_array_append_vals")
  (return-type "GArray*")
  (parameters
    '("gconstpointer" "data")
    '("guint" "len")
  )
)

(define-method prepend_vals
  (of-object "GArray")
  (c-name "g_array_prepend_vals")
  (return-type "GArray*")
  (parameters
    '("gconstpointer" "data")
    '("guint" "len")
  )
)

(define-method insert_vals
  (of-object "GArray")
  (c-name "g_array_insert_vals")
  (return-type "GArray*")
  (parameters
    '("guint" "index_")
    '("gconstpointer" "data")
    '("guint" "len")
  )
)

(define-method set_size
  (of-object "GArray")
  (c-name "g_array_set_size")
  (return-type "GArray*")
  (parameters
    '("guint" "length")
  )
)

(define-method remove_index
  (of-object "GArray")
  (c-name "g_array_remove_index")
  (return-type "GArray*")
  (parameters
    '("guint" "index_")
  )
)

(define-method remove_index_fast
  (of-object "GArray")
  (c-name "g_array_remove_index_fast")
  (return-type "GArray*")
  (parameters
    '("guint" "index_")
  )
)

(define-method remove_range
  (of-object "GArray")
  (c-name "g_array_remove_range")
  (return-type "GArray*")
  (parameters
    '("guint" "index_")
    '("guint" "length")
  )
)

(define-method sort
  (of-object "GArray")
  (c-name "g_array_sort")
  (return-type "none")
  (parameters
    '("GCompareFunc" "compare_func")
  )
)

(define-method sort_with_data
  (of-object "GArray")
  (c-name "g_array_sort_with_data")
  (return-type "none")
  (parameters
    '("GCompareDataFunc" "compare_func")
    '("gpointer" "user_data")
  )
)

(define-method binary_search
  (of-object "GArray")
  (c-name "g_array_binary_search")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "target")
    '("GCompareFunc" "compare_func")
    '("guint*" "out_match_index")
  )
)

(define-method set_clear_func
  (of-object "GArray")
  (c-name "g_array_set_clear_func")
  (return-type "none")
  (parameters
    '("GDestroyNotify" "clear_func")
  )
)

(define-function g_ptr_array_new
  (c-name "g_ptr_array_new")
  (is-constructor-of "GPtrArray")
  (return-type "GPtrArray*")
)

(define-function g_ptr_array_new_with_free_func
  (c-name "g_ptr_array_new_with_free_func")
  (return-type "GPtrArray*")
  (parameters
    '("GDestroyNotify" "element_free_func")
  )
)

(define-method steal
  (of-object "GPtrArray")
  (c-name "g_ptr_array_steal")
  (return-type "gpointer*")
  (parameters
    '("gsize*" "len")
  )
)

(define-method copy
  (of-object "GPtrArray")
  (c-name "g_ptr_array_copy")
  (return-type "GPtrArray*")
  (parameters
    '("GCopyFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-function g_ptr_array_sized_new
  (c-name "g_ptr_array_sized_new")
  (is-constructor-of "GPtrArraySized")
  (return-type "GPtrArray*")
  (parameters
    '("guint" "reserved_size")
  )
)

(define-function g_ptr_array_new_full
  (c-name "g_ptr_array_new_full")
  (return-type "GPtrArray*")
  (parameters
    '("guint" "reserved_size")
    '("GDestroyNotify" "element_free_func")
  )
)

(define-method free
  (of-object "GPtrArray")
  (c-name "g_ptr_array_free")
  (return-type "gpointer*")
  (parameters
    '("gboolean" "free_seg")
  )
)

(define-method ref
  (of-object "GPtrArray")
  (c-name "g_ptr_array_ref")
  (return-type "GPtrArray*")
)

(define-method unref
  (of-object "GPtrArray")
  (c-name "g_ptr_array_unref")
  (return-type "none")
)

(define-method set_free_func
  (of-object "GPtrArray")
  (c-name "g_ptr_array_set_free_func")
  (return-type "none")
  (parameters
    '("GDestroyNotify" "element_free_func")
  )
)

(define-method set_size
  (of-object "GPtrArray")
  (c-name "g_ptr_array_set_size")
  (return-type "none")
  (parameters
    '("gint" "length")
  )
)

(define-method remove_index
  (of-object "GPtrArray")
  (c-name "g_ptr_array_remove_index")
  (return-type "gpointer")
  (parameters
    '("guint" "index_")
  )
)

(define-method remove_index_fast
  (of-object "GPtrArray")
  (c-name "g_ptr_array_remove_index_fast")
  (return-type "gpointer")
  (parameters
    '("guint" "index_")
  )
)

(define-method steal_index
  (of-object "GPtrArray")
  (c-name "g_ptr_array_steal_index")
  (return-type "gpointer")
  (parameters
    '("guint" "index_")
  )
)

(define-method steal_index_fast
  (of-object "GPtrArray")
  (c-name "g_ptr_array_steal_index_fast")
  (return-type "gpointer")
  (parameters
    '("guint" "index_")
  )
)

(define-method remove
  (of-object "GPtrArray")
  (c-name "g_ptr_array_remove")
  (return-type "gboolean")
  (parameters
    '("gpointer" "data")
  )
)

(define-method remove_fast
  (of-object "GPtrArray")
  (c-name "g_ptr_array_remove_fast")
  (return-type "gboolean")
  (parameters
    '("gpointer" "data")
  )
)

(define-method remove_range
  (of-object "GPtrArray")
  (c-name "g_ptr_array_remove_range")
  (return-type "GPtrArray*")
  (parameters
    '("guint" "index_")
    '("guint" "length")
  )
)

(define-method add
  (of-object "GPtrArray")
  (c-name "g_ptr_array_add")
  (return-type "none")
  (parameters
    '("gpointer" "data")
  )
)

(define-method extend
  (of-object "GPtrArray")
  (c-name "g_ptr_array_extend")
  (return-type "none")
  (parameters
    '("GPtrArray*" "array")
    '("GCopyFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method extend_and_steal
  (of-object "GPtrArray")
  (c-name "g_ptr_array_extend_and_steal")
  (return-type "none")
  (parameters
    '("GPtrArray*" "array")
  )
)

(define-method insert
  (of-object "GPtrArray")
  (c-name "g_ptr_array_insert")
  (return-type "none")
  (parameters
    '("gint" "index_")
    '("gpointer" "data")
  )
)

(define-method sort
  (of-object "GPtrArray")
  (c-name "g_ptr_array_sort")
  (return-type "none")
  (parameters
    '("GCompareFunc" "compare_func")
  )
)

(define-method sort_with_data
  (of-object "GPtrArray")
  (c-name "g_ptr_array_sort_with_data")
  (return-type "none")
  (parameters
    '("GCompareDataFunc" "compare_func")
    '("gpointer" "user_data")
  )
)

(define-method foreach
  (of-object "GPtrArray")
  (c-name "g_ptr_array_foreach")
  (return-type "none")
  (parameters
    '("GFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method find
  (of-object "GPtrArray")
  (c-name "g_ptr_array_find")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "needle")
    '("guint*" "index_")
  )
)

(define-method find_with_equal_func
  (of-object "GPtrArray")
  (c-name "g_ptr_array_find_with_equal_func")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "needle")
    '("GEqualFunc" "equal_func")
    '("guint*" "index_")
  )
)

(define-function g_byte_array_new
  (c-name "g_byte_array_new")
  (is-constructor-of "GByteArray")
  (return-type "GByteArray*")
)

(define-function g_byte_array_new_take
  (c-name "g_byte_array_new_take")
  (return-type "GByteArray*")
  (parameters
    '("guint8*" "data")
    '("gsize" "len")
  )
)

(define-method steal
  (of-object "GByteArray")
  (c-name "g_byte_array_steal")
  (return-type "guint8*")
  (parameters
    '("gsize*" "len")
  )
)

(define-function g_byte_array_sized_new
  (c-name "g_byte_array_sized_new")
  (is-constructor-of "GByteArraySized")
  (return-type "GByteArray*")
  (parameters
    '("guint" "reserved_size")
  )
)

(define-method free
  (of-object "GByteArray")
  (c-name "g_byte_array_free")
  (return-type "guint8*")
  (parameters
    '("gboolean" "free_segment")
  )
)

(define-method free_to_bytes
  (of-object "GByteArray")
  (c-name "g_byte_array_free_to_bytes")
  (return-type "GBytes*")
)

(define-method ref
  (of-object "GByteArray")
  (c-name "g_byte_array_ref")
  (return-type "GByteArray*")
)

(define-method unref
  (of-object "GByteArray")
  (c-name "g_byte_array_unref")
  (return-type "none")
)

(define-method append
  (of-object "GByteArray")
  (c-name "g_byte_array_append")
  (return-type "GByteArray*")
  (parameters
    '("const-guint8*" "data")
    '("guint" "len")
  )
)

(define-method prepend
  (of-object "GByteArray")
  (c-name "g_byte_array_prepend")
  (return-type "GByteArray*")
  (parameters
    '("const-guint8*" "data")
    '("guint" "len")
  )
)

(define-method set_size
  (of-object "GByteArray")
  (c-name "g_byte_array_set_size")
  (return-type "GByteArray*")
  (parameters
    '("guint" "length")
  )
)

(define-method remove_index
  (of-object "GByteArray")
  (c-name "g_byte_array_remove_index")
  (return-type "GByteArray*")
  (parameters
    '("guint" "index_")
  )
)

(define-method remove_index_fast
  (of-object "GByteArray")
  (c-name "g_byte_array_remove_index_fast")
  (return-type "GByteArray*")
  (parameters
    '("guint" "index_")
  )
)

(define-method remove_range
  (of-object "GByteArray")
  (c-name "g_byte_array_remove_range")
  (return-type "GByteArray*")
  (parameters
    '("guint" "index_")
    '("guint" "length")
  )
)

(define-method sort
  (of-object "GByteArray")
  (c-name "g_byte_array_sort")
  (return-type "none")
  (parameters
    '("GCompareFunc" "compare_func")
  )
)

(define-method sort_with_data
  (of-object "GByteArray")
  (c-name "g_byte_array_sort_with_data")
  (return-type "none")
  (parameters
    '("GCompareDataFunc" "compare_func")
    '("gpointer" "user_data")
  )
)



;; From gasyncqueue.h

(define-function g_async_queue_new
  (c-name "g_async_queue_new")
  (is-constructor-of "GAsyncQueue")
  (return-type "GAsyncQueue*")
)

(define-function g_async_queue_new_full
  (c-name "g_async_queue_new_full")
  (return-type "GAsyncQueue*")
  (parameters
    '("GDestroyNotify" "item_free_func")
  )
)

(define-method lock
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_lock")
  (return-type "none")
)

(define-method unlock
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_unlock")
  (return-type "none")
)

(define-method ref
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_ref")
  (return-type "GAsyncQueue*")
)

(define-method unref
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_unref")
  (return-type "none")
)

(define-method ref_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_ref_unlocked")
  (return-type "none")
)

(define-method unref_and_unlock
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_unref_and_unlock")
  (return-type "none")
)

(define-method push
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_push")
  (return-type "none")
  (parameters
    '("gpointer" "data")
  )
)

(define-method push_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_push_unlocked")
  (return-type "none")
  (parameters
    '("gpointer" "data")
  )
)

(define-method push_sorted
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_push_sorted")
  (return-type "none")
  (parameters
    '("gpointer" "data")
    '("GCompareDataFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method push_sorted_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_push_sorted_unlocked")
  (return-type "none")
  (parameters
    '("gpointer" "data")
    '("GCompareDataFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method pop
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_pop")
  (return-type "gpointer")
)

(define-method pop_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_pop_unlocked")
  (return-type "gpointer")
)

(define-method try_pop
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_try_pop")
  (return-type "gpointer")
)

(define-method try_pop_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_try_pop_unlocked")
  (return-type "gpointer")
)

(define-method timeout_pop
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_timeout_pop")
  (return-type "gpointer")
  (parameters
    '("guint64" "timeout")
  )
)

(define-method timeout_pop_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_timeout_pop_unlocked")
  (return-type "gpointer")
  (parameters
    '("guint64" "timeout")
  )
)

(define-method length
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_length")
  (return-type "gint")
)

(define-method length_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_length_unlocked")
  (return-type "gint")
)

(define-method sort
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_sort")
  (return-type "none")
  (parameters
    '("GCompareDataFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method sort_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_sort_unlocked")
  (return-type "none")
  (parameters
    '("GCompareDataFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method remove
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_remove")
  (return-type "gboolean")
  (parameters
    '("gpointer" "item")
  )
)

(define-method remove_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_remove_unlocked")
  (return-type "gboolean")
  (parameters
    '("gpointer" "item")
  )
)

(define-method push_front
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_push_front")
  (return-type "none")
  (parameters
    '("gpointer" "item")
  )
)

(define-method push_front_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_push_front_unlocked")
  (return-type "none")
  (parameters
    '("gpointer" "item")
  )
)

(define-method timed_pop
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_timed_pop")
  (return-type "gpointer")
  (parameters
    '("GTimeVal*" "end_time")
  )
)

(define-method timed_pop_unlocked
  (of-object "GAsyncQueue")
  (c-name "g_async_queue_timed_pop_unlocked")
  (return-type "gpointer")
  (parameters
    '("GTimeVal*" "end_time")
  )
)



;; From gatomic.h

(define-function g_atomic_int_get
  (c-name "g_atomic_int_get")
  (return-type "gint")
  (parameters
    '("const-volatile-gint*" "atomic")
  )
)

(define-function g_atomic_int_set
  (c-name "g_atomic_int_set")
  (return-type "none")
  (parameters
    '("volatile-gint*" "atomic")
    '("gint" "newval")
  )
)

(define-function g_atomic_int_inc
  (c-name "g_atomic_int_inc")
  (return-type "none")
  (parameters
    '("volatile-gint*" "atomic")
  )
)

(define-function g_atomic_int_dec_and_test
  (c-name "g_atomic_int_dec_and_test")
  (return-type "gboolean")
  (parameters
    '("volatile-gint*" "atomic")
  )
)

(define-function g_atomic_int_compare_and_exchange
  (c-name "g_atomic_int_compare_and_exchange")
  (return-type "gboolean")
  (parameters
    '("volatile-gint*" "atomic")
    '("gint" "oldval")
    '("gint" "newval")
  )
)

(define-function g_atomic_int_add
  (c-name "g_atomic_int_add")
  (return-type "gint")
  (parameters
    '("volatile-gint*" "atomic")
    '("gint" "val")
  )
)

(define-function g_atomic_int_and
  (c-name "g_atomic_int_and")
  (return-type "guint")
  (parameters
    '("volatile-guint*" "atomic")
    '("guint" "val")
  )
)

(define-function g_atomic_int_or
  (c-name "g_atomic_int_or")
  (return-type "guint")
  (parameters
    '("volatile-guint*" "atomic")
    '("guint" "val")
  )
)

(define-function g_atomic_int_xor
  (c-name "g_atomic_int_xor")
  (return-type "guint")
  (parameters
    '("volatile-guint*" "atomic")
    '("guint" "val")
  )
)

(define-function g_atomic_pointer_get
  (c-name "g_atomic_pointer_get")
  (return-type "gpointer")
  (parameters
    '("const-volatile-void*" "atomic")
  )
)

(define-function g_atomic_pointer_set
  (c-name "g_atomic_pointer_set")
  (return-type "none")
  (parameters
    '("volatile-void*" "atomic")
    '("gpointer" "newval")
  )
)

(define-function g_atomic_pointer_compare_and_exchange
  (c-name "g_atomic_pointer_compare_and_exchange")
  (return-type "gboolean")
  (parameters
    '("volatile-void*" "atomic")
    '("gpointer" "oldval")
    '("gpointer" "newval")
  )
)

(define-function g_atomic_pointer_add
  (c-name "g_atomic_pointer_add")
  (return-type "gssize")
  (parameters
    '("volatile-void*" "atomic")
    '("gssize" "val")
  )
)

(define-function g_atomic_pointer_and
  (c-name "g_atomic_pointer_and")
  (return-type "gsize")
  (parameters
    '("volatile-void*" "atomic")
    '("gsize" "val")
  )
)

(define-function g_atomic_pointer_or
  (c-name "g_atomic_pointer_or")
  (return-type "gsize")
  (parameters
    '("volatile-void*" "atomic")
    '("gsize" "val")
  )
)

(define-function g_atomic_pointer_xor
  (c-name "g_atomic_pointer_xor")
  (return-type "gsize")
  (parameters
    '("volatile-void*" "atomic")
    '("gsize" "val")
  )
)

(define-function g_atomic_int_exchange_and_add
  (c-name "g_atomic_int_exchange_and_add")
  (return-type "gint")
  (parameters
    '("volatile-gint*" "atomic")
    '("gint" "val")
  )
)



;; From gbacktrace.h

(define-function g_on_error_query
  (c-name "g_on_error_query")
  (return-type "none")
  (parameters
    '("const-gchar*" "prg_name")
  )
)

(define-function g_on_error_stack_trace
  (c-name "g_on_error_stack_trace")
  (return-type "none")
  (parameters
    '("const-gchar*" "prg_name")
  )
)



;; From gbase64.h

(define-function g_base64_encode_step
  (c-name "g_base64_encode_step")
  (return-type "gsize")
  (parameters
    '("const-guchar*" "in")
    '("gsize" "len")
    '("gboolean" "break_lines")
    '("gchar*" "out")
    '("gint*" "state")
    '("gint*" "save")
  )
)

(define-function g_base64_encode_close
  (c-name "g_base64_encode_close")
  (return-type "gsize")
  (parameters
    '("gboolean" "break_lines")
    '("gchar*" "out")
    '("gint*" "state")
    '("gint*" "save")
  )
)

(define-function g_base64_encode
  (c-name "g_base64_encode")
  (return-type "gchar*")
  (parameters
    '("const-guchar*" "data")
    '("gsize" "len")
  )
)

(define-function g_base64_decode_step
  (c-name "g_base64_decode_step")
  (return-type "gsize")
  (parameters
    '("const-gchar*" "in")
    '("gsize" "len")
    '("guchar*" "out")
    '("gint*" "state")
    '("guint*" "save")
  )
)

(define-function g_base64_decode
  (c-name "g_base64_decode")
  (return-type "guchar*")
  (parameters
    '("const-gchar*" "text")
    '("gsize*" "out_len")
  )
)

(define-function g_base64_decode_inplace
  (c-name "g_base64_decode_inplace")
  (return-type "guchar*")
  (parameters
    '("gchar*" "text")
    '("gsize*" "out_len")
  )
)



;; From gbitlock.h

(define-function g_bit_lock
  (c-name "g_bit_lock")
  (return-type "none")
  (parameters
    '("volatile-gint*" "address")
    '("gint" "lock_bit")
  )
)

(define-function g_bit_trylock
  (c-name "g_bit_trylock")
  (return-type "gboolean")
  (parameters
    '("volatile-gint*" "address")
    '("gint" "lock_bit")
  )
)

(define-function g_bit_unlock
  (c-name "g_bit_unlock")
  (return-type "none")
  (parameters
    '("volatile-gint*" "address")
    '("gint" "lock_bit")
  )
)

(define-function g_pointer_bit_lock
  (c-name "g_pointer_bit_lock")
  (return-type "none")
  (parameters
    '("volatile-void*" "address")
    '("gint" "lock_bit")
  )
)

(define-function g_pointer_bit_trylock
  (c-name "g_pointer_bit_trylock")
  (return-type "gboolean")
  (parameters
    '("volatile-void*" "address")
    '("gint" "lock_bit")
  )
)

(define-function g_pointer_bit_unlock
  (c-name "g_pointer_bit_unlock")
  (return-type "none")
  (parameters
    '("volatile-void*" "address")
    '("gint" "lock_bit")
  )
)



;; From gbookmarkfile.h

(define-function g_bookmark_file_error_quark
  (c-name "g_bookmark_file_error_quark")
  (return-type "GQuark")
)

(define-function g_bookmark_file_new
  (c-name "g_bookmark_file_new")
  (is-constructor-of "GBookmarkFile")
  (return-type "GBookmarkFile*")
)

(define-method free
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_free")
  (return-type "none")
)

(define-method load_from_file
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_load_from_file")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "filename")
    '("GError**" "error")
  )
)

(define-method load_from_data
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_load_from_data")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "data")
    '("gsize" "length")
    '("GError**" "error")
  )
)

(define-method load_from_data_dirs
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_load_from_data_dirs")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "file")
    '("gchar**" "full_path")
    '("GError**" "error")
  )
)

(define-method to_data
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_to_data")
  (return-type "gchar*")
  (parameters
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method to_file
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_to_file")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "filename")
    '("GError**" "error")
  )
)

(define-method set_title
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_title")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "title")
  )
)

(define-method get_title
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_title")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "uri")
    '("GError**" "error")
  )
)

(define-method set_description
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_description")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "description")
  )
)

(define-method get_description
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_description")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "uri")
    '("GError**" "error")
  )
)

(define-method set_mime_type
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_mime_type")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "mime_type")
  )
)

(define-method get_mime_type
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_mime_type")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "uri")
    '("GError**" "error")
  )
)

(define-method set_groups
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_groups")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar**" "groups")
    '("gsize" "length")
  )
)

(define-method add_group
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_add_group")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "group")
  )
)

(define-method has_group
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_has_group")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "group")
    '("GError**" "error")
  )
)

(define-method get_groups
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_groups")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "uri")
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method add_application
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_add_application")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "name")
    '("const-gchar*" "exec")
  )
)

(define-method has_application
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_has_application")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "name")
    '("GError**" "error")
  )
)

(define-method get_applications
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_applications")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "uri")
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method set_app_info
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_app_info")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "name")
    '("const-gchar*" "exec")
    '("gint" "count")
    '("time_t" "stamp")
    '("GError**" "error")
  )
)

(define-method set_application_info
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_application_info")
  (return-type "gboolean")
  (parameters
    '("const-char*" "uri")
    '("const-char*" "name")
    '("const-char*" "exec")
    '("int" "count")
    '("GDateTime*" "stamp")
    '("GError**" "error")
  )
)

(define-method get_app_info
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_app_info")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "name")
    '("gchar**" "exec")
    '("guint*" "count")
    '("time_t*" "stamp")
    '("GError**" "error")
  )
)

(define-method get_application_info
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_application_info")
  (return-type "gboolean")
  (parameters
    '("const-char*" "uri")
    '("const-char*" "name")
    '("char**" "exec")
    '("unsigned-int*" "count")
    '("GDateTime**" "stamp")
    '("GError**" "error")
  )
)

(define-method set_is_private
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_is_private")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("gboolean" "is_private")
  )
)

(define-method get_is_private
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_is_private")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("GError**" "error")
  )
)

(define-method set_icon
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_icon")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "href")
    '("const-gchar*" "mime_type")
  )
)

(define-method get_icon
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_icon")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("gchar**" "href")
    '("gchar**" "mime_type")
    '("GError**" "error")
  )
)

(define-method set_added
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_added")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("time_t" "added")
  )
)

(define-method set_added_date_time
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_added_date_time")
  (return-type "none")
  (parameters
    '("const-char*" "uri")
    '("GDateTime*" "added")
  )
)

(define-method get_added
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_added")
  (return-type "time_t")
  (parameters
    '("const-gchar*" "uri")
    '("GError**" "error")
  )
)

(define-method get_added_date_time
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_added_date_time")
  (return-type "GDateTime*")
  (parameters
    '("const-char*" "uri")
    '("GError**" "error")
  )
)

(define-method set_modified
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_modified")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("time_t" "modified")
  )
)

(define-method set_modified_date_time
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_modified_date_time")
  (return-type "none")
  (parameters
    '("const-char*" "uri")
    '("GDateTime*" "modified")
  )
)

(define-method get_modified
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_modified")
  (return-type "time_t")
  (parameters
    '("const-gchar*" "uri")
    '("GError**" "error")
  )
)

(define-method get_modified_date_time
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_modified_date_time")
  (return-type "GDateTime*")
  (parameters
    '("const-char*" "uri")
    '("GError**" "error")
  )
)

(define-method set_visited
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_visited")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
    '("time_t" "visited")
  )
)

(define-method set_visited_date_time
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_set_visited_date_time")
  (return-type "none")
  (parameters
    '("const-char*" "uri")
    '("GDateTime*" "visited")
  )
)

(define-method get_visited
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_visited")
  (return-type "time_t")
  (parameters
    '("const-gchar*" "uri")
    '("GError**" "error")
  )
)

(define-method get_visited_date_time
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_visited_date_time")
  (return-type "GDateTime*")
  (parameters
    '("const-char*" "uri")
    '("GError**" "error")
  )
)

(define-method has_item
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_has_item")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
  )
)

(define-method get_size
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_size")
  (return-type "gint")
)

(define-method get_uris
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_get_uris")
  (return-type "gchar**")
  (parameters
    '("gsize*" "length")
  )
)

(define-method remove_group
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_remove_group")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "group")
    '("GError**" "error")
  )
)

(define-method remove_application
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_remove_application")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("const-gchar*" "name")
    '("GError**" "error")
  )
)

(define-method remove_item
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_remove_item")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("GError**" "error")
  )
)

(define-method move_item
  (of-object "GBookmarkFile")
  (c-name "g_bookmark_file_move_item")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "old_uri")
    '("const-gchar*" "new_uri")
    '("GError**" "error")
  )
)



;; From gbsearcharray.h

(define-function g_bsearch_array_create
  (c-name "g_bsearch_array_create")
  (return-type "GBSearchArray*")
  (parameters
    '("const-GBSearchConfig*" "bconfig")
  )
)

(define-method get_nth
  (of-object "GBSearchArray")
  (c-name "g_bsearch_array_get_nth")
  (return-type "gpointer")
  (parameters
    '("const-GBSearchConfig*" "bconfig")
    '("guint" "nth")
  )
)

(define-method get_index
  (of-object "GBSearchArray")
  (c-name "g_bsearch_array_get_index")
  (return-type "guint")
  (parameters
    '("const-GBSearchConfig*" "bconfig")
    '("gconstpointer" "node_in_array")
  )
)

(define-method remove
  (of-object "GBSearchArray")
  (c-name "g_bsearch_array_remove")
  (return-type "GBSearchArray*")
  (parameters
    '("const-GBSearchConfig*" "bconfig")
    '("guint" "index_")
  )
)

(define-method grow
  (of-object "GBSearchArray")
  (c-name "g_bsearch_array_grow")
  (return-type "GBSearchArray*")
  (parameters
    '("const-GBSearchConfig*" "bconfig")
    '("guint" "index")
  )
)

(define-method insert
  (of-object "GBSearchArray")
  (c-name "g_bsearch_array_insert")
  (return-type "GBSearchArray*")
  (parameters
    '("const-GBSearchConfig*" "bconfig")
    '("gconstpointer" "key_node")
  )
)

(define-method replace
  (of-object "GBSearchArray")
  (c-name "g_bsearch_array_replace")
  (return-type "GBSearchArray*")
  (parameters
    '("const-GBSearchConfig*" "bconfig")
    '("gconstpointer" "key_node")
  )
)

(define-method free
  (of-object "GBSearchArray")
  (c-name "g_bsearch_array_free")
  (return-type "none")
  (parameters
    '("const-GBSearchConfig*" "bconfig")
  )
)

(define-method lookup_fuzzy
  (of-object "GBSearchArray")
  (c-name "g_bsearch_array_lookup_fuzzy")
  (return-type "gpointer")
  (parameters
    '("const-GBSearchConfig*" "bconfig")
    '("gconstpointer" "key_node")
    '("const-guint" "sibling_or_after")
  )
)



;; From gbytes.h

(define-function g_bytes_new
  (c-name "g_bytes_new")
  (is-constructor-of "GBytes")
  (return-type "GBytes*")
  (parameters
    '("gconstpointer" "data")
    '("gsize" "size")
  )
)

(define-function g_bytes_new_take
  (c-name "g_bytes_new_take")
  (return-type "GBytes*")
  (parameters
    '("gpointer" "data")
    '("gsize" "size")
  )
)

(define-function g_bytes_new_static
  (c-name "g_bytes_new_static")
  (return-type "GBytes*")
  (parameters
    '("gconstpointer" "data")
    '("gsize" "size")
  )
)

(define-function g_bytes_new_with_free_func
  (c-name "g_bytes_new_with_free_func")
  (return-type "GBytes*")
  (parameters
    '("gconstpointer" "data")
    '("gsize" "size")
    '("GDestroyNotify" "free_func")
    '("gpointer" "user_data")
  )
)

(define-method new_from_bytes
  (of-object "GBytes")
  (c-name "g_bytes_new_from_bytes")
  (return-type "GBytes*")
  (parameters
    '("gsize" "offset")
    '("gsize" "length")
  )
)

(define-method get_data
  (of-object "GBytes")
  (c-name "g_bytes_get_data")
  (return-type "gconstpointer")
  (parameters
    '("gsize*" "size")
  )
)

(define-method get_size
  (of-object "GBytes")
  (c-name "g_bytes_get_size")
  (return-type "gsize")
)

(define-method ref
  (of-object "GBytes")
  (c-name "g_bytes_ref")
  (return-type "GBytes*")
)

(define-method unref
  (of-object "GBytes")
  (c-name "g_bytes_unref")
  (return-type "none")
)

(define-method unref_to_data
  (of-object "GBytes")
  (c-name "g_bytes_unref_to_data")
  (return-type "gpointer")
  (parameters
    '("gsize*" "size")
  )
)

(define-method unref_to_array
  (of-object "GBytes")
  (c-name "g_bytes_unref_to_array")
  (return-type "GByteArray*")
)

(define-function g_bytes_hash
  (c-name "g_bytes_hash")
  (return-type "guint")
  (parameters
    '("gconstpointer" "bytes")
  )
)

(define-function g_bytes_equal
  (c-name "g_bytes_equal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "bytes1")
    '("gconstpointer" "bytes2")
  )
)

(define-function g_bytes_compare
  (c-name "g_bytes_compare")
  (return-type "gint")
  (parameters
    '("gconstpointer" "bytes1")
    '("gconstpointer" "bytes2")
  )
)



;; From gcharset.h

(define-function g_get_charset
  (c-name "g_get_charset")
  (return-type "gboolean")
  (parameters
    '("const-char**" "charset")
  )
)

(define-function g_get_codeset
  (c-name "g_get_codeset")
  (return-type "gchar*")
)

(define-function g_get_console_charset
  (c-name "g_get_console_charset")
  (return-type "gboolean")
  (parameters
    '("const-char**" "charset")
  )
)

(define-function g_get_language_names
  (c-name "g_get_language_names")
  (return-type "const-gchar*-const*")
)

(define-function g_get_language_names_with_category
  (c-name "g_get_language_names_with_category")
  (return-type "const-gchar*-const*")
  (parameters
    '("const-gchar*" "category_name")
  )
)

(define-function g_get_locale_variants
  (c-name "g_get_locale_variants")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "locale")
  )
)



;; From gchecksum.h

(define-method get_length
  (of-object "GChecksumType")
  (c-name "g_checksum_type_get_length")
  (return-type "gssize")
)

(define-function g_checksum_new
  (c-name "g_checksum_new")
  (is-constructor-of "GChecksum")
  (return-type "GChecksum*")
  (parameters
    '("GChecksumType" "checksum_type")
  )
)

(define-method reset
  (of-object "GChecksum")
  (c-name "g_checksum_reset")
  (return-type "none")
)

(define-method copy
  (of-object "GChecksum")
  (c-name "g_checksum_copy")
  (return-type "GChecksum*")
)

(define-method free
  (of-object "GChecksum")
  (c-name "g_checksum_free")
  (return-type "none")
)

(define-method update
  (of-object "GChecksum")
  (c-name "g_checksum_update")
  (return-type "none")
  (parameters
    '("const-guchar*" "data")
    '("gssize" "length")
  )
)

(define-method get_string
  (of-object "GChecksum")
  (c-name "g_checksum_get_string")
  (return-type "const-gchar*")
)

(define-method get_digest
  (of-object "GChecksum")
  (c-name "g_checksum_get_digest")
  (return-type "none")
  (parameters
    '("guint8*" "buffer")
    '("gsize*" "digest_len")
  )
)

(define-function g_compute_checksum_for_data
  (c-name "g_compute_checksum_for_data")
  (return-type "gchar*")
  (parameters
    '("GChecksumType" "checksum_type")
    '("const-guchar*" "data")
    '("gsize" "length")
  )
)

(define-function g_compute_checksum_for_string
  (c-name "g_compute_checksum_for_string")
  (return-type "gchar*")
  (parameters
    '("GChecksumType" "checksum_type")
    '("const-gchar*" "str")
    '("gssize" "length")
  )
)

(define-function g_compute_checksum_for_bytes
  (c-name "g_compute_checksum_for_bytes")
  (return-type "gchar*")
  (parameters
    '("GChecksumType" "checksum_type")
    '("GBytes*" "data")
  )
)



;; From gconstructor.h



;; From gconvert.h

(define-function g_convert_error_quark
  (c-name "g_convert_error_quark")
  (return-type "GQuark")
)

(define-function g_iconv_open
  (c-name "g_iconv_open")
  (return-type "GIConv")
  (parameters
    '("const-gchar*" "to_codeset")
    '("const-gchar*" "from_codeset")
  )
)

(define-method iconv
  (of-object "GIConv")
  (c-name "g_iconv")
  (return-type "gsize")
  (parameters
    '("gchar**" "inbuf")
    '("gsize*" "inbytes_left")
    '("gchar**" "outbuf")
    '("gsize*" "outbytes_left")
  )
)

(define-method close
  (of-object "GIConv")
  (c-name "g_iconv_close")
  (return-type "gint")
)

(define-function g_convert
  (c-name "g_convert")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
    '("const-gchar*" "to_codeset")
    '("const-gchar*" "from_codeset")
    '("gsize*" "bytes_read")
    '("gsize*" "bytes_written")
    '("GError**" "error")
  )
)

(define-function g_convert_with_iconv
  (c-name "g_convert_with_iconv")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
    '("GIConv" "converter")
    '("gsize*" "bytes_read")
    '("gsize*" "bytes_written")
    '("GError**" "error")
  )
)

(define-function g_convert_with_fallback
  (c-name "g_convert_with_fallback")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
    '("const-gchar*" "to_codeset")
    '("const-gchar*" "from_codeset")
    '("const-gchar*" "fallback")
    '("gsize*" "bytes_read")
    '("gsize*" "bytes_written")
    '("GError**" "error")
  )
)

(define-function g_locale_to_utf8
  (c-name "g_locale_to_utf8")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "opsysstring")
    '("gssize" "len")
    '("gsize*" "bytes_read")
    '("gsize*" "bytes_written")
    '("GError**" "error")
  )
)

(define-function g_locale_from_utf8
  (c-name "g_locale_from_utf8")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "utf8string")
    '("gssize" "len")
    '("gsize*" "bytes_read")
    '("gsize*" "bytes_written")
    '("GError**" "error")
  )
)

(define-function g_filename_to_utf8
  (c-name "g_filename_to_utf8")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "opsysstring")
    '("gssize" "len")
    '("gsize*" "bytes_read")
    '("gsize*" "bytes_written")
    '("GError**" "error")
  )
)

(define-function g_filename_from_utf8
  (c-name "g_filename_from_utf8")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "utf8string")
    '("gssize" "len")
    '("gsize*" "bytes_read")
    '("gsize*" "bytes_written")
    '("GError**" "error")
  )
)

(define-function g_filename_from_uri
  (c-name "g_filename_from_uri")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "uri")
    '("gchar**" "hostname")
    '("GError**" "error")
  )
)

(define-function g_filename_to_uri
  (c-name "g_filename_to_uri")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "filename")
    '("const-gchar*" "hostname")
    '("GError**" "error")
  )
)

(define-function g_filename_display_name
  (c-name "g_filename_display_name")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "filename")
  )
)

(define-function g_get_filename_charsets
  (c-name "g_get_filename_charsets")
  (return-type "gboolean")
  (parameters
    '("const-gchar***" "filename_charsets")
  )
)

(define-function g_filename_display_basename
  (c-name "g_filename_display_basename")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "filename")
  )
)

(define-function g_uri_list_extract_uris
  (c-name "g_uri_list_extract_uris")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "uri_list")
  )
)



;; From gdataset.h

(define-function g_datalist_init
  (c-name "g_datalist_init")
  (return-type "none")
  (parameters
    '("GData**" "datalist")
  )
)

(define-function g_datalist_clear
  (c-name "g_datalist_clear")
  (return-type "none")
  (parameters
    '("GData**" "datalist")
  )
)

(define-function g_datalist_id_get_data
  (c-name "g_datalist_id_get_data")
  (return-type "gpointer")
  (parameters
    '("GData**" "datalist")
    '("GQuark" "key_id")
  )
)

(define-function g_datalist_id_set_data_full
  (c-name "g_datalist_id_set_data_full")
  (return-type "none")
  (parameters
    '("GData**" "datalist")
    '("GQuark" "key_id")
    '("gpointer" "data")
    '("GDestroyNotify" "destroy_func")
  )
)

(define-function g_datalist_id_dup_data
  (c-name "g_datalist_id_dup_data")
  (return-type "gpointer")
  (parameters
    '("GData**" "datalist")
    '("GQuark" "key_id")
    '("GDuplicateFunc" "dup_func")
    '("gpointer" "user_data")
  )
)

(define-function g_datalist_id_replace_data
  (c-name "g_datalist_id_replace_data")
  (return-type "gboolean")
  (parameters
    '("GData**" "datalist")
    '("GQuark" "key_id")
    '("gpointer" "oldval")
    '("gpointer" "newval")
    '("GDestroyNotify" "destroy")
    '("GDestroyNotify*" "old_destroy")
  )
)

(define-function g_datalist_id_remove_no_notify
  (c-name "g_datalist_id_remove_no_notify")
  (return-type "gpointer")
  (parameters
    '("GData**" "datalist")
    '("GQuark" "key_id")
  )
)

(define-function g_datalist_foreach
  (c-name "g_datalist_foreach")
  (return-type "none")
  (parameters
    '("GData**" "datalist")
    '("GDataForeachFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-function g_datalist_set_flags
  (c-name "g_datalist_set_flags")
  (return-type "none")
  (parameters
    '("GData**" "datalist")
    '("guint" "flags")
  )
)

(define-function g_datalist_unset_flags
  (c-name "g_datalist_unset_flags")
  (return-type "none")
  (parameters
    '("GData**" "datalist")
    '("guint" "flags")
  )
)

(define-function g_datalist_get_flags
  (c-name "g_datalist_get_flags")
  (return-type "guint")
  (parameters
    '("GData**" "datalist")
  )
)

(define-function g_dataset_destroy
  (c-name "g_dataset_destroy")
  (return-type "none")
  (parameters
    '("gconstpointer" "dataset_location")
  )
)

(define-function g_dataset_id_get_data
  (c-name "g_dataset_id_get_data")
  (return-type "gpointer")
  (parameters
    '("gconstpointer" "dataset_location")
    '("GQuark" "key_id")
  )
)

(define-function g_datalist_get_data
  (c-name "g_datalist_get_data")
  (return-type "gpointer")
  (parameters
    '("GData**" "datalist")
    '("const-gchar*" "key")
  )
)

(define-function g_dataset_id_set_data_full
  (c-name "g_dataset_id_set_data_full")
  (return-type "none")
  (parameters
    '("gconstpointer" "dataset_location")
    '("GQuark" "key_id")
    '("gpointer" "data")
    '("GDestroyNotify" "destroy_func")
  )
)

(define-function g_dataset_id_remove_no_notify
  (c-name "g_dataset_id_remove_no_notify")
  (return-type "gpointer")
  (parameters
    '("gconstpointer" "dataset_location")
    '("GQuark" "key_id")
  )
)

(define-function g_dataset_foreach
  (c-name "g_dataset_foreach")
  (return-type "none")
  (parameters
    '("gconstpointer" "dataset_location")
    '("GDataForeachFunc" "func")
    '("gpointer" "user_data")
  )
)



;; From gdate.h

(define-function g_date_new
  (c-name "g_date_new")
  (is-constructor-of "GDate")
  (return-type "GDate*")
)

(define-function g_date_new_dmy
  (c-name "g_date_new_dmy")
  (return-type "GDate*")
  (parameters
    '("GDateDay" "day")
    '("GDateMonth" "month")
    '("GDateYear" "year")
  )
)

(define-function g_date_new_julian
  (c-name "g_date_new_julian")
  (return-type "GDate*")
  (parameters
    '("guint32" "julian_day")
  )
)

(define-method free
  (of-object "GDate")
  (c-name "g_date_free")
  (return-type "none")
)

(define-method copy
  (of-object "GDate")
  (c-name "g_date_copy")
  (return-type "GDate*")
)

(define-method valid
  (of-object "GDate")
  (c-name "g_date_valid")
  (return-type "gboolean")
)

(define-function g_date_valid_day
  (c-name "g_date_valid_day")
  (return-type "gboolean")
  (parameters
    '("GDateDay" "day")
  )
)

(define-function g_date_valid_month
  (c-name "g_date_valid_month")
  (return-type "gboolean")
  (parameters
    '("GDateMonth" "month")
  )
)

(define-function g_date_valid_year
  (c-name "g_date_valid_year")
  (return-type "gboolean")
  (parameters
    '("GDateYear" "year")
  )
)

(define-function g_date_valid_weekday
  (c-name "g_date_valid_weekday")
  (return-type "gboolean")
  (parameters
    '("GDateWeekday" "weekday")
  )
)

(define-function g_date_valid_julian
  (c-name "g_date_valid_julian")
  (return-type "gboolean")
  (parameters
    '("guint32" "julian_date")
  )
)

(define-function g_date_valid_dmy
  (c-name "g_date_valid_dmy")
  (return-type "gboolean")
  (parameters
    '("GDateDay" "day")
    '("GDateMonth" "month")
    '("GDateYear" "year")
  )
)

(define-method get_weekday
  (of-object "GDate")
  (c-name "g_date_get_weekday")
  (return-type "GDateWeekday")
)

(define-method get_month
  (of-object "GDate")
  (c-name "g_date_get_month")
  (return-type "GDateMonth")
)

(define-method get_year
  (of-object "GDate")
  (c-name "g_date_get_year")
  (return-type "GDateYear")
)

(define-method get_day
  (of-object "GDate")
  (c-name "g_date_get_day")
  (return-type "GDateDay")
)

(define-method get_julian
  (of-object "GDate")
  (c-name "g_date_get_julian")
  (return-type "guint32")
)

(define-method get_day_of_year
  (of-object "GDate")
  (c-name "g_date_get_day_of_year")
  (return-type "guint")
)

(define-method get_monday_week_of_year
  (of-object "GDate")
  (c-name "g_date_get_monday_week_of_year")
  (return-type "guint")
)

(define-method get_sunday_week_of_year
  (of-object "GDate")
  (c-name "g_date_get_sunday_week_of_year")
  (return-type "guint")
)

(define-method get_iso8601_week_of_year
  (of-object "GDate")
  (c-name "g_date_get_iso8601_week_of_year")
  (return-type "guint")
)

(define-method clear
  (of-object "GDate")
  (c-name "g_date_clear")
  (return-type "none")
  (parameters
    '("guint" "n_dates")
  )
)

(define-method set_parse
  (of-object "GDate")
  (c-name "g_date_set_parse")
  (return-type "none")
  (parameters
    '("const-gchar*" "str")
  )
)

(define-method set_time_t
  (of-object "GDate")
  (c-name "g_date_set_time_t")
  (return-type "none")
  (parameters
    '("time_t" "timet")
  )
)

(define-method set_time_val
  (of-object "GDate")
  (c-name "g_date_set_time_val")
  (return-type "none")
  (parameters
    '("GTimeVal*" "timeval")
  )
)

(define-method set_time
  (of-object "GDate")
  (c-name "g_date_set_time")
  (return-type "none")
  (parameters
    '("GTime" "time_")
  )
)

(define-method set_month
  (of-object "GDate")
  (c-name "g_date_set_month")
  (return-type "none")
  (parameters
    '("GDateMonth" "month")
  )
)

(define-method set_day
  (of-object "GDate")
  (c-name "g_date_set_day")
  (return-type "none")
  (parameters
    '("GDateDay" "day")
  )
)

(define-method set_year
  (of-object "GDate")
  (c-name "g_date_set_year")
  (return-type "none")
  (parameters
    '("GDateYear" "year")
  )
)

(define-method set_dmy
  (of-object "GDate")
  (c-name "g_date_set_dmy")
  (return-type "none")
  (parameters
    '("GDateDay" "day")
    '("GDateMonth" "month")
    '("GDateYear" "y")
  )
)

(define-method set_julian
  (of-object "GDate")
  (c-name "g_date_set_julian")
  (return-type "none")
  (parameters
    '("guint32" "julian_date")
  )
)

(define-method is_first_of_month
  (of-object "GDate")
  (c-name "g_date_is_first_of_month")
  (return-type "gboolean")
)

(define-method is_last_of_month
  (of-object "GDate")
  (c-name "g_date_is_last_of_month")
  (return-type "gboolean")
)

(define-method add_days
  (of-object "GDate")
  (c-name "g_date_add_days")
  (return-type "none")
  (parameters
    '("guint" "n_days")
  )
)

(define-method subtract_days
  (of-object "GDate")
  (c-name "g_date_subtract_days")
  (return-type "none")
  (parameters
    '("guint" "n_days")
  )
)

(define-method add_months
  (of-object "GDate")
  (c-name "g_date_add_months")
  (return-type "none")
  (parameters
    '("guint" "n_months")
  )
)

(define-method subtract_months
  (of-object "GDate")
  (c-name "g_date_subtract_months")
  (return-type "none")
  (parameters
    '("guint" "n_months")
  )
)

(define-method add_years
  (of-object "GDate")
  (c-name "g_date_add_years")
  (return-type "none")
  (parameters
    '("guint" "n_years")
  )
)

(define-method subtract_years
  (of-object "GDate")
  (c-name "g_date_subtract_years")
  (return-type "none")
  (parameters
    '("guint" "n_years")
  )
)

(define-function g_date_is_leap_year
  (c-name "g_date_is_leap_year")
  (return-type "gboolean")
  (parameters
    '("GDateYear" "year")
  )
)

(define-function g_date_get_days_in_month
  (c-name "g_date_get_days_in_month")
  (return-type "guint8")
  (parameters
    '("GDateMonth" "month")
    '("GDateYear" "year")
  )
)

(define-function g_date_get_monday_weeks_in_year
  (c-name "g_date_get_monday_weeks_in_year")
  (return-type "guint8")
  (parameters
    '("GDateYear" "year")
  )
)

(define-function g_date_get_sunday_weeks_in_year
  (c-name "g_date_get_sunday_weeks_in_year")
  (return-type "guint8")
  (parameters
    '("GDateYear" "year")
  )
)

(define-method days_between
  (of-object "GDate")
  (c-name "g_date_days_between")
  (return-type "gint")
  (parameters
    '("const-GDate*" "date2")
  )
)

(define-method compare
  (of-object "GDate")
  (c-name "g_date_compare")
  (return-type "gint")
  (parameters
    '("const-GDate*" "rhs")
  )
)

(define-method to_struct_tm
  (of-object "GDate")
  (c-name "g_date_to_struct_tm")
  (return-type "none")
  (parameters
    '("struct-tm*" "tm")
  )
)

(define-method clamp
  (of-object "GDate")
  (c-name "g_date_clamp")
  (return-type "none")
  (parameters
    '("const-GDate*" "min_date")
    '("const-GDate*" "max_date")
  )
)

(define-method order
  (of-object "GDate")
  (c-name "g_date_order")
  (return-type "none")
  (parameters
    '("GDate*" "date2")
  )
)

(define-function g_date_strftime
  (c-name "g_date_strftime")
  (return-type "gsize")
  (parameters
    '("gchar*" "s")
    '("gsize" "slen")
    '("const-gchar*" "format")
    '("const-GDate*" "date")
  )
)



;; From gdatetime.h

(define-method unref
  (of-object "GDateTime")
  (c-name "g_date_time_unref")
  (return-type "none")
)

(define-method ref
  (of-object "GDateTime")
  (c-name "g_date_time_ref")
  (return-type "GDateTime*")
)

(define-function g_date_time_new_now
  (c-name "g_date_time_new_now")
  (return-type "GDateTime*")
  (parameters
    '("GTimeZone*" "tz")
  )
)

(define-function g_date_time_new_now_local
  (c-name "g_date_time_new_now_local")
  (return-type "GDateTime*")
)

(define-function g_date_time_new_now_utc
  (c-name "g_date_time_new_now_utc")
  (return-type "GDateTime*")
)

(define-function g_date_time_new_from_unix_local
  (c-name "g_date_time_new_from_unix_local")
  (return-type "GDateTime*")
  (parameters
    '("gint64" "t")
  )
)

(define-function g_date_time_new_from_unix_utc
  (c-name "g_date_time_new_from_unix_utc")
  (return-type "GDateTime*")
  (parameters
    '("gint64" "t")
  )
)

(define-function g_date_time_new_from_timeval_local
  (c-name "g_date_time_new_from_timeval_local")
  (return-type "GDateTime*")
  (parameters
    '("const-GTimeVal*" "tv")
  )
)

(define-function g_date_time_new_from_timeval_utc
  (c-name "g_date_time_new_from_timeval_utc")
  (return-type "GDateTime*")
  (parameters
    '("const-GTimeVal*" "tv")
  )
)

(define-function g_date_time_new_from_iso8601
  (c-name "g_date_time_new_from_iso8601")
  (return-type "GDateTime*")
  (parameters
    '("const-gchar*" "text")
    '("GTimeZone*" "default_tz")
  )
)

(define-function g_date_time_new
  (c-name "g_date_time_new")
  (is-constructor-of "GDateTime")
  (return-type "GDateTime*")
  (parameters
    '("GTimeZone*" "tz")
    '("gint" "year")
    '("gint" "month")
    '("gint" "day")
    '("gint" "hour")
    '("gint" "minute")
    '("gdouble" "seconds")
  )
)

(define-function g_date_time_new_local
  (c-name "g_date_time_new_local")
  (return-type "GDateTime*")
  (parameters
    '("gint" "year")
    '("gint" "month")
    '("gint" "day")
    '("gint" "hour")
    '("gint" "minute")
    '("gdouble" "seconds")
  )
)

(define-function g_date_time_new_utc
  (c-name "g_date_time_new_utc")
  (return-type "GDateTime*")
  (parameters
    '("gint" "year")
    '("gint" "month")
    '("gint" "day")
    '("gint" "hour")
    '("gint" "minute")
    '("gdouble" "seconds")
  )
)

(define-method add
  (of-object "GDateTime")
  (c-name "g_date_time_add")
  (return-type "GDateTime*")
  (parameters
    '("GTimeSpan" "timespan")
  )
)

(define-method add_years
  (of-object "GDateTime")
  (c-name "g_date_time_add_years")
  (return-type "GDateTime*")
  (parameters
    '("gint" "years")
  )
)

(define-method add_months
  (of-object "GDateTime")
  (c-name "g_date_time_add_months")
  (return-type "GDateTime*")
  (parameters
    '("gint" "months")
  )
)

(define-method add_weeks
  (of-object "GDateTime")
  (c-name "g_date_time_add_weeks")
  (return-type "GDateTime*")
  (parameters
    '("gint" "weeks")
  )
)

(define-method add_days
  (of-object "GDateTime")
  (c-name "g_date_time_add_days")
  (return-type "GDateTime*")
  (parameters
    '("gint" "days")
  )
)

(define-method add_hours
  (of-object "GDateTime")
  (c-name "g_date_time_add_hours")
  (return-type "GDateTime*")
  (parameters
    '("gint" "hours")
  )
)

(define-method add_minutes
  (of-object "GDateTime")
  (c-name "g_date_time_add_minutes")
  (return-type "GDateTime*")
  (parameters
    '("gint" "minutes")
  )
)

(define-method add_seconds
  (of-object "GDateTime")
  (c-name "g_date_time_add_seconds")
  (return-type "GDateTime*")
  (parameters
    '("gdouble" "seconds")
  )
)

(define-method add_full
  (of-object "GDateTime")
  (c-name "g_date_time_add_full")
  (return-type "GDateTime*")
  (parameters
    '("gint" "years")
    '("gint" "months")
    '("gint" "days")
    '("gint" "hours")
    '("gint" "minutes")
    '("gdouble" "seconds")
  )
)

(define-function g_date_time_compare
  (c-name "g_date_time_compare")
  (return-type "gint")
  (parameters
    '("gconstpointer" "dt1")
    '("gconstpointer" "dt2")
  )
)

(define-method difference
  (of-object "GDateTime")
  (c-name "g_date_time_difference")
  (return-type "GTimeSpan")
  (parameters
    '("GDateTime*" "begin")
  )
)

(define-function g_date_time_hash
  (c-name "g_date_time_hash")
  (return-type "guint")
  (parameters
    '("gconstpointer" "datetime")
  )
)

(define-function g_date_time_equal
  (c-name "g_date_time_equal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "dt1")
    '("gconstpointer" "dt2")
  )
)

(define-method get_ymd
  (of-object "GDateTime")
  (c-name "g_date_time_get_ymd")
  (return-type "none")
  (parameters
    '("gint*" "year")
    '("gint*" "month")
    '("gint*" "day")
  )
)

(define-method get_year
  (of-object "GDateTime")
  (c-name "g_date_time_get_year")
  (return-type "gint")
)

(define-method get_month
  (of-object "GDateTime")
  (c-name "g_date_time_get_month")
  (return-type "gint")
)

(define-method get_day_of_month
  (of-object "GDateTime")
  (c-name "g_date_time_get_day_of_month")
  (return-type "gint")
)

(define-method get_week_numbering_year
  (of-object "GDateTime")
  (c-name "g_date_time_get_week_numbering_year")
  (return-type "gint")
)

(define-method get_week_of_year
  (of-object "GDateTime")
  (c-name "g_date_time_get_week_of_year")
  (return-type "gint")
)

(define-method get_day_of_week
  (of-object "GDateTime")
  (c-name "g_date_time_get_day_of_week")
  (return-type "gint")
)

(define-method get_day_of_year
  (of-object "GDateTime")
  (c-name "g_date_time_get_day_of_year")
  (return-type "gint")
)

(define-method get_hour
  (of-object "GDateTime")
  (c-name "g_date_time_get_hour")
  (return-type "gint")
)

(define-method get_minute
  (of-object "GDateTime")
  (c-name "g_date_time_get_minute")
  (return-type "gint")
)

(define-method get_second
  (of-object "GDateTime")
  (c-name "g_date_time_get_second")
  (return-type "gint")
)

(define-method get_microsecond
  (of-object "GDateTime")
  (c-name "g_date_time_get_microsecond")
  (return-type "gint")
)

(define-method get_seconds
  (of-object "GDateTime")
  (c-name "g_date_time_get_seconds")
  (return-type "gdouble")
)

(define-method to_unix
  (of-object "GDateTime")
  (c-name "g_date_time_to_unix")
  (return-type "gint64")
)

(define-method to_timeval
  (of-object "GDateTime")
  (c-name "g_date_time_to_timeval")
  (return-type "gboolean")
  (parameters
    '("GTimeVal*" "tv")
  )
)

(define-method get_utc_offset
  (of-object "GDateTime")
  (c-name "g_date_time_get_utc_offset")
  (return-type "GTimeSpan")
)

(define-method get_timezone
  (of-object "GDateTime")
  (c-name "g_date_time_get_timezone")
  (return-type "GTimeZone*")
)

(define-method get_timezone_abbreviation
  (of-object "GDateTime")
  (c-name "g_date_time_get_timezone_abbreviation")
  (return-type "const-gchar*")
)

(define-method is_daylight_savings
  (of-object "GDateTime")
  (c-name "g_date_time_is_daylight_savings")
  (return-type "gboolean")
)

(define-method to_timezone
  (of-object "GDateTime")
  (c-name "g_date_time_to_timezone")
  (return-type "GDateTime*")
  (parameters
    '("GTimeZone*" "tz")
  )
)

(define-method to_local
  (of-object "GDateTime")
  (c-name "g_date_time_to_local")
  (return-type "GDateTime*")
)

(define-method to_utc
  (of-object "GDateTime")
  (c-name "g_date_time_to_utc")
  (return-type "GDateTime*")
)

(define-method format
  (of-object "GDateTime")
  (c-name "g_date_time_format")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "format")
  )
)

(define-method format_iso8601
  (of-object "GDateTime")
  (c-name "g_date_time_format_iso8601")
  (return-type "gchar*")
)



;; From gdir.h

(define-function g_dir_open
  (c-name "g_dir_open")
  (return-type "GDir*")
  (parameters
    '("const-gchar*" "path")
    '("guint" "flags")
    '("GError**" "error")
  )
)

(define-method read_name
  (of-object "GDir")
  (c-name "g_dir_read_name")
  (return-type "const-gchar*")
)

(define-method rewind
  (of-object "GDir")
  (c-name "g_dir_rewind")
  (return-type "none")
)

(define-method close
  (of-object "GDir")
  (c-name "g_dir_close")
  (return-type "none")
)



;; From genviron.h

(define-function g_getenv
  (c-name "g_getenv")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "variable")
  )
)

(define-function g_setenv
  (c-name "g_setenv")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "variable")
    '("const-gchar*" "value")
    '("gboolean" "overwrite")
  )
)

(define-function g_unsetenv
  (c-name "g_unsetenv")
  (return-type "none")
  (parameters
    '("const-gchar*" "variable")
  )
)

(define-function g_listenv
  (c-name "g_listenv")
  (return-type "gchar**")
)

(define-function g_get_environ
  (c-name "g_get_environ")
  (return-type "gchar**")
)

(define-function g_environ_getenv
  (c-name "g_environ_getenv")
  (return-type "const-gchar*")
  (parameters
    '("gchar**" "envp")
    '("const-gchar*" "variable")
  )
)

(define-function g_environ_setenv
  (c-name "g_environ_setenv")
  (return-type "gchar**")
  (parameters
    '("gchar**" "envp")
    '("const-gchar*" "variable")
    '("const-gchar*" "value")
    '("gboolean" "overwrite")
  )
)

(define-function g_environ_unsetenv
  (c-name "g_environ_unsetenv")
  (return-type "gchar**")
  (parameters
    '("gchar**" "envp")
    '("const-gchar*" "variable")
  )
)



;; From gerror.h

(define-function g_error_new
  (c-name "g_error_new")
  (is-constructor-of "GError")
  (return-type "GError*")
  (parameters
    '("GQuark" "domain")
    '("gint" "code")
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_error_new_literal
  (c-name "g_error_new_literal")
  (return-type "GError*")
  (parameters
    '("GQuark" "domain")
    '("gint" "code")
    '("const-gchar*" "message")
  )
)

(define-function g_error_new_valist
  (c-name "g_error_new_valist")
  (return-type "GError*")
  (parameters
    '("GQuark" "domain")
    '("gint" "code")
    '("const-gchar*" "format")
    '("va_list" "args")
  )
)

(define-method free
  (of-object "GError")
  (c-name "g_error_free")
  (return-type "none")
)

(define-method copy
  (of-object "GError")
  (c-name "g_error_copy")
  (return-type "GError*")
)

(define-method matches
  (of-object "GError")
  (c-name "g_error_matches")
  (return-type "gboolean")
  (parameters
    '("GQuark" "domain")
    '("gint" "code")
  )
)

(define-function g_set_error
  (c-name "g_set_error")
  (return-type "none")
  (parameters
    '("GError**" "err")
    '("GQuark" "domain")
    '("gint" "code")
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_set_error_literal
  (c-name "g_set_error_literal")
  (return-type "none")
  (parameters
    '("GError**" "err")
    '("GQuark" "domain")
    '("gint" "code")
    '("const-gchar*" "message")
  )
)

(define-function g_propagate_error
  (c-name "g_propagate_error")
  (return-type "none")
  (parameters
    '("GError**" "dest")
    '("GError*" "src")
  )
)

(define-function g_clear_error
  (c-name "g_clear_error")
  (return-type "none")
  (parameters
    '("GError**" "err")
  )
)

(define-function g_prefix_error
  (c-name "g_prefix_error")
  (return-type "none")
  (parameters
    '("GError**" "err")
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_propagate_prefixed_error
  (c-name "g_propagate_prefixed_error")
  (return-type "none")
  (parameters
    '("GError**" "dest")
    '("GError*" "src")
    '("const-gchar*" "format")
  )
  (varargs #t)
)



;; From gfileutils.h

(define-function g_file_error_quark
  (c-name "g_file_error_quark")
  (return-type "GQuark")
)

(define-function g_file_error_from_errno
  (c-name "g_file_error_from_errno")
  (return-type "GFileError")
  (parameters
    '("gint" "err_no")
  )
)

(define-function g_file_test
  (c-name "g_file_test")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "filename")
    '("GFileTest" "test")
  )
)

(define-function g_file_get_contents
  (c-name "g_file_get_contents")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "filename")
    '("gchar**" "contents")
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-function g_file_set_contents
  (c-name "g_file_set_contents")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "filename")
    '("const-gchar*" "contents")
    '("gssize" "length")
    '("GError**" "error")
  )
)

(define-function g_file_set_contents_full
  (c-name "g_file_set_contents_full")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "filename")
    '("const-gchar*" "contents")
    '("gssize" "length")
    '("GFileSetContentsFlags" "flags")
    '("int" "mode")
    '("GError**" "error")
  )
)

(define-function g_file_read_link
  (c-name "g_file_read_link")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "filename")
    '("GError**" "error")
  )
)

(define-function g_mkdtemp
  (c-name "g_mkdtemp")
  (return-type "gchar*")
  (parameters
    '("gchar*" "tmpl")
  )
)

(define-function g_mkdtemp_full
  (c-name "g_mkdtemp_full")
  (return-type "gchar*")
  (parameters
    '("gchar*" "tmpl")
    '("gint" "mode")
  )
)

(define-function g_mkstemp
  (c-name "g_mkstemp")
  (return-type "gint")
  (parameters
    '("gchar*" "tmpl")
  )
)

(define-function g_mkstemp_full
  (c-name "g_mkstemp_full")
  (return-type "gint")
  (parameters
    '("gchar*" "tmpl")
    '("gint" "flags")
    '("gint" "mode")
  )
)

(define-function g_file_open_tmp
  (c-name "g_file_open_tmp")
  (return-type "gint")
  (parameters
    '("const-gchar*" "tmpl")
    '("gchar**" "name_used")
    '("GError**" "error")
  )
)

(define-function g_dir_make_tmp
  (c-name "g_dir_make_tmp")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "tmpl")
    '("GError**" "error")
  )
)

(define-function g_build_path
  (c-name "g_build_path")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "separator")
    '("const-gchar*" "first_element")
  )
  (varargs #t)
)

(define-function g_build_pathv
  (c-name "g_build_pathv")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "separator")
    '("gchar**" "args")
  )
)

(define-function g_build_filename
  (c-name "g_build_filename")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "first_element")
  )
  (varargs #t)
)

(define-function g_build_filenamev
  (c-name "g_build_filenamev")
  (return-type "gchar*")
  (parameters
    '("gchar**" "args")
  )
)

(define-function g_build_filename_valist
  (c-name "g_build_filename_valist")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "first_element")
    '("va_list*" "args")
  )
)

(define-function g_mkdir_with_parents
  (c-name "g_mkdir_with_parents")
  (return-type "gint")
  (parameters
    '("const-gchar*" "pathname")
    '("gint" "mode")
  )
)

(define-function g_path_is_absolute
  (c-name "g_path_is_absolute")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "file_name")
  )
)

(define-function g_path_skip_root
  (c-name "g_path_skip_root")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "file_name")
  )
)

(define-function g_basename
  (c-name "g_basename")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "file_name")
  )
)

(define-function g_get_current_dir
  (c-name "g_get_current_dir")
  (return-type "gchar*")
)

(define-function g_path_get_basename
  (c-name "g_path_get_basename")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "file_name")
  )
)

(define-function g_path_get_dirname
  (c-name "g_path_get_dirname")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "file_name")
  )
)

(define-function g_canonicalize_filename
  (c-name "g_canonicalize_filename")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "filename")
    '("const-gchar*" "relative_to")
  )
)



;; From ggettext.h

(define-function g_strip_context
  (c-name "g_strip_context")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "msgid")
    '("const-gchar*" "msgval")
  )
)

(define-function g_dgettext
  (c-name "g_dgettext")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "domain")
    '("const-gchar*" "msgid")
  )
)

(define-function g_dcgettext
  (c-name "g_dcgettext")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "domain")
    '("const-gchar*" "msgid")
    '("gint" "category")
  )
)

(define-function g_dngettext
  (c-name "g_dngettext")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "domain")
    '("const-gchar*" "msgid")
    '("const-gchar*" "msgid_plural")
    '("gulong" "n")
  )
)

(define-function g_dpgettext
  (c-name "g_dpgettext")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "domain")
    '("const-gchar*" "msgctxtid")
    '("gsize" "msgidoffset")
  )
)

(define-function g_dpgettext2
  (c-name "g_dpgettext2")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "domain")
    '("const-gchar*" "context")
    '("const-gchar*" "msgid")
  )
)



;; From ghash.h

(define-function g_hash_table_new
  (c-name "g_hash_table_new")
  (is-constructor-of "GHashTable")
  (return-type "GHashTable*")
  (parameters
    '("GHashFunc" "hash_func")
    '("GEqualFunc" "key_equal_func")
  )
)

(define-function g_hash_table_new_full
  (c-name "g_hash_table_new_full")
  (return-type "GHashTable*")
  (parameters
    '("GHashFunc" "hash_func")
    '("GEqualFunc" "key_equal_func")
    '("GDestroyNotify" "key_destroy_func")
    '("GDestroyNotify" "value_destroy_func")
  )
)

(define-method destroy
  (of-object "GHashTable")
  (c-name "g_hash_table_destroy")
  (return-type "none")
)

(define-method insert
  (of-object "GHashTable")
  (c-name "g_hash_table_insert")
  (return-type "gboolean")
  (parameters
    '("gpointer" "key")
    '("gpointer" "value")
  )
)

(define-method replace
  (of-object "GHashTable")
  (c-name "g_hash_table_replace")
  (return-type "gboolean")
  (parameters
    '("gpointer" "key")
    '("gpointer" "value")
  )
)

(define-method add
  (of-object "GHashTable")
  (c-name "g_hash_table_add")
  (return-type "gboolean")
  (parameters
    '("gpointer" "key")
  )
)

(define-method remove
  (of-object "GHashTable")
  (c-name "g_hash_table_remove")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "key")
  )
)

(define-method remove_all
  (of-object "GHashTable")
  (c-name "g_hash_table_remove_all")
  (return-type "none")
)

(define-method steal
  (of-object "GHashTable")
  (c-name "g_hash_table_steal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "key")
  )
)

(define-method steal_extended
  (of-object "GHashTable")
  (c-name "g_hash_table_steal_extended")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "lookup_key")
    '("gpointer*" "stolen_key")
    '("gpointer*" "stolen_value")
  )
)

(define-method steal_all
  (of-object "GHashTable")
  (c-name "g_hash_table_steal_all")
  (return-type "none")
)

(define-method lookup
  (of-object "GHashTable")
  (c-name "g_hash_table_lookup")
  (return-type "gpointer")
  (parameters
    '("gconstpointer" "key")
  )
)

(define-method contains
  (of-object "GHashTable")
  (c-name "g_hash_table_contains")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "key")
  )
)

(define-method lookup_extended
  (of-object "GHashTable")
  (c-name "g_hash_table_lookup_extended")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "lookup_key")
    '("gpointer*" "orig_key")
    '("gpointer*" "value")
  )
)

(define-method foreach
  (of-object "GHashTable")
  (c-name "g_hash_table_foreach")
  (return-type "none")
  (parameters
    '("GHFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method find
  (of-object "GHashTable")
  (c-name "g_hash_table_find")
  (return-type "gpointer")
  (parameters
    '("GHRFunc" "predicate")
    '("gpointer" "user_data")
  )
)

(define-method foreach_remove
  (of-object "GHashTable")
  (c-name "g_hash_table_foreach_remove")
  (return-type "guint")
  (parameters
    '("GHRFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method foreach_steal
  (of-object "GHashTable")
  (c-name "g_hash_table_foreach_steal")
  (return-type "guint")
  (parameters
    '("GHRFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method size
  (of-object "GHashTable")
  (c-name "g_hash_table_size")
  (return-type "guint")
)

(define-method get_keys
  (of-object "GHashTable")
  (c-name "g_hash_table_get_keys")
  (return-type "GList*")
)

(define-method get_values
  (of-object "GHashTable")
  (c-name "g_hash_table_get_values")
  (return-type "GList*")
)

(define-method get_keys_as_array
  (of-object "GHashTable")
  (c-name "g_hash_table_get_keys_as_array")
  (return-type "gpointer*")
  (parameters
    '("guint*" "length")
  )
)

(define-method init
  (of-object "GHashTableIter")
  (c-name "g_hash_table_iter_init")
  (return-type "none")
  (parameters
    '("GHashTable*" "hash_table")
  )
)

(define-method next
  (of-object "GHashTableIter")
  (c-name "g_hash_table_iter_next")
  (return-type "gboolean")
  (parameters
    '("gpointer*" "key")
    '("gpointer*" "value")
  )
)

(define-method get_hash_table
  (of-object "GHashTableIter")
  (c-name "g_hash_table_iter_get_hash_table")
  (return-type "GHashTable*")
)

(define-method remove
  (of-object "GHashTableIter")
  (c-name "g_hash_table_iter_remove")
  (return-type "none")
)

(define-method replace
  (of-object "GHashTableIter")
  (c-name "g_hash_table_iter_replace")
  (return-type "none")
  (parameters
    '("gpointer" "value")
  )
)

(define-method steal
  (of-object "GHashTableIter")
  (c-name "g_hash_table_iter_steal")
  (return-type "none")
)

(define-method ref
  (of-object "GHashTable")
  (c-name "g_hash_table_ref")
  (return-type "GHashTable*")
)

(define-method unref
  (of-object "GHashTable")
  (c-name "g_hash_table_unref")
  (return-type "none")
)

(define-function g_str_equal
  (c-name "g_str_equal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "v1")
    '("gconstpointer" "v2")
  )
)

(define-function g_str_hash
  (c-name "g_str_hash")
  (return-type "guint")
  (parameters
    '("gconstpointer" "v")
  )
)

(define-function g_int_equal
  (c-name "g_int_equal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "v1")
    '("gconstpointer" "v2")
  )
)

(define-function g_int_hash
  (c-name "g_int_hash")
  (return-type "guint")
  (parameters
    '("gconstpointer" "v")
  )
)

(define-function g_int64_equal
  (c-name "g_int64_equal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "v1")
    '("gconstpointer" "v2")
  )
)

(define-function g_int64_hash
  (c-name "g_int64_hash")
  (return-type "guint")
  (parameters
    '("gconstpointer" "v")
  )
)

(define-function g_double_equal
  (c-name "g_double_equal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "v1")
    '("gconstpointer" "v2")
  )
)

(define-function g_double_hash
  (c-name "g_double_hash")
  (return-type "guint")
  (parameters
    '("gconstpointer" "v")
  )
)

(define-function g_direct_hash
  (c-name "g_direct_hash")
  (return-type "guint")
  (parameters
    '("gconstpointer" "v")
  )
)

(define-function g_direct_equal
  (c-name "g_direct_equal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "v1")
    '("gconstpointer" "v2")
  )
)



;; From ghmac.h

(define-function g_hmac_new
  (c-name "g_hmac_new")
  (is-constructor-of "GHmac")
  (return-type "GHmac*")
  (parameters
    '("GChecksumType" "digest_type")
    '("const-guchar*" "key")
    '("gsize" "key_len")
  )
)

(define-method copy
  (of-object "GHmac")
  (c-name "g_hmac_copy")
  (return-type "GHmac*")
)

(define-method ref
  (of-object "GHmac")
  (c-name "g_hmac_ref")
  (return-type "GHmac*")
)

(define-method unref
  (of-object "GHmac")
  (c-name "g_hmac_unref")
  (return-type "none")
)

(define-method update
  (of-object "GHmac")
  (c-name "g_hmac_update")
  (return-type "none")
  (parameters
    '("const-guchar*" "data")
    '("gssize" "length")
  )
)

(define-method get_string
  (of-object "GHmac")
  (c-name "g_hmac_get_string")
  (return-type "const-gchar*")
)

(define-method get_digest
  (of-object "GHmac")
  (c-name "g_hmac_get_digest")
  (return-type "none")
  (parameters
    '("guint8*" "buffer")
    '("gsize*" "digest_len")
  )
)

(define-function g_compute_hmac_for_data
  (c-name "g_compute_hmac_for_data")
  (return-type "gchar*")
  (parameters
    '("GChecksumType" "digest_type")
    '("const-guchar*" "key")
    '("gsize" "key_len")
    '("const-guchar*" "data")
    '("gsize" "length")
  )
)

(define-function g_compute_hmac_for_string
  (c-name "g_compute_hmac_for_string")
  (return-type "gchar*")
  (parameters
    '("GChecksumType" "digest_type")
    '("const-guchar*" "key")
    '("gsize" "key_len")
    '("const-gchar*" "str")
    '("gssize" "length")
  )
)

(define-function g_compute_hmac_for_bytes
  (c-name "g_compute_hmac_for_bytes")
  (return-type "gchar*")
  (parameters
    '("GChecksumType" "digest_type")
    '("GBytes*" "key")
    '("GBytes*" "data")
  )
)



;; From ghook.h

(define-method init
  (of-object "GHookList")
  (c-name "g_hook_list_init")
  (return-type "none")
  (parameters
    '("guint" "hook_size")
  )
)

(define-method clear
  (of-object "GHookList")
  (c-name "g_hook_list_clear")
  (return-type "none")
)

(define-function g_hook_alloc
  (c-name "g_hook_alloc")
  (return-type "GHook*")
  (parameters
    '("GHookList*" "hook_list")
  )
)

(define-function g_hook_free
  (c-name "g_hook_free")
  (return-type "none")
  (parameters
    '("GHookList*" "hook_list")
    '("GHook*" "hook")
  )
)

(define-function g_hook_ref
  (c-name "g_hook_ref")
  (return-type "GHook*")
  (parameters
    '("GHookList*" "hook_list")
    '("GHook*" "hook")
  )
)

(define-function g_hook_unref
  (c-name "g_hook_unref")
  (return-type "none")
  (parameters
    '("GHookList*" "hook_list")
    '("GHook*" "hook")
  )
)

(define-function g_hook_destroy
  (c-name "g_hook_destroy")
  (return-type "gboolean")
  (parameters
    '("GHookList*" "hook_list")
    '("gulong" "hook_id")
  )
)

(define-function g_hook_destroy_link
  (c-name "g_hook_destroy_link")
  (return-type "none")
  (parameters
    '("GHookList*" "hook_list")
    '("GHook*" "hook")
  )
)

(define-function g_hook_prepend
  (c-name "g_hook_prepend")
  (return-type "none")
  (parameters
    '("GHookList*" "hook_list")
    '("GHook*" "hook")
  )
)

(define-function g_hook_insert_before
  (c-name "g_hook_insert_before")
  (return-type "none")
  (parameters
    '("GHookList*" "hook_list")
    '("GHook*" "sibling")
    '("GHook*" "hook")
  )
)

(define-function g_hook_insert_sorted
  (c-name "g_hook_insert_sorted")
  (return-type "none")
  (parameters
    '("GHookList*" "hook_list")
    '("GHook*" "hook")
    '("GHookCompareFunc" "func")
  )
)

(define-function g_hook_get
  (c-name "g_hook_get")
  (return-type "GHook*")
  (parameters
    '("GHookList*" "hook_list")
    '("gulong" "hook_id")
  )
)

(define-function g_hook_find
  (c-name "g_hook_find")
  (return-type "GHook*")
  (parameters
    '("GHookList*" "hook_list")
    '("gboolean" "need_valids")
    '("GHookFindFunc" "func")
    '("gpointer" "data")
  )
)

(define-function g_hook_find_data
  (c-name "g_hook_find_data")
  (return-type "GHook*")
  (parameters
    '("GHookList*" "hook_list")
    '("gboolean" "need_valids")
    '("gpointer" "data")
  )
)

(define-function g_hook_find_func
  (c-name "g_hook_find_func")
  (return-type "GHook*")
  (parameters
    '("GHookList*" "hook_list")
    '("gboolean" "need_valids")
    '("gpointer" "func")
  )
)

(define-function g_hook_find_func_data
  (c-name "g_hook_find_func_data")
  (return-type "GHook*")
  (parameters
    '("GHookList*" "hook_list")
    '("gboolean" "need_valids")
    '("gpointer" "func")
    '("gpointer" "data")
  )
)

(define-function g_hook_first_valid
  (c-name "g_hook_first_valid")
  (return-type "GHook*")
  (parameters
    '("GHookList*" "hook_list")
    '("gboolean" "may_be_in_call")
  )
)

(define-function g_hook_next_valid
  (c-name "g_hook_next_valid")
  (return-type "GHook*")
  (parameters
    '("GHookList*" "hook_list")
    '("GHook*" "hook")
    '("gboolean" "may_be_in_call")
  )
)

(define-method compare_ids
  (of-object "GHook")
  (c-name "g_hook_compare_ids")
  (return-type "gint")
  (parameters
    '("GHook*" "sibling")
  )
)

(define-method invoke
  (of-object "GHookList")
  (c-name "g_hook_list_invoke")
  (return-type "none")
  (parameters
    '("gboolean" "may_recurse")
  )
)

(define-method invoke_check
  (of-object "GHookList")
  (c-name "g_hook_list_invoke_check")
  (return-type "none")
  (parameters
    '("gboolean" "may_recurse")
  )
)

(define-method marshal
  (of-object "GHookList")
  (c-name "g_hook_list_marshal")
  (return-type "none")
  (parameters
    '("gboolean" "may_recurse")
    '("GHookMarshaller" "marshaller")
    '("gpointer" "marshal_data")
  )
)

(define-method marshal_check
  (of-object "GHookList")
  (c-name "g_hook_list_marshal_check")
  (return-type "none")
  (parameters
    '("gboolean" "may_recurse")
    '("GHookCheckMarshaller" "marshaller")
    '("gpointer" "marshal_data")
  )
)



;; From ghostutils.h

(define-function g_hostname_is_non_ascii
  (c-name "g_hostname_is_non_ascii")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "hostname")
  )
)

(define-function g_hostname_is_ascii_encoded
  (c-name "g_hostname_is_ascii_encoded")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "hostname")
  )
)

(define-function g_hostname_is_ip_address
  (c-name "g_hostname_is_ip_address")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "hostname")
  )
)

(define-function g_hostname_to_ascii
  (c-name "g_hostname_to_ascii")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "hostname")
  )
)

(define-function g_hostname_to_unicode
  (c-name "g_hostname_to_unicode")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "hostname")
  )
)



;; From gi18n.h



;; From gi18n-lib.h



;; From giochannel.h

(define-method init
  (of-object "GIOChannel")
  (c-name "g_io_channel_init")
  (return-type "none")
)

(define-method ref
  (of-object "GIOChannel")
  (c-name "g_io_channel_ref")
  (return-type "GIOChannel*")
)

(define-method unref
  (of-object "GIOChannel")
  (c-name "g_io_channel_unref")
  (return-type "none")
)

(define-method read
  (of-object "GIOChannel")
  (c-name "g_io_channel_read")
  (return-type "GIOError")
  (parameters
    '("gchar*" "buf")
    '("gsize" "count")
    '("gsize*" "bytes_read")
  )
)

(define-method write
  (of-object "GIOChannel")
  (c-name "g_io_channel_write")
  (return-type "GIOError")
  (parameters
    '("const-gchar*" "buf")
    '("gsize" "count")
    '("gsize*" "bytes_written")
  )
)

(define-method seek
  (of-object "GIOChannel")
  (c-name "g_io_channel_seek")
  (return-type "GIOError")
  (parameters
    '("gint64" "offset")
    '("GSeekType" "type")
  )
)

(define-method close
  (of-object "GIOChannel")
  (c-name "g_io_channel_close")
  (return-type "none")
)

(define-method shutdown
  (of-object "GIOChannel")
  (c-name "g_io_channel_shutdown")
  (return-type "GIOStatus")
  (parameters
    '("gboolean" "flush")
    '("GError**" "err")
  )
)

(define-function g_io_add_watch_full
  (c-name "g_io_add_watch_full")
  (return-type "guint")
  (parameters
    '("GIOChannel*" "channel")
    '("gint" "priority")
    '("GIOCondition" "condition")
    '("GIOFunc" "func")
    '("gpointer" "user_data")
    '("GDestroyNotify" "notify")
  )
)

(define-function g_io_create_watch
  (c-name "g_io_create_watch")
  (return-type "GSource*")
  (parameters
    '("GIOChannel*" "channel")
    '("GIOCondition" "condition")
  )
)

(define-function g_io_add_watch
  (c-name "g_io_add_watch")
  (return-type "guint")
  (parameters
    '("GIOChannel*" "channel")
    '("GIOCondition" "condition")
    '("GIOFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method set_buffer_size
  (of-object "GIOChannel")
  (c-name "g_io_channel_set_buffer_size")
  (return-type "none")
  (parameters
    '("gsize" "size")
  )
)

(define-method get_buffer_size
  (of-object "GIOChannel")
  (c-name "g_io_channel_get_buffer_size")
  (return-type "gsize")
)

(define-method get_buffer_condition
  (of-object "GIOChannel")
  (c-name "g_io_channel_get_buffer_condition")
  (return-type "GIOCondition")
)

(define-method set_flags
  (of-object "GIOChannel")
  (c-name "g_io_channel_set_flags")
  (return-type "GIOStatus")
  (parameters
    '("GIOFlags" "flags")
    '("GError**" "error")
  )
)

(define-method get_flags
  (of-object "GIOChannel")
  (c-name "g_io_channel_get_flags")
  (return-type "GIOFlags")
)

(define-method set_line_term
  (of-object "GIOChannel")
  (c-name "g_io_channel_set_line_term")
  (return-type "none")
  (parameters
    '("const-gchar*" "line_term")
    '("gint" "length")
  )
)

(define-method get_line_term
  (of-object "GIOChannel")
  (c-name "g_io_channel_get_line_term")
  (return-type "const-gchar*")
  (parameters
    '("gint*" "length")
  )
)

(define-method set_buffered
  (of-object "GIOChannel")
  (c-name "g_io_channel_set_buffered")
  (return-type "none")
  (parameters
    '("gboolean" "buffered")
  )
)

(define-method get_buffered
  (of-object "GIOChannel")
  (c-name "g_io_channel_get_buffered")
  (return-type "gboolean")
)

(define-method set_encoding
  (of-object "GIOChannel")
  (c-name "g_io_channel_set_encoding")
  (return-type "GIOStatus")
  (parameters
    '("const-gchar*" "encoding")
    '("GError**" "error")
  )
)

(define-method get_encoding
  (of-object "GIOChannel")
  (c-name "g_io_channel_get_encoding")
  (return-type "const-gchar*")
)

(define-method set_close_on_unref
  (of-object "GIOChannel")
  (c-name "g_io_channel_set_close_on_unref")
  (return-type "none")
  (parameters
    '("gboolean" "do_close")
  )
)

(define-method get_close_on_unref
  (of-object "GIOChannel")
  (c-name "g_io_channel_get_close_on_unref")
  (return-type "gboolean")
)

(define-method flush
  (of-object "GIOChannel")
  (c-name "g_io_channel_flush")
  (return-type "GIOStatus")
  (parameters
    '("GError**" "error")
  )
)

(define-method read_line
  (of-object "GIOChannel")
  (c-name "g_io_channel_read_line")
  (return-type "GIOStatus")
  (parameters
    '("gchar**" "str_return")
    '("gsize*" "length")
    '("gsize*" "terminator_pos")
    '("GError**" "error")
  )
)

(define-method read_line_string
  (of-object "GIOChannel")
  (c-name "g_io_channel_read_line_string")
  (return-type "GIOStatus")
  (parameters
    '("GString*" "buffer")
    '("gsize*" "terminator_pos")
    '("GError**" "error")
  )
)

(define-method read_to_end
  (of-object "GIOChannel")
  (c-name "g_io_channel_read_to_end")
  (return-type "GIOStatus")
  (parameters
    '("gchar**" "str_return")
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method read_chars
  (of-object "GIOChannel")
  (c-name "g_io_channel_read_chars")
  (return-type "GIOStatus")
  (parameters
    '("gchar*" "buf")
    '("gsize" "count")
    '("gsize*" "bytes_read")
    '("GError**" "error")
  )
)

(define-method read_unichar
  (of-object "GIOChannel")
  (c-name "g_io_channel_read_unichar")
  (return-type "GIOStatus")
  (parameters
    '("gunichar*" "thechar")
    '("GError**" "error")
  )
)

(define-method write_chars
  (of-object "GIOChannel")
  (c-name "g_io_channel_write_chars")
  (return-type "GIOStatus")
  (parameters
    '("const-gchar*" "buf")
    '("gssize" "count")
    '("gsize*" "bytes_written")
    '("GError**" "error")
  )
)

(define-method write_unichar
  (of-object "GIOChannel")
  (c-name "g_io_channel_write_unichar")
  (return-type "GIOStatus")
  (parameters
    '("gunichar" "thechar")
    '("GError**" "error")
  )
)

(define-method seek_position
  (of-object "GIOChannel")
  (c-name "g_io_channel_seek_position")
  (return-type "GIOStatus")
  (parameters
    '("gint64" "offset")
    '("GSeekType" "type")
    '("GError**" "error")
  )
)

(define-function g_io_channel_new_file
  (c-name "g_io_channel_new_file")
  (return-type "GIOChannel*")
  (parameters
    '("const-gchar*" "filename")
    '("const-gchar*" "mode")
    '("GError**" "error")
  )
)

(define-function g_io_channel_error_quark
  (c-name "g_io_channel_error_quark")
  (return-type "GQuark")
)

(define-function g_io_channel_error_from_errno
  (c-name "g_io_channel_error_from_errno")
  (return-type "GIOChannelError")
  (parameters
    '("gint" "en")
  )
)

(define-function g_io_channel_unix_new
  (c-name "g_io_channel_unix_new")
  (is-constructor-of "GIoChannelUnix")
  (return-type "GIOChannel*")
  (parameters
    '("int" "fd")
  )
)

(define-method unix_get_fd
  (of-object "GIOChannel")
  (c-name "g_io_channel_unix_get_fd")
  (return-type "gint")
)

(define-method win32_make_pollfd
  (of-object "GIOChannel")
  (c-name "g_io_channel_win32_make_pollfd")
  (return-type "none")
  (parameters
    '("GIOCondition" "condition")
    '("GPollFD*" "fd")
  )
)

(define-function g_io_channel_win32_poll
  (c-name "g_io_channel_win32_poll")
  (return-type "gint")
  (parameters
    '("GPollFD*" "fds")
    '("gint" "n_fds")
    '("gint" "timeout_")
  )
)

(define-function g_io_channel_win32_new_messages
  (c-name "g_io_channel_win32_new_messages")
  (return-type "GIOChannel*")
  (parameters
    '("gsize" "hwnd")
  )
)

(define-function g_io_channel_win32_new_fd
  (c-name "g_io_channel_win32_new_fd")
  (return-type "GIOChannel*")
  (parameters
    '("gint" "fd")
  )
)

(define-method win32_get_fd
  (of-object "GIOChannel")
  (c-name "g_io_channel_win32_get_fd")
  (return-type "gint")
)

(define-function g_io_channel_win32_new_socket
  (c-name "g_io_channel_win32_new_socket")
  (return-type "GIOChannel*")
  (parameters
    '("gint" "socket")
  )
)

(define-function g_io_channel_win32_new_stream_socket
  (c-name "g_io_channel_win32_new_stream_socket")
  (return-type "GIOChannel*")
  (parameters
    '("gint" "socket")
  )
)

(define-method win32_set_debug
  (of-object "GIOChannel")
  (c-name "g_io_channel_win32_set_debug")
  (return-type "none")
  (parameters
    '("gboolean" "flag")
  )
)



;; From gkeyfile.h

(define-function g_key_file_error_quark
  (c-name "g_key_file_error_quark")
  (return-type "GQuark")
)

(define-function g_key_file_new
  (c-name "g_key_file_new")
  (is-constructor-of "GKeyFile")
  (return-type "GKeyFile*")
)

(define-method ref
  (of-object "GKeyFile")
  (c-name "g_key_file_ref")
  (return-type "GKeyFile*")
)

(define-method unref
  (of-object "GKeyFile")
  (c-name "g_key_file_unref")
  (return-type "none")
)

(define-method free
  (of-object "GKeyFile")
  (c-name "g_key_file_free")
  (return-type "none")
)

(define-method set_list_separator
  (of-object "GKeyFile")
  (c-name "g_key_file_set_list_separator")
  (return-type "none")
  (parameters
    '("gchar" "separator")
  )
)

(define-method load_from_file
  (of-object "GKeyFile")
  (c-name "g_key_file_load_from_file")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "file")
    '("GKeyFileFlags" "flags")
    '("GError**" "error")
  )
)

(define-method load_from_data
  (of-object "GKeyFile")
  (c-name "g_key_file_load_from_data")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "data")
    '("gsize" "length")
    '("GKeyFileFlags" "flags")
    '("GError**" "error")
  )
)

(define-method load_from_bytes
  (of-object "GKeyFile")
  (c-name "g_key_file_load_from_bytes")
  (return-type "gboolean")
  (parameters
    '("GBytes*" "bytes")
    '("GKeyFileFlags" "flags")
    '("GError**" "error")
  )
)

(define-method load_from_dirs
  (of-object "GKeyFile")
  (c-name "g_key_file_load_from_dirs")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "file")
    '("const-gchar**" "search_dirs")
    '("gchar**" "full_path")
    '("GKeyFileFlags" "flags")
    '("GError**" "error")
  )
)

(define-method load_from_data_dirs
  (of-object "GKeyFile")
  (c-name "g_key_file_load_from_data_dirs")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "file")
    '("gchar**" "full_path")
    '("GKeyFileFlags" "flags")
    '("GError**" "error")
  )
)

(define-method to_data
  (of-object "GKeyFile")
  (c-name "g_key_file_to_data")
  (return-type "gchar*")
  (parameters
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method save_to_file
  (of-object "GKeyFile")
  (c-name "g_key_file_save_to_file")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "filename")
    '("GError**" "error")
  )
)

(define-method get_start_group
  (of-object "GKeyFile")
  (c-name "g_key_file_get_start_group")
  (return-type "gchar*")
)

(define-method get_groups
  (of-object "GKeyFile")
  (c-name "g_key_file_get_groups")
  (return-type "gchar**")
  (parameters
    '("gsize*" "length")
  )
)

(define-method get_keys
  (of-object "GKeyFile")
  (c-name "g_key_file_get_keys")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "group_name")
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method has_group
  (of-object "GKeyFile")
  (c-name "g_key_file_has_group")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "group_name")
  )
)

(define-method has_key
  (of-object "GKeyFile")
  (c-name "g_key_file_has_key")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method get_value
  (of-object "GKeyFile")
  (c-name "g_key_file_get_value")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method set_value
  (of-object "GKeyFile")
  (c-name "g_key_file_set_value")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("const-gchar*" "value")
  )
)

(define-method get_string
  (of-object "GKeyFile")
  (c-name "g_key_file_get_string")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method set_string
  (of-object "GKeyFile")
  (c-name "g_key_file_set_string")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("const-gchar*" "string")
  )
)

(define-method get_locale_string
  (of-object "GKeyFile")
  (c-name "g_key_file_get_locale_string")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("const-gchar*" "locale")
    '("GError**" "error")
  )
)

(define-method get_locale_for_key
  (of-object "GKeyFile")
  (c-name "g_key_file_get_locale_for_key")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("const-gchar*" "locale")
  )
)

(define-method set_locale_string
  (of-object "GKeyFile")
  (c-name "g_key_file_set_locale_string")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("const-gchar*" "locale")
    '("const-gchar*" "string")
  )
)

(define-method get_boolean
  (of-object "GKeyFile")
  (c-name "g_key_file_get_boolean")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method set_boolean
  (of-object "GKeyFile")
  (c-name "g_key_file_set_boolean")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gboolean" "value")
  )
)

(define-method get_integer
  (of-object "GKeyFile")
  (c-name "g_key_file_get_integer")
  (return-type "gint")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method set_integer
  (of-object "GKeyFile")
  (c-name "g_key_file_set_integer")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gint" "value")
  )
)

(define-method get_int64
  (of-object "GKeyFile")
  (c-name "g_key_file_get_int64")
  (return-type "gint64")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method set_int64
  (of-object "GKeyFile")
  (c-name "g_key_file_set_int64")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gint64" "value")
  )
)

(define-method get_uint64
  (of-object "GKeyFile")
  (c-name "g_key_file_get_uint64")
  (return-type "guint64")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method set_uint64
  (of-object "GKeyFile")
  (c-name "g_key_file_set_uint64")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("guint64" "value")
  )
)

(define-method get_double
  (of-object "GKeyFile")
  (c-name "g_key_file_get_double")
  (return-type "gdouble")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method set_double
  (of-object "GKeyFile")
  (c-name "g_key_file_set_double")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gdouble" "value")
  )
)

(define-method get_string_list
  (of-object "GKeyFile")
  (c-name "g_key_file_get_string_list")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method set_string_list
  (of-object "GKeyFile")
  (c-name "g_key_file_set_string_list")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("const-gchar*-const[]" "list")
    '("gsize" "length")
  )
)

(define-method get_locale_string_list
  (of-object "GKeyFile")
  (c-name "g_key_file_get_locale_string_list")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("const-gchar*" "locale")
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method set_locale_string_list
  (of-object "GKeyFile")
  (c-name "g_key_file_set_locale_string_list")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("const-gchar*" "locale")
    '("const-gchar*-const[]" "list")
    '("gsize" "length")
  )
)

(define-method get_boolean_list
  (of-object "GKeyFile")
  (c-name "g_key_file_get_boolean_list")
  (return-type "gboolean*")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method set_boolean_list
  (of-object "GKeyFile")
  (c-name "g_key_file_set_boolean_list")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gboolean[]" "list")
    '("gsize" "length")
  )
)

(define-method get_integer_list
  (of-object "GKeyFile")
  (c-name "g_key_file_get_integer_list")
  (return-type "gint*")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method set_double_list
  (of-object "GKeyFile")
  (c-name "g_key_file_set_double_list")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gdouble[]" "list")
    '("gsize" "length")
  )
)

(define-method get_double_list
  (of-object "GKeyFile")
  (c-name "g_key_file_get_double_list")
  (return-type "gdouble*")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gsize*" "length")
    '("GError**" "error")
  )
)

(define-method set_integer_list
  (of-object "GKeyFile")
  (c-name "g_key_file_set_integer_list")
  (return-type "none")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("gint[]" "list")
    '("gsize" "length")
  )
)

(define-method set_comment
  (of-object "GKeyFile")
  (c-name "g_key_file_set_comment")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("const-gchar*" "comment")
    '("GError**" "error")
  )
)

(define-method get_comment
  (of-object "GKeyFile")
  (c-name "g_key_file_get_comment")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method remove_comment
  (of-object "GKeyFile")
  (c-name "g_key_file_remove_comment")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method remove_key
  (of-object "GKeyFile")
  (c-name "g_key_file_remove_key")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "group_name")
    '("const-gchar*" "key")
    '("GError**" "error")
  )
)

(define-method remove_group
  (of-object "GKeyFile")
  (c-name "g_key_file_remove_group")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "group_name")
    '("GError**" "error")
  )
)



;; From glib-autocleanups.h

(define-function g_autoptr_cleanup_generic_gfree
  (c-name "g_autoptr_cleanup_generic_gfree")
  (return-type "none")
  (parameters
    '("void*" "p")
  )
)

(define-function g_autoptr_cleanup_gstring_free
  (c-name "g_autoptr_cleanup_gstring_free")
  (return-type "none")
  (parameters
    '("GString*" "string")
  )
)



;; From glib.h



;; From glib-init.h

(define-function glib_init
  (c-name "glib_init")
  (return-type "none")
)

(define-function g_quark_init
  (c-name "g_quark_init")
  (return-type "none")
)

(define-function g_thread_win32_process_detach
  (c-name "g_thread_win32_process_detach")
  (return-type "none")
)

(define-function g_thread_win32_thread_detach
  (c-name "g_thread_win32_thread_detach")
  (return-type "none")
)

(define-function g_thread_win32_init
  (c-name "g_thread_win32_init")
  (return-type "none")
)

(define-function g_console_win32_init
  (c-name "g_console_win32_init")
  (return-type "none")
)

(define-function g_clock_win32_init
  (c-name "g_clock_win32_init")
  (return-type "none")
)

(define-function g_crash_handler_win32_init
  (c-name "g_crash_handler_win32_init")
  (return-type "none")
)

(define-function g_crash_handler_win32_deinit
  (c-name "g_crash_handler_win32_deinit")
  (return-type "none")
)



;; From glibintl.h

(define-function glib_gettext
  (c-name "glib_gettext")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "str")
  )
)

(define-function glib_pgettext
  (c-name "glib_pgettext")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "msgctxtid")
    '("gsize" "msgidoffset")
  )
)



;; From glib-object.h



;; From glib_trace.h



;; From glib-unix.h

(define-function g_unix_error_quark
  (c-name "g_unix_error_quark")
  (return-type "GQuark")
)

(define-function g_unix_open_pipe
  (c-name "g_unix_open_pipe")
  (return-type "gboolean")
  (parameters
    '("gint*" "fds")
    '("gint" "flags")
    '("GError**" "error")
  )
)

(define-function g_unix_set_fd_nonblocking
  (c-name "g_unix_set_fd_nonblocking")
  (return-type "gboolean")
  (parameters
    '("gint" "fd")
    '("gboolean" "nonblock")
    '("GError**" "error")
  )
)

(define-function g_unix_signal_source_new
  (c-name "g_unix_signal_source_new")
  (is-constructor-of "GUnixSignalSource")
  (return-type "GSource*")
  (parameters
    '("gint" "signum")
  )
)

(define-function g_unix_signal_add_full
  (c-name "g_unix_signal_add_full")
  (return-type "guint")
  (parameters
    '("gint" "priority")
    '("gint" "signum")
    '("GSourceFunc" "handler")
    '("gpointer" "user_data")
    '("GDestroyNotify" "notify")
  )
)

(define-function g_unix_signal_add
  (c-name "g_unix_signal_add")
  (return-type "guint")
  (parameters
    '("gint" "signum")
    '("GSourceFunc" "handler")
    '("gpointer" "user_data")
  )
)

(define-function g_unix_fd_source_new
  (c-name "g_unix_fd_source_new")
  (is-constructor-of "GUnixFdSource")
  (return-type "GSource*")
  (parameters
    '("gint" "fd")
    '("GIOCondition" "condition")
  )
)

(define-function g_unix_fd_add_full
  (c-name "g_unix_fd_add_full")
  (return-type "guint")
  (parameters
    '("gint" "priority")
    '("gint" "fd")
    '("GIOCondition" "condition")
    '("GUnixFDSourceFunc" "function")
    '("gpointer" "user_data")
    '("GDestroyNotify" "notify")
  )
)

(define-function g_unix_fd_add
  (c-name "g_unix_fd_add")
  (return-type "guint")
  (parameters
    '("gint" "fd")
    '("GIOCondition" "condition")
    '("GUnixFDSourceFunc" "function")
    '("gpointer" "user_data")
  )
)



;; From glist.h

(define-function g_list_alloc
  (c-name "g_list_alloc")
  (return-type "GList*")
)

(define-method free
  (of-object "GList")
  (c-name "g_list_free")
  (return-type "none")
)

(define-method free_1
  (of-object "GList")
  (c-name "g_list_free_1")
  (return-type "none")
)

(define-method free_full
  (of-object "GList")
  (c-name "g_list_free_full")
  (return-type "none")
  (parameters
    '("GDestroyNotify" "free_func")
  )
)

(define-method append
  (of-object "GList")
  (c-name "g_list_append")
  (return-type "GList*")
  (parameters
    '("gpointer" "data")
  )
)

(define-method prepend
  (of-object "GList")
  (c-name "g_list_prepend")
  (return-type "GList*")
  (parameters
    '("gpointer" "data")
  )
)

(define-method insert
  (of-object "GList")
  (c-name "g_list_insert")
  (return-type "GList*")
  (parameters
    '("gpointer" "data")
    '("gint" "position")
  )
)

(define-method insert_sorted
  (of-object "GList")
  (c-name "g_list_insert_sorted")
  (return-type "GList*")
  (parameters
    '("gpointer" "data")
    '("GCompareFunc" "func")
  )
)

(define-method insert_sorted_with_data
  (of-object "GList")
  (c-name "g_list_insert_sorted_with_data")
  (return-type "GList*")
  (parameters
    '("gpointer" "data")
    '("GCompareDataFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method insert_before
  (of-object "GList")
  (c-name "g_list_insert_before")
  (return-type "GList*")
  (parameters
    '("GList*" "sibling")
    '("gpointer" "data")
  )
)

(define-method insert_before_link
  (of-object "GList")
  (c-name "g_list_insert_before_link")
  (return-type "GList*")
  (parameters
    '("GList*" "sibling")
    '("GList*" "link_")
  )
)

(define-method concat
  (of-object "GList")
  (c-name "g_list_concat")
  (return-type "GList*")
  (parameters
    '("GList*" "list2")
  )
)

(define-method remove
  (of-object "GList")
  (c-name "g_list_remove")
  (return-type "GList*")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method remove_all
  (of-object "GList")
  (c-name "g_list_remove_all")
  (return-type "GList*")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method remove_link
  (of-object "GList")
  (c-name "g_list_remove_link")
  (return-type "GList*")
  (parameters
    '("GList*" "llink")
  )
)

(define-method delete_link
  (of-object "GList")
  (c-name "g_list_delete_link")
  (return-type "GList*")
  (parameters
    '("GList*" "link_")
  )
)

(define-method reverse
  (of-object "GList")
  (c-name "g_list_reverse")
  (return-type "GList*")
)

(define-method copy
  (of-object "GList")
  (c-name "g_list_copy")
  (return-type "GList*")
)

(define-method copy_deep
  (of-object "GList")
  (c-name "g_list_copy_deep")
  (return-type "GList*")
  (parameters
    '("GCopyFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method nth
  (of-object "GList")
  (c-name "g_list_nth")
  (return-type "GList*")
  (parameters
    '("guint" "n")
  )
)

(define-method nth_prev
  (of-object "GList")
  (c-name "g_list_nth_prev")
  (return-type "GList*")
  (parameters
    '("guint" "n")
  )
)

(define-method find
  (of-object "GList")
  (c-name "g_list_find")
  (return-type "GList*")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method find_custom
  (of-object "GList")
  (c-name "g_list_find_custom")
  (return-type "GList*")
  (parameters
    '("gconstpointer" "data")
    '("GCompareFunc" "func")
  )
)

(define-method position
  (of-object "GList")
  (c-name "g_list_position")
  (return-type "gint")
  (parameters
    '("GList*" "llink")
  )
)

(define-method index
  (of-object "GList")
  (c-name "g_list_index")
  (return-type "gint")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method last
  (of-object "GList")
  (c-name "g_list_last")
  (return-type "GList*")
)

(define-method first
  (of-object "GList")
  (c-name "g_list_first")
  (return-type "GList*")
)

(define-method length
  (of-object "GList")
  (c-name "g_list_length")
  (return-type "guint")
)

(define-method foreach
  (of-object "GList")
  (c-name "g_list_foreach")
  (return-type "none")
  (parameters
    '("GFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method sort
  (of-object "GList")
  (c-name "g_list_sort")
  (return-type "GList*")
  (parameters
    '("GCompareFunc" "compare_func")
  )
)

(define-method sort_with_data
  (of-object "GList")
  (c-name "g_list_sort_with_data")
  (return-type "GList*")
  (parameters
    '("GCompareDataFunc" "compare_func")
    '("gpointer" "user_data")
  )
)

(define-method nth_data
  (of-object "GList")
  (c-name "g_list_nth_data")
  (return-type "gpointer")
  (parameters
    '("guint" "n")
  )
)

(define-function g_clear_list
  (c-name "g_clear_list")
  (return-type "none")
  (parameters
    '("GList**" "list_ptr")
    '("GDestroyNotify" "destroy")
  )
)



;; From gmacros.h



;; From gmain.h

(define-function g_main_context_new
  (c-name "g_main_context_new")
  (is-constructor-of "GMainContext")
  (return-type "GMainContext*")
)

(define-method ref
  (of-object "GMainContext")
  (c-name "g_main_context_ref")
  (return-type "GMainContext*")
)

(define-method unref
  (of-object "GMainContext")
  (c-name "g_main_context_unref")
  (return-type "none")
)

(define-function g_main_context_default
  (c-name "g_main_context_default")
  (return-type "GMainContext*")
)

(define-method iteration
  (of-object "GMainContext")
  (c-name "g_main_context_iteration")
  (return-type "gboolean")
  (parameters
    '("gboolean" "may_block")
  )
)

(define-method pending
  (of-object "GMainContext")
  (c-name "g_main_context_pending")
  (return-type "gboolean")
)

(define-method find_source_by_id
  (of-object "GMainContext")
  (c-name "g_main_context_find_source_by_id")
  (return-type "GSource*")
  (parameters
    '("guint" "source_id")
  )
)

(define-method find_source_by_user_data
  (of-object "GMainContext")
  (c-name "g_main_context_find_source_by_user_data")
  (return-type "GSource*")
  (parameters
    '("gpointer" "user_data")
  )
)

(define-method find_source_by_funcs_user_data
  (of-object "GMainContext")
  (c-name "g_main_context_find_source_by_funcs_user_data")
  (return-type "GSource*")
  (parameters
    '("GSourceFuncs*" "funcs")
    '("gpointer" "user_data")
  )
)

(define-method wakeup
  (of-object "GMainContext")
  (c-name "g_main_context_wakeup")
  (return-type "none")
)

(define-method acquire
  (of-object "GMainContext")
  (c-name "g_main_context_acquire")
  (return-type "gboolean")
)

(define-method release
  (of-object "GMainContext")
  (c-name "g_main_context_release")
  (return-type "none")
)

(define-method is_owner
  (of-object "GMainContext")
  (c-name "g_main_context_is_owner")
  (return-type "gboolean")
)

(define-method wait
  (of-object "GMainContext")
  (c-name "g_main_context_wait")
  (return-type "gboolean")
  (parameters
    '("GCond*" "cond")
    '("GMutex*" "mutex")
  )
)

(define-method prepare
  (of-object "GMainContext")
  (c-name "g_main_context_prepare")
  (return-type "gboolean")
  (parameters
    '("gint*" "priority")
  )
)

(define-method query
  (of-object "GMainContext")
  (c-name "g_main_context_query")
  (return-type "gint")
  (parameters
    '("gint" "max_priority")
    '("gint*" "timeout_")
    '("GPollFD*" "fds")
    '("gint" "n_fds")
  )
)

(define-method check
  (of-object "GMainContext")
  (c-name "g_main_context_check")
  (return-type "gboolean")
  (parameters
    '("gint" "max_priority")
    '("GPollFD*" "fds")
    '("gint" "n_fds")
  )
)

(define-method dispatch
  (of-object "GMainContext")
  (c-name "g_main_context_dispatch")
  (return-type "none")
)

(define-method set_poll_func
  (of-object "GMainContext")
  (c-name "g_main_context_set_poll_func")
  (return-type "none")
  (parameters
    '("GPollFunc" "func")
  )
)

(define-method get_poll_func
  (of-object "GMainContext")
  (c-name "g_main_context_get_poll_func")
  (return-type "GPollFunc")
)

(define-method add_poll
  (of-object "GMainContext")
  (c-name "g_main_context_add_poll")
  (return-type "none")
  (parameters
    '("GPollFD*" "fd")
    '("gint" "priority")
  )
)

(define-method remove_poll
  (of-object "GMainContext")
  (c-name "g_main_context_remove_poll")
  (return-type "none")
  (parameters
    '("GPollFD*" "fd")
  )
)

(define-function g_main_depth
  (c-name "g_main_depth")
  (return-type "gint")
)

(define-function g_main_current_source
  (c-name "g_main_current_source")
  (return-type "GSource*")
)

(define-method push_thread_default
  (of-object "GMainContext")
  (c-name "g_main_context_push_thread_default")
  (return-type "none")
)

(define-method pop_thread_default
  (of-object "GMainContext")
  (c-name "g_main_context_pop_thread_default")
  (return-type "none")
)

(define-function g_main_context_get_thread_default
  (c-name "g_main_context_get_thread_default")
  (return-type "GMainContext*")
)

(define-function g_main_context_ref_thread_default
  (c-name "g_main_context_ref_thread_default")
  (return-type "GMainContext*")
)

(define-function g_main_loop_new
  (c-name "g_main_loop_new")
  (is-constructor-of "GMainLoop")
  (return-type "GMainLoop*")
  (parameters
    '("GMainContext*" "context")
    '("gboolean" "is_running")
  )
)

(define-method run
  (of-object "GMainLoop")
  (c-name "g_main_loop_run")
  (return-type "none")
)

(define-method quit
  (of-object "GMainLoop")
  (c-name "g_main_loop_quit")
  (return-type "none")
)

(define-method ref
  (of-object "GMainLoop")
  (c-name "g_main_loop_ref")
  (return-type "GMainLoop*")
)

(define-method unref
  (of-object "GMainLoop")
  (c-name "g_main_loop_unref")
  (return-type "none")
)

(define-method is_running
  (of-object "GMainLoop")
  (c-name "g_main_loop_is_running")
  (return-type "gboolean")
)

(define-method get_context
  (of-object "GMainLoop")
  (c-name "g_main_loop_get_context")
  (return-type "GMainContext*")
)

(define-function g_source_new
  (c-name "g_source_new")
  (is-constructor-of "GSource")
  (return-type "GSource*")
  (parameters
    '("GSourceFuncs*" "source_funcs")
    '("guint" "struct_size")
  )
)

(define-method set_dispose_function
  (of-object "GSource")
  (c-name "g_source_set_dispose_function")
  (return-type "none")
  (parameters
    '("GSourceDisposeFunc" "dispose")
  )
)

(define-method ref
  (of-object "GSource")
  (c-name "g_source_ref")
  (return-type "GSource*")
)

(define-method unref
  (of-object "GSource")
  (c-name "g_source_unref")
  (return-type "none")
)

(define-method attach
  (of-object "GSource")
  (c-name "g_source_attach")
  (return-type "guint")
  (parameters
    '("GMainContext*" "context")
  )
)

(define-method destroy
  (of-object "GSource")
  (c-name "g_source_destroy")
  (return-type "none")
)

(define-method set_priority
  (of-object "GSource")
  (c-name "g_source_set_priority")
  (return-type "none")
  (parameters
    '("gint" "priority")
  )
)

(define-method get_priority
  (of-object "GSource")
  (c-name "g_source_get_priority")
  (return-type "gint")
)

(define-method set_can_recurse
  (of-object "GSource")
  (c-name "g_source_set_can_recurse")
  (return-type "none")
  (parameters
    '("gboolean" "can_recurse")
  )
)

(define-method get_can_recurse
  (of-object "GSource")
  (c-name "g_source_get_can_recurse")
  (return-type "gboolean")
)

(define-method get_id
  (of-object "GSource")
  (c-name "g_source_get_id")
  (return-type "guint")
)

(define-method get_context
  (of-object "GSource")
  (c-name "g_source_get_context")
  (return-type "GMainContext*")
)

(define-method set_callback
  (of-object "GSource")
  (c-name "g_source_set_callback")
  (return-type "none")
  (parameters
    '("GSourceFunc" "func")
    '("gpointer" "data")
    '("GDestroyNotify" "notify")
  )
)

(define-method set_funcs
  (of-object "GSource")
  (c-name "g_source_set_funcs")
  (return-type "none")
  (parameters
    '("GSourceFuncs*" "funcs")
  )
)

(define-method is_destroyed
  (of-object "GSource")
  (c-name "g_source_is_destroyed")
  (return-type "gboolean")
)

(define-method set_name
  (of-object "GSource")
  (c-name "g_source_set_name")
  (return-type "none")
  (parameters
    '("const-char*" "name")
  )
)

(define-method get_name
  (of-object "GSource")
  (c-name "g_source_get_name")
  (return-type "const-char*")
)

(define-function g_source_set_name_by_id
  (c-name "g_source_set_name_by_id")
  (return-type "none")
  (parameters
    '("guint" "tag")
    '("const-char*" "name")
  )
)

(define-method set_ready_time
  (of-object "GSource")
  (c-name "g_source_set_ready_time")
  (return-type "none")
  (parameters
    '("gint64" "ready_time")
  )
)

(define-method get_ready_time
  (of-object "GSource")
  (c-name "g_source_get_ready_time")
  (return-type "gint64")
)

(define-method add_unix_fd
  (of-object "GSource")
  (c-name "g_source_add_unix_fd")
  (return-type "gpointer")
  (parameters
    '("gint" "fd")
    '("GIOCondition" "events")
  )
)

(define-method modify_unix_fd
  (of-object "GSource")
  (c-name "g_source_modify_unix_fd")
  (return-type "none")
  (parameters
    '("gpointer" "tag")
    '("GIOCondition" "new_events")
  )
)

(define-method remove_unix_fd
  (of-object "GSource")
  (c-name "g_source_remove_unix_fd")
  (return-type "none")
  (parameters
    '("gpointer" "tag")
  )
)

(define-method query_unix_fd
  (of-object "GSource")
  (c-name "g_source_query_unix_fd")
  (return-type "GIOCondition")
  (parameters
    '("gpointer" "tag")
  )
)

(define-method set_callback_indirect
  (of-object "GSource")
  (c-name "g_source_set_callback_indirect")
  (return-type "none")
  (parameters
    '("gpointer" "callback_data")
    '("GSourceCallbackFuncs*" "callback_funcs")
  )
)

(define-method add_poll
  (of-object "GSource")
  (c-name "g_source_add_poll")
  (return-type "none")
  (parameters
    '("GPollFD*" "fd")
  )
)

(define-method remove_poll
  (of-object "GSource")
  (c-name "g_source_remove_poll")
  (return-type "none")
  (parameters
    '("GPollFD*" "fd")
  )
)

(define-method add_child_source
  (of-object "GSource")
  (c-name "g_source_add_child_source")
  (return-type "none")
  (parameters
    '("GSource*" "child_source")
  )
)

(define-method remove_child_source
  (of-object "GSource")
  (c-name "g_source_remove_child_source")
  (return-type "none")
  (parameters
    '("GSource*" "child_source")
  )
)

(define-method get_current_time
  (of-object "GSource")
  (c-name "g_source_get_current_time")
  (return-type "none")
  (parameters
    '("GTimeVal*" "timeval")
  )
)

(define-method get_time
  (of-object "GSource")
  (c-name "g_source_get_time")
  (return-type "gint64")
)

(define-function g_idle_source_new
  (c-name "g_idle_source_new")
  (is-constructor-of "GIdleSource")
  (return-type "GSource*")
)

(define-function g_child_watch_source_new
  (c-name "g_child_watch_source_new")
  (is-constructor-of "GChildWatchSource")
  (return-type "GSource*")
  (parameters
    '("GPid" "pid")
  )
)

(define-function g_timeout_source_new
  (c-name "g_timeout_source_new")
  (is-constructor-of "GTimeoutSource")
  (return-type "GSource*")
  (parameters
    '("guint" "interval")
  )
)

(define-function g_timeout_source_new_seconds
  (c-name "g_timeout_source_new_seconds")
  (return-type "GSource*")
  (parameters
    '("guint" "interval")
  )
)

(define-function g_get_current_time
  (c-name "g_get_current_time")
  (return-type "none")
  (parameters
    '("GTimeVal*" "result")
  )
)

(define-function g_get_monotonic_time
  (c-name "g_get_monotonic_time")
  (return-type "gint64")
)

(define-function g_get_real_time
  (c-name "g_get_real_time")
  (return-type "gint64")
)

(define-function g_source_remove
  (c-name "g_source_remove")
  (return-type "gboolean")
  (parameters
    '("guint" "tag")
  )
)

(define-function g_source_remove_by_user_data
  (c-name "g_source_remove_by_user_data")
  (return-type "gboolean")
  (parameters
    '("gpointer" "user_data")
  )
)

(define-function g_source_remove_by_funcs_user_data
  (c-name "g_source_remove_by_funcs_user_data")
  (return-type "gboolean")
  (parameters
    '("GSourceFuncs*" "funcs")
    '("gpointer" "user_data")
  )
)

(define-function g_clear_handle_id
  (c-name "g_clear_handle_id")
  (return-type "none")
  (parameters
    '("guint*" "tag_ptr")
    '("GClearHandleFunc" "clear_func")
  )
)

(define-function g_timeout_add_full
  (c-name "g_timeout_add_full")
  (return-type "guint")
  (parameters
    '("gint" "priority")
    '("guint" "interval")
    '("GSourceFunc" "function")
    '("gpointer" "data")
    '("GDestroyNotify" "notify")
  )
)

(define-function g_timeout_add
  (c-name "g_timeout_add")
  (return-type "guint")
  (parameters
    '("guint" "interval")
    '("GSourceFunc" "function")
    '("gpointer" "data")
  )
)

(define-function g_timeout_add_seconds_full
  (c-name "g_timeout_add_seconds_full")
  (return-type "guint")
  (parameters
    '("gint" "priority")
    '("guint" "interval")
    '("GSourceFunc" "function")
    '("gpointer" "data")
    '("GDestroyNotify" "notify")
  )
)

(define-function g_timeout_add_seconds
  (c-name "g_timeout_add_seconds")
  (return-type "guint")
  (parameters
    '("guint" "interval")
    '("GSourceFunc" "function")
    '("gpointer" "data")
  )
)

(define-function g_child_watch_add_full
  (c-name "g_child_watch_add_full")
  (return-type "guint")
  (parameters
    '("gint" "priority")
    '("GPid" "pid")
    '("GChildWatchFunc" "function")
    '("gpointer" "data")
    '("GDestroyNotify" "notify")
  )
)

(define-function g_child_watch_add
  (c-name "g_child_watch_add")
  (return-type "guint")
  (parameters
    '("GPid" "pid")
    '("GChildWatchFunc" "function")
    '("gpointer" "data")
  )
)

(define-function g_idle_add
  (c-name "g_idle_add")
  (return-type "guint")
  (parameters
    '("GSourceFunc" "function")
    '("gpointer" "data")
  )
)

(define-function g_idle_add_full
  (c-name "g_idle_add_full")
  (return-type "guint")
  (parameters
    '("gint" "priority")
    '("GSourceFunc" "function")
    '("gpointer" "data")
    '("GDestroyNotify" "notify")
  )
)

(define-function g_idle_remove_by_data
  (c-name "g_idle_remove_by_data")
  (return-type "gboolean")
  (parameters
    '("gpointer" "data")
  )
)

(define-method invoke_full
  (of-object "GMainContext")
  (c-name "g_main_context_invoke_full")
  (return-type "none")
  (parameters
    '("gint" "priority")
    '("GSourceFunc" "function")
    '("gpointer" "data")
    '("GDestroyNotify" "notify")
  )
)

(define-method invoke
  (of-object "GMainContext")
  (c-name "g_main_context_invoke")
  (return-type "none")
  (parameters
    '("GSourceFunc" "function")
    '("gpointer" "data")
  )
)



;; From gmain-internal.h



;; From gmappedfile.h

(define-function g_mapped_file_new
  (c-name "g_mapped_file_new")
  (is-constructor-of "GMappedFile")
  (return-type "GMappedFile*")
  (parameters
    '("const-gchar*" "filename")
    '("gboolean" "writable")
    '("GError**" "error")
  )
)

(define-function g_mapped_file_new_from_fd
  (c-name "g_mapped_file_new_from_fd")
  (return-type "GMappedFile*")
  (parameters
    '("gint" "fd")
    '("gboolean" "writable")
    '("GError**" "error")
  )
)

(define-method get_length
  (of-object "GMappedFile")
  (c-name "g_mapped_file_get_length")
  (return-type "gsize")
)

(define-method get_contents
  (of-object "GMappedFile")
  (c-name "g_mapped_file_get_contents")
  (return-type "gchar*")
)

(define-method get_bytes
  (of-object "GMappedFile")
  (c-name "g_mapped_file_get_bytes")
  (return-type "GBytes*")
)

(define-method ref
  (of-object "GMappedFile")
  (c-name "g_mapped_file_ref")
  (return-type "GMappedFile*")
)

(define-method unref
  (of-object "GMappedFile")
  (c-name "g_mapped_file_unref")
  (return-type "none")
)

(define-method free
  (of-object "GMappedFile")
  (c-name "g_mapped_file_free")
  (return-type "none")
)



;; From gmarkup.h

(define-function g_markup_error_quark
  (c-name "g_markup_error_quark")
  (return-type "GQuark")
)

(define-function g_markup_parse_context_new
  (c-name "g_markup_parse_context_new")
  (is-constructor-of "GMarkupParseContext")
  (return-type "GMarkupParseContext*")
  (parameters
    '("const-GMarkupParser*" "parser")
    '("GMarkupParseFlags" "flags")
    '("gpointer" "user_data")
    '("GDestroyNotify" "user_data_dnotify")
  )
)

(define-method ref
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_ref")
  (return-type "GMarkupParseContext*")
)

(define-method unref
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_unref")
  (return-type "none")
)

(define-method free
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_free")
  (return-type "none")
)

(define-method parse
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_parse")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "text")
    '("gssize" "text_len")
    '("GError**" "error")
  )
)

(define-method push
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_push")
  (return-type "none")
  (parameters
    '("const-GMarkupParser*" "parser")
    '("gpointer" "user_data")
  )
)

(define-method pop
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_pop")
  (return-type "gpointer")
)

(define-method end_parse
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_end_parse")
  (return-type "gboolean")
  (parameters
    '("GError**" "error")
  )
)

(define-method get_element
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_get_element")
  (return-type "const-gchar*")
)

(define-method get_element_stack
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_get_element_stack")
  (return-type "const-GSList*")
)

(define-method get_position
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_get_position")
  (return-type "none")
  (parameters
    '("gint*" "line_number")
    '("gint*" "char_number")
  )
)

(define-method get_user_data
  (of-object "GMarkupParseContext")
  (c-name "g_markup_parse_context_get_user_data")
  (return-type "gpointer")
)

(define-function g_markup_escape_text
  (c-name "g_markup_escape_text")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "text")
    '("gssize" "length")
  )
)

(define-function g_markup_printf_escaped
  (c-name "g_markup_printf_escaped")
  (return-type "gchar*")
  (parameters
    '("const-char*" "format")
  )
  (varargs #t)
)

(define-function g_markup_vprintf_escaped
  (c-name "g_markup_vprintf_escaped")
  (return-type "gchar*")
  (parameters
    '("const-char*" "format")
    '("va_list" "args")
  )
)

(define-function g_markup_collect_attributes
  (c-name "g_markup_collect_attributes")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "element_name")
    '("const-gchar**" "attribute_names")
    '("const-gchar**" "attribute_values")
    '("GError**" "error")
    '("GMarkupCollectType" "first_type")
    '("const-gchar*" "first_attr")
  )
  (varargs #t)
)



;; From gmem.h

(define-function g_free
  (c-name "g_free")
  (return-type "none")
  (parameters
    '("gpointer" "mem")
  )
)

(define-function g_clear_pointer
  (c-name "g_clear_pointer")
  (return-type "none")
  (parameters
    '("gpointer*" "pp")
    '("GDestroyNotify" "destroy")
  )
)

(define-function g_malloc
  (c-name "g_malloc")
  (return-type "gpointer")
  (parameters
    '("gsize" "n_bytes")
  )
)

(define-function g_malloc0
  (c-name "g_malloc0")
  (return-type "gpointer")
  (parameters
    '("gsize" "n_bytes")
  )
)

(define-function g_realloc
  (c-name "g_realloc")
  (return-type "gpointer")
  (parameters
    '("gpointer" "mem")
    '("gsize" "n_bytes")
  )
)

(define-function g_try_malloc
  (c-name "g_try_malloc")
  (return-type "gpointer")
  (parameters
    '("gsize" "n_bytes")
  )
)

(define-function g_try_malloc0
  (c-name "g_try_malloc0")
  (return-type "gpointer")
  (parameters
    '("gsize" "n_bytes")
  )
)

(define-function g_try_realloc
  (c-name "g_try_realloc")
  (return-type "gpointer")
  (parameters
    '("gpointer" "mem")
    '("gsize" "n_bytes")
  )
)

(define-function g_malloc_n
  (c-name "g_malloc_n")
  (return-type "gpointer")
  (parameters
    '("gsize" "n_blocks")
    '("gsize" "n_block_bytes")
  )
)

(define-function g_malloc0_n
  (c-name "g_malloc0_n")
  (return-type "gpointer")
  (parameters
    '("gsize" "n_blocks")
    '("gsize" "n_block_bytes")
  )
)

(define-function g_realloc_n
  (c-name "g_realloc_n")
  (return-type "gpointer")
  (parameters
    '("gpointer" "mem")
    '("gsize" "n_blocks")
    '("gsize" "n_block_bytes")
  )
)

(define-function g_try_malloc_n
  (c-name "g_try_malloc_n")
  (return-type "gpointer")
  (parameters
    '("gsize" "n_blocks")
    '("gsize" "n_block_bytes")
  )
)

(define-function g_try_malloc0_n
  (c-name "g_try_malloc0_n")
  (return-type "gpointer")
  (parameters
    '("gsize" "n_blocks")
    '("gsize" "n_block_bytes")
  )
)

(define-function g_try_realloc_n
  (c-name "g_try_realloc_n")
  (return-type "gpointer")
  (parameters
    '("gpointer" "mem")
    '("gsize" "n_blocks")
    '("gsize" "n_block_bytes")
  )
)

(define-function g_mem_set_vtable
  (c-name "g_mem_set_vtable")
  (return-type "none")
  (parameters
    '("GMemVTable*" "vtable")
  )
)

(define-function g_mem_is_system_malloc
  (c-name "g_mem_is_system_malloc")
  (return-type "gboolean")
)

(define-function g_mem_profile
  (c-name "g_mem_profile")
  (return-type "none")
)



;; From gmessages.h

(define-function g_printf_string_upper_bound
  (c-name "g_printf_string_upper_bound")
  (return-type "gsize")
  (parameters
    '("const-gchar*" "format")
    '("va_list" "args")
  )
)

(define-function g_log_set_handler
  (c-name "g_log_set_handler")
  (return-type "guint")
  (parameters
    '("const-gchar*" "log_domain")
    '("GLogLevelFlags" "log_levels")
    '("GLogFunc" "log_func")
    '("gpointer" "user_data")
  )
)

(define-function g_log_set_handler_full
  (c-name "g_log_set_handler_full")
  (return-type "guint")
  (parameters
    '("const-gchar*" "log_domain")
    '("GLogLevelFlags" "log_levels")
    '("GLogFunc" "log_func")
    '("gpointer" "user_data")
    '("GDestroyNotify" "destroy")
  )
)

(define-function g_log_remove_handler
  (c-name "g_log_remove_handler")
  (return-type "none")
  (parameters
    '("const-gchar*" "log_domain")
    '("guint" "handler_id")
  )
)

(define-function g_log_default_handler
  (c-name "g_log_default_handler")
  (return-type "none")
  (parameters
    '("const-gchar*" "log_domain")
    '("GLogLevelFlags" "log_level")
    '("const-gchar*" "message")
    '("gpointer" "unused_data")
  )
)

(define-function g_log_set_default_handler
  (c-name "g_log_set_default_handler")
  (return-type "GLogFunc")
  (parameters
    '("GLogFunc" "log_func")
    '("gpointer" "user_data")
  )
)

(define-function g_log
  (c-name "g_log")
  (return-type "none")
  (parameters
    '("const-gchar*" "log_domain")
    '("GLogLevelFlags" "log_level")
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_logv
  (c-name "g_logv")
  (return-type "none")
  (parameters
    '("const-gchar*" "log_domain")
    '("GLogLevelFlags" "log_level")
    '("const-gchar*" "format")
    '("va_list" "args")
  )
)

(define-function g_log_set_fatal_mask
  (c-name "g_log_set_fatal_mask")
  (return-type "GLogLevelFlags")
  (parameters
    '("const-gchar*" "log_domain")
    '("GLogLevelFlags" "fatal_mask")
  )
)

(define-function g_log_set_always_fatal
  (c-name "g_log_set_always_fatal")
  (return-type "GLogLevelFlags")
  (parameters
    '("GLogLevelFlags" "fatal_mask")
  )
)

(define-function g_log_structured
  (c-name "g_log_structured")
  (return-type "none")
  (parameters
    '("const-gchar*" "log_domain")
    '("GLogLevelFlags" "log_level")
  )
  (varargs #t)
)

(define-function g_log_structured_array
  (c-name "g_log_structured_array")
  (return-type "none")
  (parameters
    '("GLogLevelFlags" "log_level")
    '("const-GLogField*" "fields")
    '("gsize" "n_fields")
  )
)

(define-function g_log_variant
  (c-name "g_log_variant")
  (return-type "none")
  (parameters
    '("const-gchar*" "log_domain")
    '("GLogLevelFlags" "log_level")
    '("GVariant*" "fields")
  )
)

(define-function g_log_set_writer_func
  (c-name "g_log_set_writer_func")
  (return-type "none")
  (parameters
    '("GLogWriterFunc" "func")
    '("gpointer" "user_data")
    '("GDestroyNotify" "user_data_free")
  )
)

(define-function g_log_writer_supports_color
  (c-name "g_log_writer_supports_color")
  (return-type "gboolean")
  (parameters
    '("gint" "output_fd")
  )
)

(define-function g_log_writer_is_journald
  (c-name "g_log_writer_is_journald")
  (return-type "gboolean")
  (parameters
    '("gint" "output_fd")
  )
)

(define-function g_log_writer_format_fields
  (c-name "g_log_writer_format_fields")
  (return-type "gchar*")
  (parameters
    '("GLogLevelFlags" "log_level")
    '("const-GLogField*" "fields")
    '("gsize" "n_fields")
    '("gboolean" "use_color")
  )
)

(define-function g_log_writer_journald
  (c-name "g_log_writer_journald")
  (return-type "GLogWriterOutput")
  (parameters
    '("GLogLevelFlags" "log_level")
    '("const-GLogField*" "fields")
    '("gsize" "n_fields")
    '("gpointer" "user_data")
  )
)

(define-function g_log_writer_standard_streams
  (c-name "g_log_writer_standard_streams")
  (return-type "GLogWriterOutput")
  (parameters
    '("GLogLevelFlags" "log_level")
    '("const-GLogField*" "fields")
    '("gsize" "n_fields")
    '("gpointer" "user_data")
  )
)

(define-function g_log_writer_default
  (c-name "g_log_writer_default")
  (return-type "GLogWriterOutput")
  (parameters
    '("GLogLevelFlags" "log_level")
    '("const-GLogField*" "fields")
    '("gsize" "n_fields")
    '("gpointer" "user_data")
  )
)

(define-function g_return_if_fail_warning
  (c-name "g_return_if_fail_warning")
  (return-type "none")
  (parameters
    '("const-char*" "log_domain")
    '("const-char*" "pretty_function")
    '("const-char*" "expression")
  )
)

(define-function g_warn_message
  (c-name "g_warn_message")
  (return-type "none")
  (parameters
    '("const-char*" "domain")
    '("const-char*" "file")
    '("int" "line")
    '("const-char*" "func")
    '("const-char*" "warnexpr")
  )
)

(define-function g_assert_warning
  (c-name "g_assert_warning")
  (return-type "none")
  (parameters
    '("const-char*" "log_domain")
    '("const-char*" "file")
    '("const-int" "line")
    '("const-char*" "pretty_function")
    '("const-char*" "expression")
  )
)

(define-function g_log_structured_standard
  (c-name "g_log_structured_standard")
  (return-type "none")
  (parameters
    '("const-gchar*" "log_domain")
    '("GLogLevelFlags" "log_level")
    '("const-gchar*" "file")
    '("const-gchar*" "line")
    '("const-gchar*" "func")
    '("const-gchar*" "message_format")
  )
  (varargs #t)
)

(define-function g_error
  (c-name "g_error")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_critical
  (c-name "g_critical")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_message
  (c-name "g_message")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_warning
  (c-name "g_warning")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_info
  (c-name "g_info")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_debug
  (c-name "g_debug")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_print
  (c-name "g_print")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_set_print_handler
  (c-name "g_set_print_handler")
  (return-type "GPrintFunc")
  (parameters
    '("GPrintFunc" "func")
  )
)

(define-function g_printerr
  (c-name "g_printerr")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_set_printerr_handler
  (c-name "g_set_printerr_handler")
  (return-type "GPrintFunc")
  (parameters
    '("GPrintFunc" "func")
  )
)



;; From gmirroringtable.h



;; From gnode.h

(define-function g_node_new
  (c-name "g_node_new")
  (is-constructor-of "GNode")
  (return-type "GNode*")
  (parameters
    '("gpointer" "data")
  )
)

(define-method destroy
  (of-object "GNode")
  (c-name "g_node_destroy")
  (return-type "none")
)

(define-method unlink
  (of-object "GNode")
  (c-name "g_node_unlink")
  (return-type "none")
)

(define-method copy_deep
  (of-object "GNode")
  (c-name "g_node_copy_deep")
  (return-type "GNode*")
  (parameters
    '("GCopyFunc" "copy_func")
    '("gpointer" "data")
  )
)

(define-method copy
  (of-object "GNode")
  (c-name "g_node_copy")
  (return-type "GNode*")
)

(define-method insert
  (of-object "GNode")
  (c-name "g_node_insert")
  (return-type "GNode*")
  (parameters
    '("gint" "position")
    '("GNode*" "node")
  )
)

(define-method insert_before
  (of-object "GNode")
  (c-name "g_node_insert_before")
  (return-type "GNode*")
  (parameters
    '("GNode*" "sibling")
    '("GNode*" "node")
  )
)

(define-method insert_after
  (of-object "GNode")
  (c-name "g_node_insert_after")
  (return-type "GNode*")
  (parameters
    '("GNode*" "sibling")
    '("GNode*" "node")
  )
)

(define-method prepend
  (of-object "GNode")
  (c-name "g_node_prepend")
  (return-type "GNode*")
  (parameters
    '("GNode*" "node")
  )
)

(define-method n_nodes
  (of-object "GNode")
  (c-name "g_node_n_nodes")
  (return-type "guint")
  (parameters
    '("GTraverseFlags" "flags")
  )
)

(define-method get_root
  (of-object "GNode")
  (c-name "g_node_get_root")
  (return-type "GNode*")
)

(define-method is_ancestor
  (of-object "GNode")
  (c-name "g_node_is_ancestor")
  (return-type "gboolean")
  (parameters
    '("GNode*" "descendant")
  )
)

(define-method depth
  (of-object "GNode")
  (c-name "g_node_depth")
  (return-type "guint")
)

(define-method find
  (of-object "GNode")
  (c-name "g_node_find")
  (return-type "GNode*")
  (parameters
    '("GTraverseType" "order")
    '("GTraverseFlags" "flags")
    '("gpointer" "data")
  )
)

(define-method traverse
  (of-object "GNode")
  (c-name "g_node_traverse")
  (return-type "none")
  (parameters
    '("GTraverseType" "order")
    '("GTraverseFlags" "flags")
    '("gint" "max_depth")
    '("GNodeTraverseFunc" "func")
    '("gpointer" "data")
  )
)

(define-method max_height
  (of-object "GNode")
  (c-name "g_node_max_height")
  (return-type "guint")
)

(define-method children_foreach
  (of-object "GNode")
  (c-name "g_node_children_foreach")
  (return-type "none")
  (parameters
    '("GTraverseFlags" "flags")
    '("GNodeForeachFunc" "func")
    '("gpointer" "data")
  )
)

(define-method reverse_children
  (of-object "GNode")
  (c-name "g_node_reverse_children")
  (return-type "none")
)

(define-method n_children
  (of-object "GNode")
  (c-name "g_node_n_children")
  (return-type "guint")
)

(define-method nth_child
  (of-object "GNode")
  (c-name "g_node_nth_child")
  (return-type "GNode*")
  (parameters
    '("guint" "n")
  )
)

(define-method last_child
  (of-object "GNode")
  (c-name "g_node_last_child")
  (return-type "GNode*")
)

(define-method find_child
  (of-object "GNode")
  (c-name "g_node_find_child")
  (return-type "GNode*")
  (parameters
    '("GTraverseFlags" "flags")
    '("gpointer" "data")
  )
)

(define-method child_position
  (of-object "GNode")
  (c-name "g_node_child_position")
  (return-type "gint")
  (parameters
    '("GNode*" "child")
  )
)

(define-method child_index
  (of-object "GNode")
  (c-name "g_node_child_index")
  (return-type "gint")
  (parameters
    '("gpointer" "data")
  )
)

(define-method first_sibling
  (of-object "GNode")
  (c-name "g_node_first_sibling")
  (return-type "GNode*")
)

(define-method last_sibling
  (of-object "GNode")
  (c-name "g_node_last_sibling")
  (return-type "GNode*")
)



;; From goption.h

(define-function g_option_error_quark
  (c-name "g_option_error_quark")
  (return-type "GQuark")
)

(define-function g_option_context_new
  (c-name "g_option_context_new")
  (is-constructor-of "GOptionContext")
  (return-type "GOptionContext*")
  (parameters
    '("const-gchar*" "parameter_string")
  )
)

(define-method set_summary
  (of-object "GOptionContext")
  (c-name "g_option_context_set_summary")
  (return-type "none")
  (parameters
    '("const-gchar*" "summary")
  )
)

(define-method get_summary
  (of-object "GOptionContext")
  (c-name "g_option_context_get_summary")
  (return-type "const-gchar*")
)

(define-method set_description
  (of-object "GOptionContext")
  (c-name "g_option_context_set_description")
  (return-type "none")
  (parameters
    '("const-gchar*" "description")
  )
)

(define-method get_description
  (of-object "GOptionContext")
  (c-name "g_option_context_get_description")
  (return-type "const-gchar*")
)

(define-method free
  (of-object "GOptionContext")
  (c-name "g_option_context_free")
  (return-type "none")
)

(define-method set_help_enabled
  (of-object "GOptionContext")
  (c-name "g_option_context_set_help_enabled")
  (return-type "none")
  (parameters
    '("gboolean" "help_enabled")
  )
)

(define-method get_help_enabled
  (of-object "GOptionContext")
  (c-name "g_option_context_get_help_enabled")
  (return-type "gboolean")
)

(define-method set_ignore_unknown_options
  (of-object "GOptionContext")
  (c-name "g_option_context_set_ignore_unknown_options")
  (return-type "none")
  (parameters
    '("gboolean" "ignore_unknown")
  )
)

(define-method get_ignore_unknown_options
  (of-object "GOptionContext")
  (c-name "g_option_context_get_ignore_unknown_options")
  (return-type "gboolean")
)

(define-method set_strict_posix
  (of-object "GOptionContext")
  (c-name "g_option_context_set_strict_posix")
  (return-type "none")
  (parameters
    '("gboolean" "strict_posix")
  )
)

(define-method get_strict_posix
  (of-object "GOptionContext")
  (c-name "g_option_context_get_strict_posix")
  (return-type "gboolean")
)

(define-method add_main_entries
  (of-object "GOptionContext")
  (c-name "g_option_context_add_main_entries")
  (return-type "none")
  (parameters
    '("const-GOptionEntry*" "entries")
    '("const-gchar*" "translation_domain")
  )
)

(define-method parse
  (of-object "GOptionContext")
  (c-name "g_option_context_parse")
  (return-type "gboolean")
  (parameters
    '("gint*" "argc")
    '("gchar***" "argv")
    '("GError**" "error")
  )
)

(define-method parse_strv
  (of-object "GOptionContext")
  (c-name "g_option_context_parse_strv")
  (return-type "gboolean")
  (parameters
    '("gchar***" "arguments")
    '("GError**" "error")
  )
)

(define-method set_translate_func
  (of-object "GOptionContext")
  (c-name "g_option_context_set_translate_func")
  (return-type "none")
  (parameters
    '("GTranslateFunc" "func")
    '("gpointer" "data")
    '("GDestroyNotify" "destroy_notify")
  )
)

(define-method set_translation_domain
  (of-object "GOptionContext")
  (c-name "g_option_context_set_translation_domain")
  (return-type "none")
  (parameters
    '("const-gchar*" "domain")
  )
)

(define-method add_group
  (of-object "GOptionContext")
  (c-name "g_option_context_add_group")
  (return-type "none")
  (parameters
    '("GOptionGroup*" "group")
  )
)

(define-method set_main_group
  (of-object "GOptionContext")
  (c-name "g_option_context_set_main_group")
  (return-type "none")
  (parameters
    '("GOptionGroup*" "group")
  )
)

(define-method get_main_group
  (of-object "GOptionContext")
  (c-name "g_option_context_get_main_group")
  (return-type "GOptionGroup*")
)

(define-method get_help
  (of-object "GOptionContext")
  (c-name "g_option_context_get_help")
  (return-type "gchar*")
  (parameters
    '("gboolean" "main_help")
    '("GOptionGroup*" "group")
  )
)

(define-function g_option_group_new
  (c-name "g_option_group_new")
  (is-constructor-of "GOptionGroup")
  (return-type "GOptionGroup*")
  (parameters
    '("const-gchar*" "name")
    '("const-gchar*" "description")
    '("const-gchar*" "help_description")
    '("gpointer" "user_data")
    '("GDestroyNotify" "destroy")
  )
)

(define-method set_parse_hooks
  (of-object "GOptionGroup")
  (c-name "g_option_group_set_parse_hooks")
  (return-type "none")
  (parameters
    '("GOptionParseFunc" "pre_parse_func")
    '("GOptionParseFunc" "post_parse_func")
  )
)

(define-method set_error_hook
  (of-object "GOptionGroup")
  (c-name "g_option_group_set_error_hook")
  (return-type "none")
  (parameters
    '("GOptionErrorFunc" "error_func")
  )
)

(define-method free
  (of-object "GOptionGroup")
  (c-name "g_option_group_free")
  (return-type "none")
)

(define-method ref
  (of-object "GOptionGroup")
  (c-name "g_option_group_ref")
  (return-type "GOptionGroup*")
)

(define-method unref
  (of-object "GOptionGroup")
  (c-name "g_option_group_unref")
  (return-type "none")
)

(define-method add_entries
  (of-object "GOptionGroup")
  (c-name "g_option_group_add_entries")
  (return-type "none")
  (parameters
    '("const-GOptionEntry*" "entries")
  )
)

(define-method set_translate_func
  (of-object "GOptionGroup")
  (c-name "g_option_group_set_translate_func")
  (return-type "none")
  (parameters
    '("GTranslateFunc" "func")
    '("gpointer" "data")
    '("GDestroyNotify" "destroy_notify")
  )
)

(define-method set_translation_domain
  (of-object "GOptionGroup")
  (c-name "g_option_group_set_translation_domain")
  (return-type "none")
  (parameters
    '("const-gchar*" "domain")
  )
)



;; From gpattern.h

(define-function g_pattern_spec_new
  (c-name "g_pattern_spec_new")
  (is-constructor-of "GPatternSpec")
  (return-type "GPatternSpec*")
  (parameters
    '("const-gchar*" "pattern")
  )
)

(define-method free
  (of-object "GPatternSpec")
  (c-name "g_pattern_spec_free")
  (return-type "none")
)

(define-method equal
  (of-object "GPatternSpec")
  (c-name "g_pattern_spec_equal")
  (return-type "gboolean")
  (parameters
    '("GPatternSpec*" "pspec2")
  )
)

(define-function g_pattern_match
  (c-name "g_pattern_match")
  (return-type "gboolean")
  (parameters
    '("GPatternSpec*" "pspec")
    '("guint" "string_length")
    '("const-gchar*" "string")
    '("const-gchar*" "string_reversed")
  )
)

(define-function g_pattern_match_string
  (c-name "g_pattern_match_string")
  (return-type "gboolean")
  (parameters
    '("GPatternSpec*" "pspec")
    '("const-gchar*" "string")
  )
)

(define-function g_pattern_match_simple
  (c-name "g_pattern_match_simple")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "pattern")
    '("const-gchar*" "string")
  )
)



;; From gpoll.h

(define-function g_poll
  (c-name "g_poll")
  (return-type "gint")
  (parameters
    '("GPollFD*" "fds")
    '("guint" "nfds")
    '("gint" "timeout")
  )
)



;; From gprimes.h

(define-function g_spaced_primes_closest
  (c-name "g_spaced_primes_closest")
  (return-type "guint")
  (parameters
    '("guint" "num")
  )
)



;; From gprintf.h

(define-function g_printf
  (c-name "g_printf")
  (return-type "gint")
  (parameters
    '("gchar-const*" "format")
  )
  (varargs #t)
)

(define-function g_fprintf
  (c-name "g_fprintf")
  (return-type "gint")
  (parameters
    '("FILE*" "file")
    '("gchar-const*" "format")
  )
  (varargs #t)
)

(define-function g_sprintf
  (c-name "g_sprintf")
  (return-type "gint")
  (parameters
    '("gchar*" "string")
    '("gchar-const*" "format")
  )
  (varargs #t)
)

(define-function g_vprintf
  (c-name "g_vprintf")
  (return-type "gint")
  (parameters
    '("gchar-const*" "format")
    '("va_list" "args")
  )
)

(define-function g_vfprintf
  (c-name "g_vfprintf")
  (return-type "gint")
  (parameters
    '("FILE*" "file")
    '("gchar-const*" "format")
    '("va_list" "args")
  )
)

(define-function g_vsprintf
  (c-name "g_vsprintf")
  (return-type "gint")
  (parameters
    '("gchar*" "string")
    '("gchar-const*" "format")
    '("va_list" "args")
  )
)

(define-function g_vasprintf
  (c-name "g_vasprintf")
  (return-type "gint")
  (parameters
    '("gchar**" "string")
    '("gchar-const*" "format")
    '("va_list" "args")
  )
)



;; From gprintfint.h



;; From gqsort.h

(define-function g_qsort_with_data
  (c-name "g_qsort_with_data")
  (return-type "none")
  (parameters
    '("gconstpointer" "pbase")
    '("gint" "total_elems")
    '("gsize" "size")
    '("GCompareDataFunc" "compare_func")
    '("gpointer" "user_data")
  )
)



;; From gquark.h

(define-function g_quark_try_string
  (c-name "g_quark_try_string")
  (return-type "GQuark")
  (parameters
    '("const-gchar*" "string")
  )
)

(define-function g_quark_from_static_string
  (c-name "g_quark_from_static_string")
  (return-type "GQuark")
  (parameters
    '("const-gchar*" "string")
  )
)

(define-function g_quark_from_string
  (c-name "g_quark_from_string")
  (return-type "GQuark")
  (parameters
    '("const-gchar*" "string")
  )
)

(define-method to_string
  (of-object "GQuark")
  (c-name "g_quark_to_string")
  (return-type "const-gchar*")
)

(define-function g_intern_string
  (c-name "g_intern_string")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "string")
  )
)

(define-function g_intern_static_string
  (c-name "g_intern_static_string")
  (return-type "const-gchar*")
  (parameters
    '("const-gchar*" "string")
  )
)



;; From gqueue.h

(define-function g_queue_new
  (c-name "g_queue_new")
  (is-constructor-of "GQueue")
  (return-type "GQueue*")
)

(define-method free
  (of-object "GQueue")
  (c-name "g_queue_free")
  (return-type "none")
)

(define-method free_full
  (of-object "GQueue")
  (c-name "g_queue_free_full")
  (return-type "none")
  (parameters
    '("GDestroyNotify" "free_func")
  )
)

(define-method init
  (of-object "GQueue")
  (c-name "g_queue_init")
  (return-type "none")
)

(define-method clear
  (of-object "GQueue")
  (c-name "g_queue_clear")
  (return-type "none")
)

(define-method is_empty
  (of-object "GQueue")
  (c-name "g_queue_is_empty")
  (return-type "gboolean")
)

(define-method clear_full
  (of-object "GQueue")
  (c-name "g_queue_clear_full")
  (return-type "none")
  (parameters
    '("GDestroyNotify" "free_func")
  )
)

(define-method get_length
  (of-object "GQueue")
  (c-name "g_queue_get_length")
  (return-type "guint")
)

(define-method reverse
  (of-object "GQueue")
  (c-name "g_queue_reverse")
  (return-type "none")
)

(define-method copy
  (of-object "GQueue")
  (c-name "g_queue_copy")
  (return-type "GQueue*")
)

(define-method foreach
  (of-object "GQueue")
  (c-name "g_queue_foreach")
  (return-type "none")
  (parameters
    '("GFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method find
  (of-object "GQueue")
  (c-name "g_queue_find")
  (return-type "GList*")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method find_custom
  (of-object "GQueue")
  (c-name "g_queue_find_custom")
  (return-type "GList*")
  (parameters
    '("gconstpointer" "data")
    '("GCompareFunc" "func")
  )
)

(define-method sort
  (of-object "GQueue")
  (c-name "g_queue_sort")
  (return-type "none")
  (parameters
    '("GCompareDataFunc" "compare_func")
    '("gpointer" "user_data")
  )
)

(define-method push_head
  (of-object "GQueue")
  (c-name "g_queue_push_head")
  (return-type "none")
  (parameters
    '("gpointer" "data")
  )
)

(define-method push_tail
  (of-object "GQueue")
  (c-name "g_queue_push_tail")
  (return-type "none")
  (parameters
    '("gpointer" "data")
  )
)

(define-method push_nth
  (of-object "GQueue")
  (c-name "g_queue_push_nth")
  (return-type "none")
  (parameters
    '("gpointer" "data")
    '("gint" "n")
  )
)

(define-method pop_head
  (of-object "GQueue")
  (c-name "g_queue_pop_head")
  (return-type "gpointer")
)

(define-method pop_tail
  (of-object "GQueue")
  (c-name "g_queue_pop_tail")
  (return-type "gpointer")
)

(define-method pop_nth
  (of-object "GQueue")
  (c-name "g_queue_pop_nth")
  (return-type "gpointer")
  (parameters
    '("guint" "n")
  )
)

(define-method peek_head
  (of-object "GQueue")
  (c-name "g_queue_peek_head")
  (return-type "gpointer")
)

(define-method peek_tail
  (of-object "GQueue")
  (c-name "g_queue_peek_tail")
  (return-type "gpointer")
)

(define-method peek_nth
  (of-object "GQueue")
  (c-name "g_queue_peek_nth")
  (return-type "gpointer")
  (parameters
    '("guint" "n")
  )
)

(define-method index
  (of-object "GQueue")
  (c-name "g_queue_index")
  (return-type "gint")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method remove
  (of-object "GQueue")
  (c-name "g_queue_remove")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method remove_all
  (of-object "GQueue")
  (c-name "g_queue_remove_all")
  (return-type "guint")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method insert_before
  (of-object "GQueue")
  (c-name "g_queue_insert_before")
  (return-type "none")
  (parameters
    '("GList*" "sibling")
    '("gpointer" "data")
  )
)

(define-method insert_before_link
  (of-object "GQueue")
  (c-name "g_queue_insert_before_link")
  (return-type "none")
  (parameters
    '("GList*" "sibling")
    '("GList*" "link_")
  )
)

(define-method insert_after
  (of-object "GQueue")
  (c-name "g_queue_insert_after")
  (return-type "none")
  (parameters
    '("GList*" "sibling")
    '("gpointer" "data")
  )
)

(define-method insert_after_link
  (of-object "GQueue")
  (c-name "g_queue_insert_after_link")
  (return-type "none")
  (parameters
    '("GList*" "sibling")
    '("GList*" "link_")
  )
)

(define-method insert_sorted
  (of-object "GQueue")
  (c-name "g_queue_insert_sorted")
  (return-type "none")
  (parameters
    '("gpointer" "data")
    '("GCompareDataFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method push_head_link
  (of-object "GQueue")
  (c-name "g_queue_push_head_link")
  (return-type "none")
  (parameters
    '("GList*" "link_")
  )
)

(define-method push_tail_link
  (of-object "GQueue")
  (c-name "g_queue_push_tail_link")
  (return-type "none")
  (parameters
    '("GList*" "link_")
  )
)

(define-method push_nth_link
  (of-object "GQueue")
  (c-name "g_queue_push_nth_link")
  (return-type "none")
  (parameters
    '("gint" "n")
    '("GList*" "link_")
  )
)

(define-method pop_head_link
  (of-object "GQueue")
  (c-name "g_queue_pop_head_link")
  (return-type "GList*")
)

(define-method pop_tail_link
  (of-object "GQueue")
  (c-name "g_queue_pop_tail_link")
  (return-type "GList*")
)

(define-method pop_nth_link
  (of-object "GQueue")
  (c-name "g_queue_pop_nth_link")
  (return-type "GList*")
  (parameters
    '("guint" "n")
  )
)

(define-method peek_head_link
  (of-object "GQueue")
  (c-name "g_queue_peek_head_link")
  (return-type "GList*")
)

(define-method peek_tail_link
  (of-object "GQueue")
  (c-name "g_queue_peek_tail_link")
  (return-type "GList*")
)

(define-method peek_nth_link
  (of-object "GQueue")
  (c-name "g_queue_peek_nth_link")
  (return-type "GList*")
  (parameters
    '("guint" "n")
  )
)

(define-method link_index
  (of-object "GQueue")
  (c-name "g_queue_link_index")
  (return-type "gint")
  (parameters
    '("GList*" "link_")
  )
)

(define-method unlink
  (of-object "GQueue")
  (c-name "g_queue_unlink")
  (return-type "none")
  (parameters
    '("GList*" "link_")
  )
)

(define-method delete_link
  (of-object "GQueue")
  (c-name "g_queue_delete_link")
  (return-type "none")
  (parameters
    '("GList*" "link_")
  )
)



;; From grand.h

(define-function g_rand_new_with_seed
  (c-name "g_rand_new_with_seed")
  (return-type "GRand*")
  (parameters
    '("guint32" "seed")
  )
)

(define-function g_rand_new_with_seed_array
  (c-name "g_rand_new_with_seed_array")
  (return-type "GRand*")
  (parameters
    '("const-guint32*" "seed")
    '("guint" "seed_length")
  )
)

(define-function g_rand_new
  (c-name "g_rand_new")
  (is-constructor-of "GRand")
  (return-type "GRand*")
)

(define-method free
  (of-object "GRand")
  (c-name "g_rand_free")
  (return-type "none")
)

(define-method copy
  (of-object "GRand")
  (c-name "g_rand_copy")
  (return-type "GRand*")
)

(define-method set_seed
  (of-object "GRand")
  (c-name "g_rand_set_seed")
  (return-type "none")
  (parameters
    '("guint32" "seed")
  )
)

(define-method set_seed_array
  (of-object "GRand")
  (c-name "g_rand_set_seed_array")
  (return-type "none")
  (parameters
    '("const-guint32*" "seed")
    '("guint" "seed_length")
  )
)

(define-method int
  (of-object "GRand")
  (c-name "g_rand_int")
  (return-type "guint32")
)

(define-method int_range
  (of-object "GRand")
  (c-name "g_rand_int_range")
  (return-type "gint32")
  (parameters
    '("gint32" "begin")
    '("gint32" "end")
  )
)

(define-method double
  (of-object "GRand")
  (c-name "g_rand_double")
  (return-type "gdouble")
)

(define-method double_range
  (of-object "GRand")
  (c-name "g_rand_double_range")
  (return-type "gdouble")
  (parameters
    '("gdouble" "begin")
    '("gdouble" "end")
  )
)

(define-function g_random_set_seed
  (c-name "g_random_set_seed")
  (return-type "none")
  (parameters
    '("guint32" "seed")
  )
)

(define-function g_random_int
  (c-name "g_random_int")
  (return-type "guint32")
)

(define-function g_random_int_range
  (c-name "g_random_int_range")
  (return-type "gint32")
  (parameters
    '("gint32" "begin")
    '("gint32" "end")
  )
)

(define-function g_random_double
  (c-name "g_random_double")
  (return-type "gdouble")
)

(define-function g_random_double_range
  (c-name "g_random_double_range")
  (return-type "gdouble")
  (parameters
    '("gdouble" "begin")
    '("gdouble" "end")
  )
)



;; From grcbox.h

(define-function g_rc_box_alloc
  (c-name "g_rc_box_alloc")
  (return-type "gpointer")
  (parameters
    '("gsize" "block_size")
  )
)

(define-function g_rc_box_alloc0
  (c-name "g_rc_box_alloc0")
  (return-type "gpointer")
  (parameters
    '("gsize" "block_size")
  )
)

(define-function g_rc_box_dup
  (c-name "g_rc_box_dup")
  (return-type "gpointer")
  (parameters
    '("gsize" "block_size")
    '("gconstpointer" "mem_block")
  )
)

(define-function g_rc_box_acquire
  (c-name "g_rc_box_acquire")
  (return-type "gpointer")
  (parameters
    '("gpointer" "mem_block")
  )
)

(define-function g_rc_box_release
  (c-name "g_rc_box_release")
  (return-type "none")
  (parameters
    '("gpointer" "mem_block")
  )
)

(define-function g_rc_box_release_full
  (c-name "g_rc_box_release_full")
  (return-type "none")
  (parameters
    '("gpointer" "mem_block")
    '("GDestroyNotify" "clear_func")
  )
)

(define-function g_rc_box_get_size
  (c-name "g_rc_box_get_size")
  (return-type "gsize")
  (parameters
    '("gpointer" "mem_block")
  )
)

(define-function g_atomic_rc_box_alloc
  (c-name "g_atomic_rc_box_alloc")
  (return-type "gpointer")
  (parameters
    '("gsize" "block_size")
  )
)

(define-function g_atomic_rc_box_alloc0
  (c-name "g_atomic_rc_box_alloc0")
  (return-type "gpointer")
  (parameters
    '("gsize" "block_size")
  )
)

(define-function g_atomic_rc_box_dup
  (c-name "g_atomic_rc_box_dup")
  (return-type "gpointer")
  (parameters
    '("gsize" "block_size")
    '("gconstpointer" "mem_block")
  )
)

(define-function g_atomic_rc_box_acquire
  (c-name "g_atomic_rc_box_acquire")
  (return-type "gpointer")
  (parameters
    '("gpointer" "mem_block")
  )
)

(define-function g_atomic_rc_box_release
  (c-name "g_atomic_rc_box_release")
  (return-type "none")
  (parameters
    '("gpointer" "mem_block")
  )
)

(define-function g_atomic_rc_box_release_full
  (c-name "g_atomic_rc_box_release_full")
  (return-type "none")
  (parameters
    '("gpointer" "mem_block")
    '("GDestroyNotify" "clear_func")
  )
)

(define-function g_atomic_rc_box_get_size
  (c-name "g_atomic_rc_box_get_size")
  (return-type "gsize")
  (parameters
    '("gpointer" "mem_block")
  )
)



;; From grefcount.h

(define-method init
  (of-object "grefcount")
  (c-name "g_ref_count_init")
  (return-type "none")
)

(define-method inc
  (of-object "grefcount")
  (c-name "g_ref_count_inc")
  (return-type "none")
)

(define-method dec
  (of-object "grefcount")
  (c-name "g_ref_count_dec")
  (return-type "gboolean")
)

(define-method compare
  (of-object "grefcount")
  (c-name "g_ref_count_compare")
  (return-type "gboolean")
  (parameters
    '("gint" "val")
  )
)

(define-method init
  (of-object "gatomicrefcount")
  (c-name "g_atomic_ref_count_init")
  (return-type "none")
)

(define-method inc
  (of-object "gatomicrefcount")
  (c-name "g_atomic_ref_count_inc")
  (return-type "none")
)

(define-method dec
  (of-object "gatomicrefcount")
  (c-name "g_atomic_ref_count_dec")
  (return-type "gboolean")
)

(define-method compare
  (of-object "gatomicrefcount")
  (c-name "g_atomic_ref_count_compare")
  (return-type "gboolean")
  (parameters
    '("gint" "val")
  )
)



;; From grefstring.h

(define-function g_ref_string_new
  (c-name "g_ref_string_new")
  (is-constructor-of "GRefString")
  (return-type "char*")
  (parameters
    '("const-char*" "str")
  )
)

(define-function g_ref_string_new_len
  (c-name "g_ref_string_new_len")
  (return-type "char*")
  (parameters
    '("const-char*" "str")
    '("gssize" "len")
  )
)

(define-function g_ref_string_new_intern
  (c-name "g_ref_string_new_intern")
  (return-type "char*")
  (parameters
    '("const-char*" "str")
  )
)

(define-function g_ref_string_acquire
  (c-name "g_ref_string_acquire")
  (return-type "char*")
  (parameters
    '("char*" "str")
  )
)

(define-function g_ref_string_release
  (c-name "g_ref_string_release")
  (return-type "none")
  (parameters
    '("char*" "str")
  )
)

(define-function g_ref_string_length
  (c-name "g_ref_string_length")
  (return-type "gsize")
  (parameters
    '("char*" "str")
  )
)



;; From gregex.h

(define-function g_regex_error_quark
  (c-name "g_regex_error_quark")
  (return-type "GQuark")
)

(define-function g_regex_new
  (c-name "g_regex_new")
  (is-constructor-of "GRegex")
  (return-type "GRegex*")
  (parameters
    '("const-gchar*" "pattern")
    '("GRegexCompileFlags" "compile_options")
    '("GRegexMatchFlags" "match_options")
    '("GError**" "error")
  )
)

(define-method ref
  (of-object "GRegex")
  (c-name "g_regex_ref")
  (return-type "GRegex*")
)

(define-method unref
  (of-object "GRegex")
  (c-name "g_regex_unref")
  (return-type "none")
)

(define-method get_pattern
  (of-object "GRegex")
  (c-name "g_regex_get_pattern")
  (return-type "const-gchar*")
)

(define-method get_max_backref
  (of-object "GRegex")
  (c-name "g_regex_get_max_backref")
  (return-type "gint")
)

(define-method get_capture_count
  (of-object "GRegex")
  (c-name "g_regex_get_capture_count")
  (return-type "gint")
)

(define-method get_has_cr_or_lf
  (of-object "GRegex")
  (c-name "g_regex_get_has_cr_or_lf")
  (return-type "gboolean")
)

(define-method get_max_lookbehind
  (of-object "GRegex")
  (c-name "g_regex_get_max_lookbehind")
  (return-type "gint")
)

(define-method get_string_number
  (of-object "GRegex")
  (c-name "g_regex_get_string_number")
  (return-type "gint")
  (parameters
    '("const-gchar*" "name")
  )
)

(define-function g_regex_escape_string
  (c-name "g_regex_escape_string")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "string")
    '("gint" "length")
  )
)

(define-function g_regex_escape_nul
  (c-name "g_regex_escape_nul")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "string")
    '("gint" "length")
  )
)

(define-method get_compile_flags
  (of-object "GRegex")
  (c-name "g_regex_get_compile_flags")
  (return-type "GRegexCompileFlags")
)

(define-method get_match_flags
  (of-object "GRegex")
  (c-name "g_regex_get_match_flags")
  (return-type "GRegexMatchFlags")
)

(define-function g_regex_match_simple
  (c-name "g_regex_match_simple")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "pattern")
    '("const-gchar*" "string")
    '("GRegexCompileFlags" "compile_options")
    '("GRegexMatchFlags" "match_options")
  )
)

(define-method match
  (of-object "GRegex")
  (c-name "g_regex_match")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "string")
    '("GRegexMatchFlags" "match_options")
    '("GMatchInfo**" "match_info")
  )
)

(define-method match_full
  (of-object "GRegex")
  (c-name "g_regex_match_full")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "string")
    '("gssize" "string_len")
    '("gint" "start_position")
    '("GRegexMatchFlags" "match_options")
    '("GMatchInfo**" "match_info")
    '("GError**" "error")
  )
)

(define-method match_all
  (of-object "GRegex")
  (c-name "g_regex_match_all")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "string")
    '("GRegexMatchFlags" "match_options")
    '("GMatchInfo**" "match_info")
  )
)

(define-method match_all_full
  (of-object "GRegex")
  (c-name "g_regex_match_all_full")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "string")
    '("gssize" "string_len")
    '("gint" "start_position")
    '("GRegexMatchFlags" "match_options")
    '("GMatchInfo**" "match_info")
    '("GError**" "error")
  )
)

(define-function g_regex_split_simple
  (c-name "g_regex_split_simple")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "pattern")
    '("const-gchar*" "string")
    '("GRegexCompileFlags" "compile_options")
    '("GRegexMatchFlags" "match_options")
  )
)

(define-method split
  (of-object "GRegex")
  (c-name "g_regex_split")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "string")
    '("GRegexMatchFlags" "match_options")
  )
)

(define-method split_full
  (of-object "GRegex")
  (c-name "g_regex_split_full")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "string")
    '("gssize" "string_len")
    '("gint" "start_position")
    '("GRegexMatchFlags" "match_options")
    '("gint" "max_tokens")
    '("GError**" "error")
  )
)

(define-method replace
  (of-object "GRegex")
  (c-name "g_regex_replace")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "string")
    '("gssize" "string_len")
    '("gint" "start_position")
    '("const-gchar*" "replacement")
    '("GRegexMatchFlags" "match_options")
    '("GError**" "error")
  )
)

(define-method replace_literal
  (of-object "GRegex")
  (c-name "g_regex_replace_literal")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "string")
    '("gssize" "string_len")
    '("gint" "start_position")
    '("const-gchar*" "replacement")
    '("GRegexMatchFlags" "match_options")
    '("GError**" "error")
  )
)

(define-method replace_eval
  (of-object "GRegex")
  (c-name "g_regex_replace_eval")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "string")
    '("gssize" "string_len")
    '("gint" "start_position")
    '("GRegexMatchFlags" "match_options")
    '("GRegexEvalCallback" "eval")
    '("gpointer" "user_data")
    '("GError**" "error")
  )
)

(define-function g_regex_check_replacement
  (c-name "g_regex_check_replacement")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "replacement")
    '("gboolean*" "has_references")
    '("GError**" "error")
  )
)

(define-method get_regex
  (of-object "GMatchInfo")
  (c-name "g_match_info_get_regex")
  (return-type "GRegex*")
)

(define-method get_string
  (of-object "GMatchInfo")
  (c-name "g_match_info_get_string")
  (return-type "const-gchar*")
)

(define-method ref
  (of-object "GMatchInfo")
  (c-name "g_match_info_ref")
  (return-type "GMatchInfo*")
)

(define-method unref
  (of-object "GMatchInfo")
  (c-name "g_match_info_unref")
  (return-type "none")
)

(define-method free
  (of-object "GMatchInfo")
  (c-name "g_match_info_free")
  (return-type "none")
)

(define-method next
  (of-object "GMatchInfo")
  (c-name "g_match_info_next")
  (return-type "gboolean")
  (parameters
    '("GError**" "error")
  )
)

(define-method matches
  (of-object "GMatchInfo")
  (c-name "g_match_info_matches")
  (return-type "gboolean")
)

(define-method get_match_count
  (of-object "GMatchInfo")
  (c-name "g_match_info_get_match_count")
  (return-type "gint")
)

(define-method is_partial_match
  (of-object "GMatchInfo")
  (c-name "g_match_info_is_partial_match")
  (return-type "gboolean")
)

(define-method expand_references
  (of-object "GMatchInfo")
  (c-name "g_match_info_expand_references")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "string_to_expand")
    '("GError**" "error")
  )
)

(define-method fetch
  (of-object "GMatchInfo")
  (c-name "g_match_info_fetch")
  (return-type "gchar*")
  (parameters
    '("gint" "match_num")
  )
)

(define-method fetch_pos
  (of-object "GMatchInfo")
  (c-name "g_match_info_fetch_pos")
  (return-type "gboolean")
  (parameters
    '("gint" "match_num")
    '("gint*" "start_pos")
    '("gint*" "end_pos")
  )
)

(define-method fetch_named
  (of-object "GMatchInfo")
  (c-name "g_match_info_fetch_named")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "name")
  )
)

(define-method fetch_named_pos
  (of-object "GMatchInfo")
  (c-name "g_match_info_fetch_named_pos")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "name")
    '("gint*" "start_pos")
    '("gint*" "end_pos")
  )
)

(define-method fetch_all
  (of-object "GMatchInfo")
  (c-name "g_match_info_fetch_all")
  (return-type "gchar**")
)



;; From gscanner.h

(define-function g_scanner_new
  (c-name "g_scanner_new")
  (is-constructor-of "GScanner")
  (return-type "GScanner*")
  (parameters
    '("const-GScannerConfig*" "config_templ")
  )
)

(define-method destroy
  (of-object "GScanner")
  (c-name "g_scanner_destroy")
  (return-type "none")
)

(define-method input_file
  (of-object "GScanner")
  (c-name "g_scanner_input_file")
  (return-type "none")
  (parameters
    '("gint" "input_fd")
  )
)

(define-method sync_file_offset
  (of-object "GScanner")
  (c-name "g_scanner_sync_file_offset")
  (return-type "none")
)

(define-method input_text
  (of-object "GScanner")
  (c-name "g_scanner_input_text")
  (return-type "none")
  (parameters
    '("const-gchar*" "text")
    '("guint" "text_len")
  )
)

(define-method get_next_token
  (of-object "GScanner")
  (c-name "g_scanner_get_next_token")
  (return-type "GTokenType")
)

(define-method peek_next_token
  (of-object "GScanner")
  (c-name "g_scanner_peek_next_token")
  (return-type "GTokenType")
)

(define-method cur_token
  (of-object "GScanner")
  (c-name "g_scanner_cur_token")
  (return-type "GTokenType")
)

(define-method cur_value
  (of-object "GScanner")
  (c-name "g_scanner_cur_value")
  (return-type "GTokenValue")
)

(define-method cur_line
  (of-object "GScanner")
  (c-name "g_scanner_cur_line")
  (return-type "guint")
)

(define-method cur_position
  (of-object "GScanner")
  (c-name "g_scanner_cur_position")
  (return-type "guint")
)

(define-method eof
  (of-object "GScanner")
  (c-name "g_scanner_eof")
  (return-type "gboolean")
)

(define-method set_scope
  (of-object "GScanner")
  (c-name "g_scanner_set_scope")
  (return-type "guint")
  (parameters
    '("guint" "scope_id")
  )
)

(define-method scope_add_symbol
  (of-object "GScanner")
  (c-name "g_scanner_scope_add_symbol")
  (return-type "none")
  (parameters
    '("guint" "scope_id")
    '("const-gchar*" "symbol")
    '("gpointer" "value")
  )
)

(define-method scope_remove_symbol
  (of-object "GScanner")
  (c-name "g_scanner_scope_remove_symbol")
  (return-type "none")
  (parameters
    '("guint" "scope_id")
    '("const-gchar*" "symbol")
  )
)

(define-method scope_lookup_symbol
  (of-object "GScanner")
  (c-name "g_scanner_scope_lookup_symbol")
  (return-type "gpointer")
  (parameters
    '("guint" "scope_id")
    '("const-gchar*" "symbol")
  )
)

(define-method scope_foreach_symbol
  (of-object "GScanner")
  (c-name "g_scanner_scope_foreach_symbol")
  (return-type "none")
  (parameters
    '("guint" "scope_id")
    '("GHFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method lookup_symbol
  (of-object "GScanner")
  (c-name "g_scanner_lookup_symbol")
  (return-type "gpointer")
  (parameters
    '("const-gchar*" "symbol")
  )
)

(define-method unexp_token
  (of-object "GScanner")
  (c-name "g_scanner_unexp_token")
  (return-type "none")
  (parameters
    '("GTokenType" "expected_token")
    '("const-gchar*" "identifier_spec")
    '("const-gchar*" "symbol_spec")
    '("const-gchar*" "symbol_name")
    '("const-gchar*" "message")
    '("gint" "is_error")
  )
)

(define-method error
  (of-object "GScanner")
  (c-name "g_scanner_error")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-method warn
  (of-object "GScanner")
  (c-name "g_scanner_warn")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)



;; From gscripttable.h



;; From gsequence.h

(define-function g_sequence_new
  (c-name "g_sequence_new")
  (is-constructor-of "GSequence")
  (return-type "GSequence*")
  (parameters
    '("GDestroyNotify" "data_destroy")
  )
)

(define-method free
  (of-object "GSequence")
  (c-name "g_sequence_free")
  (return-type "none")
)

(define-method get_length
  (of-object "GSequence")
  (c-name "g_sequence_get_length")
  (return-type "gint")
)

(define-method foreach
  (of-object "GSequence")
  (c-name "g_sequence_foreach")
  (return-type "none")
  (parameters
    '("GFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-function g_sequence_foreach_range
  (c-name "g_sequence_foreach_range")
  (return-type "none")
  (parameters
    '("GSequenceIter*" "begin")
    '("GSequenceIter*" "end")
    '("GFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method sort
  (of-object "GSequence")
  (c-name "g_sequence_sort")
  (return-type "none")
  (parameters
    '("GCompareDataFunc" "cmp_func")
    '("gpointer" "cmp_data")
  )
)

(define-method sort_iter
  (of-object "GSequence")
  (c-name "g_sequence_sort_iter")
  (return-type "none")
  (parameters
    '("GSequenceIterCompareFunc" "cmp_func")
    '("gpointer" "cmp_data")
  )
)

(define-method is_empty
  (of-object "GSequence")
  (c-name "g_sequence_is_empty")
  (return-type "gboolean")
)

(define-method get_begin_iter
  (of-object "GSequence")
  (c-name "g_sequence_get_begin_iter")
  (return-type "GSequenceIter*")
)

(define-method get_end_iter
  (of-object "GSequence")
  (c-name "g_sequence_get_end_iter")
  (return-type "GSequenceIter*")
)

(define-method get_iter_at_pos
  (of-object "GSequence")
  (c-name "g_sequence_get_iter_at_pos")
  (return-type "GSequenceIter*")
  (parameters
    '("gint" "pos")
  )
)

(define-method append
  (of-object "GSequence")
  (c-name "g_sequence_append")
  (return-type "GSequenceIter*")
  (parameters
    '("gpointer" "data")
  )
)

(define-method prepend
  (of-object "GSequence")
  (c-name "g_sequence_prepend")
  (return-type "GSequenceIter*")
  (parameters
    '("gpointer" "data")
  )
)

(define-function g_sequence_insert_before
  (c-name "g_sequence_insert_before")
  (return-type "GSequenceIter*")
  (parameters
    '("GSequenceIter*" "iter")
    '("gpointer" "data")
  )
)

(define-function g_sequence_move
  (c-name "g_sequence_move")
  (return-type "none")
  (parameters
    '("GSequenceIter*" "src")
    '("GSequenceIter*" "dest")
  )
)

(define-function g_sequence_swap
  (c-name "g_sequence_swap")
  (return-type "none")
  (parameters
    '("GSequenceIter*" "a")
    '("GSequenceIter*" "b")
  )
)

(define-method insert_sorted
  (of-object "GSequence")
  (c-name "g_sequence_insert_sorted")
  (return-type "GSequenceIter*")
  (parameters
    '("gpointer" "data")
    '("GCompareDataFunc" "cmp_func")
    '("gpointer" "cmp_data")
  )
)

(define-method insert_sorted_iter
  (of-object "GSequence")
  (c-name "g_sequence_insert_sorted_iter")
  (return-type "GSequenceIter*")
  (parameters
    '("gpointer" "data")
    '("GSequenceIterCompareFunc" "iter_cmp")
    '("gpointer" "cmp_data")
  )
)

(define-function g_sequence_sort_changed
  (c-name "g_sequence_sort_changed")
  (return-type "none")
  (parameters
    '("GSequenceIter*" "iter")
    '("GCompareDataFunc" "cmp_func")
    '("gpointer" "cmp_data")
  )
)

(define-function g_sequence_sort_changed_iter
  (c-name "g_sequence_sort_changed_iter")
  (return-type "none")
  (parameters
    '("GSequenceIter*" "iter")
    '("GSequenceIterCompareFunc" "iter_cmp")
    '("gpointer" "cmp_data")
  )
)

(define-function g_sequence_remove
  (c-name "g_sequence_remove")
  (return-type "none")
  (parameters
    '("GSequenceIter*" "iter")
  )
)

(define-function g_sequence_remove_range
  (c-name "g_sequence_remove_range")
  (return-type "none")
  (parameters
    '("GSequenceIter*" "begin")
    '("GSequenceIter*" "end")
  )
)

(define-function g_sequence_move_range
  (c-name "g_sequence_move_range")
  (return-type "none")
  (parameters
    '("GSequenceIter*" "dest")
    '("GSequenceIter*" "begin")
    '("GSequenceIter*" "end")
  )
)

(define-method search
  (of-object "GSequence")
  (c-name "g_sequence_search")
  (return-type "GSequenceIter*")
  (parameters
    '("gpointer" "data")
    '("GCompareDataFunc" "cmp_func")
    '("gpointer" "cmp_data")
  )
)

(define-method search_iter
  (of-object "GSequence")
  (c-name "g_sequence_search_iter")
  (return-type "GSequenceIter*")
  (parameters
    '("gpointer" "data")
    '("GSequenceIterCompareFunc" "iter_cmp")
    '("gpointer" "cmp_data")
  )
)

(define-method lookup
  (of-object "GSequence")
  (c-name "g_sequence_lookup")
  (return-type "GSequenceIter*")
  (parameters
    '("gpointer" "data")
    '("GCompareDataFunc" "cmp_func")
    '("gpointer" "cmp_data")
  )
)

(define-method lookup_iter
  (of-object "GSequence")
  (c-name "g_sequence_lookup_iter")
  (return-type "GSequenceIter*")
  (parameters
    '("gpointer" "data")
    '("GSequenceIterCompareFunc" "iter_cmp")
    '("gpointer" "cmp_data")
  )
)

(define-function g_sequence_get
  (c-name "g_sequence_get")
  (return-type "gpointer")
  (parameters
    '("GSequenceIter*" "iter")
  )
)

(define-function g_sequence_set
  (c-name "g_sequence_set")
  (return-type "none")
  (parameters
    '("GSequenceIter*" "iter")
    '("gpointer" "data")
  )
)

(define-method is_begin
  (of-object "GSequenceIter")
  (c-name "g_sequence_iter_is_begin")
  (return-type "gboolean")
)

(define-method is_end
  (of-object "GSequenceIter")
  (c-name "g_sequence_iter_is_end")
  (return-type "gboolean")
)

(define-method next
  (of-object "GSequenceIter")
  (c-name "g_sequence_iter_next")
  (return-type "GSequenceIter*")
)

(define-method prev
  (of-object "GSequenceIter")
  (c-name "g_sequence_iter_prev")
  (return-type "GSequenceIter*")
)

(define-method get_position
  (of-object "GSequenceIter")
  (c-name "g_sequence_iter_get_position")
  (return-type "gint")
)

(define-method move
  (of-object "GSequenceIter")
  (c-name "g_sequence_iter_move")
  (return-type "GSequenceIter*")
  (parameters
    '("gint" "delta")
  )
)

(define-method get_sequence
  (of-object "GSequenceIter")
  (c-name "g_sequence_iter_get_sequence")
  (return-type "GSequence*")
)

(define-method compare
  (of-object "GSequenceIter")
  (c-name "g_sequence_iter_compare")
  (return-type "gint")
  (parameters
    '("GSequenceIter*" "b")
  )
)

(define-function g_sequence_range_get_midpoint
  (c-name "g_sequence_range_get_midpoint")
  (return-type "GSequenceIter*")
  (parameters
    '("GSequenceIter*" "begin")
    '("GSequenceIter*" "end")
  )
)



;; From gshell.h

(define-function g_shell_error_quark
  (c-name "g_shell_error_quark")
  (return-type "GQuark")
)

(define-function g_shell_quote
  (c-name "g_shell_quote")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "unquoted_string")
  )
)

(define-function g_shell_unquote
  (c-name "g_shell_unquote")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "quoted_string")
    '("GError**" "error")
  )
)

(define-function g_shell_parse_argv
  (c-name "g_shell_parse_argv")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "command_line")
    '("gint*" "argcp")
    '("gchar***" "argvp")
    '("GError**" "error")
  )
)



;; From gslice.h

(define-function g_slice_alloc
  (c-name "g_slice_alloc")
  (return-type "gpointer")
  (parameters
    '("gsize" "block_size")
  )
)

(define-function g_slice_alloc0
  (c-name "g_slice_alloc0")
  (return-type "gpointer")
  (parameters
    '("gsize" "block_size")
  )
)

(define-function g_slice_copy
  (c-name "g_slice_copy")
  (return-type "gpointer")
  (parameters
    '("gsize" "block_size")
    '("gconstpointer" "mem_block")
  )
)

(define-function g_slice_free1
  (c-name "g_slice_free1")
  (return-type "none")
  (parameters
    '("gsize" "block_size")
    '("gpointer" "mem_block")
  )
)

(define-function g_slice_free_chain_with_offset
  (c-name "g_slice_free_chain_with_offset")
  (return-type "none")
  (parameters
    '("gsize" "block_size")
    '("gpointer" "mem_chain")
    '("gsize" "next_offset")
  )
)

(define-function g_slice_set_config
  (c-name "g_slice_set_config")
  (return-type "none")
  (parameters
    '("GSliceConfig" "ckey")
    '("gint64" "value")
  )
)

(define-function g_slice_get_config
  (c-name "g_slice_get_config")
  (return-type "gint64")
  (parameters
    '("GSliceConfig" "ckey")
  )
)

(define-function g_slice_get_config_state
  (c-name "g_slice_get_config_state")
  (return-type "gint64*")
  (parameters
    '("GSliceConfig" "ckey")
    '("gint64" "address")
    '("guint*" "n_values")
  )
)

(define-function g_slice_debug_tree_statistics
  (c-name "g_slice_debug_tree_statistics")
  (return-type "none")
)



;; From gslist.h

(define-function g_slist_alloc
  (c-name "g_slist_alloc")
  (return-type "GSList*")
)

(define-method free
  (of-object "GSList")
  (c-name "g_slist_free")
  (return-type "none")
)

(define-method free_1
  (of-object "GSList")
  (c-name "g_slist_free_1")
  (return-type "none")
)

(define-method free_full
  (of-object "GSList")
  (c-name "g_slist_free_full")
  (return-type "none")
  (parameters
    '("GDestroyNotify" "free_func")
  )
)

(define-method append
  (of-object "GSList")
  (c-name "g_slist_append")
  (return-type "GSList*")
  (parameters
    '("gpointer" "data")
  )
)

(define-method prepend
  (of-object "GSList")
  (c-name "g_slist_prepend")
  (return-type "GSList*")
  (parameters
    '("gpointer" "data")
  )
)

(define-method insert
  (of-object "GSList")
  (c-name "g_slist_insert")
  (return-type "GSList*")
  (parameters
    '("gpointer" "data")
    '("gint" "position")
  )
)

(define-method insert_sorted
  (of-object "GSList")
  (c-name "g_slist_insert_sorted")
  (return-type "GSList*")
  (parameters
    '("gpointer" "data")
    '("GCompareFunc" "func")
  )
)

(define-method insert_sorted_with_data
  (of-object "GSList")
  (c-name "g_slist_insert_sorted_with_data")
  (return-type "GSList*")
  (parameters
    '("gpointer" "data")
    '("GCompareDataFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method insert_before
  (of-object "GSList")
  (c-name "g_slist_insert_before")
  (return-type "GSList*")
  (parameters
    '("GSList*" "sibling")
    '("gpointer" "data")
  )
)

(define-method concat
  (of-object "GSList")
  (c-name "g_slist_concat")
  (return-type "GSList*")
  (parameters
    '("GSList*" "list2")
  )
)

(define-method remove
  (of-object "GSList")
  (c-name "g_slist_remove")
  (return-type "GSList*")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method remove_all
  (of-object "GSList")
  (c-name "g_slist_remove_all")
  (return-type "GSList*")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method remove_link
  (of-object "GSList")
  (c-name "g_slist_remove_link")
  (return-type "GSList*")
  (parameters
    '("GSList*" "link_")
  )
)

(define-method delete_link
  (of-object "GSList")
  (c-name "g_slist_delete_link")
  (return-type "GSList*")
  (parameters
    '("GSList*" "link_")
  )
)

(define-method reverse
  (of-object "GSList")
  (c-name "g_slist_reverse")
  (return-type "GSList*")
)

(define-method copy
  (of-object "GSList")
  (c-name "g_slist_copy")
  (return-type "GSList*")
)

(define-method copy_deep
  (of-object "GSList")
  (c-name "g_slist_copy_deep")
  (return-type "GSList*")
  (parameters
    '("GCopyFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method nth
  (of-object "GSList")
  (c-name "g_slist_nth")
  (return-type "GSList*")
  (parameters
    '("guint" "n")
  )
)

(define-method find
  (of-object "GSList")
  (c-name "g_slist_find")
  (return-type "GSList*")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method find_custom
  (of-object "GSList")
  (c-name "g_slist_find_custom")
  (return-type "GSList*")
  (parameters
    '("gconstpointer" "data")
    '("GCompareFunc" "func")
  )
)

(define-method position
  (of-object "GSList")
  (c-name "g_slist_position")
  (return-type "gint")
  (parameters
    '("GSList*" "llink")
  )
)

(define-method index
  (of-object "GSList")
  (c-name "g_slist_index")
  (return-type "gint")
  (parameters
    '("gconstpointer" "data")
  )
)

(define-method last
  (of-object "GSList")
  (c-name "g_slist_last")
  (return-type "GSList*")
)

(define-method length
  (of-object "GSList")
  (c-name "g_slist_length")
  (return-type "guint")
)

(define-method foreach
  (of-object "GSList")
  (c-name "g_slist_foreach")
  (return-type "none")
  (parameters
    '("GFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method sort
  (of-object "GSList")
  (c-name "g_slist_sort")
  (return-type "GSList*")
  (parameters
    '("GCompareFunc" "compare_func")
  )
)

(define-method sort_with_data
  (of-object "GSList")
  (c-name "g_slist_sort_with_data")
  (return-type "GSList*")
  (parameters
    '("GCompareDataFunc" "compare_func")
    '("gpointer" "user_data")
  )
)

(define-method nth_data
  (of-object "GSList")
  (c-name "g_slist_nth_data")
  (return-type "gpointer")
  (parameters
    '("guint" "n")
  )
)

(define-function g_clear_slist
  (c-name "g_clear_slist")
  (return-type "none")
  (parameters
    '("GSList**" "slist_ptr")
    '("GDestroyNotify" "destroy")
  )
)



;; From gspawn.h

(define-function g_spawn_error_quark
  (c-name "g_spawn_error_quark")
  (return-type "GQuark")
)

(define-function g_spawn_exit_error_quark
  (c-name "g_spawn_exit_error_quark")
  (return-type "GQuark")
)

(define-function g_spawn_async
  (c-name "g_spawn_async")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "working_directory")
    '("gchar**" "argv")
    '("gchar**" "envp")
    '("GSpawnFlags" "flags")
    '("GSpawnChildSetupFunc" "child_setup")
    '("gpointer" "user_data")
    '("GPid*" "child_pid")
    '("GError**" "error")
  )
)

(define-function g_spawn_async_with_pipes
  (c-name "g_spawn_async_with_pipes")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "working_directory")
    '("gchar**" "argv")
    '("gchar**" "envp")
    '("GSpawnFlags" "flags")
    '("GSpawnChildSetupFunc" "child_setup")
    '("gpointer" "user_data")
    '("GPid*" "child_pid")
    '("gint*" "standard_input")
    '("gint*" "standard_output")
    '("gint*" "standard_error")
    '("GError**" "error")
  )
)

(define-function g_spawn_async_with_fds
  (c-name "g_spawn_async_with_fds")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "working_directory")
    '("gchar**" "argv")
    '("gchar**" "envp")
    '("GSpawnFlags" "flags")
    '("GSpawnChildSetupFunc" "child_setup")
    '("gpointer" "user_data")
    '("GPid*" "child_pid")
    '("gint" "stdin_fd")
    '("gint" "stdout_fd")
    '("gint" "stderr_fd")
    '("GError**" "error")
  )
)

(define-function g_spawn_sync
  (c-name "g_spawn_sync")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "working_directory")
    '("gchar**" "argv")
    '("gchar**" "envp")
    '("GSpawnFlags" "flags")
    '("GSpawnChildSetupFunc" "child_setup")
    '("gpointer" "user_data")
    '("gchar**" "standard_output")
    '("gchar**" "standard_error")
    '("gint*" "exit_status")
    '("GError**" "error")
  )
)

(define-function g_spawn_command_line_sync
  (c-name "g_spawn_command_line_sync")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "command_line")
    '("gchar**" "standard_output")
    '("gchar**" "standard_error")
    '("gint*" "exit_status")
    '("GError**" "error")
  )
)

(define-function g_spawn_command_line_async
  (c-name "g_spawn_command_line_async")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "command_line")
    '("GError**" "error")
  )
)

(define-function g_spawn_check_exit_status
  (c-name "g_spawn_check_exit_status")
  (return-type "gboolean")
  (parameters
    '("gint" "exit_status")
    '("GError**" "error")
  )
)

(define-function g_spawn_close_pid
  (c-name "g_spawn_close_pid")
  (return-type "none")
  (parameters
    '("GPid" "pid")
  )
)



;; From gstdio.h

(define-function g_access
  (c-name "g_access")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
    '("int" "mode")
  )
)

(define-function g_chdir
  (c-name "g_chdir")
  (return-type "int")
  (parameters
    '("const-gchar*" "path")
  )
)

(define-function g_unlink
  (c-name "g_unlink")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
  )
)

(define-function g_rmdir
  (c-name "g_rmdir")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
  )
)

(define-function g_chmod
  (c-name "g_chmod")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
    '("int" "mode")
  )
)

(define-function g_open
  (c-name "g_open")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
    '("int" "flags")
    '("int" "mode")
  )
)

(define-function g_creat
  (c-name "g_creat")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
    '("int" "mode")
  )
)

(define-function g_rename
  (c-name "g_rename")
  (return-type "int")
  (parameters
    '("const-gchar*" "oldfilename")
    '("const-gchar*" "newfilename")
  )
)

(define-function g_mkdir
  (c-name "g_mkdir")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
    '("int" "mode")
  )
)

(define-function g_stat
  (c-name "g_stat")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
    '("GStatBuf*" "buf")
  )
)

(define-function g_lstat
  (c-name "g_lstat")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
    '("GStatBuf*" "buf")
  )
)

(define-function g_remove
  (c-name "g_remove")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
  )
)

(define-function g_fopen
  (c-name "g_fopen")
  (return-type "FILE*")
  (parameters
    '("const-gchar*" "filename")
    '("const-gchar*" "mode")
  )
)

(define-function g_freopen
  (c-name "g_freopen")
  (return-type "FILE*")
  (parameters
    '("const-gchar*" "filename")
    '("const-gchar*" "mode")
    '("FILE*" "stream")
  )
)

(define-function g_fsync
  (c-name "g_fsync")
  (return-type "gint")
  (parameters
    '("gint" "fd")
  )
)

(define-function g_utime
  (c-name "g_utime")
  (return-type "int")
  (parameters
    '("const-gchar*" "filename")
    '("struct-utimbuf*" "utb")
  )
)

(define-function g_close
  (c-name "g_close")
  (return-type "gboolean")
  (parameters
    '("gint" "fd")
    '("GError**" "error")
  )
)



;; From gstrfuncs.h

(define-function g_ascii_tolower
  (c-name "g_ascii_tolower")
  (return-type "gchar")
  (parameters
    '("gchar" "c")
  )
)

(define-function g_ascii_toupper
  (c-name "g_ascii_toupper")
  (return-type "gchar")
  (parameters
    '("gchar" "c")
  )
)

(define-function g_ascii_digit_value
  (c-name "g_ascii_digit_value")
  (return-type "gint")
  (parameters
    '("gchar" "c")
  )
)

(define-function g_ascii_xdigit_value
  (c-name "g_ascii_xdigit_value")
  (return-type "gint")
  (parameters
    '("gchar" "c")
  )
)

(define-function g_strdelimit
  (c-name "g_strdelimit")
  (return-type "gchar*")
  (parameters
    '("gchar*" "string")
    '("const-gchar*" "delimiters")
    '("gchar" "new_delimiter")
  )
)

(define-function g_strcanon
  (c-name "g_strcanon")
  (return-type "gchar*")
  (parameters
    '("gchar*" "string")
    '("const-gchar*" "valid_chars")
    '("gchar" "substitutor")
  )
)

(define-function g_strerror
  (c-name "g_strerror")
  (return-type "const-gchar*")
  (parameters
    '("gint" "errnum")
  )
)

(define-function g_strsignal
  (c-name "g_strsignal")
  (return-type "const-gchar*")
  (parameters
    '("gint" "signum")
  )
)

(define-function g_strreverse
  (c-name "g_strreverse")
  (return-type "gchar*")
  (parameters
    '("gchar*" "string")
  )
)

(define-function g_strlcpy
  (c-name "g_strlcpy")
  (return-type "gsize")
  (parameters
    '("gchar*" "dest")
    '("const-gchar*" "src")
    '("gsize" "dest_size")
  )
)

(define-function g_strlcat
  (c-name "g_strlcat")
  (return-type "gsize")
  (parameters
    '("gchar*" "dest")
    '("const-gchar*" "src")
    '("gsize" "dest_size")
  )
)

(define-function g_strstr_len
  (c-name "g_strstr_len")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "haystack")
    '("gssize" "haystack_len")
    '("const-gchar*" "needle")
  )
)

(define-function g_strrstr
  (c-name "g_strrstr")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "haystack")
    '("const-gchar*" "needle")
  )
)

(define-function g_strrstr_len
  (c-name "g_strrstr_len")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "haystack")
    '("gssize" "haystack_len")
    '("const-gchar*" "needle")
  )
)

(define-function g_str_has_suffix
  (c-name "g_str_has_suffix")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "str")
    '("const-gchar*" "suffix")
  )
)

(define-function g_str_has_prefix
  (c-name "g_str_has_prefix")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "str")
    '("const-gchar*" "prefix")
  )
)

(define-function g_strtod
  (c-name "g_strtod")
  (return-type "gdouble")
  (parameters
    '("const-gchar*" "nptr")
    '("gchar**" "endptr")
  )
)

(define-function g_ascii_strtod
  (c-name "g_ascii_strtod")
  (return-type "gdouble")
  (parameters
    '("const-gchar*" "nptr")
    '("gchar**" "endptr")
  )
)

(define-function g_ascii_strtoull
  (c-name "g_ascii_strtoull")
  (return-type "guint64")
  (parameters
    '("const-gchar*" "nptr")
    '("gchar**" "endptr")
    '("guint" "base")
  )
)

(define-function g_ascii_strtoll
  (c-name "g_ascii_strtoll")
  (return-type "gint64")
  (parameters
    '("const-gchar*" "nptr")
    '("gchar**" "endptr")
    '("guint" "base")
  )
)

(define-function g_ascii_dtostr
  (c-name "g_ascii_dtostr")
  (return-type "gchar*")
  (parameters
    '("gchar*" "buffer")
    '("gint" "buf_len")
    '("gdouble" "d")
  )
)

(define-function g_ascii_formatd
  (c-name "g_ascii_formatd")
  (return-type "gchar*")
  (parameters
    '("gchar*" "buffer")
    '("gint" "buf_len")
    '("const-gchar*" "format")
    '("gdouble" "d")
  )
)

(define-function g_strchug
  (c-name "g_strchug")
  (return-type "gchar*")
  (parameters
    '("gchar*" "string")
  )
)

(define-function g_strchomp
  (c-name "g_strchomp")
  (return-type "gchar*")
  (parameters
    '("gchar*" "string")
  )
)

(define-function g_ascii_strcasecmp
  (c-name "g_ascii_strcasecmp")
  (return-type "gint")
  (parameters
    '("const-gchar*" "s1")
    '("const-gchar*" "s2")
  )
)

(define-function g_ascii_strncasecmp
  (c-name "g_ascii_strncasecmp")
  (return-type "gint")
  (parameters
    '("const-gchar*" "s1")
    '("const-gchar*" "s2")
    '("gsize" "n")
  )
)

(define-function g_ascii_strdown
  (c-name "g_ascii_strdown")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
  )
)

(define-function g_ascii_strup
  (c-name "g_ascii_strup")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
  )
)

(define-function g_str_is_ascii
  (c-name "g_str_is_ascii")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "str")
  )
)

(define-function g_strcasecmp
  (c-name "g_strcasecmp")
  (return-type "gint")
  (parameters
    '("const-gchar*" "s1")
    '("const-gchar*" "s2")
  )
)

(define-function g_strncasecmp
  (c-name "g_strncasecmp")
  (return-type "gint")
  (parameters
    '("const-gchar*" "s1")
    '("const-gchar*" "s2")
    '("guint" "n")
  )
)

(define-function g_strdown
  (c-name "g_strdown")
  (return-type "gchar*")
  (parameters
    '("gchar*" "string")
  )
)

(define-function g_strup
  (c-name "g_strup")
  (return-type "gchar*")
  (parameters
    '("gchar*" "string")
  )
)

(define-function g_strdup
  (c-name "g_strdup")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
  )
)

(define-function g_strdup_printf
  (c-name "g_strdup_printf")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_strdup_vprintf
  (c-name "g_strdup_vprintf")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "format")
    '("va_list" "args")
  )
)

(define-function g_strndup
  (c-name "g_strndup")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gsize" "n")
  )
)

(define-function g_strnfill
  (c-name "g_strnfill")
  (return-type "gchar*")
  (parameters
    '("gsize" "length")
    '("gchar" "fill_char")
  )
)

(define-function g_strconcat
  (c-name "g_strconcat")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "string1")
  )
  (varargs #t)
)

(define-function g_strjoin
  (c-name "g_strjoin")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "separator")
  )
  (varargs #t)
)

(define-function g_strcompress
  (c-name "g_strcompress")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "source")
  )
)

(define-function g_strescape
  (c-name "g_strescape")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "source")
    '("const-gchar*" "exceptions")
  )
)

(define-function g_memdup
  (c-name "g_memdup")
  (return-type "gpointer")
  (parameters
    '("gconstpointer" "mem")
    '("guint" "byte_size")
  )
)

(define-function g_strsplit
  (c-name "g_strsplit")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "string")
    '("const-gchar*" "delimiter")
    '("gint" "max_tokens")
  )
)

(define-function g_strsplit_set
  (c-name "g_strsplit_set")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "string")
    '("const-gchar*" "delimiters")
    '("gint" "max_tokens")
  )
)

(define-function g_strjoinv
  (c-name "g_strjoinv")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "separator")
    '("gchar**" "str_array")
  )
)

(define-function g_strfreev
  (c-name "g_strfreev")
  (return-type "none")
  (parameters
    '("gchar**" "str_array")
  )
)

(define-function g_strdupv
  (c-name "g_strdupv")
  (return-type "gchar**")
  (parameters
    '("gchar**" "str_array")
  )
)

(define-function g_strv_length
  (c-name "g_strv_length")
  (return-type "guint")
  (parameters
    '("gchar**" "str_array")
  )
)

(define-function g_stpcpy
  (c-name "g_stpcpy")
  (return-type "gchar*")
  (parameters
    '("gchar*" "dest")
    '("const-char*" "src")
  )
)

(define-function g_str_to_ascii
  (c-name "g_str_to_ascii")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("const-gchar*" "from_locale")
  )
)

(define-function g_str_tokenize_and_fold
  (c-name "g_str_tokenize_and_fold")
  (return-type "gchar**")
  (parameters
    '("const-gchar*" "string")
    '("const-gchar*" "translit_locale")
    '("gchar***" "ascii_alternates")
  )
)

(define-function g_str_match_string
  (c-name "g_str_match_string")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "search_term")
    '("const-gchar*" "potential_hit")
    '("gboolean" "accept_alternates")
  )
)

(define-function g_strv_contains
  (c-name "g_strv_contains")
  (return-type "gboolean")
  (parameters
    '("const-gchar*-const*" "strv")
    '("const-gchar*" "str")
  )
)

(define-function g_strv_equal
  (c-name "g_strv_equal")
  (return-type "gboolean")
  (parameters
    '("const-gchar*-const*" "strv1")
    '("const-gchar*-const*" "strv2")
  )
)

(define-function g_number_parser_error_quark
  (c-name "g_number_parser_error_quark")
  (return-type "GQuark")
)

(define-function g_ascii_string_to_signed
  (c-name "g_ascii_string_to_signed")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "str")
    '("guint" "base")
    '("gint64" "min")
    '("gint64" "max")
    '("gint64*" "out_num")
    '("GError**" "error")
  )
)

(define-function g_ascii_string_to_unsigned
  (c-name "g_ascii_string_to_unsigned")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "str")
    '("guint" "base")
    '("guint64" "min")
    '("guint64" "max")
    '("guint64*" "out_num")
    '("GError**" "error")
  )
)



;; From gstringchunk.h

(define-function g_string_chunk_new
  (c-name "g_string_chunk_new")
  (is-constructor-of "GStringChunk")
  (return-type "GStringChunk*")
  (parameters
    '("gsize" "size")
  )
)

(define-method free
  (of-object "GStringChunk")
  (c-name "g_string_chunk_free")
  (return-type "none")
)

(define-method clear
  (of-object "GStringChunk")
  (c-name "g_string_chunk_clear")
  (return-type "none")
)

(define-method insert
  (of-object "GStringChunk")
  (c-name "g_string_chunk_insert")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "string")
  )
)

(define-method insert_len
  (of-object "GStringChunk")
  (c-name "g_string_chunk_insert_len")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "string")
    '("gssize" "len")
  )
)



;; From gstring.h

(define-function g_string_new
  (c-name "g_string_new")
  (is-constructor-of "GString")
  (return-type "GString*")
  (parameters
    '("const-gchar*" "init")
  )
)

(define-function g_string_new_len
  (c-name "g_string_new_len")
  (return-type "GString*")
  (parameters
    '("const-gchar*" "init")
    '("gssize" "len")
  )
)

(define-function g_string_sized_new
  (c-name "g_string_sized_new")
  (is-constructor-of "GStringSized")
  (return-type "GString*")
  (parameters
    '("gsize" "dfl_size")
  )
)

(define-method free
  (of-object "GString")
  (c-name "g_string_free")
  (return-type "gchar*")
  (parameters
    '("gboolean" "free_segment")
  )
)

(define-method free_to_bytes
  (of-object "GString")
  (c-name "g_string_free_to_bytes")
  (return-type "GBytes*")
)

(define-method equal
  (of-object "GString")
  (c-name "g_string_equal")
  (return-type "gboolean")
  (parameters
    '("const-GString*" "v2")
  )
)

(define-method hash
  (of-object "GString")
  (c-name "g_string_hash")
  (return-type "guint")
)

(define-method assign
  (of-object "GString")
  (c-name "g_string_assign")
  (return-type "GString*")
  (parameters
    '("const-gchar*" "rval")
  )
)

(define-method truncate
  (of-object "GString")
  (c-name "g_string_truncate")
  (return-type "GString*")
  (parameters
    '("gsize" "len")
  )
)

(define-method set_size
  (of-object "GString")
  (c-name "g_string_set_size")
  (return-type "GString*")
  (parameters
    '("gsize" "len")
  )
)

(define-method insert_len
  (of-object "GString")
  (c-name "g_string_insert_len")
  (return-type "GString*")
  (parameters
    '("gssize" "pos")
    '("const-gchar*" "val")
    '("gssize" "len")
  )
)

(define-method append
  (of-object "GString")
  (c-name "g_string_append")
  (return-type "GString*")
  (parameters
    '("const-gchar*" "val")
  )
)

(define-method append_len
  (of-object "GString")
  (c-name "g_string_append_len")
  (return-type "GString*")
  (parameters
    '("const-gchar*" "val")
    '("gssize" "len")
  )
)

(define-method append_c
  (of-object "GString")
  (c-name "g_string_append_c")
  (return-type "GString*")
  (parameters
    '("gchar" "c")
  )
)

(define-method append_unichar
  (of-object "GString")
  (c-name "g_string_append_unichar")
  (return-type "GString*")
  (parameters
    '("gunichar" "wc")
  )
)

(define-method prepend
  (of-object "GString")
  (c-name "g_string_prepend")
  (return-type "GString*")
  (parameters
    '("const-gchar*" "val")
  )
)

(define-method prepend_c
  (of-object "GString")
  (c-name "g_string_prepend_c")
  (return-type "GString*")
  (parameters
    '("gchar" "c")
  )
)

(define-method prepend_unichar
  (of-object "GString")
  (c-name "g_string_prepend_unichar")
  (return-type "GString*")
  (parameters
    '("gunichar" "wc")
  )
)

(define-method prepend_len
  (of-object "GString")
  (c-name "g_string_prepend_len")
  (return-type "GString*")
  (parameters
    '("const-gchar*" "val")
    '("gssize" "len")
  )
)

(define-method insert
  (of-object "GString")
  (c-name "g_string_insert")
  (return-type "GString*")
  (parameters
    '("gssize" "pos")
    '("const-gchar*" "val")
  )
)

(define-method insert_c
  (of-object "GString")
  (c-name "g_string_insert_c")
  (return-type "GString*")
  (parameters
    '("gssize" "pos")
    '("gchar" "c")
  )
)

(define-method insert_unichar
  (of-object "GString")
  (c-name "g_string_insert_unichar")
  (return-type "GString*")
  (parameters
    '("gssize" "pos")
    '("gunichar" "wc")
  )
)

(define-method overwrite
  (of-object "GString")
  (c-name "g_string_overwrite")
  (return-type "GString*")
  (parameters
    '("gsize" "pos")
    '("const-gchar*" "val")
  )
)

(define-method overwrite_len
  (of-object "GString")
  (c-name "g_string_overwrite_len")
  (return-type "GString*")
  (parameters
    '("gsize" "pos")
    '("const-gchar*" "val")
    '("gssize" "len")
  )
)

(define-method erase
  (of-object "GString")
  (c-name "g_string_erase")
  (return-type "GString*")
  (parameters
    '("gssize" "pos")
    '("gssize" "len")
  )
)

(define-method ascii_down
  (of-object "GString")
  (c-name "g_string_ascii_down")
  (return-type "GString*")
)

(define-method ascii_up
  (of-object "GString")
  (c-name "g_string_ascii_up")
  (return-type "GString*")
)

(define-method vprintf
  (of-object "GString")
  (c-name "g_string_vprintf")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
    '("va_list" "args")
  )
)

(define-method printf
  (of-object "GString")
  (c-name "g_string_printf")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-method append_vprintf
  (of-object "GString")
  (c-name "g_string_append_vprintf")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
    '("va_list" "args")
  )
)

(define-method append_printf
  (of-object "GString")
  (c-name "g_string_append_printf")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-method append_uri_escaped
  (of-object "GString")
  (c-name "g_string_append_uri_escaped")
  (return-type "GString*")
  (parameters
    '("const-gchar*" "unescaped")
    '("const-gchar*" "reserved_chars_allowed")
    '("gboolean" "allow_utf8")
  )
)

(define-method append_c_inline
  (of-object "GString")
  (c-name "g_string_append_c_inline")
  (return-type "GString*")
  (parameters
    '("gchar" "c")
  )
)

(define-method down
  (of-object "GString")
  (c-name "g_string_down")
  (return-type "GString*")
)

(define-method up
  (of-object "GString")
  (c-name "g_string_up")
  (return-type "GString*")
)



;; From gtestutils.h

(define-function g_strcmp0
  (c-name "g_strcmp0")
  (return-type "int")
  (parameters
    '("const-char*" "str1")
    '("const-char*" "str2")
  )
)

(define-function g_test_minimized_result
  (c-name "g_test_minimized_result")
  (return-type "none")
  (parameters
    '("double" "minimized_quantity")
    '("const-char*" "format")
  )
  (varargs #t)
)

(define-function g_test_maximized_result
  (c-name "g_test_maximized_result")
  (return-type "none")
  (parameters
    '("double" "maximized_quantity")
    '("const-char*" "format")
  )
  (varargs #t)
)

(define-function g_test_init
  (c-name "g_test_init")
  (return-type "none")
  (parameters
    '("int*" "argc")
    '("char***" "argv")
  )
  (varargs #t)
)

(define-function g_test_subprocess
  (c-name "g_test_subprocess")
  (return-type "gboolean")
)

(define-function g_test_run
  (c-name "g_test_run")
  (return-type "int")
)

(define-function g_test_add_func
  (c-name "g_test_add_func")
  (return-type "none")
  (parameters
    '("const-char*" "testpath")
    '("GTestFunc" "test_func")
  )
)

(define-function g_test_add_data_func
  (c-name "g_test_add_data_func")
  (return-type "none")
  (parameters
    '("const-char*" "testpath")
    '("gconstpointer" "test_data")
    '("GTestDataFunc" "test_func")
  )
)

(define-function g_test_add_data_func_full
  (c-name "g_test_add_data_func_full")
  (return-type "none")
  (parameters
    '("const-char*" "testpath")
    '("gpointer" "test_data")
    '("GTestDataFunc" "test_func")
    '("GDestroyNotify" "data_free_func")
  )
)

(define-function g_test_fail
  (c-name "g_test_fail")
  (return-type "none")
)

(define-function g_test_incomplete
  (c-name "g_test_incomplete")
  (return-type "none")
  (parameters
    '("const-gchar*" "msg")
  )
)

(define-function g_test_skip
  (c-name "g_test_skip")
  (return-type "none")
  (parameters
    '("const-gchar*" "msg")
  )
)

(define-function g_test_failed
  (c-name "g_test_failed")
  (return-type "gboolean")
)

(define-function g_test_set_nonfatal_assertions
  (c-name "g_test_set_nonfatal_assertions")
  (return-type "none")
)

(define-function g_test_message
  (c-name "g_test_message")
  (return-type "none")
  (parameters
    '("const-char*" "format")
  )
  (varargs #t)
)

(define-function g_test_bug_base
  (c-name "g_test_bug_base")
  (return-type "none")
  (parameters
    '("const-char*" "uri_pattern")
  )
)

(define-function g_test_bug
  (c-name "g_test_bug")
  (return-type "none")
  (parameters
    '("const-char*" "bug_uri_snippet")
  )
)

(define-function g_test_summary
  (c-name "g_test_summary")
  (return-type "none")
  (parameters
    '("const-char*" "summary")
  )
)

(define-function g_test_timer_start
  (c-name "g_test_timer_start")
  (return-type "none")
)

(define-function g_test_timer_elapsed
  (c-name "g_test_timer_elapsed")
  (return-type "double")
)

(define-function g_test_timer_last
  (c-name "g_test_timer_last")
  (return-type "double")
)

(define-function g_test_queue_free
  (c-name "g_test_queue_free")
  (return-type "none")
  (parameters
    '("gpointer" "gfree_pointer")
  )
)

(define-function g_test_queue_destroy
  (c-name "g_test_queue_destroy")
  (return-type "none")
  (parameters
    '("GDestroyNotify" "destroy_func")
    '("gpointer" "destroy_data")
  )
)

(define-function g_test_trap_fork
  (c-name "g_test_trap_fork")
  (return-type "gboolean")
  (parameters
    '("guint64" "usec_timeout")
    '("GTestTrapFlags" "test_trap_flags")
  )
)

(define-function g_test_trap_subprocess
  (c-name "g_test_trap_subprocess")
  (return-type "none")
  (parameters
    '("const-char*" "test_path")
    '("guint64" "usec_timeout")
    '("GTestSubprocessFlags" "test_flags")
  )
)

(define-function g_test_trap_has_passed
  (c-name "g_test_trap_has_passed")
  (return-type "gboolean")
)

(define-function g_test_trap_reached_timeout
  (c-name "g_test_trap_reached_timeout")
  (return-type "gboolean")
)

(define-function g_test_rand_int
  (c-name "g_test_rand_int")
  (return-type "gint32")
)

(define-function g_test_rand_int_range
  (c-name "g_test_rand_int_range")
  (return-type "gint32")
  (parameters
    '("gint32" "begin")
    '("gint32" "end")
  )
)

(define-function g_test_rand_double
  (c-name "g_test_rand_double")
  (return-type "double")
)

(define-function g_test_rand_double_range
  (c-name "g_test_rand_double_range")
  (return-type "double")
  (parameters
    '("double" "range_start")
    '("double" "range_end")
  )
)

(define-function g_test_create_case
  (c-name "g_test_create_case")
  (return-type "GTestCase*")
  (parameters
    '("const-char*" "test_name")
    '("gsize" "data_size")
    '("gconstpointer" "test_data")
    '("GTestFixtureFunc" "data_setup")
    '("GTestFixtureFunc" "data_test")
    '("GTestFixtureFunc" "data_teardown")
  )
)

(define-function g_test_create_suite
  (c-name "g_test_create_suite")
  (return-type "GTestSuite*")
  (parameters
    '("const-char*" "suite_name")
  )
)

(define-function g_test_get_root
  (c-name "g_test_get_root")
  (return-type "GTestSuite*")
)

(define-method add
  (of-object "GTestSuite")
  (c-name "g_test_suite_add")
  (return-type "none")
  (parameters
    '("GTestCase*" "test_case")
  )
)

(define-method add_suite
  (of-object "GTestSuite")
  (c-name "g_test_suite_add_suite")
  (return-type "none")
  (parameters
    '("GTestSuite*" "nestedsuite")
  )
)

(define-function g_test_run_suite
  (c-name "g_test_run_suite")
  (return-type "int")
  (parameters
    '("GTestSuite*" "suite")
  )
)

(define-function g_test_trap_assertions
  (c-name "g_test_trap_assertions")
  (return-type "none")
  (parameters
    '("const-char*" "domain")
    '("const-char*" "file")
    '("int" "line")
    '("const-char*" "func")
    '("guint64" "assertion_flags")
    '("const-char*" "pattern")
  )
)

(define-function g_assertion_message
  (c-name "g_assertion_message")
  (return-type "none")
  (parameters
    '("const-char*" "domain")
    '("const-char*" "file")
    '("int" "line")
    '("const-char*" "func")
    '("const-char*" "message")
  )
)

(define-function g_assertion_message_expr
  (c-name "g_assertion_message_expr")
  (return-type "none")
  (parameters
    '("const-char*" "domain")
    '("const-char*" "file")
    '("int" "line")
    '("const-char*" "func")
    '("const-char*" "expr")
  )
)

(define-function g_assertion_message_cmpstr
  (c-name "g_assertion_message_cmpstr")
  (return-type "none")
  (parameters
    '("const-char*" "domain")
    '("const-char*" "file")
    '("int" "line")
    '("const-char*" "func")
    '("const-char*" "expr")
    '("const-char*" "arg1")
    '("const-char*" "cmp")
    '("const-char*" "arg2")
  )
)

(define-function g_assertion_message_cmpnum
  (c-name "g_assertion_message_cmpnum")
  (return-type "none")
  (parameters
    '("const-char*" "domain")
    '("const-char*" "file")
    '("int" "line")
    '("const-char*" "func")
    '("const-char*" "expr")
    '("long-double" "arg1")
    '("const-char*" "cmp")
    '("long-double" "arg2")
    '("char" "numtype")
  )
)

(define-function g_assertion_message_error
  (c-name "g_assertion_message_error")
  (return-type "none")
  (parameters
    '("const-char*" "domain")
    '("const-char*" "file")
    '("int" "line")
    '("const-char*" "func")
    '("const-char*" "expr")
    '("const-GError*" "error")
    '("GQuark" "error_domain")
    '("int" "error_code")
  )
)

(define-function g_test_add_vtable
  (c-name "g_test_add_vtable")
  (return-type "none")
  (parameters
    '("const-char*" "testpath")
    '("gsize" "data_size")
    '("gconstpointer" "test_data")
    '("GTestFixtureFunc" "data_setup")
    '("GTestFixtureFunc" "data_test")
    '("GTestFixtureFunc" "data_teardown")
  )
)

(define-method name
  (of-object "GTestLogType")
  (c-name "g_test_log_type_name")
  (return-type "const-char*")
)

(define-function g_test_log_buffer_new
  (c-name "g_test_log_buffer_new")
  (is-constructor-of "GTestLogBuffer")
  (return-type "GTestLogBuffer*")
)

(define-method free
  (of-object "GTestLogBuffer")
  (c-name "g_test_log_buffer_free")
  (return-type "none")
)

(define-method push
  (of-object "GTestLogBuffer")
  (c-name "g_test_log_buffer_push")
  (return-type "none")
  (parameters
    '("guint" "n_bytes")
    '("const-guint8*" "bytes")
  )
)

(define-method pop
  (of-object "GTestLogBuffer")
  (c-name "g_test_log_buffer_pop")
  (return-type "GTestLogMsg*")
)

(define-method free
  (of-object "GTestLogMsg")
  (c-name "g_test_log_msg_free")
  (return-type "none")
)

(define-function g_test_log_set_fatal_handler
  (c-name "g_test_log_set_fatal_handler")
  (return-type "none")
  (parameters
    '("GTestLogFatalFunc" "log_func")
    '("gpointer" "user_data")
  )
)

(define-function g_test_expect_message
  (c-name "g_test_expect_message")
  (return-type "none")
  (parameters
    '("const-gchar*" "log_domain")
    '("GLogLevelFlags" "log_level")
    '("const-gchar*" "pattern")
  )
)

(define-function g_test_assert_expected_messages_internal
  (c-name "g_test_assert_expected_messages_internal")
  (return-type "none")
  (parameters
    '("const-char*" "domain")
    '("const-char*" "file")
    '("int" "line")
    '("const-char*" "func")
  )
)

(define-function g_test_build_filename
  (c-name "g_test_build_filename")
  (return-type "gchar*")
  (parameters
    '("GTestFileType" "file_type")
    '("const-gchar*" "first_path")
  )
  (varargs #t)
)

(define-function g_test_get_dir
  (c-name "g_test_get_dir")
  (return-type "const-gchar*")
  (parameters
    '("GTestFileType" "file_type")
  )
)

(define-function g_test_get_filename
  (c-name "g_test_get_filename")
  (return-type "const-gchar*")
  (parameters
    '("GTestFileType" "file_type")
    '("const-gchar*" "first_path")
  )
  (varargs #t)
)



;; From gthread.h

(define-function g_thread_error_quark
  (c-name "g_thread_error_quark")
  (return-type "GQuark")
)

(define-method ref
  (of-object "GThread")
  (c-name "g_thread_ref")
  (return-type "GThread*")
)

(define-method unref
  (of-object "GThread")
  (c-name "g_thread_unref")
  (return-type "none")
)

(define-function g_thread_new
  (c-name "g_thread_new")
  (is-constructor-of "GThread")
  (return-type "GThread*")
  (parameters
    '("const-gchar*" "name")
    '("GThreadFunc" "func")
    '("gpointer" "data")
  )
)

(define-function g_thread_try_new
  (c-name "g_thread_try_new")
  (is-constructor-of "GThreadTry")
  (return-type "GThread*")
  (parameters
    '("const-gchar*" "name")
    '("GThreadFunc" "func")
    '("gpointer" "data")
    '("GError**" "error")
  )
)

(define-function g_thread_self
  (c-name "g_thread_self")
  (return-type "GThread*")
)

(define-function g_thread_exit
  (c-name "g_thread_exit")
  (return-type "none")
  (parameters
    '("gpointer" "retval")
  )
)

(define-method join
  (of-object "GThread")
  (c-name "g_thread_join")
  (return-type "gpointer")
)

(define-function g_thread_yield
  (c-name "g_thread_yield")
  (return-type "none")
)

(define-method init
  (of-object "GMutex")
  (c-name "g_mutex_init")
  (return-type "none")
)

(define-method clear
  (of-object "GMutex")
  (c-name "g_mutex_clear")
  (return-type "none")
)

(define-method lock
  (of-object "GMutex")
  (c-name "g_mutex_lock")
  (return-type "none")
)

(define-method trylock
  (of-object "GMutex")
  (c-name "g_mutex_trylock")
  (return-type "gboolean")
)

(define-method unlock
  (of-object "GMutex")
  (c-name "g_mutex_unlock")
  (return-type "none")
)

(define-method init
  (of-object "GRWLock")
  (c-name "g_rw_lock_init")
  (return-type "none")
)

(define-method clear
  (of-object "GRWLock")
  (c-name "g_rw_lock_clear")
  (return-type "none")
)

(define-method writer_lock
  (of-object "GRWLock")
  (c-name "g_rw_lock_writer_lock")
  (return-type "none")
)

(define-method writer_trylock
  (of-object "GRWLock")
  (c-name "g_rw_lock_writer_trylock")
  (return-type "gboolean")
)

(define-method writer_unlock
  (of-object "GRWLock")
  (c-name "g_rw_lock_writer_unlock")
  (return-type "none")
)

(define-method reader_lock
  (of-object "GRWLock")
  (c-name "g_rw_lock_reader_lock")
  (return-type "none")
)

(define-method reader_trylock
  (of-object "GRWLock")
  (c-name "g_rw_lock_reader_trylock")
  (return-type "gboolean")
)

(define-method reader_unlock
  (of-object "GRWLock")
  (c-name "g_rw_lock_reader_unlock")
  (return-type "none")
)

(define-method init
  (of-object "GRecMutex")
  (c-name "g_rec_mutex_init")
  (return-type "none")
)

(define-method clear
  (of-object "GRecMutex")
  (c-name "g_rec_mutex_clear")
  (return-type "none")
)

(define-method lock
  (of-object "GRecMutex")
  (c-name "g_rec_mutex_lock")
  (return-type "none")
)

(define-method trylock
  (of-object "GRecMutex")
  (c-name "g_rec_mutex_trylock")
  (return-type "gboolean")
)

(define-method unlock
  (of-object "GRecMutex")
  (c-name "g_rec_mutex_unlock")
  (return-type "none")
)

(define-method init
  (of-object "GCond")
  (c-name "g_cond_init")
  (return-type "none")
)

(define-method clear
  (of-object "GCond")
  (c-name "g_cond_clear")
  (return-type "none")
)

(define-method wait
  (of-object "GCond")
  (c-name "g_cond_wait")
  (return-type "none")
  (parameters
    '("GMutex*" "mutex")
  )
)

(define-method signal
  (of-object "GCond")
  (c-name "g_cond_signal")
  (return-type "none")
)

(define-method broadcast
  (of-object "GCond")
  (c-name "g_cond_broadcast")
  (return-type "none")
)

(define-method wait_until
  (of-object "GCond")
  (c-name "g_cond_wait_until")
  (return-type "gboolean")
  (parameters
    '("GMutex*" "mutex")
    '("gint64" "end_time")
  )
)

(define-method get
  (of-object "GPrivate")
  (c-name "g_private_get")
  (return-type "gpointer")
)

(define-method set
  (of-object "GPrivate")
  (c-name "g_private_set")
  (return-type "none")
  (parameters
    '("gpointer" "value")
  )
)

(define-method replace
  (of-object "GPrivate")
  (c-name "g_private_replace")
  (return-type "none")
  (parameters
    '("gpointer" "value")
  )
)

(define-method impl
  (of-object "GOnce")
  (c-name "g_once_impl")
  (return-type "gpointer")
  (parameters
    '("GThreadFunc" "func")
    '("gpointer" "arg")
  )
)

(define-function g_once_init_enter
  (c-name "g_once_init_enter")
  (return-type "gboolean")
  (parameters
    '("volatile-void*" "location")
  )
)

(define-function g_once_init_leave
  (c-name "g_once_init_leave")
  (return-type "none")
  (parameters
    '("volatile-void*" "location")
    '("gsize" "result")
  )
)

(define-function g_get_num_processors
  (c-name "g_get_num_processors")
  (return-type "guint")
)



;; From gthreadpool.h

(define-function g_thread_pool_new
  (c-name "g_thread_pool_new")
  (is-constructor-of "GThreadPool")
  (return-type "GThreadPool*")
  (parameters
    '("GFunc" "func")
    '("gpointer" "user_data")
    '("gint" "max_threads")
    '("gboolean" "exclusive")
    '("GError**" "error")
  )
)

(define-method free
  (of-object "GThreadPool")
  (c-name "g_thread_pool_free")
  (return-type "none")
  (parameters
    '("gboolean" "immediate")
    '("gboolean" "wait_")
  )
)

(define-method push
  (of-object "GThreadPool")
  (c-name "g_thread_pool_push")
  (return-type "gboolean")
  (parameters
    '("gpointer" "data")
    '("GError**" "error")
  )
)

(define-method unprocessed
  (of-object "GThreadPool")
  (c-name "g_thread_pool_unprocessed")
  (return-type "guint")
)

(define-method set_sort_function
  (of-object "GThreadPool")
  (c-name "g_thread_pool_set_sort_function")
  (return-type "none")
  (parameters
    '("GCompareDataFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method move_to_front
  (of-object "GThreadPool")
  (c-name "g_thread_pool_move_to_front")
  (return-type "gboolean")
  (parameters
    '("gpointer" "data")
  )
)

(define-method set_max_threads
  (of-object "GThreadPool")
  (c-name "g_thread_pool_set_max_threads")
  (return-type "gboolean")
  (parameters
    '("gint" "max_threads")
    '("GError**" "error")
  )
)

(define-method get_max_threads
  (of-object "GThreadPool")
  (c-name "g_thread_pool_get_max_threads")
  (return-type "gint")
)

(define-method get_num_threads
  (of-object "GThreadPool")
  (c-name "g_thread_pool_get_num_threads")
  (return-type "guint")
)

(define-function g_thread_pool_set_max_unused_threads
  (c-name "g_thread_pool_set_max_unused_threads")
  (return-type "none")
  (parameters
    '("gint" "max_threads")
  )
)

(define-function g_thread_pool_get_max_unused_threads
  (c-name "g_thread_pool_get_max_unused_threads")
  (return-type "gint")
)

(define-function g_thread_pool_get_num_unused_threads
  (c-name "g_thread_pool_get_num_unused_threads")
  (return-type "guint")
)

(define-function g_thread_pool_stop_unused_threads
  (c-name "g_thread_pool_stop_unused_threads")
  (return-type "none")
)

(define-function g_thread_pool_set_max_idle_time
  (c-name "g_thread_pool_set_max_idle_time")
  (return-type "none")
  (parameters
    '("guint" "interval")
  )
)

(define-function g_thread_pool_get_max_idle_time
  (c-name "g_thread_pool_get_max_idle_time")
  (return-type "guint")
)



;; From gtimer.h

(define-function g_timer_new
  (c-name "g_timer_new")
  (is-constructor-of "GTimer")
  (return-type "GTimer*")
)

(define-method destroy
  (of-object "GTimer")
  (c-name "g_timer_destroy")
  (return-type "none")
)

(define-method start
  (of-object "GTimer")
  (c-name "g_timer_start")
  (return-type "none")
)

(define-method stop
  (of-object "GTimer")
  (c-name "g_timer_stop")
  (return-type "none")
)

(define-method reset
  (of-object "GTimer")
  (c-name "g_timer_reset")
  (return-type "none")
)

(define-method continue
  (of-object "GTimer")
  (c-name "g_timer_continue")
  (return-type "none")
)

(define-method elapsed
  (of-object "GTimer")
  (c-name "g_timer_elapsed")
  (return-type "gdouble")
  (parameters
    '("gulong*" "microseconds")
  )
)

(define-method is_active
  (of-object "GTimer")
  (c-name "g_timer_is_active")
  (return-type "gboolean")
)

(define-function g_usleep
  (c-name "g_usleep")
  (return-type "none")
  (parameters
    '("gulong" "microseconds")
  )
)

(define-method add
  (of-object "GTimeVal")
  (c-name "g_time_val_add")
  (return-type "none")
  (parameters
    '("glong" "microseconds")
  )
)

(define-function g_time_val_from_iso8601
  (c-name "g_time_val_from_iso8601")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "iso_date")
    '("GTimeVal*" "time_")
  )
)

(define-method to_iso8601
  (of-object "GTimeVal")
  (c-name "g_time_val_to_iso8601")
  (return-type "gchar*")
)



;; From gtimezone.h

(define-function g_time_zone_new
  (c-name "g_time_zone_new")
  (is-constructor-of "GTimeZone")
  (return-type "GTimeZone*")
  (parameters
    '("const-gchar*" "identifier")
  )
)

(define-function g_time_zone_new_utc
  (c-name "g_time_zone_new_utc")
  (return-type "GTimeZone*")
)

(define-function g_time_zone_new_local
  (c-name "g_time_zone_new_local")
  (return-type "GTimeZone*")
)

(define-function g_time_zone_new_offset
  (c-name "g_time_zone_new_offset")
  (return-type "GTimeZone*")
  (parameters
    '("gint32" "seconds")
  )
)

(define-method ref
  (of-object "GTimeZone")
  (c-name "g_time_zone_ref")
  (return-type "GTimeZone*")
)

(define-method unref
  (of-object "GTimeZone")
  (c-name "g_time_zone_unref")
  (return-type "none")
)

(define-method find_interval
  (of-object "GTimeZone")
  (c-name "g_time_zone_find_interval")
  (return-type "gint")
  (parameters
    '("GTimeType" "type")
    '("gint64" "time_")
  )
)

(define-method adjust_time
  (of-object "GTimeZone")
  (c-name "g_time_zone_adjust_time")
  (return-type "gint")
  (parameters
    '("GTimeType" "type")
    '("gint64*" "time_")
  )
)

(define-method get_abbreviation
  (of-object "GTimeZone")
  (c-name "g_time_zone_get_abbreviation")
  (return-type "const-gchar*")
  (parameters
    '("gint" "interval")
  )
)

(define-method get_offset
  (of-object "GTimeZone")
  (c-name "g_time_zone_get_offset")
  (return-type "gint32")
  (parameters
    '("gint" "interval")
  )
)

(define-method is_dst
  (of-object "GTimeZone")
  (c-name "g_time_zone_is_dst")
  (return-type "gboolean")
  (parameters
    '("gint" "interval")
  )
)

(define-method get_identifier
  (of-object "GTimeZone")
  (c-name "g_time_zone_get_identifier")
  (return-type "const-gchar*")
)



;; From gtranslit-data.h



;; From gtrashstack.h

(define-function g_trash_stack_push
  (c-name "g_trash_stack_push")
  (return-type "none")
  (parameters
    '("GTrashStack**" "stack_p")
    '("gpointer" "data_p")
  )
)

(define-function g_trash_stack_pop
  (c-name "g_trash_stack_pop")
  (return-type "gpointer")
  (parameters
    '("GTrashStack**" "stack_p")
  )
)

(define-function g_trash_stack_peek
  (c-name "g_trash_stack_peek")
  (return-type "gpointer")
  (parameters
    '("GTrashStack**" "stack_p")
  )
)

(define-function g_trash_stack_height
  (c-name "g_trash_stack_height")
  (return-type "guint")
  (parameters
    '("GTrashStack**" "stack_p")
  )
)



;; From gtree.h

(define-function g_tree_new
  (c-name "g_tree_new")
  (is-constructor-of "GTree")
  (return-type "GTree*")
  (parameters
    '("GCompareFunc" "key_compare_func")
  )
)

(define-function g_tree_new_with_data
  (c-name "g_tree_new_with_data")
  (return-type "GTree*")
  (parameters
    '("GCompareDataFunc" "key_compare_func")
    '("gpointer" "key_compare_data")
  )
)

(define-function g_tree_new_full
  (c-name "g_tree_new_full")
  (return-type "GTree*")
  (parameters
    '("GCompareDataFunc" "key_compare_func")
    '("gpointer" "key_compare_data")
    '("GDestroyNotify" "key_destroy_func")
    '("GDestroyNotify" "value_destroy_func")
  )
)

(define-method ref
  (of-object "GTree")
  (c-name "g_tree_ref")
  (return-type "GTree*")
)

(define-method unref
  (of-object "GTree")
  (c-name "g_tree_unref")
  (return-type "none")
)

(define-method destroy
  (of-object "GTree")
  (c-name "g_tree_destroy")
  (return-type "none")
)

(define-method insert
  (of-object "GTree")
  (c-name "g_tree_insert")
  (return-type "none")
  (parameters
    '("gpointer" "key")
    '("gpointer" "value")
  )
)

(define-method replace
  (of-object "GTree")
  (c-name "g_tree_replace")
  (return-type "none")
  (parameters
    '("gpointer" "key")
    '("gpointer" "value")
  )
)

(define-method remove
  (of-object "GTree")
  (c-name "g_tree_remove")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "key")
  )
)

(define-method steal
  (of-object "GTree")
  (c-name "g_tree_steal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "key")
  )
)

(define-method lookup
  (of-object "GTree")
  (c-name "g_tree_lookup")
  (return-type "gpointer")
  (parameters
    '("gconstpointer" "key")
  )
)

(define-method lookup_extended
  (of-object "GTree")
  (c-name "g_tree_lookup_extended")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "lookup_key")
    '("gpointer*" "orig_key")
    '("gpointer*" "value")
  )
)

(define-method foreach
  (of-object "GTree")
  (c-name "g_tree_foreach")
  (return-type "none")
  (parameters
    '("GTraverseFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method traverse
  (of-object "GTree")
  (c-name "g_tree_traverse")
  (return-type "none")
  (parameters
    '("GTraverseFunc" "traverse_func")
    '("GTraverseType" "traverse_type")
    '("gpointer" "user_data")
  )
)

(define-method search
  (of-object "GTree")
  (c-name "g_tree_search")
  (return-type "gpointer")
  (parameters
    '("GCompareFunc" "search_func")
    '("gconstpointer" "user_data")
  )
)

(define-method height
  (of-object "GTree")
  (c-name "g_tree_height")
  (return-type "gint")
)

(define-method nnodes
  (of-object "GTree")
  (c-name "g_tree_nnodes")
  (return-type "gint")
)



;; From gtypes.h



;; From gunibreak.h



;; From gunichartables.h



;; From gunicode.h

(define-method to_iso15924
  (of-object "GUnicodeScript")
  (c-name "g_unicode_script_to_iso15924")
  (return-type "guint32")
)

(define-function g_unicode_script_from_iso15924
  (c-name "g_unicode_script_from_iso15924")
  (return-type "GUnicodeScript")
  (parameters
    '("guint32" "iso15924")
  )
)

(define-method isalnum
  (of-object "gunichar")
  (c-name "g_unichar_isalnum")
  (return-type "gboolean")
)

(define-method isalpha
  (of-object "gunichar")
  (c-name "g_unichar_isalpha")
  (return-type "gboolean")
)

(define-method iscntrl
  (of-object "gunichar")
  (c-name "g_unichar_iscntrl")
  (return-type "gboolean")
)

(define-method isdigit
  (of-object "gunichar")
  (c-name "g_unichar_isdigit")
  (return-type "gboolean")
)

(define-method isgraph
  (of-object "gunichar")
  (c-name "g_unichar_isgraph")
  (return-type "gboolean")
)

(define-method islower
  (of-object "gunichar")
  (c-name "g_unichar_islower")
  (return-type "gboolean")
)

(define-method isprint
  (of-object "gunichar")
  (c-name "g_unichar_isprint")
  (return-type "gboolean")
)

(define-method ispunct
  (of-object "gunichar")
  (c-name "g_unichar_ispunct")
  (return-type "gboolean")
)

(define-method isspace
  (of-object "gunichar")
  (c-name "g_unichar_isspace")
  (return-type "gboolean")
)

(define-method isupper
  (of-object "gunichar")
  (c-name "g_unichar_isupper")
  (return-type "gboolean")
)

(define-method isxdigit
  (of-object "gunichar")
  (c-name "g_unichar_isxdigit")
  (return-type "gboolean")
)

(define-method istitle
  (of-object "gunichar")
  (c-name "g_unichar_istitle")
  (return-type "gboolean")
)

(define-method isdefined
  (of-object "gunichar")
  (c-name "g_unichar_isdefined")
  (return-type "gboolean")
)

(define-method iswide
  (of-object "gunichar")
  (c-name "g_unichar_iswide")
  (return-type "gboolean")
)

(define-method iswide_cjk
  (of-object "gunichar")
  (c-name "g_unichar_iswide_cjk")
  (return-type "gboolean")
)

(define-method iszerowidth
  (of-object "gunichar")
  (c-name "g_unichar_iszerowidth")
  (return-type "gboolean")
)

(define-method ismark
  (of-object "gunichar")
  (c-name "g_unichar_ismark")
  (return-type "gboolean")
)

(define-method toupper
  (of-object "gunichar")
  (c-name "g_unichar_toupper")
  (return-type "gunichar")
)

(define-method tolower
  (of-object "gunichar")
  (c-name "g_unichar_tolower")
  (return-type "gunichar")
)

(define-method totitle
  (of-object "gunichar")
  (c-name "g_unichar_totitle")
  (return-type "gunichar")
)

(define-method digit_value
  (of-object "gunichar")
  (c-name "g_unichar_digit_value")
  (return-type "gint")
)

(define-method xdigit_value
  (of-object "gunichar")
  (c-name "g_unichar_xdigit_value")
  (return-type "gint")
)

(define-method type
  (of-object "gunichar")
  (c-name "g_unichar_type")
  (return-type "GUnicodeType")
)

(define-method break_type
  (of-object "gunichar")
  (c-name "g_unichar_break_type")
  (return-type "GUnicodeBreakType")
)

(define-method combining_class
  (of-object "gunichar")
  (c-name "g_unichar_combining_class")
  (return-type "gint")
)

(define-method get_mirror_char
  (of-object "gunichar")
  (c-name "g_unichar_get_mirror_char")
  (return-type "gboolean")
  (parameters
    '("gunichar*" "mirrored_ch")
  )
)

(define-method get_script
  (of-object "gunichar")
  (c-name "g_unichar_get_script")
  (return-type "GUnicodeScript")
)

(define-method validate
  (of-object "gunichar")
  (c-name "g_unichar_validate")
  (return-type "gboolean")
)

(define-method compose
  (of-object "gunichar")
  (c-name "g_unichar_compose")
  (return-type "gboolean")
  (parameters
    '("gunichar" "b")
    '("gunichar*" "ch")
  )
)

(define-method decompose
  (of-object "gunichar")
  (c-name "g_unichar_decompose")
  (return-type "gboolean")
  (parameters
    '("gunichar*" "a")
    '("gunichar*" "b")
  )
)

(define-method fully_decompose
  (of-object "gunichar")
  (c-name "g_unichar_fully_decompose")
  (return-type "gsize")
  (parameters
    '("gboolean" "compat")
    '("gunichar*" "result")
    '("gsize" "result_len")
  )
)

(define-function g_unicode_canonical_ordering
  (c-name "g_unicode_canonical_ordering")
  (return-type "none")
  (parameters
    '("gunichar*" "string")
    '("gsize" "len")
  )
)

(define-function g_unicode_canonical_decomposition
  (c-name "g_unicode_canonical_decomposition")
  (return-type "gunichar*")
  (parameters
    '("gunichar" "ch")
    '("gsize*" "result_len")
  )
)

(define-function g_utf8_get_char
  (c-name "g_utf8_get_char")
  (return-type "gunichar")
  (parameters
    '("const-gchar*" "p")
  )
)

(define-function g_utf8_get_char_validated
  (c-name "g_utf8_get_char_validated")
  (return-type "gunichar")
  (parameters
    '("const-gchar*" "p")
    '("gssize" "max_len")
  )
)

(define-function g_utf8_offset_to_pointer
  (c-name "g_utf8_offset_to_pointer")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("glong" "offset")
  )
)

(define-function g_utf8_pointer_to_offset
  (c-name "g_utf8_pointer_to_offset")
  (return-type "glong")
  (parameters
    '("const-gchar*" "str")
    '("const-gchar*" "pos")
  )
)

(define-function g_utf8_prev_char
  (c-name "g_utf8_prev_char")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "p")
  )
)

(define-function g_utf8_find_next_char
  (c-name "g_utf8_find_next_char")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "p")
    '("const-gchar*" "end")
  )
)

(define-function g_utf8_find_prev_char
  (c-name "g_utf8_find_prev_char")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("const-gchar*" "p")
  )
)

(define-function g_utf8_strlen
  (c-name "g_utf8_strlen")
  (return-type "glong")
  (parameters
    '("const-gchar*" "p")
    '("gssize" "max")
  )
)

(define-function g_utf8_substring
  (c-name "g_utf8_substring")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("glong" "start_pos")
    '("glong" "end_pos")
  )
)

(define-function g_utf8_strncpy
  (c-name "g_utf8_strncpy")
  (return-type "gchar*")
  (parameters
    '("gchar*" "dest")
    '("const-gchar*" "src")
    '("gsize" "n")
  )
)

(define-function g_utf8_strchr
  (c-name "g_utf8_strchr")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "p")
    '("gssize" "len")
    '("gunichar" "c")
  )
)

(define-function g_utf8_strrchr
  (c-name "g_utf8_strrchr")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "p")
    '("gssize" "len")
    '("gunichar" "c")
  )
)

(define-function g_utf8_strreverse
  (c-name "g_utf8_strreverse")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
  )
)

(define-function g_utf8_to_utf16
  (c-name "g_utf8_to_utf16")
  (return-type "gunichar2*")
  (parameters
    '("const-gchar*" "str")
    '("glong" "len")
    '("glong*" "items_read")
    '("glong*" "items_written")
    '("GError**" "error")
  )
)

(define-function g_utf8_to_ucs4
  (c-name "g_utf8_to_ucs4")
  (return-type "gunichar*")
  (parameters
    '("const-gchar*" "str")
    '("glong" "len")
    '("glong*" "items_read")
    '("glong*" "items_written")
    '("GError**" "error")
  )
)

(define-function g_utf8_to_ucs4_fast
  (c-name "g_utf8_to_ucs4_fast")
  (return-type "gunichar*")
  (parameters
    '("const-gchar*" "str")
    '("glong" "len")
    '("glong*" "items_written")
  )
)

(define-function g_utf16_to_ucs4
  (c-name "g_utf16_to_ucs4")
  (return-type "gunichar*")
  (parameters
    '("const-gunichar2*" "str")
    '("glong" "len")
    '("glong*" "items_read")
    '("glong*" "items_written")
    '("GError**" "error")
  )
)

(define-function g_utf16_to_utf8
  (c-name "g_utf16_to_utf8")
  (return-type "gchar*")
  (parameters
    '("const-gunichar2*" "str")
    '("glong" "len")
    '("glong*" "items_read")
    '("glong*" "items_written")
    '("GError**" "error")
  )
)

(define-function g_ucs4_to_utf16
  (c-name "g_ucs4_to_utf16")
  (return-type "gunichar2*")
  (parameters
    '("const-gunichar*" "str")
    '("glong" "len")
    '("glong*" "items_read")
    '("glong*" "items_written")
    '("GError**" "error")
  )
)

(define-function g_ucs4_to_utf8
  (c-name "g_ucs4_to_utf8")
  (return-type "gchar*")
  (parameters
    '("const-gunichar*" "str")
    '("glong" "len")
    '("glong*" "items_read")
    '("glong*" "items_written")
    '("GError**" "error")
  )
)

(define-method to_utf8
  (of-object "gunichar")
  (c-name "g_unichar_to_utf8")
  (return-type "gint")
  (parameters
    '("gchar*" "outbuf")
  )
)

(define-function g_utf8_validate
  (c-name "g_utf8_validate")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "max_len")
    '("const-gchar**" "end")
  )
)

(define-function g_utf8_validate_len
  (c-name "g_utf8_validate_len")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "str")
    '("gsize" "max_len")
    '("const-gchar**" "end")
  )
)

(define-function g_utf8_strup
  (c-name "g_utf8_strup")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
  )
)

(define-function g_utf8_strdown
  (c-name "g_utf8_strdown")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
  )
)

(define-function g_utf8_casefold
  (c-name "g_utf8_casefold")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
  )
)

(define-function g_utf8_normalize
  (c-name "g_utf8_normalize")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
    '("GNormalizeMode" "mode")
  )
)

(define-function g_utf8_collate
  (c-name "g_utf8_collate")
  (return-type "gint")
  (parameters
    '("const-gchar*" "str1")
    '("const-gchar*" "str2")
  )
)

(define-function g_utf8_collate_key
  (c-name "g_utf8_collate_key")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
  )
)

(define-function g_utf8_collate_key_for_filename
  (c-name "g_utf8_collate_key_for_filename")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
  )
)

(define-function g_utf8_make_valid
  (c-name "g_utf8_make_valid")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "str")
    '("gssize" "len")
  )
)



;; From gunicomp.h



;; From gunidecomp.h



;; From guri.h

(define-method ref
  (of-object "GUri")
  (c-name "g_uri_ref")
  (return-type "GUri*")
)

(define-method unref
  (of-object "GUri")
  (c-name "g_uri_unref")
  (return-type "none")
)

(define-function g_uri_split_with_user
  (c-name "g_uri_split_with_user")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri_ref")
    '("GUriFlags" "flags")
    '("gchar**" "scheme")
    '("gchar**" "user")
    '("gchar**" "password")
    '("gchar**" "auth_params")
    '("gchar**" "host")
    '("gint*" "port")
    '("gchar**" "path")
    '("gchar**" "query")
    '("gchar**" "fragment")
    '("GError**" "error")
  )
)

(define-function g_uri_split_network
  (c-name "g_uri_split_network")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri_string")
    '("GUriFlags" "flags")
    '("gchar**" "scheme")
    '("gchar**" "host")
    '("gint*" "port")
    '("GError**" "error")
  )
)

(define-function g_uri_is_valid
  (c-name "g_uri_is_valid")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri_string")
    '("GUriFlags" "flags")
    '("GError**" "error")
  )
)

(define-function g_uri_join
  (c-name "g_uri_join")
  (return-type "gchar*")
  (parameters
    '("GUriFlags" "flags")
    '("const-gchar*" "scheme")
    '("const-gchar*" "userinfo")
    '("const-gchar*" "host")
    '("gint" "port")
    '("const-gchar*" "path")
    '("const-gchar*" "query")
    '("const-gchar*" "fragment")
  )
)

(define-function g_uri_join_with_user
  (c-name "g_uri_join_with_user")
  (return-type "gchar*")
  (parameters
    '("GUriFlags" "flags")
    '("const-gchar*" "scheme")
    '("const-gchar*" "user")
    '("const-gchar*" "password")
    '("const-gchar*" "auth_params")
    '("const-gchar*" "host")
    '("gint" "port")
    '("const-gchar*" "path")
    '("const-gchar*" "query")
    '("const-gchar*" "fragment")
  )
)

(define-function g_uri_parse
  (c-name "g_uri_parse")
  (return-type "GUri*")
  (parameters
    '("const-gchar*" "uri_string")
    '("GUriFlags" "flags")
    '("GError**" "error")
  )
)

(define-method parse_relative
  (of-object "GUri")
  (c-name "g_uri_parse_relative")
  (return-type "GUri*")
  (parameters
    '("const-gchar*" "uri_ref")
    '("GUriFlags" "flags")
    '("GError**" "error")
  )
)

(define-function g_uri_resolve_relative
  (c-name "g_uri_resolve_relative")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "base_uri_string")
    '("const-gchar*" "uri_ref")
    '("GUriFlags" "flags")
    '("GError**" "error")
  )
)

(define-function g_uri_build
  (c-name "g_uri_build")
  (return-type "GUri*")
  (parameters
    '("GUriFlags" "flags")
    '("const-gchar*" "scheme")
    '("const-gchar*" "userinfo")
    '("const-gchar*" "host")
    '("gint" "port")
    '("const-gchar*" "path")
    '("const-gchar*" "query")
    '("const-gchar*" "fragment")
  )
)

(define-function g_uri_build_with_user
  (c-name "g_uri_build_with_user")
  (return-type "GUri*")
  (parameters
    '("GUriFlags" "flags")
    '("const-gchar*" "scheme")
    '("const-gchar*" "user")
    '("const-gchar*" "password")
    '("const-gchar*" "auth_params")
    '("const-gchar*" "host")
    '("gint" "port")
    '("const-gchar*" "path")
    '("const-gchar*" "query")
    '("const-gchar*" "fragment")
  )
)

(define-method to_string_partial
  (of-object "GUri")
  (c-name "g_uri_to_string_partial")
  (return-type "char*")
  (parameters
    '("GUriHideFlags" "flags")
  )
)

(define-method get_scheme
  (of-object "GUri")
  (c-name "g_uri_get_scheme")
  (return-type "const-gchar*")
)

(define-method get_userinfo
  (of-object "GUri")
  (c-name "g_uri_get_userinfo")
  (return-type "const-gchar*")
)

(define-method get_user
  (of-object "GUri")
  (c-name "g_uri_get_user")
  (return-type "const-gchar*")
)

(define-method get_password
  (of-object "GUri")
  (c-name "g_uri_get_password")
  (return-type "const-gchar*")
)

(define-method get_auth_params
  (of-object "GUri")
  (c-name "g_uri_get_auth_params")
  (return-type "const-gchar*")
)

(define-method get_host
  (of-object "GUri")
  (c-name "g_uri_get_host")
  (return-type "const-gchar*")
)

(define-method get_port
  (of-object "GUri")
  (c-name "g_uri_get_port")
  (return-type "gint")
)

(define-method get_path
  (of-object "GUri")
  (c-name "g_uri_get_path")
  (return-type "const-gchar*")
)

(define-method get_query
  (of-object "GUri")
  (c-name "g_uri_get_query")
  (return-type "const-gchar*")
)

(define-method get_fragment
  (of-object "GUri")
  (c-name "g_uri_get_fragment")
  (return-type "const-gchar*")
)

(define-method get_flags
  (of-object "GUri")
  (c-name "g_uri_get_flags")
  (return-type "GUriFlags")
)

(define-method init
  (of-object "GUriParamsIter")
  (c-name "g_uri_params_iter_init")
  (return-type "none")
  (parameters
    '("const-gchar*" "params")
    '("gssize" "length")
    '("const-gchar*" "separators")
    '("GUriParamsFlags" "flags")
  )
)

(define-method next
  (of-object "GUriParamsIter")
  (c-name "g_uri_params_iter_next")
  (return-type "gboolean")
  (parameters
    '("gchar**" "attribute")
    '("gchar**" "value")
    '("GError**" "error")
  )
)

(define-function g_uri_error_quark
  (c-name "g_uri_error_quark")
  (return-type "GQuark")
)

(define-function g_uri_unescape_string
  (c-name "g_uri_unescape_string")
  (return-type "char*")
  (parameters
    '("const-char*" "escaped_string")
    '("const-char*" "illegal_characters")
  )
)

(define-function g_uri_unescape_segment
  (c-name "g_uri_unescape_segment")
  (return-type "char*")
  (parameters
    '("const-char*" "escaped_string")
    '("const-char*" "escaped_string_end")
    '("const-char*" "illegal_characters")
  )
)

(define-function g_uri_parse_scheme
  (c-name "g_uri_parse_scheme")
  (return-type "char*")
  (parameters
    '("const-char*" "uri")
  )
)

(define-function g_uri_peek_scheme
  (c-name "g_uri_peek_scheme")
  (return-type "const-char*")
  (parameters
    '("const-char*" "uri")
  )
)

(define-function g_uri_escape_string
  (c-name "g_uri_escape_string")
  (return-type "char*")
  (parameters
    '("const-char*" "unescaped")
    '("const-char*" "reserved_chars_allowed")
    '("gboolean" "allow_utf8")
  )
)

(define-function g_uri_unescape_bytes
  (c-name "g_uri_unescape_bytes")
  (return-type "GBytes*")
  (parameters
    '("const-char*" "escaped_string")
    '("gssize" "length")
    '("const-char*" "illegal_characters")
    '("GError**" "error")
  )
)

(define-function g_uri_escape_bytes
  (c-name "g_uri_escape_bytes")
  (return-type "char*")
  (parameters
    '("const-guint8*" "unescaped")
    '("gsize" "length")
    '("const-char*" "reserved_chars_allowed")
  )
)



;; From gutils.h

(define-function g_get_user_name
  (c-name "g_get_user_name")
  (return-type "const-gchar*")
)

(define-function g_get_real_name
  (c-name "g_get_real_name")
  (return-type "const-gchar*")
)

(define-function g_get_home_dir
  (c-name "g_get_home_dir")
  (return-type "const-gchar*")
)

(define-function g_get_tmp_dir
  (c-name "g_get_tmp_dir")
  (return-type "const-gchar*")
)

(define-function g_get_host_name
  (c-name "g_get_host_name")
  (return-type "const-gchar*")
)

(define-function g_get_prgname
  (c-name "g_get_prgname")
  (return-type "const-gchar*")
)

(define-function g_set_prgname
  (c-name "g_set_prgname")
  (return-type "none")
  (parameters
    '("const-gchar*" "prgname")
  )
)

(define-function g_get_application_name
  (c-name "g_get_application_name")
  (return-type "const-gchar*")
)

(define-function g_set_application_name
  (c-name "g_set_application_name")
  (return-type "none")
  (parameters
    '("const-gchar*" "application_name")
  )
)

(define-function g_get_os_info
  (c-name "g_get_os_info")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "key_name")
  )
)

(define-function g_reload_user_special_dirs_cache
  (c-name "g_reload_user_special_dirs_cache")
  (return-type "none")
)

(define-function g_get_user_data_dir
  (c-name "g_get_user_data_dir")
  (return-type "const-gchar*")
)

(define-function g_get_user_config_dir
  (c-name "g_get_user_config_dir")
  (return-type "const-gchar*")
)

(define-function g_get_user_cache_dir
  (c-name "g_get_user_cache_dir")
  (return-type "const-gchar*")
)

(define-function g_get_system_data_dirs
  (c-name "g_get_system_data_dirs")
  (return-type "const-gchar*-const*")
)

;; the g_win32_get_system_data_dirs_for_module() function is removed because it
;; has a function pointer parameter and that is not handled correctly by
;; h2def.py.

(define-function g_get_system_config_dirs
  (c-name "g_get_system_config_dirs")
  (return-type "const-gchar*-const*")
)

(define-function g_get_user_runtime_dir
  (c-name "g_get_user_runtime_dir")
  (return-type "const-gchar*")
)

(define-function g_get_user_special_dir
  (c-name "g_get_user_special_dir")
  (return-type "const-gchar*")
  (parameters
    '("GUserDirectory" "directory")
  )
)

(define-function g_parse_debug_string
  (c-name "g_parse_debug_string")
  (return-type "guint")
  (parameters
    '("const-gchar*" "string")
    '("const-GDebugKey*" "keys")
    '("guint" "nkeys")
  )
)

(define-function g_snprintf
  (c-name "g_snprintf")
  (return-type "gint")
  (parameters
    '("gchar*" "string")
    '("gulong" "n")
    '("gchar-const*" "format")
  )
  (varargs #t)
)

(define-function g_vsnprintf
  (c-name "g_vsnprintf")
  (return-type "gint")
  (parameters
    '("gchar*" "string")
    '("gulong" "n")
    '("gchar-const*" "format")
    '("va_list" "args")
  )
)

(define-function g_nullify_pointer
  (c-name "g_nullify_pointer")
  (return-type "none")
  (parameters
    '("gpointer*" "nullify_location")
  )
)

(define-function g_format_size_full
  (c-name "g_format_size_full")
  (return-type "gchar*")
  (parameters
    '("guint64" "size")
    '("GFormatSizeFlags" "flags")
  )
)

(define-function g_format_size
  (c-name "g_format_size")
  (return-type "gchar*")
  (parameters
    '("guint64" "size")
  )
)

(define-function g_format_size_for_display
  (c-name "g_format_size_for_display")
  (return-type "gchar*")
  (parameters
    '("goffset" "size")
  )
)

(define-function g_atexit
  (c-name "g_atexit")
  (return-type "none")
  (parameters
    '("GVoidFunc" "func")
  )
)

;; the atexit() function is removed because it has a function pointer parameter
;; and that is not handled correctly by h2def.py.

(define-function g_find_program_in_path
  (c-name "g_find_program_in_path")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "program")
  )
)

(define-function g_bit_nth_lsf_impl
  (c-name "g_bit_nth_lsf_impl")
  (return-type "gint")
  (parameters
    '("gulong" "mask")
    '("gint" "nth_bit")
  )
)

(define-function g_bit_nth_msf_impl
  (c-name "g_bit_nth_msf_impl")
  (return-type "gint")
  (parameters
    '("gulong" "mask")
    '("gint" "nth_bit")
  )
)

(define-function g_bit_storage_impl
  (c-name "g_bit_storage_impl")
  (return-type "guint")
  (parameters
    '("gulong" "number")
  )
)

(define-function g_abort
  (c-name "g_abort")
  (return-type "none")
)



;; From guuid.h

(define-function g_uuid_string_is_valid
  (c-name "g_uuid_string_is_valid")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "str")
  )
)

(define-function g_uuid_string_random
  (c-name "g_uuid_string_random")
  (return-type "gchar*")
)



;; From gvalgrind.h



;; From gvariant-core.h

(define-function g_variant_new_from_children
  (c-name "g_variant_new_from_children")
  (return-type "GVariant*")
  (parameters
    '("const-GVariantType*" "type")
    '("GVariant**" "children")
    '("gsize" "n_children")
    '("gboolean" "trusted")
  )
)

(define-method is_trusted
  (of-object "GVariant")
  (c-name "g_variant_is_trusted")
  (return-type "gboolean")
)

(define-method get_type_info
  (of-object "GVariant")
  (c-name "g_variant_get_type_info")
  (return-type "GVariantTypeInfo*")
)

(define-method get_depth
  (of-object "GVariant")
  (c-name "g_variant_get_depth")
  (return-type "gsize")
)



;; From gvariant.h

(define-method unref
  (of-object "GVariant")
  (c-name "g_variant_unref")
  (return-type "none")
)

(define-method ref
  (of-object "GVariant")
  (c-name "g_variant_ref")
  (return-type "GVariant*")
)

(define-method ref_sink
  (of-object "GVariant")
  (c-name "g_variant_ref_sink")
  (return-type "GVariant*")
)

(define-method is_floating
  (of-object "GVariant")
  (c-name "g_variant_is_floating")
  (return-type "gboolean")
)

(define-method take_ref
  (of-object "GVariant")
  (c-name "g_variant_take_ref")
  (return-type "GVariant*")
)

(define-method get_type
  (of-object "GVariant")
  (c-name "g_variant_get_type")
  (return-type "const-GVariantType*")
)

(define-method get_type_string
  (of-object "GVariant")
  (c-name "g_variant_get_type_string")
  (return-type "const-gchar*")
)

(define-method is_of_type
  (of-object "GVariant")
  (c-name "g_variant_is_of_type")
  (return-type "gboolean")
  (parameters
    '("const-GVariantType*" "type")
  )
)

(define-method is_container
  (of-object "GVariant")
  (c-name "g_variant_is_container")
  (return-type "gboolean")
)

(define-method classify
  (of-object "GVariant")
  (c-name "g_variant_classify")
  (return-type "GVariantClass")
)

(define-function g_variant_new_boolean
  (c-name "g_variant_new_boolean")
  (return-type "GVariant*")
  (parameters
    '("gboolean" "value")
  )
)

(define-function g_variant_new_byte
  (c-name "g_variant_new_byte")
  (return-type "GVariant*")
  (parameters
    '("guint8" "value")
  )
)

(define-function g_variant_new_int16
  (c-name "g_variant_new_int16")
  (return-type "GVariant*")
  (parameters
    '("gint16" "value")
  )
)

(define-function g_variant_new_uint16
  (c-name "g_variant_new_uint16")
  (return-type "GVariant*")
  (parameters
    '("guint16" "value")
  )
)

(define-function g_variant_new_int32
  (c-name "g_variant_new_int32")
  (return-type "GVariant*")
  (parameters
    '("gint32" "value")
  )
)

(define-function g_variant_new_uint32
  (c-name "g_variant_new_uint32")
  (return-type "GVariant*")
  (parameters
    '("guint32" "value")
  )
)

(define-function g_variant_new_int64
  (c-name "g_variant_new_int64")
  (return-type "GVariant*")
  (parameters
    '("gint64" "value")
  )
)

(define-function g_variant_new_uint64
  (c-name "g_variant_new_uint64")
  (return-type "GVariant*")
  (parameters
    '("guint64" "value")
  )
)

(define-function g_variant_new_handle
  (c-name "g_variant_new_handle")
  (return-type "GVariant*")
  (parameters
    '("gint32" "value")
  )
)

(define-function g_variant_new_double
  (c-name "g_variant_new_double")
  (return-type "GVariant*")
  (parameters
    '("gdouble" "value")
  )
)

(define-function g_variant_new_string
  (c-name "g_variant_new_string")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "string")
  )
)

(define-function g_variant_new_take_string
  (c-name "g_variant_new_take_string")
  (return-type "GVariant*")
  (parameters
    '("gchar*" "string")
  )
)

(define-function g_variant_new_printf
  (c-name "g_variant_new_printf")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "format_string")
  )
  (varargs #t)
)

(define-function g_variant_new_object_path
  (c-name "g_variant_new_object_path")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "object_path")
  )
)

(define-function g_variant_is_object_path
  (c-name "g_variant_is_object_path")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "string")
  )
)

(define-function g_variant_new_signature
  (c-name "g_variant_new_signature")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "signature")
  )
)

(define-function g_variant_is_signature
  (c-name "g_variant_is_signature")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "string")
  )
)

(define-method new_variant
  (of-object "GVariant")
  (c-name "g_variant_new_variant")
  (return-type "GVariant*")
)

(define-function g_variant_new_strv
  (c-name "g_variant_new_strv")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*-const*" "strv")
    '("gssize" "length")
  )
)

(define-function g_variant_new_objv
  (c-name "g_variant_new_objv")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*-const*" "strv")
    '("gssize" "length")
  )
)

(define-function g_variant_new_bytestring
  (c-name "g_variant_new_bytestring")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "string")
  )
)

(define-function g_variant_new_bytestring_array
  (c-name "g_variant_new_bytestring_array")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*-const*" "strv")
    '("gssize" "length")
  )
)

(define-function g_variant_new_fixed_array
  (c-name "g_variant_new_fixed_array")
  (return-type "GVariant*")
  (parameters
    '("const-GVariantType*" "element_type")
    '("gconstpointer" "elements")
    '("gsize" "n_elements")
    '("gsize" "element_size")
  )
)

(define-method get_boolean
  (of-object "GVariant")
  (c-name "g_variant_get_boolean")
  (return-type "gboolean")
)

(define-method get_byte
  (of-object "GVariant")
  (c-name "g_variant_get_byte")
  (return-type "guint8")
)

(define-method get_int16
  (of-object "GVariant")
  (c-name "g_variant_get_int16")
  (return-type "gint16")
)

(define-method get_uint16
  (of-object "GVariant")
  (c-name "g_variant_get_uint16")
  (return-type "guint16")
)

(define-method get_int32
  (of-object "GVariant")
  (c-name "g_variant_get_int32")
  (return-type "gint32")
)

(define-method get_uint32
  (of-object "GVariant")
  (c-name "g_variant_get_uint32")
  (return-type "guint32")
)

(define-method get_int64
  (of-object "GVariant")
  (c-name "g_variant_get_int64")
  (return-type "gint64")
)

(define-method get_uint64
  (of-object "GVariant")
  (c-name "g_variant_get_uint64")
  (return-type "guint64")
)

(define-method get_handle
  (of-object "GVariant")
  (c-name "g_variant_get_handle")
  (return-type "gint32")
)

(define-method get_double
  (of-object "GVariant")
  (c-name "g_variant_get_double")
  (return-type "gdouble")
)

(define-method get_variant
  (of-object "GVariant")
  (c-name "g_variant_get_variant")
  (return-type "GVariant*")
)

(define-method get_string
  (of-object "GVariant")
  (c-name "g_variant_get_string")
  (return-type "const-gchar*")
  (parameters
    '("gsize*" "length")
  )
)

(define-method dup_string
  (of-object "GVariant")
  (c-name "g_variant_dup_string")
  (return-type "gchar*")
  (parameters
    '("gsize*" "length")
  )
)

(define-method get_strv
  (of-object "GVariant")
  (c-name "g_variant_get_strv")
  (return-type "const-gchar**")
  (parameters
    '("gsize*" "length")
  )
)

(define-method dup_strv
  (of-object "GVariant")
  (c-name "g_variant_dup_strv")
  (return-type "gchar**")
  (parameters
    '("gsize*" "length")
  )
)

(define-method get_objv
  (of-object "GVariant")
  (c-name "g_variant_get_objv")
  (return-type "const-gchar**")
  (parameters
    '("gsize*" "length")
  )
)

(define-method dup_objv
  (of-object "GVariant")
  (c-name "g_variant_dup_objv")
  (return-type "gchar**")
  (parameters
    '("gsize*" "length")
  )
)

(define-method get_bytestring
  (of-object "GVariant")
  (c-name "g_variant_get_bytestring")
  (return-type "const-gchar*")
)

(define-method dup_bytestring
  (of-object "GVariant")
  (c-name "g_variant_dup_bytestring")
  (return-type "gchar*")
  (parameters
    '("gsize*" "length")
  )
)

(define-method get_bytestring_array
  (of-object "GVariant")
  (c-name "g_variant_get_bytestring_array")
  (return-type "const-gchar**")
  (parameters
    '("gsize*" "length")
  )
)

(define-method dup_bytestring_array
  (of-object "GVariant")
  (c-name "g_variant_dup_bytestring_array")
  (return-type "gchar**")
  (parameters
    '("gsize*" "length")
  )
)

(define-function g_variant_new_maybe
  (c-name "g_variant_new_maybe")
  (return-type "GVariant*")
  (parameters
    '("const-GVariantType*" "child_type")
    '("GVariant*" "child")
  )
)

(define-function g_variant_new_array
  (c-name "g_variant_new_array")
  (return-type "GVariant*")
  (parameters
    '("const-GVariantType*" "child_type")
    '("GVariant*-const*" "children")
    '("gsize" "n_children")
  )
)

(define-function g_variant_new_tuple
  (c-name "g_variant_new_tuple")
  (return-type "GVariant*")
  (parameters
    '("GVariant*-const*" "children")
    '("gsize" "n_children")
  )
)

(define-method new_dict_entry
  (of-object "GVariant")
  (c-name "g_variant_new_dict_entry")
  (return-type "GVariant*")
  (parameters
    '("GVariant*" "value")
  )
)

(define-method get_maybe
  (of-object "GVariant")
  (c-name "g_variant_get_maybe")
  (return-type "GVariant*")
)

(define-method n_children
  (of-object "GVariant")
  (c-name "g_variant_n_children")
  (return-type "gsize")
)

(define-method get_child
  (of-object "GVariant")
  (c-name "g_variant_get_child")
  (return-type "none")
  (parameters
    '("gsize" "index_")
    '("const-gchar*" "format_string")
  )
  (varargs #t)
)

(define-method get_child_value
  (of-object "GVariant")
  (c-name "g_variant_get_child_value")
  (return-type "GVariant*")
  (parameters
    '("gsize" "index_")
  )
)

(define-method lookup
  (of-object "GVariant")
  (c-name "g_variant_lookup")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "key")
    '("const-gchar*" "format_string")
  )
  (varargs #t)
)

(define-method lookup_value
  (of-object "GVariant")
  (c-name "g_variant_lookup_value")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "key")
    '("const-GVariantType*" "expected_type")
  )
)

(define-method get_fixed_array
  (of-object "GVariant")
  (c-name "g_variant_get_fixed_array")
  (return-type "gconstpointer")
  (parameters
    '("gsize*" "n_elements")
    '("gsize" "element_size")
  )
)

(define-method get_size
  (of-object "GVariant")
  (c-name "g_variant_get_size")
  (return-type "gsize")
)

(define-method get_data
  (of-object "GVariant")
  (c-name "g_variant_get_data")
  (return-type "gconstpointer")
)

(define-method get_data_as_bytes
  (of-object "GVariant")
  (c-name "g_variant_get_data_as_bytes")
  (return-type "GBytes*")
)

(define-method store
  (of-object "GVariant")
  (c-name "g_variant_store")
  (return-type "none")
  (parameters
    '("gpointer" "data")
  )
)

(define-method print
  (of-object "GVariant")
  (c-name "g_variant_print")
  (return-type "gchar*")
  (parameters
    '("gboolean" "type_annotate")
  )
)

(define-method print_string
  (of-object "GVariant")
  (c-name "g_variant_print_string")
  (return-type "GString*")
  (parameters
    '("GString*" "string")
    '("gboolean" "type_annotate")
  )
)

(define-function g_variant_hash
  (c-name "g_variant_hash")
  (return-type "guint")
  (parameters
    '("gconstpointer" "value")
  )
)

(define-function g_variant_equal
  (c-name "g_variant_equal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "one")
    '("gconstpointer" "two")
  )
)

(define-method get_normal_form
  (of-object "GVariant")
  (c-name "g_variant_get_normal_form")
  (return-type "GVariant*")
)

(define-method is_normal_form
  (of-object "GVariant")
  (c-name "g_variant_is_normal_form")
  (return-type "gboolean")
)

(define-method byteswap
  (of-object "GVariant")
  (c-name "g_variant_byteswap")
  (return-type "GVariant*")
)

(define-function g_variant_new_from_bytes
  (c-name "g_variant_new_from_bytes")
  (return-type "GVariant*")
  (parameters
    '("const-GVariantType*" "type")
    '("GBytes*" "bytes")
    '("gboolean" "trusted")
  )
)

(define-function g_variant_new_from_data
  (c-name "g_variant_new_from_data")
  (return-type "GVariant*")
  (parameters
    '("const-GVariantType*" "type")
    '("gconstpointer" "data")
    '("gsize" "size")
    '("gboolean" "trusted")
    '("GDestroyNotify" "notify")
    '("gpointer" "user_data")
  )
)

(define-method iter_new
  (of-object "GVariant")
  (c-name "g_variant_iter_new")
  (return-type "GVariantIter*")
)

(define-method init
  (of-object "GVariantIter")
  (c-name "g_variant_iter_init")
  (return-type "gsize")
  (parameters
    '("GVariant*" "value")
  )
)

(define-method copy
  (of-object "GVariantIter")
  (c-name "g_variant_iter_copy")
  (return-type "GVariantIter*")
)

(define-method n_children
  (of-object "GVariantIter")
  (c-name "g_variant_iter_n_children")
  (return-type "gsize")
)

(define-method free
  (of-object "GVariantIter")
  (c-name "g_variant_iter_free")
  (return-type "none")
)

(define-method next_value
  (of-object "GVariantIter")
  (c-name "g_variant_iter_next_value")
  (return-type "GVariant*")
)

(define-method next
  (of-object "GVariantIter")
  (c-name "g_variant_iter_next")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "format_string")
  )
  (varargs #t)
)

(define-method loop
  (of-object "GVariantIter")
  (c-name "g_variant_iter_loop")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "format_string")
  )
  (varargs #t)
)

(define-function g_variant_parser_get_error_quark
  (c-name "g_variant_parser_get_error_quark")
  (return-type "GQuark")
)

(define-function g_variant_parse_error_quark
  (c-name "g_variant_parse_error_quark")
  (return-type "GQuark")
)

(define-function g_variant_builder_new
  (c-name "g_variant_builder_new")
  (is-constructor-of "GVariantBuilder")
  (return-type "GVariantBuilder*")
  (parameters
    '("const-GVariantType*" "type")
  )
)

(define-method unref
  (of-object "GVariantBuilder")
  (c-name "g_variant_builder_unref")
  (return-type "none")
)

(define-method ref
  (of-object "GVariantBuilder")
  (c-name "g_variant_builder_ref")
  (return-type "GVariantBuilder*")
)

(define-method init
  (of-object "GVariantBuilder")
  (c-name "g_variant_builder_init")
  (return-type "none")
  (parameters
    '("const-GVariantType*" "type")
  )
)

(define-method end
  (of-object "GVariantBuilder")
  (c-name "g_variant_builder_end")
  (return-type "GVariant*")
)

(define-method clear
  (of-object "GVariantBuilder")
  (c-name "g_variant_builder_clear")
  (return-type "none")
)

(define-method open
  (of-object "GVariantBuilder")
  (c-name "g_variant_builder_open")
  (return-type "none")
  (parameters
    '("const-GVariantType*" "type")
  )
)

(define-method close
  (of-object "GVariantBuilder")
  (c-name "g_variant_builder_close")
  (return-type "none")
)

(define-method add_value
  (of-object "GVariantBuilder")
  (c-name "g_variant_builder_add_value")
  (return-type "none")
  (parameters
    '("GVariant*" "value")
  )
)

(define-method add
  (of-object "GVariantBuilder")
  (c-name "g_variant_builder_add")
  (return-type "none")
  (parameters
    '("const-gchar*" "format_string")
  )
  (varargs #t)
)

(define-method add_parsed
  (of-object "GVariantBuilder")
  (c-name "g_variant_builder_add_parsed")
  (return-type "none")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_variant_new
  (c-name "g_variant_new")
  (is-constructor-of "GVariant")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "format_string")
  )
  (varargs #t)
)

(define-method get
  (of-object "GVariant")
  (c-name "g_variant_get")
  (return-type "none")
  (parameters
    '("const-gchar*" "format_string")
  )
  (varargs #t)
)

(define-function g_variant_new_va
  (c-name "g_variant_new_va")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "format_string")
    '("const-gchar**" "endptr")
    '("va_list*" "app")
  )
)

(define-method get_va
  (of-object "GVariant")
  (c-name "g_variant_get_va")
  (return-type "none")
  (parameters
    '("const-gchar*" "format_string")
    '("const-gchar**" "endptr")
    '("va_list*" "app")
  )
)

(define-method check_format_string
  (of-object "GVariant")
  (c-name "g_variant_check_format_string")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "format_string")
    '("gboolean" "copy_only")
  )
)

(define-function g_variant_parse
  (c-name "g_variant_parse")
  (return-type "GVariant*")
  (parameters
    '("const-GVariantType*" "type")
    '("const-gchar*" "text")
    '("const-gchar*" "limit")
    '("const-gchar**" "endptr")
    '("GError**" "error")
  )
)

(define-function g_variant_new_parsed
  (c-name "g_variant_new_parsed")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "format")
  )
  (varargs #t)
)

(define-function g_variant_new_parsed_va
  (c-name "g_variant_new_parsed_va")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "format")
    '("va_list*" "app")
  )
)

(define-function g_variant_parse_error_print_context
  (c-name "g_variant_parse_error_print_context")
  (return-type "gchar*")
  (parameters
    '("GError*" "error")
    '("const-gchar*" "source_str")
  )
)

(define-function g_variant_compare
  (c-name "g_variant_compare")
  (return-type "gint")
  (parameters
    '("gconstpointer" "one")
    '("gconstpointer" "two")
  )
)

(define-method dict_new
  (of-object "GVariant")
  (c-name "g_variant_dict_new")
  (return-type "GVariantDict*")
)

(define-method init
  (of-object "GVariantDict")
  (c-name "g_variant_dict_init")
  (return-type "none")
  (parameters
    '("GVariant*" "from_asv")
  )
)

(define-method lookup
  (of-object "GVariantDict")
  (c-name "g_variant_dict_lookup")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "key")
    '("const-gchar*" "format_string")
  )
  (varargs #t)
)

(define-method lookup_value
  (of-object "GVariantDict")
  (c-name "g_variant_dict_lookup_value")
  (return-type "GVariant*")
  (parameters
    '("const-gchar*" "key")
    '("const-GVariantType*" "expected_type")
  )
)

(define-method contains
  (of-object "GVariantDict")
  (c-name "g_variant_dict_contains")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "key")
  )
)

(define-method insert
  (of-object "GVariantDict")
  (c-name "g_variant_dict_insert")
  (return-type "none")
  (parameters
    '("const-gchar*" "key")
    '("const-gchar*" "format_string")
  )
  (varargs #t)
)

(define-method insert_value
  (of-object "GVariantDict")
  (c-name "g_variant_dict_insert_value")
  (return-type "none")
  (parameters
    '("const-gchar*" "key")
    '("GVariant*" "value")
  )
)

(define-method remove
  (of-object "GVariantDict")
  (c-name "g_variant_dict_remove")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "key")
  )
)

(define-method clear
  (of-object "GVariantDict")
  (c-name "g_variant_dict_clear")
  (return-type "none")
)

(define-method end
  (of-object "GVariantDict")
  (c-name "g_variant_dict_end")
  (return-type "GVariant*")
)

(define-method ref
  (of-object "GVariantDict")
  (c-name "g_variant_dict_ref")
  (return-type "GVariantDict*")
)

(define-method unref
  (of-object "GVariantDict")
  (c-name "g_variant_dict_unref")
  (return-type "none")
)



;; From gvariant-internal.h

(define-function g_variant_format_string_scan
  (c-name "g_variant_format_string_scan")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "string")
    '("const-gchar*" "limit")
    '("const-gchar**" "endptr")
  )
)

(define-function g_variant_format_string_scan_type
  (c-name "g_variant_format_string_scan_type")
  (return-type "GVariantType*")
  (parameters
    '("const-gchar*" "string")
    '("const-gchar*" "limit")
    '("const-gchar**" "endptr")
  )
)



;; From gvariant-serialiser.h

(define-method n_children
  (of-object "GVariantSerialised")
  (c-name "g_variant_serialised_n_children")
  (return-type "gsize")
)

(define-method get_child
  (of-object "GVariantSerialised")
  (c-name "g_variant_serialised_get_child")
  (return-type "GVariantSerialised")
  (parameters
    '("gsize" "index")
  )
)

(define-function g_variant_serialiser_needed_size
  (c-name "g_variant_serialiser_needed_size")
  (return-type "gsize")
  (parameters
    '("GVariantTypeInfo*" "info")
    '("GVariantSerialisedFiller" "gsv_filler")
    '("const-gpointer*" "children")
    '("gsize" "n_children")
  )
)

(define-function g_variant_serialiser_serialise
  (c-name "g_variant_serialiser_serialise")
  (return-type "none")
  (parameters
    '("GVariantSerialised" "container")
    '("GVariantSerialisedFiller" "gsv_filler")
    '("const-gpointer*" "children")
    '("gsize" "n_children")
  )
)

(define-method check
  (of-object "GVariantSerialised")
  (c-name "g_variant_serialised_check")
  (return-type "gboolean")
)

(define-method is_normal
  (of-object "GVariantSerialised")
  (c-name "g_variant_serialised_is_normal")
  (return-type "gboolean")
)

(define-method byteswap
  (of-object "GVariantSerialised")
  (c-name "g_variant_serialised_byteswap")
  (return-type "none")
)

(define-function g_variant_serialiser_is_string
  (c-name "g_variant_serialiser_is_string")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "data")
    '("gsize" "size")
  )
)

(define-function g_variant_serialiser_is_object_path
  (c-name "g_variant_serialiser_is_object_path")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "data")
    '("gsize" "size")
  )
)

(define-function g_variant_serialiser_is_signature
  (c-name "g_variant_serialiser_is_signature")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "data")
    '("gsize" "size")
  )
)



;; From gvarianttype.h

(define-function g_variant_type_string_is_valid
  (c-name "g_variant_type_string_is_valid")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "type_string")
  )
)

(define-function g_variant_type_string_scan
  (c-name "g_variant_type_string_scan")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "string")
    '("const-gchar*" "limit")
    '("const-gchar**" "endptr")
  )
)

(define-method free
  (of-object "GVariantType")
  (c-name "g_variant_type_free")
  (return-type "none")
)

(define-method copy
  (of-object "GVariantType")
  (c-name "g_variant_type_copy")
  (return-type "GVariantType*")
)

(define-function g_variant_type_new
  (c-name "g_variant_type_new")
  (is-constructor-of "GVariantType")
  (return-type "GVariantType*")
  (parameters
    '("const-gchar*" "type_string")
  )
)

(define-method get_string_length
  (of-object "GVariantType")
  (c-name "g_variant_type_get_string_length")
  (return-type "gsize")
)

(define-method peek_string
  (of-object "GVariantType")
  (c-name "g_variant_type_peek_string")
  (return-type "const-gchar*")
)

(define-method dup_string
  (of-object "GVariantType")
  (c-name "g_variant_type_dup_string")
  (return-type "gchar*")
)

(define-method is_definite
  (of-object "GVariantType")
  (c-name "g_variant_type_is_definite")
  (return-type "gboolean")
)

(define-method is_container
  (of-object "GVariantType")
  (c-name "g_variant_type_is_container")
  (return-type "gboolean")
)

(define-method is_basic
  (of-object "GVariantType")
  (c-name "g_variant_type_is_basic")
  (return-type "gboolean")
)

(define-method is_maybe
  (of-object "GVariantType")
  (c-name "g_variant_type_is_maybe")
  (return-type "gboolean")
)

(define-method is_array
  (of-object "GVariantType")
  (c-name "g_variant_type_is_array")
  (return-type "gboolean")
)

(define-method is_tuple
  (of-object "GVariantType")
  (c-name "g_variant_type_is_tuple")
  (return-type "gboolean")
)

(define-method is_dict_entry
  (of-object "GVariantType")
  (c-name "g_variant_type_is_dict_entry")
  (return-type "gboolean")
)

(define-method is_variant
  (of-object "GVariantType")
  (c-name "g_variant_type_is_variant")
  (return-type "gboolean")
)

(define-function g_variant_type_hash
  (c-name "g_variant_type_hash")
  (return-type "guint")
  (parameters
    '("gconstpointer" "type")
  )
)

(define-function g_variant_type_equal
  (c-name "g_variant_type_equal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "type1")
    '("gconstpointer" "type2")
  )
)

(define-method is_subtype_of
  (of-object "GVariantType")
  (c-name "g_variant_type_is_subtype_of")
  (return-type "gboolean")
  (parameters
    '("const-GVariantType*" "supertype")
  )
)

(define-method element
  (of-object "GVariantType")
  (c-name "g_variant_type_element")
  (return-type "const-GVariantType*")
)

(define-method first
  (of-object "GVariantType")
  (c-name "g_variant_type_first")
  (return-type "const-GVariantType*")
)

(define-method next
  (of-object "GVariantType")
  (c-name "g_variant_type_next")
  (return-type "const-GVariantType*")
)

(define-method n_items
  (of-object "GVariantType")
  (c-name "g_variant_type_n_items")
  (return-type "gsize")
)

(define-method key
  (of-object "GVariantType")
  (c-name "g_variant_type_key")
  (return-type "const-GVariantType*")
)

(define-method value
  (of-object "GVariantType")
  (c-name "g_variant_type_value")
  (return-type "const-GVariantType*")
)

(define-method new_array
  (of-object "GVariantType")
  (c-name "g_variant_type_new_array")
  (return-type "GVariantType*")
)

(define-method new_maybe
  (of-object "GVariantType")
  (c-name "g_variant_type_new_maybe")
  (return-type "GVariantType*")
)

(define-function g_variant_type_new_tuple
  (c-name "g_variant_type_new_tuple")
  (return-type "GVariantType*")
  (parameters
    '("const-GVariantType*-const*" "items")
    '("gint" "length")
  )
)

(define-method new_dict_entry
  (of-object "GVariantType")
  (c-name "g_variant_type_new_dict_entry")
  (return-type "GVariantType*")
  (parameters
    '("const-GVariantType*" "value")
  )
)

(define-function g_variant_type_checked_
  (c-name "g_variant_type_checked_")
  (return-type "const-GVariantType*")
  (parameters
    '("const-gchar" "*")
  )
)

(define-function g_variant_type_string_get_depth_
  (c-name "g_variant_type_string_get_depth_")
  (return-type "gsize")
  (parameters
    '("const-gchar*" "type_string")
  )
)



;; From gvarianttypeinfo.h

(define-method get_type_string
  (of-object "GVariantTypeInfo")
  (c-name "g_variant_type_info_get_type_string")
  (return-type "const-gchar*")
)

(define-method query
  (of-object "GVariantTypeInfo")
  (c-name "g_variant_type_info_query")
  (return-type "none")
  (parameters
    '("guint*" "alignment")
    '("gsize*" "size")
  )
)

(define-method query_depth
  (of-object "GVariantTypeInfo")
  (c-name "g_variant_type_info_query_depth")
  (return-type "gsize")
)

(define-method element
  (of-object "GVariantTypeInfo")
  (c-name "g_variant_type_info_element")
  (return-type "GVariantTypeInfo*")
)

(define-method query_element
  (of-object "GVariantTypeInfo")
  (c-name "g_variant_type_info_query_element")
  (return-type "none")
  (parameters
    '("guint*" "alignment")
    '("gsize*" "size")
  )
)

(define-method n_members
  (of-object "GVariantTypeInfo")
  (c-name "g_variant_type_info_n_members")
  (return-type "gsize")
)

(define-method member_info
  (of-object "GVariantTypeInfo")
  (c-name "g_variant_type_info_member_info")
  (return-type "const-GVariantMemberInfo*")
  (parameters
    '("gsize" "index")
  )
)

(define-method info_get
  (of-object "GVariantType")
  (c-name "g_variant_type_info_get")
  (return-type "GVariantTypeInfo*")
)

(define-method ref
  (of-object "GVariantTypeInfo")
  (c-name "g_variant_type_info_ref")
  (return-type "GVariantTypeInfo*")
)

(define-method unref
  (of-object "GVariantTypeInfo")
  (c-name "g_variant_type_info_unref")
  (return-type "none")
)

(define-function g_variant_type_info_assert_no_infos
  (c-name "g_variant_type_info_assert_no_infos")
  (return-type "none")
)



;; From gversion.h

(define-function glib_check_version
  (c-name "glib_check_version")
  (return-type "const-gchar*")
  (parameters
    '("guint" "required_major")
    '("guint" "required_minor")
    '("guint" "required_micro")
  )
)



;; From gversionmacros.h



;; From gwakeup.h

(define-function g_wakeup_new
  (c-name "g_wakeup_new")
  (is-constructor-of "GWakeup")
  (return-type "GWakeup*")
)

(define-method free
  (of-object "GWakeup")
  (c-name "g_wakeup_free")
  (return-type "none")
)

(define-method get_pollfd
  (of-object "GWakeup")
  (c-name "g_wakeup_get_pollfd")
  (return-type "none")
  (parameters
    '("GPollFD*" "poll_fd")
  )
)

(define-method signal
  (of-object "GWakeup")
  (c-name "g_wakeup_signal")
  (return-type "none")
)

(define-method acknowledge
  (of-object "GWakeup")
  (c-name "g_wakeup_acknowledge")
  (return-type "none")
)



;; From gwin32.h

(define-function g_win32_ftruncate
  (c-name "g_win32_ftruncate")
  (return-type "gint")
  (parameters
    '("gint" "f")
    '("guint" "size")
  )
)

(define-function g_win32_getlocale
  (c-name "g_win32_getlocale")
  (return-type "gchar*")
)

(define-function g_win32_error_message
  (c-name "g_win32_error_message")
  (return-type "gchar*")
  (parameters
    '("gint" "error")
  )
)

(define-function g_win32_get_package_installation_directory
  (c-name "g_win32_get_package_installation_directory")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "package")
    '("const-gchar*" "dll_name")
  )
)

(define-function g_win32_get_package_installation_subdirectory
  (c-name "g_win32_get_package_installation_subdirectory")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "package")
    '("const-gchar*" "dll_name")
    '("const-gchar*" "subdir")
  )
)

(define-function g_win32_get_package_installation_directory_of_module
  (c-name "g_win32_get_package_installation_directory_of_module")
  (return-type "gchar*")
  (parameters
    '("gpointer" "hmodule")
  )
)

(define-function g_win32_get_windows_version
  (c-name "g_win32_get_windows_version")
  (return-type "guint")
)

(define-function g_win32_locale_filename_from_utf8
  (c-name "g_win32_locale_filename_from_utf8")
  (return-type "gchar*")
  (parameters
    '("const-gchar*" "utf8filename")
  )
)

(define-function g_win32_get_command_line
  (c-name "g_win32_get_command_line")
  (return-type "gchar**")
)

(define-function g_win32_check_windows_version
  (c-name "g_win32_check_windows_version")
  (return-type "gboolean")
  (parameters
    '("const-gint" "major")
    '("const-gint" "minor")
    '("const-gint" "spver")
    '("const-GWin32OSType" "os_type")
  )
)



;; From valgrind.h

(define-function VALGRIND_PRINTF
  (c-name "VALGRIND_PRINTF")
  (return-type "int")
  (parameters
    '("const-char*" "format")
  )
  (varargs #t)
)

(define-function VALGRIND_PRINTF_BACKTRACE
  (c-name "VALGRIND_PRINTF_BACKTRACE")
  (return-type "int")
  (parameters
    '("const-char*" "format")
  )
  (varargs #t)
)



;; From gallocator.h

(define-function g_mem_chunk_new
  (c-name "g_mem_chunk_new")
  (is-constructor-of "GMemChunk")
  (return-type "GMemChunk*")
  (parameters
    '("const-gchar*" "name")
    '("gint" "atom_size")
    '("gsize" "area_size")
    '("gint" "type")
  )
)

(define-method destroy
  (of-object "GMemChunk")
  (c-name "g_mem_chunk_destroy")
  (return-type "none")
)

(define-method alloc
  (of-object "GMemChunk")
  (c-name "g_mem_chunk_alloc")
  (return-type "gpointer")
)

(define-method alloc0
  (of-object "GMemChunk")
  (c-name "g_mem_chunk_alloc0")
  (return-type "gpointer")
)

(define-method free
  (of-object "GMemChunk")
  (c-name "g_mem_chunk_free")
  (return-type "none")
  (parameters
    '("gpointer" "mem")
  )
)

(define-method clean
  (of-object "GMemChunk")
  (c-name "g_mem_chunk_clean")
  (return-type "none")
)

(define-method reset
  (of-object "GMemChunk")
  (c-name "g_mem_chunk_reset")
  (return-type "none")
)

(define-method print
  (of-object "GMemChunk")
  (c-name "g_mem_chunk_print")
  (return-type "none")
)

(define-function g_mem_chunk_info
  (c-name "g_mem_chunk_info")
  (return-type "none")
)

(define-function g_blow_chunks
  (c-name "g_blow_chunks")
  (return-type "none")
)

(define-function g_allocator_new
  (c-name "g_allocator_new")
  (is-constructor-of "GAllocator")
  (return-type "GAllocator*")
  (parameters
    '("const-gchar*" "name")
    '("guint" "n_preallocs")
  )
)

(define-method free
  (of-object "GAllocator")
  (c-name "g_allocator_free")
  (return-type "none")
)

(define-function g_list_push_allocator
  (c-name "g_list_push_allocator")
  (return-type "none")
  (parameters
    '("GAllocator*" "allocator")
  )
)

(define-function g_list_pop_allocator
  (c-name "g_list_pop_allocator")
  (return-type "none")
)

(define-function g_slist_push_allocator
  (c-name "g_slist_push_allocator")
  (return-type "none")
  (parameters
    '("GAllocator*" "allocator")
  )
)

(define-function g_slist_pop_allocator
  (c-name "g_slist_pop_allocator")
  (return-type "none")
)

(define-function g_node_push_allocator
  (c-name "g_node_push_allocator")
  (return-type "none")
  (parameters
    '("GAllocator*" "allocator")
  )
)

(define-function g_node_pop_allocator
  (c-name "g_node_pop_allocator")
  (return-type "none")
)



;; From gcache.h

(define-function g_cache_new
  (c-name "g_cache_new")
  (is-constructor-of "GCache")
  (return-type "GCache*")
  (parameters
    '("GCacheNewFunc" "value_new_func")
    '("GCacheDestroyFunc" "value_destroy_func")
    '("GCacheDupFunc" "key_dup_func")
    '("GCacheDestroyFunc" "key_destroy_func")
    '("GHashFunc" "hash_key_func")
    '("GHashFunc" "hash_value_func")
    '("GEqualFunc" "key_equal_func")
  )
)

(define-method destroy
  (of-object "GCache")
  (c-name "g_cache_destroy")
  (return-type "none")
)

(define-method insert
  (of-object "GCache")
  (c-name "g_cache_insert")
  (return-type "gpointer")
  (parameters
    '("gpointer" "key")
  )
)

(define-method remove
  (of-object "GCache")
  (c-name "g_cache_remove")
  (return-type "none")
  (parameters
    '("gconstpointer" "value")
  )
)

(define-method key_foreach
  (of-object "GCache")
  (c-name "g_cache_key_foreach")
  (return-type "none")
  (parameters
    '("GHFunc" "func")
    '("gpointer" "user_data")
  )
)

(define-method value_foreach
  (of-object "GCache")
  (c-name "g_cache_value_foreach")
  (return-type "none")
  (parameters
    '("GHFunc" "func")
    '("gpointer" "user_data")
  )
)



;; From gcompletion.h

(define-function g_completion_new
  (c-name "g_completion_new")
  (is-constructor-of "GCompletion")
  (return-type "GCompletion*")
  (parameters
    '("GCompletionFunc" "func")
  )
)

(define-method add_items
  (of-object "GCompletion")
  (c-name "g_completion_add_items")
  (return-type "none")
  (parameters
    '("GList*" "items")
  )
)

(define-method remove_items
  (of-object "GCompletion")
  (c-name "g_completion_remove_items")
  (return-type "none")
  (parameters
    '("GList*" "items")
  )
)

(define-method clear_items
  (of-object "GCompletion")
  (c-name "g_completion_clear_items")
  (return-type "none")
)

(define-method complete
  (of-object "GCompletion")
  (c-name "g_completion_complete")
  (return-type "GList*")
  (parameters
    '("const-gchar*" "prefix")
    '("gchar**" "new_prefix")
  )
)

(define-method complete_utf8
  (of-object "GCompletion")
  (c-name "g_completion_complete_utf8")
  (return-type "GList*")
  (parameters
    '("const-gchar*" "prefix")
    '("gchar**" "new_prefix")
  )
)

(define-method set_compare
  (of-object "GCompletion")
  (c-name "g_completion_set_compare")
  (return-type "none")
  (parameters
    '("GCompletionStrncmpFunc" "strncmp_func")
  )
)

(define-method free
  (of-object "GCompletion")
  (c-name "g_completion_free")
  (return-type "none")
)



;; From gmain.h



;; From grel.h

(define-function g_relation_new
  (c-name "g_relation_new")
  (is-constructor-of "GRelation")
  (return-type "GRelation*")
  (parameters
    '("gint" "fields")
  )
)

(define-method destroy
  (of-object "GRelation")
  (c-name "g_relation_destroy")
  (return-type "none")
)

(define-method index
  (of-object "GRelation")
  (c-name "g_relation_index")
  (return-type "none")
  (parameters
    '("gint" "field")
    '("GHashFunc" "hash_func")
    '("GEqualFunc" "key_equal_func")
  )
)

(define-method insert
  (of-object "GRelation")
  (c-name "g_relation_insert")
  (return-type "none")
  (parameters
  )
  (varargs #t)
)

(define-method delete
  (of-object "GRelation")
  (c-name "g_relation_delete")
  (return-type "gint")
  (parameters
    '("gconstpointer" "key")
    '("gint" "field")
  )
)

(define-method select
  (of-object "GRelation")
  (c-name "g_relation_select")
  (return-type "GTuples*")
  (parameters
    '("gconstpointer" "key")
    '("gint" "field")
  )
)

(define-method count
  (of-object "GRelation")
  (c-name "g_relation_count")
  (return-type "gint")
  (parameters
    '("gconstpointer" "key")
    '("gint" "field")
  )
)

(define-method exists
  (of-object "GRelation")
  (c-name "g_relation_exists")
  (return-type "gboolean")
  (parameters
  )
  (varargs #t)
)

(define-method print
  (of-object "GRelation")
  (c-name "g_relation_print")
  (return-type "none")
)

(define-method destroy
  (of-object "GTuples")
  (c-name "g_tuples_destroy")
  (return-type "none")
)

(define-method index
  (of-object "GTuples")
  (c-name "g_tuples_index")
  (return-type "gpointer")
  (parameters
    '("gint" "index_")
    '("gint" "field")
  )
)



;; From gthread.h

(define-function guint64
  (c-name "guint64")
  (return-type "GLIB_VAR")
  (parameters
    '("*" "g_thread_gettime")
  )
)

(define-function g_thread_create
  (c-name "g_thread_create")
  (return-type "GThread*")
  (parameters
    '("GThreadFunc" "func")
    '("gpointer" "data")
    '("gboolean" "joinable")
    '("GError**" "error")
  )
)

(define-function g_thread_create_full
  (c-name "g_thread_create_full")
  (return-type "GThread*")
  (parameters
    '("GThreadFunc" "func")
    '("gpointer" "data")
    '("gulong" "stack_size")
    '("gboolean" "joinable")
    '("gboolean" "bound")
    '("GThreadPriority" "priority")
    '("GError**" "error")
  )
)

(define-method set_priority
  (of-object "GThread")
  (c-name "g_thread_set_priority")
  (return-type "none")
  (parameters
    '("GThreadPriority" "priority")
  )
)

(define-function g_thread_foreach
  (c-name "g_thread_foreach")
  (return-type "none")
  (parameters
    '("GFunc" "thread_func")
    '("gpointer" "user_data")
  )
)

(define-method init
  (of-object "GStaticMutex")
  (c-name "g_static_mutex_init")
  (return-type "none")
)

(define-method free
  (of-object "GStaticMutex")
  (c-name "g_static_mutex_free")
  (return-type "none")
)

(define-method get_mutex_impl
  (of-object "GStaticMutex")
  (c-name "g_static_mutex_get_mutex_impl")
  (return-type "GMutex*")
)

(define-method init
  (of-object "GStaticRecMutex")
  (c-name "g_static_rec_mutex_init")
  (return-type "none")
)

(define-method lock
  (of-object "GStaticRecMutex")
  (c-name "g_static_rec_mutex_lock")
  (return-type "none")
)

(define-method trylock
  (of-object "GStaticRecMutex")
  (c-name "g_static_rec_mutex_trylock")
  (return-type "gboolean")
)

(define-method unlock
  (of-object "GStaticRecMutex")
  (c-name "g_static_rec_mutex_unlock")
  (return-type "none")
)

(define-method lock_full
  (of-object "GStaticRecMutex")
  (c-name "g_static_rec_mutex_lock_full")
  (return-type "none")
  (parameters
    '("guint" "depth")
  )
)

(define-method unlock_full
  (of-object "GStaticRecMutex")
  (c-name "g_static_rec_mutex_unlock_full")
  (return-type "guint")
)

(define-method free
  (of-object "GStaticRecMutex")
  (c-name "g_static_rec_mutex_free")
  (return-type "none")
)

(define-method init
  (of-object "GStaticRWLock")
  (c-name "g_static_rw_lock_init")
  (return-type "none")
)

(define-method reader_lock
  (of-object "GStaticRWLock")
  (c-name "g_static_rw_lock_reader_lock")
  (return-type "none")
)

(define-method reader_trylock
  (of-object "GStaticRWLock")
  (c-name "g_static_rw_lock_reader_trylock")
  (return-type "gboolean")
)

(define-method reader_unlock
  (of-object "GStaticRWLock")
  (c-name "g_static_rw_lock_reader_unlock")
  (return-type "none")
)

(define-method writer_lock
  (of-object "GStaticRWLock")
  (c-name "g_static_rw_lock_writer_lock")
  (return-type "none")
)

(define-method writer_trylock
  (of-object "GStaticRWLock")
  (c-name "g_static_rw_lock_writer_trylock")
  (return-type "gboolean")
)

(define-method writer_unlock
  (of-object "GStaticRWLock")
  (c-name "g_static_rw_lock_writer_unlock")
  (return-type "none")
)

(define-method free
  (of-object "GStaticRWLock")
  (c-name "g_static_rw_lock_free")
  (return-type "none")
)

(define-function g_private_new
  (c-name "g_private_new")
  (is-constructor-of "GPrivate")
  (return-type "GPrivate*")
  (parameters
    '("GDestroyNotify" "notify")
  )
)

(define-method init
  (of-object "GStaticPrivate")
  (c-name "g_static_private_init")
  (return-type "none")
)

(define-method get
  (of-object "GStaticPrivate")
  (c-name "g_static_private_get")
  (return-type "gpointer")
)

(define-method set
  (of-object "GStaticPrivate")
  (c-name "g_static_private_set")
  (return-type "none")
  (parameters
    '("gpointer" "data")
    '("GDestroyNotify" "notify")
  )
)

(define-method free
  (of-object "GStaticPrivate")
  (c-name "g_static_private_free")
  (return-type "none")
)

(define-function g_once_init_enter_impl
  (c-name "g_once_init_enter_impl")
  (return-type "gboolean")
  (parameters
    '("volatile-gsize*" "location")
  )
)

(define-function g_thread_init
  (c-name "g_thread_init")
  (return-type "none")
  (parameters
    '("gpointer" "vtable")
  )
)

(define-function g_thread_init_with_errorcheck_mutexes
  (c-name "g_thread_init_with_errorcheck_mutexes")
  (return-type "none")
  (parameters
    '("gpointer" "vtable")
  )
)

(define-function g_thread_get_initialized
  (c-name "g_thread_get_initialized")
  (return-type "gboolean")
)

(define-function g_mutex_new
  (c-name "g_mutex_new")
  (is-constructor-of "GMutex")
  (return-type "GMutex*")
)

(define-method free
  (of-object "GMutex")
  (c-name "g_mutex_free")
  (return-type "none")
)

(define-function g_cond_new
  (c-name "g_cond_new")
  (is-constructor-of "GCond")
  (return-type "GCond*")
)

(define-method free
  (of-object "GCond")
  (c-name "g_cond_free")
  (return-type "none")
)

(define-method timed_wait
  (of-object "GCond")
  (c-name "g_cond_timed_wait")
  (return-type "gboolean")
  (parameters
    '("GMutex*" "mutex")
    '("GTimeVal*" "timeval")
  )
)



;; From glibconfig.h


