diff --git a/quickjs/_demo/add/main.go b/quickjs/_demo/add/main.go new file mode 100644 index 00000000..d74109a9 --- /dev/null +++ b/quickjs/_demo/add/main.go @@ -0,0 +1,23 @@ +package main + +import ( + "github.com/goplus/lib/c" + "github.com/goplus/llpkg/quickjs" +) + +func main() { + rt := quickjs.JSNewRuntime() + if rt == nil { + panic("none") + } + rt.JsStdInitHandlers() + ctx := rt.JSNewContext() + if ctx == nil { + panic("none") + } + ctx.JsStdAddHelpers(0, nil) + jsCode := c.Str("console.log('Hello from QuickJS! 1 + 2 =', 1 + 2);") + ctx.JSEval(jsCode, c.Strlen(jsCode), c.Str(""), 0) + ctx.JSFreeContext() + rt.JSFreeRuntime() +} diff --git a/quickjs/cutils.go b/quickjs/cutils.go new file mode 100644 index 00000000..4a4a75c5 --- /dev/null +++ b/quickjs/cutils.go @@ -0,0 +1,107 @@ +package quickjs + +import ( + "github.com/goplus/lib/c" + _ "unsafe" +) + +const UTF8_CHAR_LEN_MAX = 6 + +type BOOL c.Int + +const ( + FALSE c.Int = 0 + TRUE c.Int = 1 +) + +//go:linkname Pstrcpy C.pstrcpy +func Pstrcpy(buf *c.Char, buf_size c.Int, str *c.Char) + +//go:linkname Pstrcat C.pstrcat +func Pstrcat(buf *c.Char, buf_size c.Int, s *c.Char) *c.Char + +//go:linkname Strstart C.strstart +func Strstart(str *c.Char, val *c.Char, ptr **c.Char) c.Int + +//go:linkname HasSuffix C.has_suffix +func HasSuffix(str *c.Char, suffix *c.Char) c.Int + +type PackedU64 struct { + V c.Uint64T +} + +type PackedU32 struct { + V c.Uint32T +} + +type PackedU16 struct { + V c.Uint16T +} + +// llgo:type C +type DynBufReallocFunc func(c.Pointer, c.Pointer, c.SizeT) c.Pointer + +type DynBuf struct { + Buf *c.Uint8T + Size c.SizeT + AllocatedSize c.SizeT + Error BOOL + ReallocFunc *c.Pointer + Opaque c.Pointer +} + +// llgo:link (*DynBuf).DbufInit C.dbuf_init +func (recv_ *DynBuf) DbufInit() { +} + +// llgo:link (*DynBuf).DbufInit2 C.dbuf_init2 +func (recv_ *DynBuf) DbufInit2(opaque c.Pointer, realloc_func DynBufReallocFunc) { +} + +// llgo:link (*DynBuf).DbufRealloc C.dbuf_realloc +func (recv_ *DynBuf) DbufRealloc(new_size c.SizeT) c.Int { + return 0 +} + +// llgo:link (*DynBuf).DbufWrite C.dbuf_write +func (recv_ *DynBuf) DbufWrite(offset c.SizeT, data *c.Uint8T, len c.SizeT) c.Int { + return 0 +} + +// llgo:link (*DynBuf).DbufPut C.dbuf_put +func (recv_ *DynBuf) DbufPut(data *c.Uint8T, len c.SizeT) c.Int { + return 0 +} + +// llgo:link (*DynBuf).DbufPutSelf C.dbuf_put_self +func (recv_ *DynBuf) DbufPutSelf(offset c.SizeT, len c.SizeT) c.Int { + return 0 +} + +// llgo:link (*DynBuf).DbufPutc C.dbuf_putc +func (recv_ *DynBuf) DbufPutc(c c.Uint8T) c.Int { + return 0 +} + +// llgo:link (*DynBuf).DbufPutstr C.dbuf_putstr +func (recv_ *DynBuf) DbufPutstr(str *c.Char) c.Int { + return 0 +} + +// llgo:link (*DynBuf).DbufPrintf C.dbuf_printf +func (recv_ *DynBuf) DbufPrintf(fmt *c.Char, __llgo_va_list ...interface{}) c.Int { + return 0 +} + +// llgo:link (*DynBuf).DbufFree C.dbuf_free +func (recv_ *DynBuf) DbufFree() { +} + +//go:linkname UnicodeToUtf8 C.unicode_to_utf8 +func UnicodeToUtf8(buf *c.Uint8T, c c.Uint) c.Int + +//go:linkname UnicodeFromUtf8 C.unicode_from_utf8 +func UnicodeFromUtf8(p *c.Uint8T, max_len c.Int, pp **c.Uint8T) c.Int + +//go:linkname Rqsort C.rqsort +func Rqsort(base c.Pointer, nmemb c.SizeT, size c.SizeT, cmp func(c.Pointer, c.Pointer, c.Pointer) c.Int, arg c.Pointer) diff --git a/quickjs/go.mod b/quickjs/go.mod new file mode 100644 index 00000000..ddcce4f2 --- /dev/null +++ b/quickjs/go.mod @@ -0,0 +1,5 @@ +module github.com/goplus/llpkg/quickjs + +go 1.20 + +require github.com/goplus/lib v0.2.0 diff --git a/quickjs/go.sum b/quickjs/go.sum new file mode 100644 index 00000000..512980a5 --- /dev/null +++ b/quickjs/go.sum @@ -0,0 +1,2 @@ +github.com/goplus/lib v0.2.0 h1:AjqkN1XK5H23wZMMlpaUYAMCDAdSBQ2NMFrLtSh7W4g= +github.com/goplus/lib v0.2.0/go.mod h1:SgJv3oPqLLHCu0gcL46ejOP3x7/2ry2Jtxu7ta32kp0= diff --git a/quickjs/libregexp.go b/quickjs/libregexp.go new file mode 100644 index 00000000..c509b3e3 --- /dev/null +++ b/quickjs/libregexp.go @@ -0,0 +1,34 @@ +package quickjs + +import ( + "github.com/goplus/lib/c" + _ "unsafe" +) + +//go:linkname LreCompile C.lre_compile +func LreCompile(plen *c.Int, error_msg *c.Char, error_msg_size c.Int, buf *c.Char, buf_len c.SizeT, re_flags c.Int, opaque c.Pointer) *c.Uint8T + +//go:linkname LreGetCaptureCount C.lre_get_capture_count +func LreGetCaptureCount(bc_buf *c.Uint8T) c.Int + +//go:linkname LreGetFlags C.lre_get_flags +func LreGetFlags(bc_buf *c.Uint8T) c.Int + +//go:linkname LreGetGroupnames C.lre_get_groupnames +func LreGetGroupnames(bc_buf *c.Uint8T) *c.Char + +//go:linkname LreExec C.lre_exec +func LreExec(capture **c.Uint8T, bc_buf *c.Uint8T, cbuf *c.Uint8T, cindex c.Int, clen c.Int, cbuf_type c.Int, opaque c.Pointer) c.Int + +//go:linkname LreParseEscape C.lre_parse_escape +func LreParseEscape(pp **c.Uint8T, allow_utf16 c.Int) c.Int + +//go:linkname LreIsSpace C.lre_is_space +func LreIsSpace(c c.Int) c.Int + +/* must be provided by the user */ +//go:linkname LreCheckStackOverflow C.lre_check_stack_overflow +func LreCheckStackOverflow(opaque c.Pointer, alloca_size c.SizeT) c.Int + +//go:linkname LreRealloc C.lre_realloc +func LreRealloc(opaque c.Pointer, ptr c.Pointer, size c.SizeT) c.Pointer diff --git a/quickjs/libunicode-table.go b/quickjs/libunicode-table.go new file mode 100644 index 00000000..ed428bf7 --- /dev/null +++ b/quickjs/libunicode-table.go @@ -0,0 +1,296 @@ +package quickjs + +import ( + "github.com/goplus/lib/c" + _ "unsafe" +) + +type UnicodeGCEnum c.Int + +const ( + UNICODE_GC_Cn UnicodeGCEnum = 0 + UNICODE_GC_Lu UnicodeGCEnum = 1 + UNICODE_GC_Ll UnicodeGCEnum = 2 + UNICODE_GC_Lt UnicodeGCEnum = 3 + UNICODE_GC_Lm UnicodeGCEnum = 4 + UNICODE_GC_Lo UnicodeGCEnum = 5 + UNICODE_GC_Mn UnicodeGCEnum = 6 + UNICODE_GC_Mc UnicodeGCEnum = 7 + UNICODE_GC_Me UnicodeGCEnum = 8 + UNICODE_GC_Nd UnicodeGCEnum = 9 + UNICODE_GC_Nl UnicodeGCEnum = 10 + UNICODE_GC_No UnicodeGCEnum = 11 + UNICODE_GC_Sm UnicodeGCEnum = 12 + UNICODE_GC_Sc UnicodeGCEnum = 13 + UNICODE_GC_Sk UnicodeGCEnum = 14 + UNICODE_GC_So UnicodeGCEnum = 15 + UNICODE_GC_Pc UnicodeGCEnum = 16 + UNICODE_GC_Pd UnicodeGCEnum = 17 + UNICODE_GC_Ps UnicodeGCEnum = 18 + UNICODE_GC_Pe UnicodeGCEnum = 19 + UNICODE_GC_Pi UnicodeGCEnum = 20 + UNICODE_GC_Pf UnicodeGCEnum = 21 + UNICODE_GC_Po UnicodeGCEnum = 22 + UNICODE_GC_Zs UnicodeGCEnum = 23 + UNICODE_GC_Zl UnicodeGCEnum = 24 + UNICODE_GC_Zp UnicodeGCEnum = 25 + UNICODE_GC_Cc UnicodeGCEnum = 26 + UNICODE_GC_Cf UnicodeGCEnum = 27 + UNICODE_GC_Cs UnicodeGCEnum = 28 + UNICODE_GC_Co UnicodeGCEnum = 29 + UNICODE_GC_LC UnicodeGCEnum = 30 + UNICODE_GC_L UnicodeGCEnum = 31 + UNICODE_GC_M UnicodeGCEnum = 32 + UNICODE_GC_N UnicodeGCEnum = 33 + UNICODE_GC_S UnicodeGCEnum = 34 + UNICODE_GC_P UnicodeGCEnum = 35 + UNICODE_GC_Z UnicodeGCEnum = 36 + UNICODE_GC_C UnicodeGCEnum = 37 + UNICODE_GC_COUNT UnicodeGCEnum = 38 +) + +type UnicodeScriptEnum c.Int + +const ( + UNICODE_SCRIPT_Unknown UnicodeScriptEnum = 0 + UNICODE_SCRIPT_Adlam UnicodeScriptEnum = 1 + UNICODE_SCRIPT_Ahom UnicodeScriptEnum = 2 + UNICODE_SCRIPT_Anatolian_Hieroglyphs UnicodeScriptEnum = 3 + UNICODE_SCRIPT_Arabic UnicodeScriptEnum = 4 + UNICODE_SCRIPT_Armenian UnicodeScriptEnum = 5 + UNICODE_SCRIPT_Avestan UnicodeScriptEnum = 6 + UNICODE_SCRIPT_Balinese UnicodeScriptEnum = 7 + UNICODE_SCRIPT_Bamum UnicodeScriptEnum = 8 + UNICODE_SCRIPT_Bassa_Vah UnicodeScriptEnum = 9 + UNICODE_SCRIPT_Batak UnicodeScriptEnum = 10 + UNICODE_SCRIPT_Bengali UnicodeScriptEnum = 11 + UNICODE_SCRIPT_Bhaiksuki UnicodeScriptEnum = 12 + UNICODE_SCRIPT_Bopomofo UnicodeScriptEnum = 13 + UNICODE_SCRIPT_Brahmi UnicodeScriptEnum = 14 + UNICODE_SCRIPT_Braille UnicodeScriptEnum = 15 + UNICODE_SCRIPT_Buginese UnicodeScriptEnum = 16 + UNICODE_SCRIPT_Buhid UnicodeScriptEnum = 17 + UNICODE_SCRIPT_Canadian_Aboriginal UnicodeScriptEnum = 18 + UNICODE_SCRIPT_Carian UnicodeScriptEnum = 19 + UNICODE_SCRIPT_Caucasian_Albanian UnicodeScriptEnum = 20 + UNICODE_SCRIPT_Chakma UnicodeScriptEnum = 21 + UNICODE_SCRIPT_Cham UnicodeScriptEnum = 22 + UNICODE_SCRIPT_Cherokee UnicodeScriptEnum = 23 + UNICODE_SCRIPT_Chorasmian UnicodeScriptEnum = 24 + UNICODE_SCRIPT_Common UnicodeScriptEnum = 25 + UNICODE_SCRIPT_Coptic UnicodeScriptEnum = 26 + UNICODE_SCRIPT_Cuneiform UnicodeScriptEnum = 27 + UNICODE_SCRIPT_Cypriot UnicodeScriptEnum = 28 + UNICODE_SCRIPT_Cyrillic UnicodeScriptEnum = 29 + UNICODE_SCRIPT_Cypro_Minoan UnicodeScriptEnum = 30 + UNICODE_SCRIPT_Deseret UnicodeScriptEnum = 31 + UNICODE_SCRIPT_Devanagari UnicodeScriptEnum = 32 + UNICODE_SCRIPT_Dives_Akuru UnicodeScriptEnum = 33 + UNICODE_SCRIPT_Dogra UnicodeScriptEnum = 34 + UNICODE_SCRIPT_Duployan UnicodeScriptEnum = 35 + UNICODE_SCRIPT_Egyptian_Hieroglyphs UnicodeScriptEnum = 36 + UNICODE_SCRIPT_Elbasan UnicodeScriptEnum = 37 + UNICODE_SCRIPT_Elymaic UnicodeScriptEnum = 38 + UNICODE_SCRIPT_Ethiopic UnicodeScriptEnum = 39 + UNICODE_SCRIPT_Georgian UnicodeScriptEnum = 40 + UNICODE_SCRIPT_Glagolitic UnicodeScriptEnum = 41 + UNICODE_SCRIPT_Gothic UnicodeScriptEnum = 42 + UNICODE_SCRIPT_Grantha UnicodeScriptEnum = 43 + UNICODE_SCRIPT_Greek UnicodeScriptEnum = 44 + UNICODE_SCRIPT_Gujarati UnicodeScriptEnum = 45 + UNICODE_SCRIPT_Gunjala_Gondi UnicodeScriptEnum = 46 + UNICODE_SCRIPT_Gurmukhi UnicodeScriptEnum = 47 + UNICODE_SCRIPT_Han UnicodeScriptEnum = 48 + UNICODE_SCRIPT_Hangul UnicodeScriptEnum = 49 + UNICODE_SCRIPT_Hanifi_Rohingya UnicodeScriptEnum = 50 + UNICODE_SCRIPT_Hanunoo UnicodeScriptEnum = 51 + UNICODE_SCRIPT_Hatran UnicodeScriptEnum = 52 + UNICODE_SCRIPT_Hebrew UnicodeScriptEnum = 53 + UNICODE_SCRIPT_Hiragana UnicodeScriptEnum = 54 + UNICODE_SCRIPT_Imperial_Aramaic UnicodeScriptEnum = 55 + UNICODE_SCRIPT_Inherited UnicodeScriptEnum = 56 + UNICODE_SCRIPT_Inscriptional_Pahlavi UnicodeScriptEnum = 57 + UNICODE_SCRIPT_Inscriptional_Parthian UnicodeScriptEnum = 58 + UNICODE_SCRIPT_Javanese UnicodeScriptEnum = 59 + UNICODE_SCRIPT_Kaithi UnicodeScriptEnum = 60 + UNICODE_SCRIPT_Kannada UnicodeScriptEnum = 61 + UNICODE_SCRIPT_Katakana UnicodeScriptEnum = 62 + UNICODE_SCRIPT_Kawi UnicodeScriptEnum = 63 + UNICODE_SCRIPT_Kayah_Li UnicodeScriptEnum = 64 + UNICODE_SCRIPT_Kharoshthi UnicodeScriptEnum = 65 + UNICODE_SCRIPT_Khmer UnicodeScriptEnum = 66 + UNICODE_SCRIPT_Khojki UnicodeScriptEnum = 67 + UNICODE_SCRIPT_Khitan_Small_Script UnicodeScriptEnum = 68 + UNICODE_SCRIPT_Khudawadi UnicodeScriptEnum = 69 + UNICODE_SCRIPT_Lao UnicodeScriptEnum = 70 + UNICODE_SCRIPT_Latin UnicodeScriptEnum = 71 + UNICODE_SCRIPT_Lepcha UnicodeScriptEnum = 72 + UNICODE_SCRIPT_Limbu UnicodeScriptEnum = 73 + UNICODE_SCRIPT_Linear_A UnicodeScriptEnum = 74 + UNICODE_SCRIPT_Linear_B UnicodeScriptEnum = 75 + UNICODE_SCRIPT_Lisu UnicodeScriptEnum = 76 + UNICODE_SCRIPT_Lycian UnicodeScriptEnum = 77 + UNICODE_SCRIPT_Lydian UnicodeScriptEnum = 78 + UNICODE_SCRIPT_Makasar UnicodeScriptEnum = 79 + UNICODE_SCRIPT_Mahajani UnicodeScriptEnum = 80 + UNICODE_SCRIPT_Malayalam UnicodeScriptEnum = 81 + UNICODE_SCRIPT_Mandaic UnicodeScriptEnum = 82 + UNICODE_SCRIPT_Manichaean UnicodeScriptEnum = 83 + UNICODE_SCRIPT_Marchen UnicodeScriptEnum = 84 + UNICODE_SCRIPT_Masaram_Gondi UnicodeScriptEnum = 85 + UNICODE_SCRIPT_Medefaidrin UnicodeScriptEnum = 86 + UNICODE_SCRIPT_Meetei_Mayek UnicodeScriptEnum = 87 + UNICODE_SCRIPT_Mende_Kikakui UnicodeScriptEnum = 88 + UNICODE_SCRIPT_Meroitic_Cursive UnicodeScriptEnum = 89 + UNICODE_SCRIPT_Meroitic_Hieroglyphs UnicodeScriptEnum = 90 + UNICODE_SCRIPT_Miao UnicodeScriptEnum = 91 + UNICODE_SCRIPT_Modi UnicodeScriptEnum = 92 + UNICODE_SCRIPT_Mongolian UnicodeScriptEnum = 93 + UNICODE_SCRIPT_Mro UnicodeScriptEnum = 94 + UNICODE_SCRIPT_Multani UnicodeScriptEnum = 95 + UNICODE_SCRIPT_Myanmar UnicodeScriptEnum = 96 + UNICODE_SCRIPT_Nabataean UnicodeScriptEnum = 97 + UNICODE_SCRIPT_Nag_Mundari UnicodeScriptEnum = 98 + UNICODE_SCRIPT_Nandinagari UnicodeScriptEnum = 99 + UNICODE_SCRIPT_New_Tai_Lue UnicodeScriptEnum = 100 + UNICODE_SCRIPT_Newa UnicodeScriptEnum = 101 + UNICODE_SCRIPT_Nko UnicodeScriptEnum = 102 + UNICODE_SCRIPT_Nushu UnicodeScriptEnum = 103 + UNICODE_SCRIPT_Nyiakeng_Puachue_Hmong UnicodeScriptEnum = 104 + UNICODE_SCRIPT_Ogham UnicodeScriptEnum = 105 + UNICODE_SCRIPT_Ol_Chiki UnicodeScriptEnum = 106 + UNICODE_SCRIPT_Old_Hungarian UnicodeScriptEnum = 107 + UNICODE_SCRIPT_Old_Italic UnicodeScriptEnum = 108 + UNICODE_SCRIPT_Old_North_Arabian UnicodeScriptEnum = 109 + UNICODE_SCRIPT_Old_Permic UnicodeScriptEnum = 110 + UNICODE_SCRIPT_Old_Persian UnicodeScriptEnum = 111 + UNICODE_SCRIPT_Old_Sogdian UnicodeScriptEnum = 112 + UNICODE_SCRIPT_Old_South_Arabian UnicodeScriptEnum = 113 + UNICODE_SCRIPT_Old_Turkic UnicodeScriptEnum = 114 + UNICODE_SCRIPT_Old_Uyghur UnicodeScriptEnum = 115 + UNICODE_SCRIPT_Oriya UnicodeScriptEnum = 116 + UNICODE_SCRIPT_Osage UnicodeScriptEnum = 117 + UNICODE_SCRIPT_Osmanya UnicodeScriptEnum = 118 + UNICODE_SCRIPT_Pahawh_Hmong UnicodeScriptEnum = 119 + UNICODE_SCRIPT_Palmyrene UnicodeScriptEnum = 120 + UNICODE_SCRIPT_Pau_Cin_Hau UnicodeScriptEnum = 121 + UNICODE_SCRIPT_Phags_Pa UnicodeScriptEnum = 122 + UNICODE_SCRIPT_Phoenician UnicodeScriptEnum = 123 + UNICODE_SCRIPT_Psalter_Pahlavi UnicodeScriptEnum = 124 + UNICODE_SCRIPT_Rejang UnicodeScriptEnum = 125 + UNICODE_SCRIPT_Runic UnicodeScriptEnum = 126 + UNICODE_SCRIPT_Samaritan UnicodeScriptEnum = 127 + UNICODE_SCRIPT_Saurashtra UnicodeScriptEnum = 128 + UNICODE_SCRIPT_Sharada UnicodeScriptEnum = 129 + UNICODE_SCRIPT_Shavian UnicodeScriptEnum = 130 + UNICODE_SCRIPT_Siddham UnicodeScriptEnum = 131 + UNICODE_SCRIPT_SignWriting UnicodeScriptEnum = 132 + UNICODE_SCRIPT_Sinhala UnicodeScriptEnum = 133 + UNICODE_SCRIPT_Sogdian UnicodeScriptEnum = 134 + UNICODE_SCRIPT_Sora_Sompeng UnicodeScriptEnum = 135 + UNICODE_SCRIPT_Soyombo UnicodeScriptEnum = 136 + UNICODE_SCRIPT_Sundanese UnicodeScriptEnum = 137 + UNICODE_SCRIPT_Syloti_Nagri UnicodeScriptEnum = 138 + UNICODE_SCRIPT_Syriac UnicodeScriptEnum = 139 + UNICODE_SCRIPT_Tagalog UnicodeScriptEnum = 140 + UNICODE_SCRIPT_Tagbanwa UnicodeScriptEnum = 141 + UNICODE_SCRIPT_Tai_Le UnicodeScriptEnum = 142 + UNICODE_SCRIPT_Tai_Tham UnicodeScriptEnum = 143 + UNICODE_SCRIPT_Tai_Viet UnicodeScriptEnum = 144 + UNICODE_SCRIPT_Takri UnicodeScriptEnum = 145 + UNICODE_SCRIPT_Tamil UnicodeScriptEnum = 146 + UNICODE_SCRIPT_Tangut UnicodeScriptEnum = 147 + UNICODE_SCRIPT_Telugu UnicodeScriptEnum = 148 + UNICODE_SCRIPT_Thaana UnicodeScriptEnum = 149 + UNICODE_SCRIPT_Thai UnicodeScriptEnum = 150 + UNICODE_SCRIPT_Tibetan UnicodeScriptEnum = 151 + UNICODE_SCRIPT_Tifinagh UnicodeScriptEnum = 152 + UNICODE_SCRIPT_Tirhuta UnicodeScriptEnum = 153 + UNICODE_SCRIPT_Tangsa UnicodeScriptEnum = 154 + UNICODE_SCRIPT_Toto UnicodeScriptEnum = 155 + UNICODE_SCRIPT_Ugaritic UnicodeScriptEnum = 156 + UNICODE_SCRIPT_Vai UnicodeScriptEnum = 157 + UNICODE_SCRIPT_Vithkuqi UnicodeScriptEnum = 158 + UNICODE_SCRIPT_Wancho UnicodeScriptEnum = 159 + UNICODE_SCRIPT_Warang_Citi UnicodeScriptEnum = 160 + UNICODE_SCRIPT_Yezidi UnicodeScriptEnum = 161 + UNICODE_SCRIPT_Yi UnicodeScriptEnum = 162 + UNICODE_SCRIPT_Zanabazar_Square UnicodeScriptEnum = 163 + UNICODE_SCRIPT_COUNT UnicodeScriptEnum = 164 +) + +type UnicodePropertyEnum c.Int + +const ( + UNICODE_PROP_Hyphen UnicodePropertyEnum = 0 + UNICODE_PROP_Other_Math UnicodePropertyEnum = 1 + UNICODE_PROP_Other_Alphabetic UnicodePropertyEnum = 2 + UNICODE_PROP_Other_Lowercase UnicodePropertyEnum = 3 + UNICODE_PROP_Other_Uppercase UnicodePropertyEnum = 4 + UNICODE_PROP_Other_Grapheme_Extend UnicodePropertyEnum = 5 + UNICODE_PROP_Other_Default_Ignorable_Code_Point UnicodePropertyEnum = 6 + UNICODE_PROP_Other_ID_Start UnicodePropertyEnum = 7 + UNICODE_PROP_Other_ID_Continue UnicodePropertyEnum = 8 + UNICODE_PROP_Prepended_Concatenation_Mark UnicodePropertyEnum = 9 + UNICODE_PROP_ID_Continue1 UnicodePropertyEnum = 10 + UNICODE_PROP_XID_Start1 UnicodePropertyEnum = 11 + UNICODE_PROP_XID_Continue1 UnicodePropertyEnum = 12 + UNICODE_PROP_Changes_When_Titlecased1 UnicodePropertyEnum = 13 + UNICODE_PROP_Changes_When_Casefolded1 UnicodePropertyEnum = 14 + UNICODE_PROP_Changes_When_NFKC_Casefolded1 UnicodePropertyEnum = 15 + UNICODE_PROP_ASCII_Hex_Digit UnicodePropertyEnum = 16 + UNICODE_PROP_Bidi_Control UnicodePropertyEnum = 17 + UNICODE_PROP_Dash UnicodePropertyEnum = 18 + UNICODE_PROP_Deprecated UnicodePropertyEnum = 19 + UNICODE_PROP_Diacritic UnicodePropertyEnum = 20 + UNICODE_PROP_Extender UnicodePropertyEnum = 21 + UNICODE_PROP_Hex_Digit UnicodePropertyEnum = 22 + UNICODE_PROP_IDS_Binary_Operator UnicodePropertyEnum = 23 + UNICODE_PROP_IDS_Trinary_Operator UnicodePropertyEnum = 24 + UNICODE_PROP_Ideographic UnicodePropertyEnum = 25 + UNICODE_PROP_Join_Control UnicodePropertyEnum = 26 + UNICODE_PROP_Logical_Order_Exception UnicodePropertyEnum = 27 + UNICODE_PROP_Noncharacter_Code_Point UnicodePropertyEnum = 28 + UNICODE_PROP_Pattern_Syntax UnicodePropertyEnum = 29 + UNICODE_PROP_Pattern_White_Space UnicodePropertyEnum = 30 + UNICODE_PROP_Quotation_Mark UnicodePropertyEnum = 31 + UNICODE_PROP_Radical UnicodePropertyEnum = 32 + UNICODE_PROP_Regional_Indicator UnicodePropertyEnum = 33 + UNICODE_PROP_Sentence_Terminal UnicodePropertyEnum = 34 + UNICODE_PROP_Soft_Dotted UnicodePropertyEnum = 35 + UNICODE_PROP_Terminal_Punctuation UnicodePropertyEnum = 36 + UNICODE_PROP_Unified_Ideograph UnicodePropertyEnum = 37 + UNICODE_PROP_Variation_Selector UnicodePropertyEnum = 38 + UNICODE_PROP_White_Space UnicodePropertyEnum = 39 + UNICODE_PROP_Bidi_Mirrored UnicodePropertyEnum = 40 + UNICODE_PROP_Emoji UnicodePropertyEnum = 41 + UNICODE_PROP_Emoji_Component UnicodePropertyEnum = 42 + UNICODE_PROP_Emoji_Modifier UnicodePropertyEnum = 43 + UNICODE_PROP_Emoji_Modifier_Base UnicodePropertyEnum = 44 + UNICODE_PROP_Emoji_Presentation UnicodePropertyEnum = 45 + UNICODE_PROP_Extended_Pictographic UnicodePropertyEnum = 46 + UNICODE_PROP_Default_Ignorable_Code_Point UnicodePropertyEnum = 47 + UNICODE_PROP_ID_Start UnicodePropertyEnum = 48 + UNICODE_PROP_Case_Ignorable UnicodePropertyEnum = 49 + UNICODE_PROP_ASCII UnicodePropertyEnum = 50 + UNICODE_PROP_Alphabetic UnicodePropertyEnum = 51 + UNICODE_PROP_Any UnicodePropertyEnum = 52 + UNICODE_PROP_Assigned UnicodePropertyEnum = 53 + UNICODE_PROP_Cased UnicodePropertyEnum = 54 + UNICODE_PROP_Changes_When_Casefolded UnicodePropertyEnum = 55 + UNICODE_PROP_Changes_When_Casemapped UnicodePropertyEnum = 56 + UNICODE_PROP_Changes_When_Lowercased UnicodePropertyEnum = 57 + UNICODE_PROP_Changes_When_NFKC_Casefolded UnicodePropertyEnum = 58 + UNICODE_PROP_Changes_When_Titlecased UnicodePropertyEnum = 59 + UNICODE_PROP_Changes_When_Uppercased UnicodePropertyEnum = 60 + UNICODE_PROP_Grapheme_Base UnicodePropertyEnum = 61 + UNICODE_PROP_Grapheme_Extend UnicodePropertyEnum = 62 + UNICODE_PROP_ID_Continue UnicodePropertyEnum = 63 + UNICODE_PROP_Lowercase UnicodePropertyEnum = 64 + UNICODE_PROP_Math UnicodePropertyEnum = 65 + UNICODE_PROP_Uppercase UnicodePropertyEnum = 66 + UNICODE_PROP_XID_Continue UnicodePropertyEnum = 67 + UNICODE_PROP_XID_Start UnicodePropertyEnum = 68 + UNICODE_PROP_Cased1 UnicodePropertyEnum = 69 + UNICODE_PROP_COUNT UnicodePropertyEnum = 70 +) diff --git a/quickjs/libunicode.go b/quickjs/libunicode.go new file mode 100644 index 00000000..366a1df2 --- /dev/null +++ b/quickjs/libunicode.go @@ -0,0 +1,109 @@ +package quickjs + +import ( + "github.com/goplus/lib/c" + _ "unsafe" +) + +const LRE_CC_RES_LEN_MAX = 3 + +type UnicodeNormalizationEnum c.Int + +const ( + UNICODE_NFC UnicodeNormalizationEnum = 0 + UNICODE_NFD UnicodeNormalizationEnum = 1 + UNICODE_NFKC UnicodeNormalizationEnum = 2 + UNICODE_NFKD UnicodeNormalizationEnum = 3 +) + +//go:linkname LreCaseConv C.lre_case_conv +func LreCaseConv(res *c.Uint32T, c c.Uint32T, conv_type c.Int) c.Int + +//go:linkname LreCanonicalize C.lre_canonicalize +func LreCanonicalize(c c.Uint32T, is_unicode c.Int) c.Int + +//go:linkname LreIsCased C.lre_is_cased +func LreIsCased(c c.Uint32T) c.Int + +//go:linkname LreIsCaseIgnorable C.lre_is_case_ignorable +func LreIsCaseIgnorable(c c.Uint32T) c.Int + +/* char ranges */ + +type CharRange struct { + Len c.Int + Size c.Int + Points *c.Uint32T + MemOpaque c.Pointer + ReallocFunc c.Pointer +} +type CharRangeOpEnum c.Int + +const ( + CR_OP_UNION CharRangeOpEnum = 0 + CR_OP_INTER CharRangeOpEnum = 1 + CR_OP_XOR CharRangeOpEnum = 2 +) + +// llgo:link (*CharRange).CrInit C.cr_init +func (recv_ *CharRange) CrInit(mem_opaque c.Pointer, realloc_func func(c.Pointer, c.Pointer, c.SizeT) c.Pointer) { +} + +// llgo:link (*CharRange).CrFree C.cr_free +func (recv_ *CharRange) CrFree() { +} + +// llgo:link (*CharRange).CrRealloc C.cr_realloc +func (recv_ *CharRange) CrRealloc(size c.Int) c.Int { + return 0 +} + +// llgo:link (*CharRange).CrCopy C.cr_copy +func (recv_ *CharRange) CrCopy(cr1 *CharRange) c.Int { + return 0 +} + +// llgo:link (*CharRange).CrUnion1 C.cr_union1 +func (recv_ *CharRange) CrUnion1(b_pt *c.Uint32T, b_len c.Int) c.Int { + return 0 +} + +// llgo:link (*CharRange).CrOp C.cr_op +func (recv_ *CharRange) CrOp(a_pt *c.Uint32T, a_len c.Int, b_pt *c.Uint32T, b_len c.Int, op c.Int) c.Int { + return 0 +} + +// llgo:link (*CharRange).CrInvert C.cr_invert +func (recv_ *CharRange) CrInvert() c.Int { + return 0 +} + +// llgo:link (*CharRange).CrRegexpCanonicalize C.cr_regexp_canonicalize +func (recv_ *CharRange) CrRegexpCanonicalize(is_unicode c.Int) c.Int { + return 0 +} + +//go:linkname LreIsIdStart C.lre_is_id_start +func LreIsIdStart(c c.Uint32T) c.Int + +//go:linkname LreIsIdContinue C.lre_is_id_continue +func LreIsIdContinue(c c.Uint32T) c.Int + +//go:linkname UnicodeNormalize C.unicode_normalize +func UnicodeNormalize(pdst **c.Uint32T, src *c.Uint32T, src_len c.Int, n_type UnicodeNormalizationEnum, opaque c.Pointer, realloc_func func(c.Pointer, c.Pointer, c.SizeT) c.Pointer) c.Int + +/* Unicode character range functions */ +// llgo:link (*CharRange).UnicodeScript C.unicode_script +func (recv_ *CharRange) UnicodeScript(script_name *c.Char, is_ext c.Int) c.Int { + return 0 +} + +// llgo:link (*CharRange).UnicodeGeneralCategory C.unicode_general_category +func (recv_ *CharRange) UnicodeGeneralCategory(gc_name *c.Char) c.Int { + return 0 +} + +// llgo:link (*CharRange).UnicodeProp C.unicode_prop +func (recv_ *CharRange) UnicodeProp(prop_name *c.Char) c.Int { + return 0 +} diff --git a/quickjs/list.go b/quickjs/list.go new file mode 100644 index 00000000..30d7c4a9 --- /dev/null +++ b/quickjs/list.go @@ -0,0 +1,8 @@ +package quickjs + +import _ "unsafe" + +type ListHead struct { + Prev *ListHead + Next *ListHead +} diff --git a/quickjs/llcppg.cfg b/quickjs/llcppg.cfg new file mode 100644 index 00000000..c5cec5dc --- /dev/null +++ b/quickjs/llcppg.cfg @@ -0,0 +1,21 @@ +{ + "name": "quickjs", + "cflags": "$(pkg-config --cflags quickjs)", + "libs": "$(pkg-config --libs quickjs)", + "include": [ + "quickjs/libregexp.h", + "quickjs/quickjs-libc.h", + "quickjs/cutils.h", + "quickjs/libregexp-opcode.h", + "quickjs/libunicode-table.h", + "quickjs/libunicode.h", + "quickjs/list.h", + "quickjs/quickjs-atom.h", + "quickjs/quickjs-opcode.h", + "quickjs/quickjs.h", + "quickjs/unicode_gen_def.h" + ], + "symMap": { + "lre_js_is_ident_next": "-" + } +} diff --git a/quickjs/llcppg.pub b/quickjs/llcppg.pub new file mode 100644 index 00000000..6b68e882 --- /dev/null +++ b/quickjs/llcppg.pub @@ -0,0 +1,50 @@ +BOOL +CharRange +CharRangeOpEnum +DynBuf +DynBufReallocFunc +JSAtom +JSCFunction +JSCFunctionData +JSCFunctionEnum +JSCFunctionListEntry +JSCFunctionMagic +JSCFunctionType +JSClass +JSClassCall +JSClassDef +JSClassExoticMethods +JSClassFinalizer +JSClassGCMark +JSClassID +JSContext +JSFreeArrayBufferDataFunc +JSGCObjectHeader +JSHostPromiseRejectionTracker +JSInterruptHandler +JSJobFunc +JSMallocFunctions +JSMallocState +JSMemoryUsage +JSModuleDef +JSModuleInitFunc +JSModuleLoaderFunc +JSModuleNormalizeFunc +JSObject +JSPromiseStateEnum +JSPropertyDescriptor +JSPropertyEnum +JSRefCountHeader +JSRuntime +JSSharedArrayBufferFunctions +JSValue +JSValueUnion +JS_MarkFunc JSMarkFunc +UnicodeGCEnum +UnicodeNormalizationEnum +UnicodePropertyEnum +UnicodeScriptEnum +list_head ListHead +packed_u16 PackedU16 +packed_u32 PackedU32 +packed_u64 PackedU64 \ No newline at end of file diff --git a/quickjs/llpkg.cfg b/quickjs/llpkg.cfg new file mode 100644 index 00000000..ee0e3f9b --- /dev/null +++ b/quickjs/llpkg.cfg @@ -0,0 +1,9 @@ + +{ + "upstream": { + "package": { + "name": "quickjs", + "version": "2024-01-13" + } + } +} \ No newline at end of file diff --git a/quickjs/quickjs-libc.go b/quickjs/quickjs-libc.go new file mode 100644 index 00000000..01ec9f71 --- /dev/null +++ b/quickjs/quickjs-libc.go @@ -0,0 +1,62 @@ +package quickjs + +import ( + "github.com/goplus/lib/c" + _ "unsafe" +) + +// llgo:link (*JSContext).JsInitModuleStd C.js_init_module_std +func (recv_ *JSContext) JsInitModuleStd(module_name *c.Char) *JSModuleDef { + return nil +} + +// llgo:link (*JSContext).JsInitModuleOs C.js_init_module_os +func (recv_ *JSContext) JsInitModuleOs(module_name *c.Char) *JSModuleDef { + return nil +} + +// llgo:link (*JSContext).JsStdAddHelpers C.js_std_add_helpers +func (recv_ *JSContext) JsStdAddHelpers(argc c.Int, argv **c.Char) { +} + +// llgo:link (*JSContext).JsStdLoop C.js_std_loop +func (recv_ *JSContext) JsStdLoop() { +} + +// llgo:link (*JSRuntime).JsStdInitHandlers C.js_std_init_handlers +func (recv_ *JSRuntime) JsStdInitHandlers() { +} + +// llgo:link (*JSRuntime).JsStdFreeHandlers C.js_std_free_handlers +func (recv_ *JSRuntime) JsStdFreeHandlers() { +} + +// llgo:link (*JSContext).JsStdDumpError C.js_std_dump_error +func (recv_ *JSContext) JsStdDumpError() { +} + +// llgo:link (*JSContext).JsLoadFile C.js_load_file +func (recv_ *JSContext) JsLoadFile(pbuf_len *c.SizeT, filename *c.Char) *c.Uint8T { + return nil +} + +// llgo:link (*JSContext).JsModuleSetImportMeta C.js_module_set_import_meta +func (recv_ *JSContext) JsModuleSetImportMeta(func_val JSValue, use_realpath c.Int, is_main c.Int) c.Int { + return 0 +} + +// llgo:link (*JSContext).JsModuleLoader C.js_module_loader +func (recv_ *JSContext) JsModuleLoader(module_name *c.Char, opaque c.Pointer) *JSModuleDef { + return nil +} + +// llgo:link (*JSContext).JsStdEvalBinary C.js_std_eval_binary +func (recv_ *JSContext) JsStdEvalBinary(buf *c.Uint8T, buf_len c.SizeT, flags c.Int) { +} + +// llgo:link (*JSContext).JsStdPromiseRejectionTracker C.js_std_promise_rejection_tracker +func (recv_ *JSContext) JsStdPromiseRejectionTracker(promise JSValue, reason JSValue, is_handled c.Int, opaque c.Pointer) { +} + +//go:linkname JsStdSetWorkerNewContextFunc C.js_std_set_worker_new_context_func +func JsStdSetWorkerNewContextFunc(func_ func(*JSRuntime) *JSContext) diff --git a/quickjs/quickjs.go b/quickjs/quickjs.go new file mode 100644 index 00000000..829d144a --- /dev/null +++ b/quickjs/quickjs.go @@ -0,0 +1,1096 @@ +package quickjs + +import ( + "github.com/goplus/lib/c" + _ "unsafe" +) + +const JS_PROP_HAS_SHIFT = 8 +const JS_ATOM_NULL = 0 +const JS_DEF_CFUNC = 0 +const JS_DEF_CGETSET = 1 +const JS_DEF_CGETSET_MAGIC = 2 +const JS_DEF_PROP_STRING = 3 +const JS_DEF_PROP_INT32 = 4 +const JS_DEF_PROP_INT64 = 5 +const JS_DEF_PROP_DOUBLE = 6 +const JS_DEF_PROP_UNDEFINED = 7 +const JS_DEF_OBJECT = 8 +const JS_DEF_ALIAS = 9 + +type JSRuntime struct { + Unused [8]uint8 +} + +type JSContext struct { + Unused [8]uint8 +} + +type JSObject struct { + Unused [8]uint8 +} + +type JSClass struct { + Unused [8]uint8 +} +type JSClassID c.Uint32T +type JSAtom c.Uint32T + +const ( + JS_TAG_FIRST c.Int = -11 + JS_TAG_BIG_DECIMAL c.Int = -11 + JS_TAG_BIG_INT c.Int = -10 + JS_TAG_BIG_FLOAT c.Int = -9 + JS_TAG_SYMBOL c.Int = -8 + JS_TAG_STRING c.Int = -7 + JS_TAG_MODULE c.Int = -3 + JS_TAG_FUNCTION_BYTECODE c.Int = -2 + JS_TAG_OBJECT c.Int = -1 + JS_TAG_INT c.Int = 0 + JS_TAG_BOOL c.Int = 1 + JS_TAG_NULL c.Int = 2 + JS_TAG_UNDEFINED c.Int = 3 + JS_TAG_UNINITIALIZED c.Int = 4 + JS_TAG_CATCH_OFFSET c.Int = 5 + JS_TAG_EXCEPTION c.Int = 6 + JS_TAG_FLOAT64 c.Int = 7 +) + +type JSRefCountHeader struct { + RefCount c.Int +} + +type JSValueUnion struct { + Float64 c.Double +} + +type JSValue struct { + U JSValueUnion + Tag c.Int64T +} + +// llgo:type C +type JSCFunction func(*JSContext, JSValue, c.Int, *JSValue) JSValue + +// llgo:type C +type JSCFunctionMagic func(*JSContext, JSValue, c.Int, *JSValue, c.Int) JSValue + +// llgo:type C +type JSCFunctionData func(*JSContext, JSValue, c.Int, *JSValue, c.Int, *JSValue) JSValue + +type JSMallocState struct { + MallocCount c.SizeT + MallocSize c.SizeT + MallocLimit c.SizeT + Opaque c.Pointer +} + +type JSMallocFunctions struct { + JsMalloc c.Pointer + JsFree c.Pointer + JsRealloc c.Pointer + JsMallocUsableSize c.Pointer +} + +type JSGCObjectHeader struct { + Unused [8]uint8 +} + +//go:linkname JSNewRuntime C.JS_NewRuntime +func JSNewRuntime() *JSRuntime + +/* info lifetime must exceed that of rt */ +// llgo:link (*JSRuntime).JSSetRuntimeInfo C.JS_SetRuntimeInfo +func (recv_ *JSRuntime) JSSetRuntimeInfo(info *c.Char) { +} + +// llgo:link (*JSRuntime).JSSetMemoryLimit C.JS_SetMemoryLimit +func (recv_ *JSRuntime) JSSetMemoryLimit(limit c.SizeT) { +} + +// llgo:link (*JSRuntime).JSSetGCThreshold C.JS_SetGCThreshold +func (recv_ *JSRuntime) JSSetGCThreshold(gc_threshold c.SizeT) { +} + +/* use 0 to disable maximum stack size check */ +// llgo:link (*JSRuntime).JSSetMaxStackSize C.JS_SetMaxStackSize +func (recv_ *JSRuntime) JSSetMaxStackSize(stack_size c.SizeT) { +} + +/* should be called when changing thread to update the stack top value + used to check stack overflow. */ +// llgo:link (*JSRuntime).JSUpdateStackTop C.JS_UpdateStackTop +func (recv_ *JSRuntime) JSUpdateStackTop() { +} + +// llgo:link (*JSMallocFunctions).JSNewRuntime2 C.JS_NewRuntime2 +func (recv_ *JSMallocFunctions) JSNewRuntime2(opaque c.Pointer) *JSRuntime { + return nil +} + +// llgo:link (*JSRuntime).JSFreeRuntime C.JS_FreeRuntime +func (recv_ *JSRuntime) JSFreeRuntime() { +} + +// llgo:link (*JSRuntime).JSGetRuntimeOpaque C.JS_GetRuntimeOpaque +func (recv_ *JSRuntime) JSGetRuntimeOpaque() c.Pointer { + return nil +} + +// llgo:link (*JSRuntime).JSSetRuntimeOpaque C.JS_SetRuntimeOpaque +func (recv_ *JSRuntime) JSSetRuntimeOpaque(opaque c.Pointer) { +} + +// llgo:type C +type JSMarkFunc func(*JSRuntime, *JSGCObjectHeader) + +// llgo:link (*JSRuntime).JSMarkValue C.JS_MarkValue +func (recv_ *JSRuntime) JSMarkValue(val JSValue, mark_func JSMarkFunc) { +} + +// llgo:link (*JSRuntime).JSRunGC C.JS_RunGC +func (recv_ *JSRuntime) JSRunGC() { +} + +// llgo:link (*JSRuntime).JSIsLiveObject C.JS_IsLiveObject +func (recv_ *JSRuntime) JSIsLiveObject(obj JSValue) c.Int { + return 0 +} + +// llgo:link (*JSRuntime).JSNewContext C.JS_NewContext +func (recv_ *JSRuntime) JSNewContext() *JSContext { + return nil +} + +// llgo:link (*JSContext).JSFreeContext C.JS_FreeContext +func (recv_ *JSContext) JSFreeContext() { +} + +// llgo:link (*JSContext).JSDupContext C.JS_DupContext +func (recv_ *JSContext) JSDupContext() *JSContext { + return nil +} + +// llgo:link (*JSContext).JSGetContextOpaque C.JS_GetContextOpaque +func (recv_ *JSContext) JSGetContextOpaque() c.Pointer { + return nil +} + +// llgo:link (*JSContext).JSSetContextOpaque C.JS_SetContextOpaque +func (recv_ *JSContext) JSSetContextOpaque(opaque c.Pointer) { +} + +// llgo:link (*JSContext).JSGetRuntime C.JS_GetRuntime +func (recv_ *JSContext) JSGetRuntime() *JSRuntime { + return nil +} + +// llgo:link (*JSContext).JSSetClassProto C.JS_SetClassProto +func (recv_ *JSContext) JSSetClassProto(class_id JSClassID, obj JSValue) { +} + +// llgo:link (*JSContext).JSGetClassProto C.JS_GetClassProto +func (recv_ *JSContext) JSGetClassProto(class_id JSClassID) JSValue { + return JSValue{} +} + +/* the following functions are used to select the intrinsic object to + save memory */ +// llgo:link (*JSRuntime).JSNewContextRaw C.JS_NewContextRaw +func (recv_ *JSRuntime) JSNewContextRaw() *JSContext { + return nil +} + +// llgo:link (*JSContext).JSAddIntrinsicBaseObjects C.JS_AddIntrinsicBaseObjects +func (recv_ *JSContext) JSAddIntrinsicBaseObjects() { +} + +// llgo:link (*JSContext).JSAddIntrinsicDate C.JS_AddIntrinsicDate +func (recv_ *JSContext) JSAddIntrinsicDate() { +} + +// llgo:link (*JSContext).JSAddIntrinsicEval C.JS_AddIntrinsicEval +func (recv_ *JSContext) JSAddIntrinsicEval() { +} + +// llgo:link (*JSContext).JSAddIntrinsicStringNormalize C.JS_AddIntrinsicStringNormalize +func (recv_ *JSContext) JSAddIntrinsicStringNormalize() { +} + +// llgo:link (*JSContext).JSAddIntrinsicRegExpCompiler C.JS_AddIntrinsicRegExpCompiler +func (recv_ *JSContext) JSAddIntrinsicRegExpCompiler() { +} + +// llgo:link (*JSContext).JSAddIntrinsicRegExp C.JS_AddIntrinsicRegExp +func (recv_ *JSContext) JSAddIntrinsicRegExp() { +} + +// llgo:link (*JSContext).JSAddIntrinsicJSON C.JS_AddIntrinsicJSON +func (recv_ *JSContext) JSAddIntrinsicJSON() { +} + +// llgo:link (*JSContext).JSAddIntrinsicProxy C.JS_AddIntrinsicProxy +func (recv_ *JSContext) JSAddIntrinsicProxy() { +} + +// llgo:link (*JSContext).JSAddIntrinsicMapSet C.JS_AddIntrinsicMapSet +func (recv_ *JSContext) JSAddIntrinsicMapSet() { +} + +// llgo:link (*JSContext).JSAddIntrinsicTypedArrays C.JS_AddIntrinsicTypedArrays +func (recv_ *JSContext) JSAddIntrinsicTypedArrays() { +} + +// llgo:link (*JSContext).JSAddIntrinsicPromise C.JS_AddIntrinsicPromise +func (recv_ *JSContext) JSAddIntrinsicPromise() { +} + +// llgo:link (*JSContext).JSAddIntrinsicBigInt C.JS_AddIntrinsicBigInt +func (recv_ *JSContext) JSAddIntrinsicBigInt() { +} + +// llgo:link (*JSContext).JSAddIntrinsicBigFloat C.JS_AddIntrinsicBigFloat +func (recv_ *JSContext) JSAddIntrinsicBigFloat() { +} + +// llgo:link (*JSContext).JSAddIntrinsicBigDecimal C.JS_AddIntrinsicBigDecimal +func (recv_ *JSContext) JSAddIntrinsicBigDecimal() { +} + +/* enable operator overloading */ +// llgo:link (*JSContext).JSAddIntrinsicOperators C.JS_AddIntrinsicOperators +func (recv_ *JSContext) JSAddIntrinsicOperators() { +} + +/* enable "use math" */ +// llgo:link (*JSContext).JSEnableBignumExt C.JS_EnableBignumExt +func (recv_ *JSContext) JSEnableBignumExt(enable c.Int) { +} + +// llgo:link (*JSContext).JsStringCodePointRange C.js_string_codePointRange +func (recv_ *JSContext) JsStringCodePointRange(this_val JSValue, argc c.Int, argv *JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSRuntime).JsMallocRt C.js_malloc_rt +func (recv_ *JSRuntime) JsMallocRt(size c.SizeT) c.Pointer { + return nil +} + +// llgo:link (*JSRuntime).JsFreeRt C.js_free_rt +func (recv_ *JSRuntime) JsFreeRt(ptr c.Pointer) { +} + +// llgo:link (*JSRuntime).JsReallocRt C.js_realloc_rt +func (recv_ *JSRuntime) JsReallocRt(ptr c.Pointer, size c.SizeT) c.Pointer { + return nil +} + +// llgo:link (*JSRuntime).JsMallocUsableSizeRt C.js_malloc_usable_size_rt +func (recv_ *JSRuntime) JsMallocUsableSizeRt(ptr c.Pointer) c.SizeT { + return 0 +} + +// llgo:link (*JSRuntime).JsMalloczRt C.js_mallocz_rt +func (recv_ *JSRuntime) JsMalloczRt(size c.SizeT) c.Pointer { + return nil +} + +// llgo:link (*JSContext).JsMalloc C.js_malloc +func (recv_ *JSContext) JsMalloc(size c.SizeT) c.Pointer { + return nil +} + +// llgo:link (*JSContext).JsFree C.js_free +func (recv_ *JSContext) JsFree(ptr c.Pointer) { +} + +// llgo:link (*JSContext).JsRealloc C.js_realloc +func (recv_ *JSContext) JsRealloc(ptr c.Pointer, size c.SizeT) c.Pointer { + return nil +} + +// llgo:link (*JSContext).JsMallocUsableSize C.js_malloc_usable_size +func (recv_ *JSContext) JsMallocUsableSize(ptr c.Pointer) c.SizeT { + return 0 +} + +// llgo:link (*JSContext).JsRealloc2 C.js_realloc2 +func (recv_ *JSContext) JsRealloc2(ptr c.Pointer, size c.SizeT, pslack *c.SizeT) c.Pointer { + return nil +} + +// llgo:link (*JSContext).JsMallocz C.js_mallocz +func (recv_ *JSContext) JsMallocz(size c.SizeT) c.Pointer { + return nil +} + +// llgo:link (*JSContext).JsStrdup C.js_strdup +func (recv_ *JSContext) JsStrdup(str *c.Char) *c.Char { + return nil +} + +// llgo:link (*JSContext).JsStrndup C.js_strndup +func (recv_ *JSContext) JsStrndup(s *c.Char, n c.SizeT) *c.Char { + return nil +} + +type JSMemoryUsage struct { + MallocSize c.Int64T + MallocLimit c.Int64T + MemoryUsedSize c.Int64T + MallocCount c.Int64T + MemoryUsedCount c.Int64T + AtomCount c.Int64T + AtomSize c.Int64T + StrCount c.Int64T + StrSize c.Int64T + ObjCount c.Int64T + ObjSize c.Int64T + PropCount c.Int64T + PropSize c.Int64T + ShapeCount c.Int64T + ShapeSize c.Int64T + JsFuncCount c.Int64T + JsFuncSize c.Int64T + JsFuncCodeSize c.Int64T + JsFuncPc2lineCount c.Int64T + JsFuncPc2lineSize c.Int64T + CFuncCount c.Int64T + ArrayCount c.Int64T + FastArrayCount c.Int64T + FastArrayElements c.Int64T + BinaryObjectCount c.Int64T + BinaryObjectSize c.Int64T +} + +// llgo:link (*JSRuntime).JSComputeMemoryUsage C.JS_ComputeMemoryUsage +func (recv_ *JSRuntime) JSComputeMemoryUsage(s *JSMemoryUsage) { +} + +//go:linkname JSDumpMemoryUsage C.JS_DumpMemoryUsage +func JSDumpMemoryUsage(fp *c.FILE, s *JSMemoryUsage, rt *JSRuntime) + +// llgo:link (*JSContext).JSNewAtomLen C.JS_NewAtomLen +func (recv_ *JSContext) JSNewAtomLen(str *c.Char, len c.SizeT) JSAtom { + return 0 +} + +// llgo:link (*JSContext).JSNewAtom C.JS_NewAtom +func (recv_ *JSContext) JSNewAtom(str *c.Char) JSAtom { + return 0 +} + +// llgo:link (*JSContext).JSNewAtomUInt32 C.JS_NewAtomUInt32 +func (recv_ *JSContext) JSNewAtomUInt32(n c.Uint32T) JSAtom { + return 0 +} + +// llgo:link (*JSContext).JSDupAtom C.JS_DupAtom +func (recv_ *JSContext) JSDupAtom(v JSAtom) JSAtom { + return 0 +} + +// llgo:link (*JSContext).JSFreeAtom C.JS_FreeAtom +func (recv_ *JSContext) JSFreeAtom(v JSAtom) { +} + +// llgo:link (*JSRuntime).JSFreeAtomRT C.JS_FreeAtomRT +func (recv_ *JSRuntime) JSFreeAtomRT(v JSAtom) { +} + +// llgo:link (*JSContext).JSAtomToValue C.JS_AtomToValue +func (recv_ *JSContext) JSAtomToValue(atom JSAtom) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSAtomToString C.JS_AtomToString +func (recv_ *JSContext) JSAtomToString(atom JSAtom) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSAtomToCString C.JS_AtomToCString +func (recv_ *JSContext) JSAtomToCString(atom JSAtom) *c.Char { + return nil +} + +// llgo:link (*JSContext).JSValueToAtom C.JS_ValueToAtom +func (recv_ *JSContext) JSValueToAtom(val JSValue) JSAtom { + return 0 +} + +/* object class support */ + +type JSPropertyEnum struct { + IsEnumerable c.Int + Atom JSAtom +} + +type JSPropertyDescriptor struct { + Flags c.Int + Value JSValue + Getter JSValue + Setter JSValue +} + +type JSClassExoticMethods struct { + GetOwnProperty c.Pointer + GetOwnPropertyNames c.Pointer + DeleteProperty c.Pointer + DefineOwnProperty c.Pointer + HasProperty c.Pointer + GetProperty c.Pointer + SetProperty c.Pointer +} + +// llgo:type C +type JSClassFinalizer func(*JSRuntime, JSValue) + +// llgo:type C +type JSClassGCMark func(*JSRuntime, JSValue, JSMarkFunc) + +// llgo:type C +type JSClassCall func(*JSContext, JSValue, JSValue, c.Int, *JSValue, c.Int) JSValue + +type JSClassDef struct { + ClassName *c.Char + Finalizer *c.Pointer + GcMark *c.Pointer + Call *c.Pointer + Exotic *JSClassExoticMethods +} + +// llgo:link (*JSClassID).JSNewClassID C.JS_NewClassID +func (recv_ *JSClassID) JSNewClassID() JSClassID { + return 0 +} + +// llgo:link (*JSRuntime).JSNewClass C.JS_NewClass +func (recv_ *JSRuntime) JSNewClass(class_id JSClassID, class_def *JSClassDef) c.Int { + return 0 +} + +// llgo:link (*JSRuntime).JSIsRegisteredClass C.JS_IsRegisteredClass +func (recv_ *JSRuntime) JSIsRegisteredClass(class_id JSClassID) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSNewBigInt64 C.JS_NewBigInt64 +func (recv_ *JSContext) JSNewBigInt64(v c.Int64T) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSNewBigUint64 C.JS_NewBigUint64 +func (recv_ *JSContext) JSNewBigUint64(v c.Uint64T) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSThrow C.JS_Throw +func (recv_ *JSContext) JSThrow(obj JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSGetException C.JS_GetException +func (recv_ *JSContext) JSGetException() JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSIsError C.JS_IsError +func (recv_ *JSContext) JSIsError(val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSResetUncatchableError C.JS_ResetUncatchableError +func (recv_ *JSContext) JSResetUncatchableError() { +} + +// llgo:link (*JSContext).JSNewError C.JS_NewError +func (recv_ *JSContext) JSNewError() JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSThrowSyntaxError C.JS_ThrowSyntaxError +func (recv_ *JSContext) JSThrowSyntaxError(fmt *c.Char, __llgo_va_list ...interface{}) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSThrowTypeError C.JS_ThrowTypeError +func (recv_ *JSContext) JSThrowTypeError(fmt *c.Char, __llgo_va_list ...interface{}) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSThrowReferenceError C.JS_ThrowReferenceError +func (recv_ *JSContext) JSThrowReferenceError(fmt *c.Char, __llgo_va_list ...interface{}) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSThrowRangeError C.JS_ThrowRangeError +func (recv_ *JSContext) JSThrowRangeError(fmt *c.Char, __llgo_va_list ...interface{}) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSThrowInternalError C.JS_ThrowInternalError +func (recv_ *JSContext) JSThrowInternalError(fmt *c.Char, __llgo_va_list ...interface{}) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSThrowOutOfMemory C.JS_ThrowOutOfMemory +func (recv_ *JSContext) JSThrowOutOfMemory() JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).X__JSFreeValue C.__JS_FreeValue +func (recv_ *JSContext) X__JSFreeValue(v JSValue) { +} + +// llgo:link (*JSRuntime).X__JSFreeValueRT C.__JS_FreeValueRT +func (recv_ *JSRuntime) X__JSFreeValueRT(v JSValue) { +} + +// llgo:link (*JSContext).JSToBool C.JS_ToBool +func (recv_ *JSContext) JSToBool(val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSToInt32 C.JS_ToInt32 +func (recv_ *JSContext) JSToInt32(pres *c.Int32T, val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSToInt64 C.JS_ToInt64 +func (recv_ *JSContext) JSToInt64(pres *c.Int64T, val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSToIndex C.JS_ToIndex +func (recv_ *JSContext) JSToIndex(plen *c.Uint64T, val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSToFloat64 C.JS_ToFloat64 +func (recv_ *JSContext) JSToFloat64(pres *c.Double, val JSValue) c.Int { + return 0 +} + +/* return an exception if 'val' is a Number */ +// llgo:link (*JSContext).JSToBigInt64 C.JS_ToBigInt64 +func (recv_ *JSContext) JSToBigInt64(pres *c.Int64T, val JSValue) c.Int { + return 0 +} + +/* same as JS_ToInt64() but allow BigInt */ +// llgo:link (*JSContext).JSToInt64Ext C.JS_ToInt64Ext +func (recv_ *JSContext) JSToInt64Ext(pres *c.Int64T, val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSNewStringLen C.JS_NewStringLen +func (recv_ *JSContext) JSNewStringLen(str1 *c.Char, len1 c.SizeT) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSNewString C.JS_NewString +func (recv_ *JSContext) JSNewString(str *c.Char) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSNewAtomString C.JS_NewAtomString +func (recv_ *JSContext) JSNewAtomString(str *c.Char) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSToString C.JS_ToString +func (recv_ *JSContext) JSToString(val JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSToPropertyKey C.JS_ToPropertyKey +func (recv_ *JSContext) JSToPropertyKey(val JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSToCStringLen2 C.JS_ToCStringLen2 +func (recv_ *JSContext) JSToCStringLen2(plen *c.SizeT, val1 JSValue, cesu8 c.Int) *c.Char { + return nil +} + +// llgo:link (*JSContext).JSFreeCString C.JS_FreeCString +func (recv_ *JSContext) JSFreeCString(ptr *c.Char) { +} + +// llgo:link (*JSContext).JSNewObjectProtoClass C.JS_NewObjectProtoClass +func (recv_ *JSContext) JSNewObjectProtoClass(proto JSValue, class_id JSClassID) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSNewObjectClass C.JS_NewObjectClass +func (recv_ *JSContext) JSNewObjectClass(class_id c.Int) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSNewObjectProto C.JS_NewObjectProto +func (recv_ *JSContext) JSNewObjectProto(proto JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSNewObject C.JS_NewObject +func (recv_ *JSContext) JSNewObject() JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSIsFunction C.JS_IsFunction +func (recv_ *JSContext) JSIsFunction(val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSIsConstructor C.JS_IsConstructor +func (recv_ *JSContext) JSIsConstructor(val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSSetConstructorBit C.JS_SetConstructorBit +func (recv_ *JSContext) JSSetConstructorBit(func_obj JSValue, val c.Int) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSNewArray C.JS_NewArray +func (recv_ *JSContext) JSNewArray() JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSIsArray C.JS_IsArray +func (recv_ *JSContext) JSIsArray(val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSGetPropertyInternal C.JS_GetPropertyInternal +func (recv_ *JSContext) JSGetPropertyInternal(obj JSValue, prop JSAtom, receiver JSValue, throw_ref_error c.Int) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSGetPropertyStr C.JS_GetPropertyStr +func (recv_ *JSContext) JSGetPropertyStr(this_obj JSValue, prop *c.Char) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSGetPropertyUint32 C.JS_GetPropertyUint32 +func (recv_ *JSContext) JSGetPropertyUint32(this_obj JSValue, idx c.Uint32T) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSSetPropertyInternal C.JS_SetPropertyInternal +func (recv_ *JSContext) JSSetPropertyInternal(obj JSValue, prop JSAtom, val JSValue, this_obj JSValue, flags c.Int) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSSetPropertyUint32 C.JS_SetPropertyUint32 +func (recv_ *JSContext) JSSetPropertyUint32(this_obj JSValue, idx c.Uint32T, val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSSetPropertyInt64 C.JS_SetPropertyInt64 +func (recv_ *JSContext) JSSetPropertyInt64(this_obj JSValue, idx c.Int64T, val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSSetPropertyStr C.JS_SetPropertyStr +func (recv_ *JSContext) JSSetPropertyStr(this_obj JSValue, prop *c.Char, val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSHasProperty C.JS_HasProperty +func (recv_ *JSContext) JSHasProperty(this_obj JSValue, prop JSAtom) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSIsExtensible C.JS_IsExtensible +func (recv_ *JSContext) JSIsExtensible(obj JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSPreventExtensions C.JS_PreventExtensions +func (recv_ *JSContext) JSPreventExtensions(obj JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSDeleteProperty C.JS_DeleteProperty +func (recv_ *JSContext) JSDeleteProperty(obj JSValue, prop JSAtom, flags c.Int) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSSetPrototype C.JS_SetPrototype +func (recv_ *JSContext) JSSetPrototype(obj JSValue, proto_val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSGetPrototype C.JS_GetPrototype +func (recv_ *JSContext) JSGetPrototype(val JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSGetOwnPropertyNames C.JS_GetOwnPropertyNames +func (recv_ *JSContext) JSGetOwnPropertyNames(ptab **JSPropertyEnum, plen *c.Uint32T, obj JSValue, flags c.Int) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSGetOwnProperty C.JS_GetOwnProperty +func (recv_ *JSContext) JSGetOwnProperty(desc *JSPropertyDescriptor, obj JSValue, prop JSAtom) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSCall C.JS_Call +func (recv_ *JSContext) JSCall(func_obj JSValue, this_obj JSValue, argc c.Int, argv *JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSInvoke C.JS_Invoke +func (recv_ *JSContext) JSInvoke(this_val JSValue, atom JSAtom, argc c.Int, argv *JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSCallConstructor C.JS_CallConstructor +func (recv_ *JSContext) JSCallConstructor(func_obj JSValue, argc c.Int, argv *JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSCallConstructor2 C.JS_CallConstructor2 +func (recv_ *JSContext) JSCallConstructor2(func_obj JSValue, new_target JSValue, argc c.Int, argv *JSValue) JSValue { + return JSValue{} +} + +//go:linkname JSDetectModule C.JS_DetectModule +func JSDetectModule(input *c.Char, input_len c.SizeT) c.Int + +/* 'input' must be zero terminated i.e. input[input_len] = '\0'. */ +// llgo:link (*JSContext).JSEval C.JS_Eval +func (recv_ *JSContext) JSEval(input *c.Char, input_len c.SizeT, filename *c.Char, eval_flags c.Int) JSValue { + return JSValue{} +} + +/* same as JS_Eval() but with an explicit 'this_obj' parameter */ +// llgo:link (*JSContext).JSEvalThis C.JS_EvalThis +func (recv_ *JSContext) JSEvalThis(this_obj JSValue, input *c.Char, input_len c.SizeT, filename *c.Char, eval_flags c.Int) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSGetGlobalObject C.JS_GetGlobalObject +func (recv_ *JSContext) JSGetGlobalObject() JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSIsInstanceOf C.JS_IsInstanceOf +func (recv_ *JSContext) JSIsInstanceOf(val JSValue, obj JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSDefineProperty C.JS_DefineProperty +func (recv_ *JSContext) JSDefineProperty(this_obj JSValue, prop JSAtom, val JSValue, getter JSValue, setter JSValue, flags c.Int) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSDefinePropertyValue C.JS_DefinePropertyValue +func (recv_ *JSContext) JSDefinePropertyValue(this_obj JSValue, prop JSAtom, val JSValue, flags c.Int) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSDefinePropertyValueUint32 C.JS_DefinePropertyValueUint32 +func (recv_ *JSContext) JSDefinePropertyValueUint32(this_obj JSValue, idx c.Uint32T, val JSValue, flags c.Int) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSDefinePropertyValueStr C.JS_DefinePropertyValueStr +func (recv_ *JSContext) JSDefinePropertyValueStr(this_obj JSValue, prop *c.Char, val JSValue, flags c.Int) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSDefinePropertyGetSet C.JS_DefinePropertyGetSet +func (recv_ *JSContext) JSDefinePropertyGetSet(this_obj JSValue, prop JSAtom, getter JSValue, setter JSValue, flags c.Int) c.Int { + return 0 +} + +// llgo:link JSValue.JSSetOpaque C.JS_SetOpaque +func (recv_ JSValue) JSSetOpaque(opaque c.Pointer) { +} + +// llgo:link JSValue.JSGetOpaque C.JS_GetOpaque +func (recv_ JSValue) JSGetOpaque(class_id JSClassID) c.Pointer { + return nil +} + +// llgo:link (*JSContext).JSGetOpaque2 C.JS_GetOpaque2 +func (recv_ *JSContext) JSGetOpaque2(obj JSValue, class_id JSClassID) c.Pointer { + return nil +} + +/* 'buf' must be zero terminated i.e. buf[buf_len] = '\0'. */ +// llgo:link (*JSContext).JSParseJSON C.JS_ParseJSON +func (recv_ *JSContext) JSParseJSON(buf *c.Char, buf_len c.SizeT, filename *c.Char) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSParseJSON2 C.JS_ParseJSON2 +func (recv_ *JSContext) JSParseJSON2(buf *c.Char, buf_len c.SizeT, filename *c.Char, flags c.Int) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSJSONStringify C.JS_JSONStringify +func (recv_ *JSContext) JSJSONStringify(obj JSValue, replacer JSValue, space0 JSValue) JSValue { + return JSValue{} +} + +// llgo:type C +type JSFreeArrayBufferDataFunc func(*JSRuntime, c.Pointer, c.Pointer) + +// llgo:link (*JSContext).JSNewArrayBuffer C.JS_NewArrayBuffer +func (recv_ *JSContext) JSNewArrayBuffer(buf *c.Uint8T, len c.SizeT, free_func JSFreeArrayBufferDataFunc, opaque c.Pointer, is_shared c.Int) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSNewArrayBufferCopy C.JS_NewArrayBufferCopy +func (recv_ *JSContext) JSNewArrayBufferCopy(buf *c.Uint8T, len c.SizeT) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSDetachArrayBuffer C.JS_DetachArrayBuffer +func (recv_ *JSContext) JSDetachArrayBuffer(obj JSValue) { +} + +// llgo:link (*JSContext).JSGetArrayBuffer C.JS_GetArrayBuffer +func (recv_ *JSContext) JSGetArrayBuffer(psize *c.SizeT, obj JSValue) *c.Uint8T { + return nil +} + +// llgo:link (*JSContext).JSGetTypedArrayBuffer C.JS_GetTypedArrayBuffer +func (recv_ *JSContext) JSGetTypedArrayBuffer(obj JSValue, pbyte_offset *c.SizeT, pbyte_length *c.SizeT, pbytes_per_element *c.SizeT) JSValue { + return JSValue{} +} + +type JSSharedArrayBufferFunctions struct { + SabAlloc c.Pointer + SabFree c.Pointer + SabDup c.Pointer + SabOpaque c.Pointer +} + +// llgo:link (*JSRuntime).JSSetSharedArrayBufferFunctions C.JS_SetSharedArrayBufferFunctions +func (recv_ *JSRuntime) JSSetSharedArrayBufferFunctions(sf *JSSharedArrayBufferFunctions) { +} + +type JSPromiseStateEnum c.Int + +const ( + JS_PROMISE_PENDING JSPromiseStateEnum = 0 + JS_PROMISE_FULFILLED JSPromiseStateEnum = 1 + JS_PROMISE_REJECTED JSPromiseStateEnum = 2 +) + +// llgo:link (*JSContext).JSNewPromiseCapability C.JS_NewPromiseCapability +func (recv_ *JSContext) JSNewPromiseCapability(resolving_funcs *JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSPromiseState C.JS_PromiseState +func (recv_ *JSContext) JSPromiseState(promise JSValue) JSPromiseStateEnum { + return 0 +} + +// llgo:link (*JSContext).JSPromiseResult C.JS_PromiseResult +func (recv_ *JSContext) JSPromiseResult(promise JSValue) JSValue { + return JSValue{} +} + +// llgo:type C +type JSHostPromiseRejectionTracker func(*JSContext, JSValue, JSValue, c.Int, c.Pointer) + +// llgo:link (*JSRuntime).JSSetHostPromiseRejectionTracker C.JS_SetHostPromiseRejectionTracker +func (recv_ *JSRuntime) JSSetHostPromiseRejectionTracker(cb JSHostPromiseRejectionTracker, opaque c.Pointer) { +} + +// llgo:type C +type JSInterruptHandler func(*JSRuntime, c.Pointer) c.Int + +// llgo:link (*JSRuntime).JSSetInterruptHandler C.JS_SetInterruptHandler +func (recv_ *JSRuntime) JSSetInterruptHandler(cb JSInterruptHandler, opaque c.Pointer) { +} + +/* if can_block is TRUE, Atomics.wait() can be used */ +// llgo:link (*JSRuntime).JSSetCanBlock C.JS_SetCanBlock +func (recv_ *JSRuntime) JSSetCanBlock(can_block c.Int) { +} + +/* set the [IsHTMLDDA] internal slot */ +// llgo:link (*JSContext).JSSetIsHTMLDDA C.JS_SetIsHTMLDDA +func (recv_ *JSContext) JSSetIsHTMLDDA(obj JSValue) { +} + +type JSModuleDef struct { + Unused [8]uint8 +} + +// llgo:type C +type JSModuleNormalizeFunc func(*JSContext, *c.Char, *c.Char, c.Pointer) *c.Char + +// llgo:type C +type JSModuleLoaderFunc func(*JSContext, *c.Char, c.Pointer) *JSModuleDef + +/* module_normalize = NULL is allowed and invokes the default module + filename normalizer */ +// llgo:link (*JSRuntime).JSSetModuleLoaderFunc C.JS_SetModuleLoaderFunc +func (recv_ *JSRuntime) JSSetModuleLoaderFunc(module_normalize JSModuleNormalizeFunc, module_loader JSModuleLoaderFunc, opaque c.Pointer) { +} + +/* return the import.meta object of a module */ +// llgo:link (*JSContext).JSGetImportMeta C.JS_GetImportMeta +func (recv_ *JSContext) JSGetImportMeta(m *JSModuleDef) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSGetModuleName C.JS_GetModuleName +func (recv_ *JSContext) JSGetModuleName(m *JSModuleDef) JSAtom { + return 0 +} + +// llgo:type C +type JSJobFunc func(*JSContext, c.Int, *JSValue) JSValue + +// llgo:link (*JSContext).JSEnqueueJob C.JS_EnqueueJob +func (recv_ *JSContext) JSEnqueueJob(job_func JSJobFunc, argc c.Int, argv *JSValue) c.Int { + return 0 +} + +// llgo:link (*JSRuntime).JSIsJobPending C.JS_IsJobPending +func (recv_ *JSRuntime) JSIsJobPending() c.Int { + return 0 +} + +// llgo:link (*JSRuntime).JSExecutePendingJob C.JS_ExecutePendingJob +func (recv_ *JSRuntime) JSExecutePendingJob(pctx **JSContext) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSWriteObject C.JS_WriteObject +func (recv_ *JSContext) JSWriteObject(psize *c.SizeT, obj JSValue, flags c.Int) *c.Uint8T { + return nil +} + +// llgo:link (*JSContext).JSWriteObject2 C.JS_WriteObject2 +func (recv_ *JSContext) JSWriteObject2(psize *c.SizeT, obj JSValue, flags c.Int, psab_tab ***c.Uint8T, psab_tab_len *c.SizeT) *c.Uint8T { + return nil +} + +// llgo:link (*JSContext).JSReadObject C.JS_ReadObject +func (recv_ *JSContext) JSReadObject(buf *c.Uint8T, buf_len c.SizeT, flags c.Int) JSValue { + return JSValue{} +} + +/* instantiate and evaluate a bytecode function. Only used when + reading a script or module with JS_ReadObject() */ +// llgo:link (*JSContext).JSEvalFunction C.JS_EvalFunction +func (recv_ *JSContext) JSEvalFunction(fun_obj JSValue) JSValue { + return JSValue{} +} + +/* load the dependencies of the module 'obj'. Useful when JS_ReadObject() + returns a module. */ +// llgo:link (*JSContext).JSResolveModule C.JS_ResolveModule +func (recv_ *JSContext) JSResolveModule(obj JSValue) c.Int { + return 0 +} + +/* only exported for os.Worker() */ +// llgo:link (*JSContext).JSGetScriptOrModuleName C.JS_GetScriptOrModuleName +func (recv_ *JSContext) JSGetScriptOrModuleName(n_stack_levels c.Int) JSAtom { + return 0 +} + +/* only exported for os.Worker() */ +// llgo:link (*JSContext).JSLoadModule C.JS_LoadModule +func (recv_ *JSContext) JSLoadModule(basename *c.Char, filename *c.Char) JSValue { + return JSValue{} +} + +type JSCFunctionEnum c.Int + +const ( + JS_CFUNC_generic JSCFunctionEnum = 0 + JS_CFUNC_generic_magic JSCFunctionEnum = 1 + JS_CFUNC_constructor JSCFunctionEnum = 2 + JS_CFUNC_constructor_magic JSCFunctionEnum = 3 + JS_CFUNC_constructor_or_func JSCFunctionEnum = 4 + JS_CFUNC_constructor_or_func_magic JSCFunctionEnum = 5 + JS_CFUNC_f_f JSCFunctionEnum = 6 + JS_CFUNC_f_f_f JSCFunctionEnum = 7 + JS_CFUNC_getter JSCFunctionEnum = 8 + JS_CFUNC_setter JSCFunctionEnum = 9 + JS_CFUNC_getter_magic JSCFunctionEnum = 10 + JS_CFUNC_setter_magic JSCFunctionEnum = 11 + JS_CFUNC_iterator_next JSCFunctionEnum = 12 +) + +type JSCFunctionType struct { + Generic *c.Pointer +} + +// llgo:link (*JSContext).JSNewCFunction2 C.JS_NewCFunction2 +func (recv_ *JSContext) JSNewCFunction2(func_ JSCFunction, name *c.Char, length c.Int, cproto JSCFunctionEnum, magic c.Int) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSNewCFunctionData C.JS_NewCFunctionData +func (recv_ *JSContext) JSNewCFunctionData(func_ JSCFunctionData, length c.Int, magic c.Int, data_len c.Int, data *JSValue) JSValue { + return JSValue{} +} + +// llgo:link (*JSContext).JSSetConstructor C.JS_SetConstructor +func (recv_ *JSContext) JSSetConstructor(func_obj JSValue, proto JSValue) { +} + +/* C property definition */ + +type JSCFunctionListEntry struct { + Name *c.Char + PropFlags c.Uint8T + DefType c.Uint8T + Magic c.Int16T + U struct { + Func struct { + Length c.Uint8T + Cproto c.Uint8T + Cfunc JSCFunctionType + } + } +} + +// llgo:link (*JSContext).JSSetPropertyFunctionList C.JS_SetPropertyFunctionList +func (recv_ *JSContext) JSSetPropertyFunctionList(obj JSValue, tab *JSCFunctionListEntry, len c.Int) { +} + +// llgo:type C +type JSModuleInitFunc func(*JSContext, *JSModuleDef) c.Int + +// llgo:link (*JSContext).JSNewCModule C.JS_NewCModule +func (recv_ *JSContext) JSNewCModule(name_str *c.Char, func_ JSModuleInitFunc) *JSModuleDef { + return nil +} + +/* can only be called before the module is instantiated */ +// llgo:link (*JSContext).JSAddModuleExport C.JS_AddModuleExport +func (recv_ *JSContext) JSAddModuleExport(m *JSModuleDef, name_str *c.Char) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSAddModuleExportList C.JS_AddModuleExportList +func (recv_ *JSContext) JSAddModuleExportList(m *JSModuleDef, tab *JSCFunctionListEntry, len c.Int) c.Int { + return 0 +} + +/* can only be called after the module is instantiated */ +// llgo:link (*JSContext).JSSetModuleExport C.JS_SetModuleExport +func (recv_ *JSContext) JSSetModuleExport(m *JSModuleDef, export_name *c.Char, val JSValue) c.Int { + return 0 +} + +// llgo:link (*JSContext).JSSetModuleExportList C.JS_SetModuleExportList +func (recv_ *JSContext) JSSetModuleExportList(m *JSModuleDef, tab *JSCFunctionListEntry, len c.Int) c.Int { + return 0 +} diff --git a/quickjs/quickjs_autogen_link.go b/quickjs/quickjs_autogen_link.go new file mode 100644 index 00000000..ab211ab6 --- /dev/null +++ b/quickjs/quickjs_autogen_link.go @@ -0,0 +1,5 @@ +package quickjs + +import _ "github.com/goplus/lib/c" + +const LLGoPackage string = "link: $(pkg-config --libs quickjs);"