Struct
IpuzCharsetBuilder
Description [src]
struct IpuzCharsetBuilder {
/* No available fields */
}
An opaque data structure used to dynamically build an
IpuzCharset.
This structure keeps track of the number of times a given unicode
character is added or removed from it. Once that process is done,
it can be converted to a IpuzCharset.
The main reason for the split between the builder and the charset is for performance: certain operations involving charsets are performance critical, and having them immutable helps with that.
Example:
IpuzCharsetBuilder *builder;
g_autoptr (IpuzCharset) charset = NULL;
builder = ipuz_charset_builder_new ();
ipuz_charset_builder_add_text (builder, "STAR");
ipuz_charset_builder_add_text (builder, "CARET");
ipuz_charset_builder_add_text (builder, "HASH");
ipuz_charset_builder_add_text (builder, "BRACE");
// builder is consumed by this, and thus doesn't need freeing
charset = ipuz_charset_builder_build (builder);
g_assert_cmpint (ipuz_charset_get_count (charset, g_utf8_get_char ("A")),
==,
4);
Note
Calling ipuz_charset_builder_build() will free the
builder while returning a new IpuzCharset. As a
result, there is almost never a need to explicitly free a
builder unless it’s unused.
Constructors
ipuz_charset_builder_new
Returns an empty builder for a character set. Use
ipuz_charset_builder_add_text() to populate it. Once it’s
populated, use ipuz_charset_builder_build() to create a charset.
ipuz_charset_builder_new_for_language
Creates a charset builder with a list of all characters in common
use in crosswords for lang‘s alphabet. lang should be a country
code, but can be a fully-qualified locale (such as from the $LANG
environment variable). In that instance the remainder of the string
is ignored, as we don’t consider regional distinctions when
determining a default alphabet.
ipuz_charset_builder_new_from_text
Returns an IpuzCharsetBuilder prepopulated with the
characters from text.
Instance methods
ipuz_charset_builder_build
Consumes self and frees it, returning an immutable
IpuzCharset in the process.
ipuz_charset_builder_remove_character
Tries to remove one instance of c from self, i.e., decrease its
character count by one. If c is not present in the self, this
function returns FALSE and leaves self unchanged.
ipuz_charset_builder_remove_text
Tries to remove all the characters in text from self,
i.e. decrease their character counts by as many instances of each
character there are in text. If text contains characters that are
not already in the self, or if text contains more of a certain
character than self already has, this function returns FALSE and
leaves self unchanged.