summaryrefslogtreecommitdiff
path: root/deno2/include/deno.h
diff options
context:
space:
mode:
Diffstat (limited to 'deno2/include/deno.h')
-rw-r--r--deno2/include/deno.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/deno2/include/deno.h b/deno2/include/deno.h
new file mode 100644
index 000000000..3c42abd72
--- /dev/null
+++ b/deno2/include/deno.h
@@ -0,0 +1,47 @@
+// Copyright 2018 Ryan Dahl <ry@tinyclouds.org>
+// All rights reserved. MIT License.
+#ifndef INCLUDE_DENO_H_
+#define INCLUDE_DENO_H_
+// Neither Rust nor Go support calling directly into C++ functions, therefore
+// the public interface to libdeno is done in C.
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Data that gets transmitted.
+typedef struct {
+ const char* data;
+ size_t len;
+} deno_buf;
+
+struct deno_s;
+typedef struct deno_s Deno;
+
+// A callback to receive a message from deno_pub javascript call.
+// buf is valid only for the lifetime of the call.
+// The returned deno_buf is returned from deno_pub in javascript.
+typedef deno_buf (*deno_sub_cb)(Deno* d, const char* channel, deno_buf buf);
+
+void deno_init();
+const char* deno_v8_version();
+void deno_set_flags(int* argc, char** argv);
+
+Deno* deno_new(void* data, deno_sub_cb cb);
+void deno_delete(Deno* d);
+
+// Returns false on error.
+// Get error text with deno_last_exception().
+bool deno_execute(Deno* d, const char* js_filename, const char* js_source);
+
+// Routes message to the javascript callback set with deno_sub(). A false return
+// value indicates error. Check deno_last_exception() for exception text.
+bool deno_pub(Deno* d, const char* channel, deno_buf buf);
+
+const char* deno_last_exception(Deno* d);
+
+void deno_terminate_execution(Deno* d);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+#endif // INCLUDE_DENO_H_