aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChloe Kudryavtsev <code@toast.bunkerlabs.net>2023-03-22 16:28:39 -0400
committerChloe Kudryavtsev <code@toast.bunkerlabs.net>2023-03-22 16:28:39 -0400
commitac7648727c4b7dcfe95fad0bdf84668ddf5df220 (patch)
treed5411c2256807b4e03610faf314df7e37f17b843
parentreadme: update readme progress (diff)
native: add OO-like calls to jurl_type
also fix a jurl.h typo: getopt -> getinfo
-rw-r--r--jurl.c22
-rw-r--r--jurl.h2
2 files changed, 22 insertions, 2 deletions
diff --git a/jurl.c b/jurl.c
index d1a937b..d549441 100644
--- a/jurl.c
+++ b/jurl.c
@@ -20,10 +20,29 @@ int jurl_gc(void *p, size_t s) {
return 0;
}
+static JanetMethod jurl_methods[] = {
+ {"reset", jurl_reset},
+ {"dup", jurl_dup},
+ {"perform", jurl_perform},
+ {"getinfo", jurl_getinfo},
+ {"setopt", jurl_setopt},
+ {NULL, NULL},
+};
+
+static int jurl_get(void *p, Janet key, Janet *out) {
+ (void) p;
+ if (!janet_checktype(key, JANET_KEYWORD)) {
+ return 0;
+ }
+ return janet_getmethod(janet_unwrap_keyword(key), jurl_methods, out);
+}
+
const JanetAbstractType jurl_type = {
"jurl", // name
jurl_gc, // gc
- JANET_ATEND_GC
+ NULL, // gcmark
+ jurl_get, // get
+ JANET_ATEND_GET
};
jurl_handle *janet_getjurl(Janet *argv, int32_t n) {
@@ -122,3 +141,4 @@ JANET_CFUN(jurl_perform) {
jurl_handle *jurl = (jurl_handle*)janet_getjurl(argv, 0);
return jurl_geterror(curl_easy_perform(jurl->handle));
}
+
diff --git a/jurl.h b/jurl.h
index 5b15deb..5cb5c4f 100644
--- a/jurl.h
+++ b/jurl.h
@@ -40,7 +40,7 @@ Janet jurl_geterror(CURLcode code);
JANET_CFUN(jurl_strerror);
// jurl_getinfo.c
-JANET_CFUN(jurl_getopt);
+JANET_CFUN(jurl_getinfo);
// jurl_setopt.c
JANET_CFUN(jurl_setopt);