Skip to content

Commit

Permalink
adding utilities for manipulating plugin search path
Browse files Browse the repository at this point in the history
  • Loading branch information
bmaranville committed Oct 23, 2023
1 parent e291012 commit 95b0dcf
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 1 deletion.
30 changes: 30 additions & 0 deletions src/hdf5_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -883,6 +883,33 @@ int flush(hid_t file_id) {
return (int)status;
}

val get_plugin_search_paths()
{
herr_t status;
unsigned int num_paths;
ssize_t path_length;
char *initial_path_buf = {};
status = H5PLsize(&num_paths);

val paths = val::array();
for (unsigned int i = 0; i < num_paths; i++)
{
path_length = H5PLget(i, initial_path_buf, 0);
char * path_buf = (char *)malloc(path_length + 1);
H5PLget(i, path_buf, path_length + 1);
paths.set(i, std::string(path_buf));
free(path_buf);
}
return paths;
}

int insert_plugin_search_path(const std::string search_path_string, unsigned int index)
{
const char *search_path = search_path_string.c_str();
herr_t status = H5PLinsert(search_path, index);
return (int)status;
}

EMSCRIPTEN_BINDINGS(hdf5)
{
function("get_keys", &get_keys_vector);
Expand Down Expand Up @@ -911,6 +938,9 @@ EMSCRIPTEN_BINDINGS(hdf5)
function("create_hard_link", &create_hard_link);
function("create_external_link", &create_external_link);
function("flush", &flush);
function("get_plugin_search_paths", &get_plugin_search_paths);
function("insert_plugin_search_path", &insert_plugin_search_path);
function("remove_plugin_search_path", &H5PLremove);

class_<H5L_info2_t>("H5L_info2_t")
.constructor<>()
Expand Down
5 changes: 4 additions & 1 deletion src/hdf5_util_helpers.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,10 @@ export interface H5Module extends EmscriptenModule {
get_attribute_data(file_id: BigInt, obj_name: string, attr_name: string, arg3: bigint): Status;
FS: FS.FileSystemType,
get_keys_vector(group_id: bigint, H5_index_t: number): Array<string>,
get_attribute_metadata(loc_id: bigint, group_name_string: string, attribute_name_string: string): Metadata
get_attribute_metadata(loc_id: bigint, group_name_string: string, attribute_name_string: string): Metadata,
get_plugin_search_paths(): string[],
insert_plugin_search_path(search_path: string, index: number): number,
remove_plugin_search_path(index: number): number,
}

export declare type Filter = {
Expand Down

0 comments on commit 95b0dcf

Please sign in to comment.