Changeset: 17377529166f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/17377529166f
Added Files:
        sql/server/rel_file_loader.c
        sql/server/rel_file_loader.h
Branch: default
Log Message:

add new rel_fil_loader


diffs (86 lines):

diff --git a/sql/server/rel_file_loader.c b/sql/server/rel_file_loader.c
new file mode 100644
--- /dev/null
+++ b/sql/server/rel_file_loader.c
@@ -0,0 +1,46 @@
+
+#include "monetdb_config.h"
+#include "rel_file_loader.h"
+
+#define NR_FILE_LOADERS 255
+static file_loader_t file_loaders[NR_FILE_LOADERS] = { 0 };
+
+void
+fl_exit(void)
+{
+       for (int i = 0; i<NR_FILE_LOADERS; i++) {
+               if (file_loaders[i].name)
+                       GDKfree(file_loaders[i].name);
+       }
+}
+
+int
+fl_register(char *name, fl_add_types_fptr add_types, fl_load_fptr load)
+{
+       file_loader_t *fl = fl_find(name);
+
+       if (fl) {
+               printf("re-registering %s\n", name);
+               GDKfree(fl->name);
+               fl->name = NULL;
+       }
+       for (int i = 0; i<NR_FILE_LOADERS; i++) {
+               if (file_loaders[i].name == NULL) {
+                       file_loaders[i].name = GDKstrdup(name);
+                       file_loaders[i].add_types = add_types;
+                       file_loaders[i].load = load;
+                       return 0;
+               }
+       }
+       return -1;
+}
+
+file_loader_t*
+fl_find(char *name)
+{
+       for (int i = 0; i<NR_FILE_LOADERS; i++) {
+               if (file_loaders[i].name && strcmp(file_loaders[i].name, name) 
== 0)
+                       return file_loaders+i;
+       }
+       return NULL;
+}
diff --git a/sql/server/rel_file_loader.h b/sql/server/rel_file_loader.h
new file mode 100644
--- /dev/null
+++ b/sql/server/rel_file_loader.h
@@ -0,0 +1,30 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0.  If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2022 MonetDB B.V.
+ */
+
+#ifndef _REL_FILE_LOADER_H_
+#define _REL_FILE_LOADER_H_
+
+#include "sql_types.h"
+#include "sql_mvc.h"
+
+typedef str (*fl_add_types_fptr)(mvc *sql, sql_subfunc *f, char *filename, 
list *res_exps, char *name);
+typedef void *(*fl_load_fptr)(void *be, sql_subfunc *f, char *filename); /* 
use void * as both return type and be are
+                                                                               
                                                                        unknown 
types at this layer */
+
+typedef struct file_loader_t {
+       char *name;
+       fl_add_types_fptr add_types;
+       fl_load_fptr load;
+} file_loader_t;
+
+extern int fl_register(char *name, fl_add_types_fptr add_types, fl_load_fptr 
fl_load);
+extern file_loader_t* fl_find(char *name);
+
+extern void fl_exit(void);
+
+#endif /*_REL_FILE_LOADER_H_*/
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to