string_object.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. typedef enum EncodingFlag {
  9. UTF8,
  10. WTF8,
  11. WTF16,
  12. LOSSY_UTF8,
  13. } EncodingFlag;
  14. typedef enum StringViewType {
  15. STRING_VIEW_WTF8,
  16. STRING_VIEW_WTF16,
  17. STRING_VIEW_ITER,
  18. } StringViewType;
  19. typedef enum ErrorCode {
  20. Insufficient_Space = -3,
  21. Encode_Fail = -2,
  22. Isolated_Surrogate = -1,
  23. } ErrorCode;
  24. /******************* gc finalizer *****************/
  25. void
  26. wasm_string_destroy(WASMString str_obj);
  27. /******************* opcode functions *****************/
  28. /* string.const */
  29. WASMString
  30. wasm_string_new_const(const char *str);
  31. /* string.new_xx8/new_wtf16 */
  32. /* string.new_xx8_array */
  33. /* string.new_wtf16_array */
  34. WASMString
  35. wasm_string_new_with_encoding(void *addr, uint32 count, EncodingFlag flag);
  36. /* string.measure */
  37. int32
  38. wasm_string_measure(WASMString str_obj, EncodingFlag flag);
  39. /* stringview_wtf16.length */
  40. int32
  41. wasm_string_wtf16_get_length(WASMString str_obj);
  42. /* string.encode_xx8 */
  43. /* string.encode_wtf16 */
  44. /* stringview_wtf8.encode_xx */
  45. /* stringview_wtf16.encode */
  46. /* string.encode_xx8_array */
  47. /* string.encode_wtf16_array */
  48. int32
  49. wasm_string_encode(WASMString str_obj, uint32 pos, uint32 count, void *addr,
  50. uint32 *next_pos, EncodingFlag flag);
  51. /* string.concat */
  52. WASMString
  53. wasm_string_concat(WASMString str_obj1, WASMString str_obj2);
  54. /* string.eq */
  55. int32
  56. wasm_string_eq(WASMString str_obj1, WASMString str_obj2);
  57. /* string.is_usv_sequence */
  58. int32
  59. wasm_string_is_usv_sequence(WASMString str_obj);
  60. /* string.as_wtf8 */
  61. /* string.as_wtf16 */
  62. /* string.as_iter */
  63. WASMString
  64. wasm_string_create_view(WASMString str_obj, StringViewType type);
  65. /* stringview_wtf8.advance */
  66. /* stringview_iter.advance */
  67. int32
  68. wasm_string_advance(WASMString str_obj, uint32 pos, uint32 count,
  69. uint32 *target_pos);
  70. /* stringview_wtf8.slice */
  71. /* stringview_wtf16.slice */
  72. /* stringview_iter.slice */
  73. WASMString
  74. wasm_string_slice(WASMString str_obj, uint32 start, uint32 end,
  75. StringViewType type);
  76. /* stringview_wtf16.get_codeunit */
  77. int16
  78. wasm_string_get_wtf16_codeunit(WASMString str_obj, int32 pos);
  79. /* stringview_iter.next */
  80. uint32
  81. wasm_string_next_codepoint(WASMString str_obj, uint32 pos);
  82. /* stringview_iter.rewind */
  83. uint32
  84. wasm_string_rewind(WASMString str_obj, uint32 pos, uint32 count,
  85. uint32 *target_pos);
  86. /******************* application functions *****************/
  87. void
  88. wasm_string_dump(WASMString str_obj);
  89. #endif /* end of _STRING_OBJECT_H_ */