return true;
}
+// Semi-useful shortcut for adding something to an array.
+#operator << macro (arr: [..] $T, v: T) do array.push(^arr, v);
+
insert :: (arr: ^[..] $T, idx: u32, x: T) -> bool {
if !ensure_capacity(arr, arr.count + 1) do return false;
}
map :: #match {
- (arr: ^[..] $T, f: (^T) -> void) do for ^it: *arr do f(it);,
- (arr: ^[..] $T, f: (T) -> T) do for ^it: *arr do *it = f(*it);,
- (arr: ^[..] $T, data: $R, f: (^T, R) -> void) do for ^it: *arr do f(it, data);,
- (arr: ^[..] $T, data: $R, f: (T, R) -> T) do for ^it: *arr do *it = f(*it, data);,
- (arr: [] $T, f: (^T) -> void) do for ^it: arr do f(it);,
- (arr: [] $T, f: (T) -> T) do for ^it: arr do *it = f(*it);,
- (arr: [] $T, data: $R, f: (^T, R) -> void) do for ^it: arr do f(it, data);,
- (arr: [] $T, data: $R, f: (T, R) -> T) do for ^it: arr do *it = f(*it, data);,
+ macro (arr: [..] $T, f: (^T) -> void) do for ^it: arr do f(it);,
+ macro (arr: [..] $T, f: (T) -> T) do for ^it: arr do *it = f(*it);,
+ macro (arr: [..] $T, body: Code) do for ^it: arr do #insert body;,
+ macro (arr: [..] $T, data: $R, f: (^T, R) -> void) do for ^it: arr do f(it, data);,
+ macro (arr: [..] $T, data: $R, f: (T, R) -> T) do for ^it: arr do *it = f(*it, data);,
+ macro (arr: [] $T, f: (^T) -> void) do for ^it: arr do f(it);,
+ macro (arr: [] $T, f: (T) -> T) do for ^it: arr do *it = f(*it);,
+ macro (arr: [] $T, body: Code) do for ^it: arr do #insert body;,
+ macro (arr: [] $T, data: $R, f: (^T, R) -> void) do for ^it: arr do f(it, data);,
+ macro (arr: [] $T, data: $R, f: (T, R) -> T) do for ^it: arr do *it = f(*it, data);,
}
every :: (arr: ^[..] $T, predicate: (T) -> bool) -> bool {
parse_bmfont(fnt_data, ^bmf);
@Cleanup // this was a stupid way of doing this. Just use a f-ing for loop.
- array.map(^bmf.glyphs.entries, ^bmf, (glyph: ^map.Map.Entry(i32, BMFont_Glyph), font: ^BMFont) {
- glyph.value.tex_x = ~~ glyph.value.x / cast(f32) font.common.scale_width;
- glyph.value.tex_y = ~~ glyph.value.y / cast(f32) font.common.scale_height;
- glyph.value.tex_w = ~~ glyph.value.w / cast(f32) font.common.scale_width;
- glyph.value.tex_h = ~~ glyph.value.h / cast(f32) font.common.scale_height;
+ array.map(bmf.glyphs.entries, #code {
+ it.value.tex_x = ~~ it.value.x / cast(f32) bmf.common.scale_width;
+ it.value.tex_y = ~~ it.value.y / cast(f32) bmf.common.scale_height;
+ it.value.tex_w = ~~ it.value.w / cast(f32) bmf.common.scale_width;
+ it.value.tex_h = ~~ it.value.h / cast(f32) bmf.common.scale_height;
});
return bmf;