mt-lang 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/docs/index.html +4 -3
  3. data/lib/milk_tea/base.rb +1 -1
  4. data/std/asset_pack.mt +267 -0
  5. data/std/async/libuv_runtime.mt +539 -0
  6. data/std/async/mailbox.mt +191 -0
  7. data/std/async/runtime.mt +87 -0
  8. data/std/async.mt +87 -0
  9. data/std/base64.mt +185 -0
  10. data/std/behavior_tree.mt +396 -0
  11. data/std/binary.mt +314 -0
  12. data/std/binary_heap.mt +157 -0
  13. data/std/bitset.mt +239 -0
  14. data/std/box2d.mt +535 -0
  15. data/std/bytes.mt +46 -0
  16. data/std/c/box2d.mt +1254 -0
  17. data/std/c/cgltf.mt +647 -0
  18. data/std/c/cjson.mt +106 -0
  19. data/std/c/crypto.mt +11 -0
  20. data/std/c/crypto_support.h +51 -0
  21. data/std/c/ctype.mt +19 -0
  22. data/std/c/ctype_bindgen.h +29 -0
  23. data/std/c/curl.mt +1223 -0
  24. data/std/c/enet.mt +473 -0
  25. data/std/c/errno.mt +41 -0
  26. data/std/c/errno_bindgen.h +53 -0
  27. data/std/c/flecs.mt +2945 -0
  28. data/std/c/fs.linux.mt +43 -0
  29. data/std/c/fs.windows.mt +43 -0
  30. data/std/c/fs_support.h +954 -0
  31. data/std/c/gl.mt +2065 -0
  32. data/std/c/gl_registry_helpers.h +10748 -0
  33. data/std/c/glfw.mt +499 -0
  34. data/std/c/libc.mt +167 -0
  35. data/std/c/libuv.mt +1491 -0
  36. data/std/c/math.mt +22 -0
  37. data/std/c/math_bindgen.h +31 -0
  38. data/std/c/miniaudio.mt +3420 -0
  39. data/std/c/pcre2.mt +735 -0
  40. data/std/c/process.mt +58 -0
  41. data/std/c/process_support.h +1147 -0
  42. data/std/c/raygui.mt +1602 -0
  43. data/std/c/raylib.mt +1245 -0
  44. data/std/c/raymath.mt +163 -0
  45. data/std/c/rlgl.mt +434 -0
  46. data/std/c/rpng.mt +60 -0
  47. data/std/c/rres.mt +187 -0
  48. data/std/c/sdl3.mt +4132 -0
  49. data/std/c/sqlite3.mt +951 -0
  50. data/std/c/stb_image.mt +52 -0
  51. data/std/c/stb_image_resize2.mt +128 -0
  52. data/std/c/stb_image_write.mt +19 -0
  53. data/std/c/stb_rect_pack.mt +38 -0
  54. data/std/c/stb_truetype.mt +175 -0
  55. data/std/c/stb_vorbis.mt +31 -0
  56. data/std/c/stdio.mt +90 -0
  57. data/std/c/steamworks.h +5769 -0
  58. data/std/c/steamworks.mt +4771 -0
  59. data/std/c/string.mt +16 -0
  60. data/std/c/string_bindgen.h +36 -0
  61. data/std/c/sync.mt +33 -0
  62. data/std/c/sync_support.h +219 -0
  63. data/std/c/terminal.mt +24 -0
  64. data/std/c/terminal_support.h +408 -0
  65. data/std/c/time.mt +26 -0
  66. data/std/c/tls.mt +24 -0
  67. data/std/c/tls_support.h +626 -0
  68. data/std/c/tracy.mt +53 -0
  69. data/std/c/zlib.mt +20 -0
  70. data/std/c/zlib_support.h +239 -0
  71. data/std/c/zstd.mt +231 -0
  72. data/std/cell.mt +60 -0
  73. data/std/cgltf.mt +115 -0
  74. data/std/cjson.mt +90 -0
  75. data/std/cli.mt +768 -0
  76. data/std/cookie.mt +198 -0
  77. data/std/counter.mt +160 -0
  78. data/std/crypto.mt +74 -0
  79. data/std/cstring.mt +13 -0
  80. data/std/ctype.mt +52 -0
  81. data/std/curl/runtime.mt +261 -0
  82. data/std/curl.mt +38 -0
  83. data/std/deque.mt +348 -0
  84. data/std/encoding.mt +93 -0
  85. data/std/enet.mt +133 -0
  86. data/std/env.mt +41 -0
  87. data/std/errno.mt +47 -0
  88. data/std/flecs.mt +978 -0
  89. data/std/fmt.mt +271 -0
  90. data/std/fs.linux.mt +696 -0
  91. data/std/fs.windows.mt +711 -0
  92. data/std/fsm.mt +267 -0
  93. data/std/gl.mt +2062 -0
  94. data/std/glfw.mt +471 -0
  95. data/std/goap.mt +342 -0
  96. data/std/graph.mt +521 -0
  97. data/std/gzip.mt +77 -0
  98. data/std/hash.mt +429 -0
  99. data/std/http/server.mt +810 -0
  100. data/std/http.mt +1227 -0
  101. data/std/intern.mt +53 -0
  102. data/std/jobs.mt +288 -0
  103. data/std/json.mt +627 -0
  104. data/std/libc.mt +34 -0
  105. data/std/libuv.mt +554 -0
  106. data/std/linear_algebra.mt +243 -0
  107. data/std/linked_map.mt +372 -0
  108. data/std/linked_map_view.mt +49 -0
  109. data/std/linked_set.mt +117 -0
  110. data/std/log.mt +69 -0
  111. data/std/map.mt +418 -0
  112. data/std/math.mt +24 -0
  113. data/std/mem/arena.mt +137 -0
  114. data/std/mem/endian.mt +51 -0
  115. data/std/mem/heap.mt +298 -0
  116. data/std/mem/pool.mt +164 -0
  117. data/std/mem/stack.mt +47 -0
  118. data/std/mem/tracking.mt +119 -0
  119. data/std/miniaudio.mt +1299 -0
  120. data/std/multiset.mt +191 -0
  121. data/std/net/channel.mt +727 -0
  122. data/std/net/clock.mt +237 -0
  123. data/std/net/discovery.mt +277 -0
  124. data/std/net/lobby.mt +813 -0
  125. data/std/net/manager.mt +539 -0
  126. data/std/net/mux.mt +839 -0
  127. data/std/net/nat.mt +122 -0
  128. data/std/net/packet.mt +219 -0
  129. data/std/net/punch.mt +162 -0
  130. data/std/net/rpc.mt +119 -0
  131. data/std/net/session.mt +1157 -0
  132. data/std/net/stun.mt +252 -0
  133. data/std/net/sync.mt +183 -0
  134. data/std/net/turn.mt +459 -0
  135. data/std/net.mt +2944 -0
  136. data/std/oauth2.mt +408 -0
  137. data/std/option.mt +51 -0
  138. data/std/ordered_map.mt +497 -0
  139. data/std/ordered_set.mt +348 -0
  140. data/std/path.mt +368 -0
  141. data/std/pcre2/runtime.mt +35 -0
  142. data/std/pcre2.mt +78 -0
  143. data/std/priority_queue.mt +55 -0
  144. data/std/process.mt +837 -0
  145. data/std/queue.mt +55 -0
  146. data/std/random.mt +146 -0
  147. data/std/raygui.mt +99 -0
  148. data/std/raylib/debug_console.mt +71 -0
  149. data/std/raylib/easing.mt +388 -0
  150. data/std/raylib/packed_assets.mt +255 -0
  151. data/std/raylib/runtime.mt +30 -0
  152. data/std/raylib/tracy_gpu.mt +37 -0
  153. data/std/raylib.mt +1510 -0
  154. data/std/raymath.mt +153 -0
  155. data/std/result.mt +89 -0
  156. data/std/rlgl.mt +268 -0
  157. data/std/rpng.mt +46 -0
  158. data/std/rres.mt +36 -0
  159. data/std/sdl3/runtime.mt +54 -0
  160. data/std/sdl3.mt +1731 -0
  161. data/std/serialize.mt +68 -0
  162. data/std/set.mt +124 -0
  163. data/std/spatial.mt +176 -0
  164. data/std/sqlite3.mt +151 -0
  165. data/std/stack.mt +55 -0
  166. data/std/stb_image.mt +47 -0
  167. data/std/stb_image_resize2.mt +41 -0
  168. data/std/stb_image_write.mt +17 -0
  169. data/std/stb_rect_pack.mt +15 -0
  170. data/std/stb_truetype.mt +77 -0
  171. data/std/stb_vorbis.mt +16 -0
  172. data/std/stdio.mt +88 -0
  173. data/std/steamworks.mt +1542 -0
  174. data/std/str.mt +293 -0
  175. data/std/string.mt +234 -0
  176. data/std/sync.mt +194 -0
  177. data/std/tar.mt +704 -0
  178. data/std/terminal.mt +1002 -0
  179. data/std/testing.mt +266 -0
  180. data/std/thread.mt +120 -0
  181. data/std/time.mt +105 -0
  182. data/std/tls.mt +616 -0
  183. data/std/toml.mt +1310 -0
  184. data/std/tracy.mt +42 -0
  185. data/std/uri.mt +118 -0
  186. data/std/url.mt +372 -0
  187. data/std/vec.mt +433 -0
  188. data/std/zstd.mt +94 -0
  189. metadata +187 -2
data/std/multiset.mt ADDED
@@ -0,0 +1,191 @@
1
+ import std.counter as counter
2
+ import std.linked_map as linked_map
3
+ import std.linked_map_view as linked_map_view
4
+
5
+ public struct Entry[T]:
6
+ value: const_ptr[T]
7
+ count: ptr_uint
8
+
9
+ public struct Entries[T]:
10
+ values: linked_map_view.SnapshotEntries[T, ptr_uint]
11
+
12
+ public struct MultiSet[T]:
13
+ values: counter.Counter[T]
14
+
15
+
16
+ extending MultiSet[T]:
17
+ public static function create() -> MultiSet[T]:
18
+ return MultiSet[T](values = counter.Counter[T].create())
19
+
20
+
21
+ public static function with_capacity(capacity: ptr_uint) -> MultiSet[T]:
22
+ var result = MultiSet[T].create()
23
+ result.reserve(capacity)
24
+ return result
25
+
26
+
27
+ public function len() -> ptr_uint:
28
+ return this.values.total_count()
29
+
30
+
31
+ public function total_count() -> ptr_uint:
32
+ return this.values.total_count()
33
+
34
+
35
+ public function distinct_len() -> ptr_uint:
36
+ return this.values.len()
37
+
38
+
39
+ public function capacity() -> ptr_uint:
40
+ return this.values.capacity()
41
+
42
+
43
+ public function is_empty() -> bool:
44
+ return this.values.is_empty()
45
+
46
+
47
+ public function count(value: T) -> ptr_uint:
48
+ return this.values.count(value)
49
+
50
+
51
+ public function contains(value: T) -> bool:
52
+ return this.values.contains(value)
53
+
54
+
55
+ public function values() -> linked_map.Keys[T, ptr_uint]:
56
+ return this.values.keys()
57
+
58
+
59
+ public function entries() -> Entries[T]:
60
+ return Entries[T](values = linked_map_view.SnapshotEntries[T, ptr_uint].create(this.values.values.entries()))
61
+
62
+
63
+ public function iter() -> Entries[T]:
64
+ return this.entries()
65
+
66
+
67
+ public function is_subset(other: MultiSet[T]) -> bool:
68
+ if this.total_count() > other.total_count():
69
+ return false
70
+
71
+ for entry in this:
72
+ unsafe:
73
+ let current = read(ptr[T]<-entry.value)
74
+ if entry.count > other.count(current):
75
+ return false
76
+
77
+ return true
78
+
79
+
80
+ public function union_with(other: MultiSet[T]) -> MultiSet[T]:
81
+ var result = MultiSet[T].with_capacity(this.distinct_len() + other.distinct_len())
82
+
83
+ for entry in this:
84
+ unsafe:
85
+ let current = read(ptr[T]<-entry.value)
86
+ var count = entry.count
87
+ let other_count = other.count(current)
88
+ if other_count > count:
89
+ count = other_count
90
+ result.add(current, count)
91
+
92
+ for entry in other:
93
+ unsafe:
94
+ let current = read(ptr[T]<-entry.value)
95
+ if not result.contains(current):
96
+ result.add(current, entry.count)
97
+
98
+ return result
99
+
100
+
101
+ public function intersection(other: MultiSet[T]) -> MultiSet[T]:
102
+ var result = MultiSet[T].with_capacity(this.distinct_len())
103
+
104
+ for entry in this:
105
+ unsafe:
106
+ let current = read(ptr[T]<-entry.value)
107
+ let other_count = other.count(current)
108
+ if other_count != 0:
109
+ var count = entry.count
110
+ if other_count < count:
111
+ count = other_count
112
+ result.add(current, count)
113
+
114
+ return result
115
+
116
+
117
+ public function difference(other: MultiSet[T]) -> MultiSet[T]:
118
+ var result = MultiSet[T].with_capacity(this.distinct_len())
119
+
120
+ for entry in this:
121
+ unsafe:
122
+ let current = read(ptr[T]<-entry.value)
123
+ let other_count = other.count(current)
124
+ if entry.count > other_count:
125
+ result.add(current, entry.count - other_count)
126
+
127
+ return result
128
+
129
+
130
+ public function symmetric_difference(other: MultiSet[T]) -> MultiSet[T]:
131
+ var result = MultiSet[T].with_capacity(this.distinct_len() + other.distinct_len())
132
+
133
+ for entry in this:
134
+ unsafe:
135
+ let current = read(ptr[T]<-entry.value)
136
+ let other_count = other.count(current)
137
+ if entry.count != other_count:
138
+ if entry.count > other_count:
139
+ result.add(current, entry.count - other_count)
140
+ else:
141
+ result.add(current, other_count - entry.count)
142
+
143
+ for entry in other:
144
+ unsafe:
145
+ let current = read(ptr[T]<-entry.value)
146
+ if not this.contains(current):
147
+ result.add(current, entry.count)
148
+
149
+ return result
150
+
151
+
152
+ public editable function clear() -> void:
153
+ this.values.clear()
154
+
155
+
156
+ public editable function release() -> void:
157
+ this.values.release()
158
+
159
+
160
+ public editable function reserve(min_capacity: ptr_uint) -> void:
161
+ this.values.reserve(min_capacity)
162
+
163
+
164
+ public editable function insert(value: T) -> ptr_uint:
165
+ return this.values.increment(value)
166
+
167
+
168
+ public editable function add(value: T, amount: ptr_uint) -> ptr_uint:
169
+ return this.values.add(value, amount)
170
+
171
+
172
+ public editable function remove_one(value: T) -> bool:
173
+ return this.values.remove_one(value)
174
+
175
+
176
+ public editable function remove_all(value: T) -> Option[ptr_uint]:
177
+ return this.values.remove(value)
178
+
179
+
180
+ extending Entries[T]:
181
+ public function iter() -> Entries[T]:
182
+ return this
183
+
184
+
185
+ public editable function next() -> bool:
186
+ return this.values.next()
187
+
188
+
189
+ public function current() -> Entry[T]:
190
+ let entry = this.values.current()
191
+ return Entry[T](value = entry.key, count = entry.value)