Skip to content
This repository was archived by the owner on Jan 25, 2024. It is now read-only.

Commit dad25bb

Browse files
committed
feat(wrapsassimporter): cwrap exported functions
1 parent 0144e2b commit dad25bb

File tree

1 file changed

+54
-28
lines changed

1 file changed

+54
-28
lines changed

src/interop/importer/wrapSassImporter.ts

Lines changed: 54 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,53 +5,79 @@ import { cwrapSignature } from 'emscripten-wasm-loader';
55
*
66
* https://github.com/sass/libsass/blob/master/docs/api-importer.md
77
*/
8-
const wrapSassImporter = (_cwrap: cwrapSignature) => ({
8+
//TODO: verify return type / param type of cwrapped signature for Sass_Import_Entry
9+
const wrapSassImporter = (cwrap: cwrapSignature) => ({
910
//Sass_C_Import_Callback sass_make_importer (Sass_C_Import_Fn, void* cookie);
10-
make_importer: null,
11-
//Sass_C_Import_Fn sass_import_get_function (Sass_C_Import_Callback fn);
12-
import_get_function: () => {
13-
throw new Error('not implemented');
14-
},
15-
//void* sass_import_get_cookie (Sass_C_Import_Callback fn);
16-
import_get_cookie: () => {
17-
throw new Error('not implemented');
18-
},
11+
make_importer: cwrap<(importFnPtr: number, cookie: number) => number>(`sass_make_importer`, 'number', [
12+
'number',
13+
'number'
14+
]),
15+
//Sass_C_Import_Fn sass_importer_get_function (Sass_C_Import_Callback fn);
16+
importer_get_function: cwrap<(importCallbackPtr: number) => number>(`sass_importer_get_function`, 'number', [
17+
'number'
18+
]),
19+
//void* sass_importer_get_cookie (Sass_C_Import_Callback fn);
20+
importer_get_cookie: cwrap<(importCallbackPtr: number) => number>(`sass_importer_get_cookie`, 'number', ['number']),
1921
//void sass_delete_importer (Sass_C_Import_Callback fn);
20-
delete_importer: null,
22+
delete_importer: cwrap<(importCallbackPtr: number) => null>(`sass_delete_importer`, null, ['number']),
2123
//Sass_Import_Entry* sass_make_import_list (size_t length);
22-
make_import_list: null,
24+
make_import_list: cwrap<(length: number) => number>(`sass_make_import_list`, 'number', ['number']),
2325
//Sass_Import_Entry sass_make_import_entry (const char* path, char* source, char* srcmap);
24-
make_import_entry: null,
26+
make_import_entry: cwrap<(path: number, source: number, srcmap: number) => number>(
27+
`sass_make_import_entry`,
28+
'number',
29+
['number', 'number', 'number']
30+
),
2531
//Sass_Import_Entry sass_make_import (const char* rel, const char* abs, char* source, char* srcmap);
26-
make_import: null,
32+
make_import: cwrap<(rel: number, abs: number, source: number, srcmap: number) => number>(
33+
`sass_make_import`,
34+
'number',
35+
['number', 'number', 'number', 'number']
36+
),
2737
//Sass_Import_Entry sass_import_set_error(Sass_Import_Entry import, const char* message, size_t line, size_t col);
28-
import_set_error: null,
38+
import_set_error: cwrap<(importEntryPtr: number, message: number, line: number, col: number) => number>(
39+
`sass_import_set_error`,
40+
'number',
41+
['number', 'number', 'number', 'number']
42+
),
2943
//void sass_import_set_list_entry (Sass_Import_Entry* list, size_t idx, Sass_Import_Entry entry);
30-
import_set_list_entry: null,
44+
import_set_list_entry: cwrap<(importEntryList: number, idx: number, entry: number) => null>(
45+
`sass_import_set_list_entry`,
46+
null,
47+
['number', 'number', 'number']
48+
),
3149
//Sass_Import_Entry sass_import_get_list_entry (Sass_Import_Entry* list, size_t idx);
32-
import_get_list_entry: null,
50+
import_get_list_entry: cwrap<(importEntryList: number, idx: number) => number>(
51+
`sass_import_get_list_entry`,
52+
'number',
53+
['number', 'number']
54+
),
3355
//const char* sass_import_get_imp_path (Sass_Import_Entry);
34-
import_get_imp_path: null,
56+
import_get_imp_path: cwrap<(importEntryPtr: number) => number>(`sass_import_get_imp_path`, 'number', ['number']),
3557
//const char* sass_import_get_abs_path (Sass_Import_Entry);
36-
import_get_abs_path: null,
58+
import_get_abs_path: cwrap<(importEntryPtr: number) => number>(`sass_import_get_abs_path`, 'number', ['number']),
3759
//const char* sass_import_get_source (Sass_Import_Entry);
38-
import_get_source: null,
60+
import_get_source: cwrap<(importEntryPtr: number) => number>(`sass_import_get_source`, 'number', ['number']),
3961
//const char* sass_import_get_srcmap (Sass_Import_Entry);
40-
import_get_srcmap: null,
62+
import_get_srcmap: cwrap<(importEntryPtr: number) => number>(`sass_import_get_srcmap`, 'number', ['number']),
4163
//char* sass_import_take_source (Sass_Import_Entry);
42-
import_take_source: null,
64+
import_take_source: cwrap<(importEntryPtr: number) => number>(`sass_import_take_source`, 'number', ['number']),
4365
//char* sass_import_take_srcmap (Sass_Import_Entry);
44-
import_take_srcmap: null,
66+
import_take_srcmap: cwrap<(importEntryPtr: number) => number>(`sass_import_take_srcmap`, 'number', ['number']),
4567
//size_t sass_import_get_error_line (Sass_Import_Entry);
46-
import_get_error_line: null,
68+
import_get_error_line: cwrap<(importEntryPtr: number) => number>(`sass_import_get_error_line`, 'number', ['number']),
4769
//size_t sass_import_get_error_column (Sass_Import_Entry);
48-
import_get_error_column: null,
70+
import_get_error_column: cwrap<(importEntryPtr: number) => number>(`sass_import_get_error_column`, 'number', [
71+
'number'
72+
]),
4973
//const char* sass_import_get_error_message (Sass_Import_Entry);
50-
import_get_error_message: null,
74+
import_get_error_message: cwrap<(importEntryPtr: number) => number>(`sass_import_get_error_message`, 'number', [
75+
'number'
76+
]),
5177
//void sass_delete_import_list (Sass_Import_Entry*);
52-
delete_import_list: null,
78+
delete_import_list: cwrap<(importEntryList: number) => void>(`sass_delete_import_list`, null, ['number']),
5379
//void sass_delete_import (Sass_Import_Entry);
54-
delete_import: null
80+
delete_import: cwrap<(importEntryPtr: number) => void>(`sass_delete_import`, null, ['number'])
5581
});
5682

5783
export { wrapSassImporter };

0 commit comments

Comments
 (0)