From 02d1c8453d3f17d5a1e6cd8df2f7b0d7739f9b7d Mon Sep 17 00:00:00 2001 From: eknauel Date: Thu, 16 Oct 2003 16:03:19 +0000 Subject: [PATCH] + fixed scheme record inits --- c/libs/xft.c | 39 ++++++++++++++++++++++++++------------- c/libs/xft.h | 33 +++++++++++++++++---------------- 2 files changed, 43 insertions(+), 29 deletions(-) diff --git a/c/libs/xft.c b/c/libs/xft.c index 005567e..c7bc50b 100644 --- a/c/libs/xft.c +++ b/c/libs/xft.c @@ -20,7 +20,7 @@ s48_value scx_XftPatternCreate(void) s48_value scx_XftPatternDestroy(s48_value sxp) { - XftPatternDestroy((XftPattern *) scx_extract_xftpattern(sxp)); + XftPatternDestroy(scx_extract_xftpattern(sxp)); return S48_UNSPECIFIC; } @@ -296,6 +296,12 @@ s48_value scx_XftObjectSetCreate(void) return scx_enter_xftobjectset(XftObjectSetCreate()); } +s48_value scx_XftObjectSetDestroy(s48_value sxo) +{ + XftObjectSetDestroy(scx_extract_xftobjectset(sxo)); + return S48_UNSPECIFIC; +} + s48_value scx_XftObjectSetAdd(s48_value sxo, s48_value sobj) { struct xft_pattern_property *tbl; @@ -322,19 +328,25 @@ s48_value scx_XftListFontsPatternObjects(s48_value sdpy, s48_value sscreen, void scx_xft_init(void) { - XFT_GC_PROTECT_IMPORT_BINDING(scx_xftpattern_record_type, "xft-pattern"); - XFT_GC_PROTECT_IMPORT_BINDING(scx_xftfontset_record_type, "xft-font"); - XFT_GC_PROTECT_IMPORT_BINDING(scx_xftdraw_record_type, "xft-draw"); - XFT_GC_PROTECT_IMPORT_BINDING(scx_xftcolor_record_type, "xft-color"); - XFT_GC_PROTECT_IMPORT_BINDING(scx_xftobjectset_record_type, "xft-objectset"); - XFT_GC_PROTECT_IMPORT_BINDING(scx_xftfontset_record_type, "xft-fontset"); + XFT_GC_PROTECT_IMPORT_BINDING(scx_xftpattern_record_type, "xft-pattern"); + XFT_GC_PROTECT_IMPORT_BINDING(scx_xftfontset_record_type, "xft-font"); + XFT_GC_PROTECT_IMPORT_BINDING(scx_xftdraw_record_type, "xft-draw"); + XFT_GC_PROTECT_IMPORT_BINDING(scx_xftcolor_record_type, "xft-color"); + XFT_GC_PROTECT_IMPORT_BINDING(scx_xftobjectset_record_type, "xft-objectset"); + XFT_GC_PROTECT_IMPORT_BINDING(scx_xftfontset_record_type, "xft-fontset"); - GC_PROTECT_ENTER_INT(scx_XftResultMatch, XftResultMatch); - GC_PROTECT_ENTER_INT(scx_XftResultNoMatch, XftResultNoMatch); - GC_PROTECT_ENTER_INT(scx_XftResultTypeMismatch, XftResultTypeMismatch); - GC_PROTECT_ENTER_INT(scx_XftResultNoId, XftResultNoId); - GC_PROTECT_ENTER_INT(scx_XftVersionMajor, SCX_XFT_VERSION_MAJOR); - GC_PROTECT_ENTER_INT(scx_XftVersionMinor, SCX_XFT_VERSION_MINOR); + SCX_EXPORT_INTEGER_TO_S48("scx-xft-result-match", scx_XftResultMatch, + XftResultMatch); + SCX_EXPORT_INTEGER_TO_S48("scx-xft-result-no-match", scx_XftResultNoMatch, + XftResultNoMatch); + SCX_EXPORT_INTEGER_TO_S48("scx-xft-result-type-mismatch", scx_XftResultTypeMismatch, + XftResultTypeMismatch); + SCX_EXPORT_INTEGER_TO_S48("scx-xft-result-no-id", scx_XftResultNoId, + XftResultNoId); + SCX_EXPORT_INTEGER_TO_S48("scx-xft-version-major", scx_XftVersionMajor, + SCX_XFT_VERSION_MAJOR); + SCX_EXPORT_INTEGER_TO_S48("scx-xft-version-minor", scx_XftVersionMinor, + SCX_XFT_VERSION_MINOR); S48_EXPORT_FUNCTION(scx_XftPatternCreate); S48_EXPORT_FUNCTION(scx_XftPatternDestroy); @@ -363,6 +375,7 @@ void scx_xft_init(void) S48_EXPORT_FUNCTION(scx_XftDrawSetClip); S48_EXPORT_FUNCTION(scx_XftObjectSetCreate); + S48_EXPORT_FUNCTION(scx_XftObjectSetDestroy); S48_EXPORT_FUNCTION(scx_XftObjectSetAdd); S48_EXPORT_FUNCTION(scx_XftListFontsPatternObjects); } diff --git a/c/libs/xft.h b/c/libs/xft.h index ba6ee0f..20537a9 100644 --- a/c/libs/xft.h +++ b/c/libs/xft.h @@ -95,24 +95,24 @@ static struct xft_pattern_property xft_pattern_property_tbl [] = { }; /* scheme record types */ -static s48_value scx_xftpattern_record_type = S48_UNSPECIFIC; -static s48_value scx_xftfont_record_type = S48_UNSPECIFIC; -static s48_value scx_xftdraw_record_type = S48_UNSPECIFIC; -static s48_value scx_xftcolor_record_type = S48_UNSPECIFIC; -static s48_value scx_xftobjectset_record_type = S48_UNSPECIFIC; -static s48_value scx_xftfontset_record_type = S48_UNSPECIFIC; +static s48_value scx_xftpattern_record_type = S48_FALSE; +s48_value scx_xftfont_record_type = S48_FALSE; +s48_value scx_xftdraw_record_type = S48_FALSE; +s48_value scx_xftcolor_record_type = S48_FALSE; +s48_value scx_xftobjectset_record_type = S48_FALSE; +s48_value scx_xftfontset_record_type = S48_FALSE; #define XFT_GC_PROTECT_IMPORT_BINDING(CN, SN) \ S48_GC_PROTECT_GLOBAL(CN); \ - CN = s48_get_imported_binding("SN"); + CN = s48_get_imported_binding(SN); /* C values exported to scheme */ -static s48_value scx_XftResultMatch = S48_UNSPECIFIC; -static s48_value scx_XftResultNoMatch = S48_UNSPECIFIC; -static s48_value scx_XftResultTypeMismatch = S48_UNSPECIFIC; -static s48_value scx_XftResultNoId = S48_UNSPECIFIC; -static s48_value scx_XftVersionMajor = S48_UNSPECIFIC; -static s48_value scx_XftVersionMinor = S48_UNSPECIFIC; +s48_value scx_XftResultMatch = S48_FALSE; +s48_value scx_XftResultNoMatch = S48_FALSE; +s48_value scx_XftResultTypeMismatch = S48_FALSE; +s48_value scx_XftResultNoId = S48_FALSE; +s48_value scx_XftVersionMajor = S48_FALSE; +s48_value scx_XftVersionMinor = S48_FALSE; #define XFT_REC_ACCESSOR_MAKER(FN, TN, RN) \ s48_value FN(TN *p) \ @@ -127,9 +127,10 @@ static s48_value scx_XftVersionMinor = S48_UNSPECIFIC; return xftrec; \ } -#define GC_PROTECT_ENTER_INT(schemeval, i) \ - S48_GC_PROTECT_GLOBAL(schemeval); \ - schemeval = s48_enter_integer(i); +#define SCX_EXPORT_INTEGER_TO_S48(scheme_name, scheme_val, i) \ + S48_GC_PROTECT_GLOBAL(scheme_val); \ + scheme_val = s48_enter_integer(i); \ + s48_define_exported_binding(scheme_name, scheme_val); /* function prototypes */ s48_value scx_enter_xftpattern(XftPattern *p);