Skip to content

Commit 361bb60

Browse files
authored
C: Add Node.js and WASM extension helpers for hb_string_T (marcoroth#749)
This PR adds helpers that allow to work with `hb_string_T` types in WASM and node apis. The functions are later used in marcoroth#750
1 parent ef63fcf commit 361bb60

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

javascript/packages/node/extension/extension_helpers.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ napi_value CreateString(napi_env env, const char* str) {
4646
return result;
4747
}
4848

49+
napi_value CreateStringFromHbString(napi_env env, hb_string_T string) {
50+
napi_value result;
51+
napi_create_string_utf8(env, string.data, string.length, &result);
52+
return result;
53+
}
54+
55+
4956
napi_value CreatePosition(napi_env env, position_T position) {
5057
napi_value result;
5158
napi_create_object(env, &result);

javascript/packages/node/extension/extension_helpers.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
extern "C" {
77
#include "../extension/libherb/include/ast_nodes.h"
88
#include "../extension/libherb/include/util/hb_array.h"
9+
#include "../extension/libherb/include/util/hb_string.h"
910
}
1011

1112
char* CheckString(napi_env env, napi_value value);
1213
napi_value CreateString(napi_env env, const char* str);
14+
napi_value CreateStringFromHbString(napi_env env, hb_string_T string);
1315
napi_value ReadFileToString(napi_env env, const char* file_path);
1416
napi_value CreateLexResult(napi_env env, hb_array_T* tokens, napi_value source);
1517
napi_value CreateParseResult(napi_env env, AST_DOCUMENT_NODE_T* root, napi_value source);

wasm/extension_helpers.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <stdio.h>
44
#include <stdlib.h>
55
#include <string.h>
6+
#include <string>
67

78
#include "nodes.h"
89

@@ -27,6 +28,16 @@ val CreateString(const char* string) {
2728
return string ? val(string) : val::null();
2829
}
2930

31+
val CreateStringFromHbString(hb_string_T string) {
32+
if (hb_string_is_empty(string)) {
33+
return val::null();
34+
} else {
35+
std::string cppString(string.data, string.length);
36+
37+
return val(cppString);
38+
}
39+
}
40+
3041
val CreatePosition(position_T position) {
3142
val Object = val::global("Object");
3243
val result = Object.new_();

wasm/extension_helpers.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ extern "C" {
1414
}
1515

1616
emscripten::val CreateString(const char* string);
17+
emscripten::val CreateStringFromHbString(hb_string_T string);
1718
emscripten::val CreatePosition(position_T position);
1819
emscripten::val CreateLocation(location_T location);
1920
emscripten::val CreateRange(range_T range);

0 commit comments

Comments
 (0)