summaryrefslogtreecommitdiff
path: root/libguile/keywords.h
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2013-04-06 13:36:24 -0400
committerMark H Weaver <mhw@netris.org>2013-04-06 18:09:45 -0400
commita16d4e82e949954805bf2cd42cfbb519fcf4012d (patch)
tree101e32a296bb1228caeaf57feb54e869c26115a9 /libguile/keywords.h
parentc608e1aafae347dc52cda70aa9379e9b6803b5e6 (diff)
downloadguile-a16d4e82e949954805bf2cd42cfbb519fcf4012d.tar.gz
Implement 'scm_c_bind_keyword_arguments'.
* libguile/keywords.c (scm_keyword_argument_error): New variable. (scm_c_bind_keyword_arguments): New API function. * libguile/keywords.h (enum scm_keyword_arguments_flags): New enum. (scm_t_keyword_arguments_flags): New typedef. (scm_c_bind_keyword_arguments): New prototype. * doc/ref/api-data.texi (Coding With Keywords, Keyword Procedures): Add documentation. * test-suite/standalone/test-scm-c-bind-keyword-arguments.c: New file. * test-suite/standalone/Makefile.am: Add test-scm-c-bind-keyword-arguments test.
Diffstat (limited to 'libguile/keywords.h')
-rw-r--r--libguile/keywords.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/libguile/keywords.h b/libguile/keywords.h
index c9e6af14b..3cdb0ecdd 100644
--- a/libguile/keywords.h
+++ b/libguile/keywords.h
@@ -41,6 +41,18 @@ SCM_API SCM scm_from_locale_keywordn (const char *name, size_t len);
SCM_API SCM scm_from_latin1_keyword (const char *name);
SCM_API SCM scm_from_utf8_keyword (const char *name);
+enum scm_keyword_arguments_flags
+{
+ SCM_ALLOW_OTHER_KEYS = (1U << 0),
+ SCM_ALLOW_NON_KEYWORD_ARGUMENTS = (1U << 1)
+};
+
+typedef enum scm_keyword_arguments_flags scm_t_keyword_arguments_flags;
+
+SCM_API void
+scm_c_bind_keyword_arguments (const char *subr, SCM rest,
+ scm_t_keyword_arguments_flags flags, ...);
+
SCM_INTERNAL void scm_init_keywords (void);
#endif /* SCM_KEYWORDS_H */