1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-07-02 07:40:30 +02:00

Locale have static tc16

* libguile/print.c (iprin1):
* libguile/eq.c (scm_equal_p): Add case for locales and also regexps
which we missed in the past.
* libguile/finalizers.h:
* libguile/finalizers.c (scm_i_add_locale_finalizer):
(run_finalizer): Add locale finalizers.
* libguile/scm.h (scm_tc16_locale): New tc16.
* module/oop/goops.scm:
* libguile/goops.c: Add locale class.
* libguile/i18n.c: Give locale objects their own tc16.
This commit is contained in:
Andy Wingo 2025-06-18 12:18:24 +02:00
parent a5c70aa914
commit bc43d4f9a7
9 changed files with 84 additions and 25 deletions

View file

@ -41,6 +41,7 @@
#include "gc-internal.h"
#include "gsubr.h"
#include "init.h"
#include "i18n.h"
#include "numbers.h"
#include "ports.h"
#ifdef ENABLE_REGEX
@ -82,6 +83,7 @@ enum builtin_finalizer_kind
FINALIZE_KIND_PORT,
FINALIZE_KIND_DIRECTORY,
FINALIZE_KIND_REGEXP,
FINALIZE_KIND_LOCALE,
};
static SCM
@ -137,6 +139,12 @@ scm_i_add_directory_finalizer (struct scm_thread *thread, SCM obj)
return add_builtin_finalizer (thread, obj, FINALIZE_KIND_DIRECTORY);
}
SCM
scm_i_add_locale_finalizer (struct scm_thread *thread, SCM obj)
{
return add_builtin_finalizer (thread, obj, FINALIZE_KIND_LOCALE);
}
SCM
scm_i_add_regexp_finalizer (struct scm_thread *thread, SCM obj)
{
@ -201,6 +209,9 @@ run_finalizer (struct scm_thread *thread, SCM obj, SCM closure)
abort ();
#endif
break;
case FINALIZE_KIND_LOCALE:
scm_i_finalize_locale (thread, obj);
break;
default:
abort ();
}