summaryrefslogtreecommitdiffstats
path: root/src/perl/perl-core.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 20:18:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 20:18:39 +0000
commitfff5217f02d91268ce90c8c05665602c059faaef (patch)
tree2ba24d32dc96eafe7ed0a85269548e76796d849d /src/perl/perl-core.h
parentInitial commit. (diff)
downloadirssi-fff5217f02d91268ce90c8c05665602c059faaef.tar.xz
irssi-fff5217f02d91268ce90c8c05665602c059faaef.zip
Adding upstream version 1.4.5.upstream/1.4.5upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/perl/perl-core.h')
-rw-r--r--src/perl/perl-core.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/perl/perl-core.h b/src/perl/perl-core.h
new file mode 100644
index 0000000..6ea637a
--- /dev/null
+++ b/src/perl/perl-core.h
@@ -0,0 +1,64 @@
+#ifndef IRSSI_PERL_PERL_CORE_H
+#define IRSSI_PERL_PERL_CORE_H
+
+typedef struct {
+ char *name; /* unique name */
+ char *package; /* package name */
+
+ /* Script can be loaded from a file, or from some data in memory */
+ char *path; /* FILE: full path for file */
+ char *data; /* DATA: data used for the script */
+ int refcount; /* 0 = destroy */
+} PERL_SCRIPT_REC;
+
+extern GSList *perl_scripts;
+
+/* Initialize perl interpreter */
+void perl_scripts_init(void);
+/* Destroy all perl scripts and deinitialize perl interpreter */
+void perl_scripts_deinit(void);
+/* Load all the scripts in the autorun/ folder */
+void perl_scripts_autorun(void);
+
+/* Load a perl script, path must be a full path. */
+PERL_SCRIPT_REC *perl_script_load_file(const char *path);
+/* Load a perl script from given data */
+PERL_SCRIPT_REC *perl_script_load_data(const char *data);
+/* Unload perl script */
+void perl_script_unload(PERL_SCRIPT_REC *script);
+
+/* Mark a script as entered */
+void perl_script_ref(PERL_SCRIPT_REC *script);
+/* Mark a script as exited */
+void perl_script_unref(PERL_SCRIPT_REC *script);
+
+/* Find loaded script by name */
+PERL_SCRIPT_REC *perl_script_find(const char *name);
+/* Find loaded script by package */
+PERL_SCRIPT_REC *perl_script_find_package(const char *package);
+
+/* Returns full path for the script */
+char *perl_script_get_path(const char *name);
+/* Modify the script name so that all non-alphanumeric characters are
+ translated to '_' */
+void script_fix_name(char *name);
+
+/* If core should handle printing script errors */
+void perl_core_print_script_error(int print);
+
+/* Returns the perl module's API version. */
+int perl_get_api_version(void);
+
+/* Checks that the API version is correct. */
+#define perl_api_version_check(library) \
+ if (perl_get_api_version() != IRSSI_PERL_API_VERSION) { \
+ die("Version of perl module (%d) doesn't match the " \
+ "version of "library" library (%d)", \
+ perl_get_api_version(), IRSSI_PERL_API_VERSION); \
+ return; \
+ }
+
+void perl_core_init(void);
+void perl_core_deinit(void);
+
+#endif