github.com/primecitizens/pcz/std@v0.2.1/plat/js/webext/filebrowserhandler/bindings/ffi_bindings.ts (about)

     1  import { importModule, Application, heap, Pointer } from "@ffi";
     2  
     3  importModule("plat/js/webext/filebrowserhandler", (A: Application) => {
     4    const WEBEXT = typeof globalThis.browser === "undefined" ? globalThis.chrome : globalThis.browser;
     5  
     6    return {
     7      "store_FileHandlerExecuteEventDetails": (ptr: Pointer, ref: heap.Ref<any>) => {
     8        const x = A.H.get<any>(ref);
     9  
    10        if (typeof x === "undefined") {
    11          A.store.Bool(ptr + 17, false);
    12          A.store.Ref(ptr + 0, undefined);
    13          A.store.Bool(ptr + 16, false);
    14          A.store.Int64(ptr + 8, 0);
    15        } else {
    16          A.store.Bool(ptr + 17, true);
    17          A.store.Ref(ptr + 0, x["entries"]);
    18          A.store.Bool(ptr + 16, "tab_id" in x ? true : false);
    19          A.store.Int64(ptr + 8, x["tab_id"] === undefined ? 0 : (x["tab_id"] as number));
    20        }
    21      },
    22      "load_FileHandlerExecuteEventDetails": (
    23        ptr: Pointer,
    24        create: heap.Ref<boolean>,
    25        ref: heap.Ref<any>
    26      ): heap.Ref<any> => {
    27        const x = create === A.H.TRUE ? {} : A.H.get<any>(ref);
    28  
    29        x["entries"] = A.load.Ref(ptr + 0, undefined);
    30        if (A.load.Bool(ptr + 16)) {
    31          x["tab_id"] = A.load.Int64(ptr + 8);
    32        } else {
    33          delete x["tab_id"];
    34        }
    35        return create === A.H.TRUE ? A.H.push(x) : ref;
    36      },
    37      "has_OnExecute": (): heap.Ref<boolean> => {
    38        if (WEBEXT?.fileBrowserHandler?.onExecute && "addListener" in WEBEXT?.fileBrowserHandler?.onExecute) {
    39          return A.H.TRUE;
    40        }
    41        return A.H.FALSE;
    42      },
    43      "func_OnExecute": (fn: Pointer): void => {
    44        A.store.Ref(fn, WEBEXT.fileBrowserHandler.onExecute.addListener);
    45      },
    46      "call_OnExecute": (retPtr: Pointer, callback: heap.Ref<object>): void => {
    47        const _ret = WEBEXT.fileBrowserHandler.onExecute.addListener(A.H.get<object>(callback));
    48      },
    49      "try_OnExecute": (retPtr: Pointer, errPtr: Pointer, callback: heap.Ref<object>): heap.Ref<boolean> => {
    50        try {
    51          const _ret = WEBEXT.fileBrowserHandler.onExecute.addListener(A.H.get<object>(callback));
    52          return A.H.TRUE;
    53        } catch (err: any) {
    54          A.store.Ref(errPtr, err);
    55          return A.H.FALSE;
    56        }
    57      },
    58      "has_OffExecute": (): heap.Ref<boolean> => {
    59        if (WEBEXT?.fileBrowserHandler?.onExecute && "removeListener" in WEBEXT?.fileBrowserHandler?.onExecute) {
    60          return A.H.TRUE;
    61        }
    62        return A.H.FALSE;
    63      },
    64      "func_OffExecute": (fn: Pointer): void => {
    65        A.store.Ref(fn, WEBEXT.fileBrowserHandler.onExecute.removeListener);
    66      },
    67      "call_OffExecute": (retPtr: Pointer, callback: heap.Ref<object>): void => {
    68        const _ret = WEBEXT.fileBrowserHandler.onExecute.removeListener(A.H.get<object>(callback));
    69      },
    70      "try_OffExecute": (retPtr: Pointer, errPtr: Pointer, callback: heap.Ref<object>): heap.Ref<boolean> => {
    71        try {
    72          const _ret = WEBEXT.fileBrowserHandler.onExecute.removeListener(A.H.get<object>(callback));
    73          return A.H.TRUE;
    74        } catch (err: any) {
    75          A.store.Ref(errPtr, err);
    76          return A.H.FALSE;
    77        }
    78      },
    79      "has_HasOnExecute": (): heap.Ref<boolean> => {
    80        if (WEBEXT?.fileBrowserHandler?.onExecute && "hasListener" in WEBEXT?.fileBrowserHandler?.onExecute) {
    81          return A.H.TRUE;
    82        }
    83        return A.H.FALSE;
    84      },
    85      "func_HasOnExecute": (fn: Pointer): void => {
    86        A.store.Ref(fn, WEBEXT.fileBrowserHandler.onExecute.hasListener);
    87      },
    88      "call_HasOnExecute": (retPtr: Pointer, callback: heap.Ref<object>): void => {
    89        const _ret = WEBEXT.fileBrowserHandler.onExecute.hasListener(A.H.get<object>(callback));
    90        A.store.Bool(retPtr, _ret);
    91      },
    92      "try_HasOnExecute": (retPtr: Pointer, errPtr: Pointer, callback: heap.Ref<object>): heap.Ref<boolean> => {
    93        try {
    94          const _ret = WEBEXT.fileBrowserHandler.onExecute.hasListener(A.H.get<object>(callback));
    95          A.store.Bool(retPtr, _ret);
    96          return A.H.TRUE;
    97        } catch (err: any) {
    98          A.store.Ref(errPtr, err);
    99          return A.H.FALSE;
   100        }
   101      },
   102    };
   103  });