string_object.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /*
  2. * Copyright (C) 2019 Intel Corporation. All rights reserved.
  3. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. */
  5. #ifndef _STRING_OBJECT_H_
  6. #define _STRING_OBJECT_H_
  7. #include "wasm.h"
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. typedef enum EncodingFlag {
  12. UTF8,
  13. WTF8,
  14. WTF16,
  15. LOSSY_UTF8,
  16. } EncodingFlag;
  17. typedef enum StringViewType {
  18. STRING_VIEW_WTF8,
  19. STRING_VIEW_WTF16,
  20. STRING_VIEW_ITER,
  21. } StringViewType;
  22. typedef enum ErrorCode {
  23. Insufficient_Space = -3,
  24. Encode_Fail = -2,
  25. Isolated_Surrogate = -1,
  26. } ErrorCode;
  27. /******************* gc finalizer *****************/
  28. void
  29. wasm_string_destroy(WASMString str_obj);
  30. /******************* opcode functions *****************/
  31. /* string.const */
  32. WASMString
  33. wasm_string_new_const(const char *content, uint32 length);
  34. /* string.new_xx8/new_wtf16 */
  35. /* string.new_xx8_array */
  36. /* string.new_wtf16_array */
  37. WASMString
  38. wasm_string_new_with_encoding(void *addr, uint32 count, EncodingFlag flag);
  39. /* string.measure */
  40. int32
  41. wasm_string_measure(WASMString str_obj, EncodingFlag flag);
  42. /* stringview_wtf16.length */
  43. int32
  44. wasm_string_wtf16_get_length(WASMString str_obj);
  45. /* string.encode_xx8 */
  46. /* string.encode_wtf16 */
  47. /* stringview_wtf8.encode_xx */
  48. /* stringview_wtf16.encode */
  49. /* string.encode_xx8_array */
  50. /* string.encode_wtf16_array */
  51. int32
  52. wasm_string_encode(WASMString str_obj, uint32 pos, uint32 count, void *addr,
  53. uint32 *next_pos, EncodingFlag flag);
  54. /* string.concat */
  55. WASMString
  56. wasm_string_concat(WASMString str_obj1, WASMString str_obj2);
  57. /* string.eq */
  58. int32
  59. wasm_string_eq(WASMString str_obj1, WASMString str_obj2);
  60. /* string.is_usv_sequence */
  61. int32
  62. wasm_string_is_usv_sequence(WASMString str_obj);
  63. /* string.as_wtf8 */
  64. /* string.as_wtf16 */
  65. /* string.as_iter */
  66. WASMString
  67. wasm_string_create_view(WASMString str_obj, StringViewType type);
  68. /* stringview_wtf8.advance */
  69. /* stringview_iter.advance */
  70. int32
  71. wasm_string_advance(WASMString str_obj, uint32 pos, uint32 count,
  72. uint32 *target_pos);
  73. /* stringview_wtf8.slice */
  74. /* stringview_wtf16.slice */
  75. /* stringview_iter.slice */
  76. WASMString
  77. wasm_string_slice(WASMString str_obj, uint32 start, uint32 end,
  78. StringViewType type);
  79. /* stringview_wtf16.get_codeunit */
  80. int16
  81. wasm_string_get_wtf16_codeunit(WASMString str_obj, int32 pos);
  82. /* stringview_iter.next */
  83. uint32
  84. wasm_string_next_codepoint(WASMString str_obj, uint32 pos);
  85. /* stringview_iter.rewind */
  86. uint32
  87. wasm_string_rewind(WASMString str_obj, uint32 pos, uint32 count,
  88. uint32 *target_pos);
  89. /******************* application functions *****************/
  90. void
  91. wasm_string_dump(WASMString str_obj);
  92. #ifdef __cplusplus
  93. } /* end of extern "C" */
  94. #endif
  95. #endif /* end of _STRING_OBJECT_H_ */