summaryrefslogtreecommitdiff
path: root/snd-marks.c
diff options
context:
space:
mode:
authorAlessio Treglia <quadrispro@ubuntu.com>2010-02-11 17:43:11 +0100
committerAlessio Treglia <quadrispro@ubuntu.com>2010-02-11 17:43:11 +0100
commitd136f8f7d28ea86f3f040e95aef4c7a95ea8b7e2 (patch)
tree286ff861eca93f6a1ccb5248bef34b3f03fbe200 /snd-marks.c
parentf369f1bdb2b9efc5b7ed3b74a0b4b51642086e18 (diff)
Imported Upstream version 11.3
Diffstat (limited to 'snd-marks.c')
-rw-r--r--snd-marks.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/snd-marks.c b/snd-marks.c
index b70db2a..dbca50c 100644
--- a/snd-marks.c
+++ b/snd-marks.c
@@ -2062,7 +2062,7 @@ static XEN g_xen_mark_to_string(XEN obj)
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static bool xen_mark_equalp(xen_mark *v1, xen_mark *v2)
{
return((v1 == v2) ||
@@ -2097,7 +2097,7 @@ XEN new_xen_mark(int n)
}
-#if HAVE_S7
+#if HAVE_SCHEME
static bool s7_xen_mark_equalp(void *obj1, void *obj2)
{
return((obj1 == obj2) ||
@@ -2121,7 +2121,7 @@ static XEN s7_xen_mark_copy(s7_scheme *sc, s7_pointer obj)
static void init_xen_mark(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xen_mark_tag = XEN_MAKE_OBJECT_TYPE("<mark>", print_xen_mark, free_xen_mark, s7_xen_mark_equalp, NULL, NULL, NULL, NULL, s7_xen_mark_copy, NULL);
#else
#if HAVE_RUBY
@@ -2929,6 +2929,17 @@ static XEN g_set_mark_properties(XEN n, XEN val)
}
+static XEN g_mark_property(XEN key, XEN id)
+{
+ #define H_mark_property "(" S_mark_property " key id) returns the value associated with 'key' in the given mark's property list, or #f"
+ return(XEN_ASSOC_REF(key, g_mark_properties(id)));
+}
+
+static XEN g_set_mark_property(XEN key, XEN id, XEN val)
+{
+ g_set_mark_properties(id, XEN_ASSOC_SET(key, val, g_mark_properties(id)));
+ return(val);
+}
@@ -2958,6 +2969,8 @@ XEN_NARGIFY_1(g_integer_to_mark_w, g_integer_to_mark)
XEN_NARGIFY_1(g_mark_to_integer_w, g_mark_to_integer)
XEN_NARGIFY_1(g_mark_properties_w, g_mark_properties)
XEN_NARGIFY_2(g_set_mark_properties_w, g_set_mark_properties)
+XEN_NARGIFY_2(g_mark_property_w, g_mark_property)
+XEN_NARGIFY_3(g_set_mark_property_w, g_set_mark_property)
#if MUS_DEBUGGING && HAVE_SCHEME
XEN_NARGIFY_3(g_test_control_drag_mark_w, g_test_control_drag_mark)
#endif
@@ -2987,6 +3000,8 @@ XEN_NARGIFY_2(g_set_mark_properties_w, g_set_mark_properties)
#define g_mark_to_integer_w g_mark_to_integer
#define g_mark_properties_w g_mark_properties
#define g_set_mark_properties_w g_set_mark_properties
+#define g_mark_property_w g_mark_property
+#define g_set_mark_property_w g_set_mark_property
#if MUS_DEBUGGING && HAVE_SCHEME
#define g_test_control_drag_mark_w g_test_control_drag_mark
#endif
@@ -3035,6 +3050,9 @@ void g_init_marks(void)
XEN_DEFINE_PROCEDURE_WITH_SETTER(S_mark_properties, g_mark_properties_w, H_mark_properties,
S_setB S_mark_properties, g_set_mark_properties_w, 1, 0, 2, 0);
+ XEN_DEFINE_PROCEDURE_WITH_SETTER(S_mark_property, g_mark_property_w, H_mark_property,
+ S_setB S_mark_property, g_set_mark_property_w, 2, 0, 3, 0);
+
#define H_draw_mark_hook S_draw_mark_hook " (mark-id): called before a mark is drawn (in XOR mode). \
If the hook returns " PROC_TRUE ", the mark is not drawn."