GimpUnit _gimp_unit_cache_new (gchar *identifier, gdouble factor, gint digits, gchar *symbol, gchar *abbreviation, gchar *singular, gchar *plural) { return _gimp_unit_new (identifier, factor, digits, symbol, abbreviation, singular, plural); }
static GValueArray * unit_new_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GValueArray *args, GError **error) { gboolean success = TRUE; GValueArray *return_vals; const gchar *identifier; gdouble factor; gint32 digits; const gchar *symbol; const gchar *abbreviation; const gchar *singular; const gchar *plural; GimpUnit unit_id = 0; identifier = g_value_get_string (&args->values[0]); factor = g_value_get_double (&args->values[1]); digits = g_value_get_int (&args->values[2]); symbol = g_value_get_string (&args->values[3]); abbreviation = g_value_get_string (&args->values[4]); singular = g_value_get_string (&args->values[5]); plural = g_value_get_string (&args->values[6]); if (success) { unit_id = _gimp_unit_new (gimp, identifier, factor, digits, symbol, abbreviation, singular, plural); } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) g_value_set_int (&return_vals->values[1], unit_id); return return_vals; }
static GTokenType gimp_unitrc_unit_info_deserialize (GScanner *scanner, Gimp *gimp) { gchar *identifier = NULL; gdouble factor = 1.0; gint digits = 2.0; gchar *symbol = NULL; gchar *abbreviation = NULL; gchar *singular = NULL; gchar *plural = NULL; GTokenType token; if (! gimp_scanner_parse_string (scanner, &identifier)) return G_TOKEN_STRING; token = G_TOKEN_LEFT_PAREN; while (g_scanner_peek_next_token (scanner) == token) { token = g_scanner_get_next_token (scanner); switch (token) { case G_TOKEN_LEFT_PAREN: token = G_TOKEN_SYMBOL; break; case G_TOKEN_SYMBOL: switch (GPOINTER_TO_INT (scanner->value.v_symbol)) { case UNIT_FACTOR: token = G_TOKEN_FLOAT; if (! gimp_scanner_parse_float (scanner, &factor)) goto cleanup; break; case UNIT_DIGITS: token = G_TOKEN_INT; if (! gimp_scanner_parse_int (scanner, &digits)) goto cleanup; break; case UNIT_SYMBOL: token = G_TOKEN_STRING; if (! gimp_scanner_parse_string (scanner, &symbol)) goto cleanup; break; case UNIT_ABBREV: token = G_TOKEN_STRING; if (! gimp_scanner_parse_string (scanner, &abbreviation)) goto cleanup; break; case UNIT_SINGULAR: token = G_TOKEN_STRING; if (! gimp_scanner_parse_string (scanner, &singular)) goto cleanup; break; case UNIT_PLURAL: token = G_TOKEN_STRING; if (! gimp_scanner_parse_string (scanner, &plural)) goto cleanup; break; default: break; } token = G_TOKEN_RIGHT_PAREN; break; case G_TOKEN_RIGHT_PAREN: token = G_TOKEN_LEFT_PAREN; break; default: break; } } if (token == G_TOKEN_LEFT_PAREN) { token = G_TOKEN_RIGHT_PAREN; if (g_scanner_peek_next_token (scanner) == token) { GimpUnit unit = _gimp_unit_new (gimp, identifier, factor, digits, symbol, abbreviation, singular, plural); /* make the unit definition persistent */ _gimp_unit_set_deletion_flag (gimp, unit, FALSE); } } cleanup: g_free (identifier); g_free (symbol); g_free (abbreviation); g_free (singular); g_free (plural); return token; }