GValue: Add interned string support

This adds support to be able to explicitely stored interned strings into
G_TYPE_STRING GValue.

This is useful for cases where the user:
* *knows* the string to be stored in the GValue is canonical
* Wants to know whther the string stored is canonical

This allows:
* zero-cost GValue copy (the content is guaranteed to be unique and exist
  throughout the process life)
* zero-cost string equality checks (if both string GValue are interned, you just
  need to check the pointers for equality or not, instead of doing a strcmp).

Fixes #2109
This commit is contained in:
Edward Hervey
2020-05-15 07:38:30 +02:00
committed by Edward Hervey
parent c964749de6
commit 1a95ce84ed
5 changed files with 99 additions and 0 deletions

View File

@@ -684,6 +684,8 @@ G_IS_PARAM_SPEC_STRING
G_PARAM_SPEC_STRING
G_VALUE_HOLDS_STRING
G_TYPE_PARAM_STRING
G_VALUE_IS_INTERNED_STRING
G_VALUE_INTERNED_STRING
GParamSpecString
gchararray
g_param_spec_string
@@ -693,6 +695,7 @@ g_value_take_string
g_value_set_string_take_ownership
g_value_get_string
g_value_dup_string
g_value_set_interned_string
<SUBSECTION GParamSpec>
G_IS_PARAM_SPEC_PARAM