2
0

glue.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*
  2. Copyright (c) 2018-2024 Bruce A Henderson
  3. This software is provided 'as-is', without any express or implied
  4. warranty. In no event will the authors be held liable for any damages
  5. arising from the use of this software.
  6. Permission is granted to anyone to use this software for any purpose,
  7. including commercial applications, and to alter it and redistribute it
  8. freely, subject to the following restrictions:
  9. 1. The origin of this software must not be misrepresented; you must not
  10. claim that you wrote the original software. If you use this software
  11. in a product, an acknowledgment in the product documentation would be
  12. appreciated but is not required.
  13. 2. Altered source versions must be plainly marked as such, and must not be
  14. misrepresented as being the original software.
  15. 3. This notice may not be removed or altered from any source distribution.
  16. */
  17. #ifndef _BRL_STRINGBUILDER_H_
  18. #define _BRL_STRINGBUILDER_H_
  19. #include "brl.mod/blitz.mod/blitz.h"
  20. #include "brl.mod/blitz.mod/blitz_unicode.h"
  21. struct MaxStringBuilder {
  22. BBChar * buffer;
  23. int count;
  24. int capacity;
  25. BBULONG hash;
  26. };
  27. struct MaxSplitBuffer {
  28. struct MaxStringBuilder * buffer;
  29. int count;
  30. int * startIndex;
  31. int * endIndex;
  32. };
  33. void bmx_stringbuilder_free(struct MaxStringBuilder * buf);
  34. struct MaxStringBuilder * bmx_stringbuilder_new(int initial);
  35. void bmx_stringbuilder_resize(struct MaxStringBuilder * buf, int size);
  36. int bmx_stringbuilder_count(struct MaxStringBuilder * buf);
  37. int bmx_stringbuilder_capacity(struct MaxStringBuilder * buf);
  38. void bmx_stringbuilder_setlength(struct MaxStringBuilder * buf, int length);
  39. BBString * bmx_stringbuilder_tostring(struct MaxStringBuilder * buf);
  40. void bmx_stringbuilder_append_string(struct MaxStringBuilder * buf, BBString * value);
  41. void bmx_stringbuilder_remove(struct MaxStringBuilder * buf, int start, int end);
  42. void bmx_stringbuilder_insert(struct MaxStringBuilder * buf, int offset, BBString * value);
  43. void bmx_stringbuilder_reverse(struct MaxStringBuilder * buf);
  44. BBString * bmx_stringbuilder_substring(struct MaxStringBuilder * buf, int beginIndex, int endIndex);
  45. void bmx_stringbuilder_append_stringbuffer(struct MaxStringBuilder * buf, struct MaxStringBuilder * other);
  46. int bmx_stringbuilder_matches(struct MaxStringBuilder * buf, int offset, BBString * subString);
  47. int bmx_stringbuilder_startswith(struct MaxStringBuilder * buf, BBString * subString, int startIndex);
  48. int bmx_stringbuilder_endswith(struct MaxStringBuilder * buf, BBString * subString);
  49. int bmx_stringbuilder_find(struct MaxStringBuilder * buf, BBString * subString, int startIndex);
  50. int bmx_stringbuilder_findlast(struct MaxStringBuilder * buf, BBString * subString, int startIndex);
  51. void bmx_stringbuilder_tolower(struct MaxStringBuilder * buf);
  52. void bmx_stringbuilder_toupper(struct MaxStringBuilder * buf);
  53. void bmx_stringbuilder_trim(struct MaxStringBuilder * buf);
  54. void bmx_stringbuilder_replace(struct MaxStringBuilder * buf, BBString * subString, BBString * withString);
  55. void bmx_stringbuilder_join(struct MaxStringBuilder * buf, BBArray * bits, struct MaxStringBuilder * newbuf);
  56. void bmx_stringbuilder_join_strings(struct MaxStringBuilder * buf, BBArray * bits, BBString * joiner);
  57. struct MaxSplitBuffer * bmx_stringbuilder_split(struct MaxStringBuilder * buf, BBString * separator);
  58. void bmx_stringbuilder_setcharat(struct MaxStringBuilder * buf, int index, int ch);
  59. int bmx_stringbuilder_charat(struct MaxStringBuilder * buf, int index);
  60. void bmx_stringbuilder_removecharat(struct MaxStringBuilder * buf, int index);
  61. void bmx_stringbuilder_append_cstring(struct MaxStringBuilder * buf, const char * chars);
  62. void bmx_stringbuilder_append_cstringbytes(struct MaxStringBuilder * buf, const char * chars, int length);
  63. void bmx_stringbuilder_append_utf8string(struct MaxStringBuilder * buf, const char * chars);
  64. void bmx_stringbuilder_append_utf8bytes(struct MaxStringBuilder * buf, const char * chars, int length);
  65. void bmx_stringbuilder_append_double(struct MaxStringBuilder * buf, double value);
  66. void bmx_stringbuilder_append_float(struct MaxStringBuilder * buf, float value);
  67. void bmx_stringbuilder_append_int(struct MaxStringBuilder * buf, int value);
  68. void bmx_stringbuilder_append_long(struct MaxStringBuilder * buf, BBInt64 value);
  69. void bmx_stringbuilder_append_short(struct MaxStringBuilder * buf, BBSHORT value);
  70. void bmx_stringbuilder_append_byte(struct MaxStringBuilder * buf, BBBYTE value);
  71. void bmx_stringbuilder_append_uint(struct MaxStringBuilder * buf, unsigned int value);
  72. void bmx_stringbuilder_append_ulong(struct MaxStringBuilder * buf, BBUInt64 value);
  73. void bmx_stringbuilder_append_sizet(struct MaxStringBuilder * buf, BBSIZET value);
  74. void bmx_stringbuilder_append_shorts(struct MaxStringBuilder * buf, BBSHORT * shorts, int length);
  75. void bmx_stringbuilder_append_char(struct MaxStringBuilder * buf, int value);
  76. BBString * bmx_stringbuilder_left(struct MaxStringBuilder * buf, int length);
  77. BBString * bmx_stringbuilder_right(struct MaxStringBuilder * buf, int length);
  78. int bmx_stringbuilder_compare(struct MaxStringBuilder * buf1, struct MaxStringBuilder * buf2);
  79. int bmx_stringbuilder_equals(struct MaxStringBuilder * buf1, struct MaxStringBuilder * buf2);
  80. void bmx_stringbuilder_leftalign(struct MaxStringBuilder * buf, int length);
  81. void bmx_stringbuilder_rightalign(struct MaxStringBuilder * buf, int length);
  82. char * bmx_stringbuilder_toutf8string(struct MaxStringBuilder * buf);
  83. BBChar * bmx_stringbuilder_towstring(struct MaxStringBuilder * buf);
  84. void bmx_stringbuilder_toutf8_buffer(BBString *str, char * buf, size_t length);
  85. void bmx_stringbuilder_toutf8_sbuffer(BBChar * p, int len, char * buf, size_t length);
  86. void bmx_stringbuilder_format_string(struct MaxStringBuilder * buf, BBString * formatText, BBString * value);
  87. void bmx_stringbuilder_format_byte(struct MaxStringBuilder * buf, BBString * formatText, BBBYTE value);
  88. void bmx_stringbuilder_format_short(struct MaxStringBuilder * buf, BBString * formatText, BBSHORT value);
  89. void bmx_stringbuilder_format_int(struct MaxStringBuilder * buf, BBString * formatText, BBINT value);
  90. void bmx_stringbuilder_format_uint(struct MaxStringBuilder * buf, BBString * formatText, BBUINT value);
  91. void bmx_stringbuilder_format_long(struct MaxStringBuilder * buf, BBString * formatText, BBLONG value);
  92. void bmx_stringbuilder_format_ulong(struct MaxStringBuilder * buf, BBString * formatText, BBULONG value);
  93. void bmx_stringbuilder_format_sizet(struct MaxStringBuilder * buf, BBString * formatText, BBSIZET value);
  94. void bmx_stringbuilder_format_float(struct MaxStringBuilder * buf, BBString * formatText, float value);
  95. void bmx_stringbuilder_format_double(struct MaxStringBuilder * buf, BBString * formatText, double value);
  96. BBULONG bmx_stringbuilder_hash(struct MaxStringBuilder * buf);
  97. void bmx_stringbuilder_append_utf32string(struct MaxStringBuilder * buf, BBUINT * chars);
  98. void bmx_stringbuilder_append_utf32bytes(struct MaxStringBuilder * buf, BBUINT * chars, int length);
  99. /* ----------------------------------------------------- */
  100. int bmx_stringbuilder_splitbuffer_length(struct MaxSplitBuffer * buf);
  101. BBString * bmx_stringbuilder_splitbuffer_text(struct MaxSplitBuffer * buf, int index);
  102. void bmx_stringbuilder_splitbuffer_free(struct MaxSplitBuffer * buf);
  103. BBArray * bmx_stringbuilder_splitbuffer_toarray(struct MaxSplitBuffer * buf);
  104. struct MaxSplitBuffer * bmx_stringbuilder_splitbuffer_split(struct MaxSplitBuffer * splitBuffer, BBString * separator, int index);
  105. int bmx_stringbuilder_splitbuffer_toint(struct MaxSplitBuffer * splitBuffer, int index);
  106. unsigned int bmx_stringbuilder_splitbuffer_touint(struct MaxSplitBuffer * splitBuffer, int index);
  107. float bmx_stringbuilder_splitbuffer_tofloat(struct MaxSplitBuffer * splitBuffer, int index);
  108. double bmx_stringbuilder_splitbuffer_todouble(struct MaxSplitBuffer * splitBuffer, int index);
  109. BBInt64 bmx_stringbuilder_splitbuffer_tolong(struct MaxSplitBuffer * splitBuffer, int index);
  110. BBUInt64 bmx_stringbuilder_splitbuffer_toulong(struct MaxSplitBuffer * splitBuffer, int index);
  111. size_t bmx_stringbuilder_splitbuffer_tosizet(struct MaxSplitBuffer * splitBuffer, int index);
  112. BBSHORT bmx_stringbuilder_splitbuffer_toshort(struct MaxSplitBuffer * splitBuffer, int index);
  113. BBBYTE bmx_stringbuilder_splitbuffer_tobyte(struct MaxSplitBuffer * splitBuffer, int index);
  114. #endif