📄 glib-full.h
字号:
guint length);GByteArray* g_byte_array_remove_index (GByteArray *array, guint index);GByteArray* g_byte_array_remove_index_fast (GByteArray *array, guint index);/* Hash Functions */gint g_str_equal (gconstpointer v, gconstpointer v2);guint g_str_hash (gconstpointer v);gint g_int_equal (gconstpointer v, gconstpointer v2);guint g_int_hash (gconstpointer v);/* This "hash" function will just return the key's adress as an * unsigned integer. Useful for hashing on plain adresses or * simple integer values. * passing NULL into g_hash_table_new() as GHashFunc has the * same effect as passing g_direct_hash(). */guint g_direct_hash (gconstpointer v);gint g_direct_equal (gconstpointer v, gconstpointer v2);/* Quarks (string<->id association) */GQuark g_quark_try_string (const gchar *string);GQuark g_quark_from_static_string (const gchar *string);GQuark g_quark_from_string (const gchar *string);gchar* g_quark_to_string (GQuark quark);/* Keyed Data List */void g_datalist_init (GData **datalist);void g_datalist_clear (GData **datalist);gpointer g_datalist_id_get_data (GData **datalist, GQuark key_id);void g_datalist_id_set_data_full (GData **datalist, GQuark key_id, gpointer data, GDestroyNotify destroy_func);void g_datalist_id_remove_no_notify (GData **datalist, GQuark key_id);void g_datalist_foreach (GData **datalist, GDataForeachFunc func, gpointer user_data);#define g_datalist_id_set_data(dl, q, d) \ g_datalist_id_set_data_full ((dl), (q), (d), NULL)#define g_datalist_id_remove_data(dl, q) \ g_datalist_id_set_data ((dl), (q), NULL)#define g_datalist_get_data(dl, k) \ (g_datalist_id_get_data ((dl), g_quark_try_string (k)))#define g_datalist_set_data_full(dl, k, d, f) \ g_datalist_id_set_data_full ((dl), g_quark_from_string (k), (d), (f))#define g_datalist_remove_no_notify(dl, k) \ g_datalist_id_remove_no_notify ((dl), g_quark_try_string (k))#define g_datalist_set_data(dl, k, d) \ g_datalist_set_data_full ((dl), (k), (d), NULL)#define g_datalist_remove_data(dl, k) \ g_datalist_id_set_data ((dl), g_quark_try_string (k), NULL)/* Location Associated Keyed Data */void g_dataset_destroy (gconstpointer dataset_location);gpointer g_dataset_id_get_data (gconstpointer dataset_location, GQuark key_id);void g_dataset_id_set_data_full (gconstpointer dataset_location, GQuark key_id, gpointer data, GDestroyNotify destroy_func);void g_dataset_id_remove_no_notify (gconstpointer dataset_location, GQuark key_id);void g_dataset_foreach (gconstpointer dataset_location, GDataForeachFunc func, gpointer user_data);#define g_dataset_id_set_data(l, k, d) \ g_dataset_id_set_data_full ((l), (k), (d), NULL)#define g_dataset_id_remove_data(l, k) \ g_dataset_id_set_data ((l), (k), NULL)#define g_dataset_get_data(l, k) \ (g_dataset_id_get_data ((l), g_quark_try_string (k)))#define g_dataset_set_data_full(l, k, d, f) \ g_dataset_id_set_data_full ((l), g_quark_from_string (k), (d), (f))#define g_dataset_remove_no_notify(l, k) \ g_dataset_id_remove_no_notify ((l), g_quark_try_string (k))#define g_dataset_set_data(l, k, d) \ g_dataset_set_data_full ((l), (k), (d), NULL)#define g_dataset_remove_data(l, k) \ g_dataset_id_set_data ((l), g_quark_try_string (k), NULL)/* GScanner: Flexible lexical scanner for general purpose. *//* Character sets */#define G_CSET_A_2_Z "ABCDEFGHIJKLMNOPQRSTUVWXYZ"#define G_CSET_a_2_z "abcdefghijklmnopqrstuvwxyz"#define G_CSET_LATINC "\300\301\302\303\304\305\306"\ "\307\310\311\312\313\314\315\316\317\320"\ "\321\322\323\324\325\326"\ "\330\331\332\333\334\335\336"#define G_CSET_LATINS "\337\340\341\342\343\344\345\346"\ "\347\350\351\352\353\354\355\356\357\360"\ "\361\362\363\364\365\366"\ "\370\371\372\373\374\375\376\377"/* Error types */typedef enum{ G_ERR_UNKNOWN, G_ERR_UNEXP_EOF, G_ERR_UNEXP_EOF_IN_STRING, G_ERR_UNEXP_EOF_IN_COMMENT, G_ERR_NON_DIGIT_IN_CONST, G_ERR_DIGIT_RADIX, G_ERR_FLOAT_RADIX, G_ERR_FLOAT_MALFORMED} GErrorType;/* Token types */typedef enum{ G_TOKEN_EOF = 0, G_TOKEN_LEFT_PAREN = '(', G_TOKEN_RIGHT_PAREN = ')', G_TOKEN_LEFT_CURLY = '{', G_TOKEN_RIGHT_CURLY = '}', G_TOKEN_LEFT_BRACE = '[', G_TOKEN_RIGHT_BRACE = ']', G_TOKEN_EQUAL_SIGN = '=', G_TOKEN_COMMA = ',', G_TOKEN_NONE = 256, G_TOKEN_ERROR, G_TOKEN_CHAR, G_TOKEN_BINARY, G_TOKEN_OCTAL, G_TOKEN_INT, G_TOKEN_HEX, G_TOKEN_FLOAT, G_TOKEN_STRING, G_TOKEN_SYMBOL, G_TOKEN_IDENTIFIER, G_TOKEN_IDENTIFIER_NULL, G_TOKEN_COMMENT_SINGLE, G_TOKEN_COMMENT_MULTI, G_TOKEN_LAST} GTokenType;union _GTokenValue{ gpointer v_symbol; gchar *v_identifier; gulong v_binary; gulong v_octal; gulong v_int; gdouble v_float; gulong v_hex; gchar *v_string; gchar *v_comment; guchar v_char; guint v_error;};struct _GScannerConfig{ /* Character sets */ gchar *cset_skip_characters; /* default: " \t\n" */ gchar *cset_identifier_first; gchar *cset_identifier_nth; gchar *cpair_comment_single; /* default: "#\n" */ /* Should symbol lookup work case sensitive? */ guint case_sensitive : 1; /* Boolean values to be adjusted "on the fly" * to configure scanning behaviour. */ guint skip_comment_multi : 1; /* C like comment */ guint skip_comment_single : 1; /* single line comment */ guint scan_comment_multi : 1; /* scan multi line comments? */ guint scan_identifier : 1; guint scan_identifier_1char : 1; guint scan_identifier_NULL : 1; guint scan_symbols : 1; guint scan_binary : 1; guint scan_octal : 1; guint scan_float : 1; guint scan_hex : 1; /* `0x0ff0' */ guint scan_hex_dollar : 1; /* `$0ff0' */ guint scan_string_sq : 1; /* string: 'anything' */ guint scan_string_dq : 1; /* string: "\\-escapes!\n" */ guint numbers_2_int : 1; /* bin, octal, hex => int */ guint int_2_float : 1; /* int => G_TOKEN_FLOAT? */ guint identifier_2_string : 1; guint char_2_token : 1; /* return G_TOKEN_CHAR? */ guint symbol_2_token : 1; guint scope_0_fallback : 1; /* try scope 0 on lookups? */};struct _GScanner{ /* unused fields */ gpointer user_data; guint max_parse_errors; /* g_scanner_error() increments this field */ guint parse_errors; /* name of input stream, featured by the default message handler */ const gchar *input_name; /* data pointer for derived structures */ gpointer derived_data; /* link into the scanner configuration */ GScannerConfig *config; /* fields filled in after g_scanner_get_next_token() */ GTokenType token; GTokenValue value; guint line; guint position; /* fields filled in after g_scanner_peek_next_token() */ GTokenType next_token; GTokenValue next_value; guint next_line; guint next_position; /* to be considered private */ GHashTable *symbol_table; gint input_fd; const gchar *text; const gchar *text_end; gchar *buffer; guint scope_id; /* handler function for _warn and _error */ GScannerMsgFunc msg_handler;};GScanner* g_scanner_new (GScannerConfig *config_templ);void g_scanner_destroy (GScanner *scanner);void g_scanner_input_file (GScanner *scanner, gint input_fd);void g_scanner_sync_file_offset (GScanner *scanner);void g_scanner_input_text (GScanner *scanner, const gchar *text, guint text_len);GTokenType g_scanner_get_next_token (GScanner *scanner);GTokenType g_scanner_peek_next_token (GScanner *scanner);GTokenType g_scanner_cur_token (GScanner *scanner);GTokenValue g_scanner_cur_value (GScanner *scanner);guint g_scanner_cur_line (GScanner *scanner);guint g_scanner_cur_position (GScanner *scanner);gboolean g_scanner_eof (GScanner *scanner);guint g_scanner_set_scope (GScanner *scanner, guint scope_id);void g_scanner_scope_add_symbol (GScanner *scanner, guint scope_id, const gchar *symbol, gpointer value);void g_scanner_scope_remove_symbol (GScanner *scanner, guint scope_id, const gchar *symbol);gpointer g_scanner_scope_lookup_symbol (GScanner *scanner, guint scope_id, const gchar *symbol);void g_scanner_scope_foreach_symbol (GScanner *scanner, guint scope_id, GHFunc func, gpointer user_data);gpointer g_scanner_lookup_symbol (GScanner *scanner, const gchar *symbol);void g_scanner_freeze_symbol_table (GScanner *scanner);void g_scanner_thaw_symbol_table (GScanner *scanner);void g_scanner_unexp_token (GScanner *scanner, GTokenType expected_token, const gchar *identifier_spec, const gchar *symbol_spec, const gchar *symbol_name, const gchar *message, gint is_error);void g_scanner_error (GScanner *scanner, const gchar *format, ...) G_GNUC_PRINTF (2,3);void g_scanner_warn (GScanner *scanner, const gchar *format, ...) G_GNUC_PRINTF (2,3);gint g_scanner_stat_mode (const gchar *filename);/* keep downward source compatibility */#define g_scanner_add_symbol( scanner, symbol, value ) G_STMT_START { \ g_scanner_scope_add_symbol ((scanner), 0, (symbol), (value)); \} G_STMT_END#define g_scanner_remove_symbol( scanner, symbol ) G_STMT_START { \ g_scanner_scope_remove_symbol ((scanner), 0, (symbol)); \} G_STMT_END#define g_scanner_foreach_symbol( scanner, func, data ) G_STMT_START { \ g_scanner_scope_foreach_symbol ((scanner), 0, (func), (data)); \} G_STMT_END/* GCompletion */struct _GCompletion{ GList* items; GCompletionFunc func; gchar* prefix; GList* cache;};GCompletion* g_completion_new (GCompletionFunc func);void g_completion_add_items (GCompletion* cmp, GList* items);void g_completion_remove_items (GCompletion* cmp, GList* items);void g_completion_clear_items (GCompletion* cmp);GList* g_completion_complete (GCompletion* cmp, gchar* prefix, gchar** new_prefix);void g_completion_free (GCompletion* cmp);/* GDate * * Date calculations (not time for now, to be resolved). These are a * mutant combination of Steffen Beyer's DateCalc routines * (http://www.perl.com/CPAN/authors/id/STBEY/) and Jon Trowbridge's * date routines (written for in-house software). Written by Havoc * Pennington <hp@pobox.com> */typedef guint16 GDateYear;typedef guint8 GDateDay; /* day of the month */typedef struct _GDate GDate;/* make struct tm known without having to include time.h */struct tm;/* enum used to specify order of appearance in parsed date strings */typedef enum{ G_DATE_DAY = 0, G_DATE_MONTH = 1, G_DATE_YEAR = 2} GDateDMY;/* actual week and month values */typedef enum{ G_DATE_BAD_WEEKDAY = 0, G_DATE_MONDAY = 1, G_DATE_TUESDAY = 2, G_DATE_WEDNESDAY = 3, G_DATE_THURSDAY = 4, G_DATE_FRIDAY = 5, G_DATE_SATURDAY = 6, G_DATE_SUNDAY = 7} GDateWeekday;typedef enum{ G_DATE_BAD_MONTH = 0, G_DATE_JANUARY = 1, G_DATE_FEBRUARY = 2, G_DATE_MARCH = 3, G_DATE_APRIL = 4, G_DATE_MAY = 5, G_DATE_JUNE = 6, G_DATE_JULY = 7, G_DATE_AUGUST = 8, G_DATE_SEPTEMBER = 9, G_DATE_OCTOBER = 10, G_DATE_NOVEMBER = 11, G_DATE_DECEMBER = 12} GDateMonth;#define G_DATE_BAD_JULIAN 0U#define G_DATE_BAD_DAY 0U#define G_DATE_BAD_YEAR 0U/* Note: directly manipulating structs is generally a bad idea, but * in this case it's an *incredibly* bad idea, because all or part * of this struct can be invalid at any given time. Use the functions, * or you will get hosed, I promise. */struct _GDate{ guint julian_days : 32; /* julian days representation - we use a * bitfield hoping that 64 bit platforms * will pack this whole struct in one big * int */ guint julian : 1; /* julian is valid */ guint dmy : 1; /* dmy is valid */ /* DMY representation */ guint day : 6; guint month : 4; guint year : 16; };/* g_date_new() returns an invalid date, you then have to _set() stuff * to get a usable object. You can also allocate a GDate statically, * then call g_date_clear() to initialize. */GDate* g_date_new (void);GDate* g_date_new_dmy (GDateDay d
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -