const string = @import("string_types.zig").string; const Allocator = @import("std").mem.Allocator; const assert = @import("std").debug.assert; const copy = @import("std").mem.copy; const Env = @import("./env.zig"); const bun = @import("./global.zig"); const StringBuilder = @This(); const DebugHashTable = if (Env.allow_assert) std.AutoHashMapUnmanaged(u64, void) else void; len: usize = 0, cap: usize = 0, ptr: ?[*]u8 = null, debug_only_checker: DebugHashTable = DebugHashTable{}, pub fn count(this: *StringBuilder, slice: string) void { this.cap += slice.len; if (comptime Env.allow_assert) { _ = this.debug_only_checker.getOrPut(bun.default_allocator, bun.hash(slice)) catch unreachable; } } pub fn allocate(this: *StringBuilder, allocator: Allocator) !void { var slice = try allocator.alloc(u8, this.cap); this.ptr = slice.ptr; this.len = 0; } pub fn deinit(this: *StringBuilder, allocator: Allocator) void { if (this.ptr == null or this.cap == 0) return; allocator.free(this.ptr.?[0..this.cap]); if (comptime Env.allow_assert) { this.debug_only_checker.deinit(bun.default_allocator); this.debug_only_checker = .{}; } } pub fn append(this: *StringBuilder, slice: string) string { if (comptime Env.allow_assert) { assert(this.len <= this.cap); // didn't count everything assert(this.ptr != null); // must call allocate first } if (comptime Env.allow_assert) { assert(this.debug_only_checker.contains(bun.hash(slice))); } bun.copy(u8, this.ptr.?[this.len..this.cap], slice); const result = this.ptr.?[this.len..this.cap][0..slice.len]; this.len += slice.len; if (Env.allow_assert) { assert(this.len <= this.cap); } return result; } const std = @import("std"); pub fn fmt(this: *StringBuilder, comptime str: string, args: anytype) string { if (Env.allow_assert) { assert(this.len <= this.cap); // didn't count everything assert(this.ptr != null); // must call allocate first } var buf = this.ptr.?[this.len..this.cap]; const out = std.fmt.bufPrint(buf, str, args) catch unreachable; this.len += out.len; if (Env.allow_assert) { assert(this.len <= this.cap); } return out; } pub fn fmtCount(this: *StringBuilder, comptime str: string, args: anytype) void { this.cap += std.fmt.count(str, args); } alue='cli-flow-updates'>cli-flow-updates Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/packages/astro/test/fixtures/astro-scripts/src (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2022-06-30Ci: improve times, reduce delay (#3780)Gravatar Fred K. Schott 1-14/+10
2022-06-30await error reporter (#3779)Gravatar Fred K. Schott 2-10/+25
2022-06-30[ci] formatGravatar natemoo-re 14-99/+95
2022-06-30MDX support (#3706)Gravatar Nate Moore 63-57/+1153
2022-06-30Fix integration name (`prefetch` instead of `lit`) (#3778)Gravatar hippotastic 2-1/+6
2022-06-30[ci] update lockfile (#3771)Gravatar Fred K. Bot 1-114/+112
2022-06-30Integration Docs Next Steps (#3677)Gravatar Dan Jutan 11-314/+666
2022-06-30[ci] formatGravatar tony-sull 1-2/+2
2022-06-30refactor to provide better cli error handling (#3768)Gravatar Fred K. Schott 2-43/+37
2022-06-30[ci] release (#3772)@astrojs/preact@0.3.1Gravatar Fred K. Bot 12-22/+23
2022-06-30Added Cloudflare adapter to README.md (#3773)Gravatar Isaac McFadyen 1-0/+1
2022-06-30[ci] formatGravatar hippotastic 1-5/+4
2022-06-30Fix "Invalid hook call" warning (#3769)Gravatar hippotastic 2-9/+79
2022-06-29[ci] release (#3759)astro@1.0.0-beta.59@astrojs/telemetry@0.2.2@astrojs/preact@0.3.0Gravatar Fred K. Bot 42-121/+117
2022-06-29[ci] formatGravatar FredKSchott 8-35/+36
2022-06-29manual lockfile update (#3751)Gravatar Fred K. Schott 3-2659/+2871
2022-06-29add error event to telemetry (#3750)Gravatar Fred K. Schott 16-85/+270