structstd.Build.Cache.File[src]

Fields

prefixed_path: PrefixedPath
max_file_size: ?usize
handle: ?fs.File

Populated if the user calls addOpenedFile. The handle is not owned here.

stat: Stat
bin_digest: BinDigest
contents: ?[]const u8

Functions

Functiondeinit[src]

pub fn deinit(self: *File, gpa: Allocator) void

Parameters

self: *File

Source Code

Source code
pub fn deinit(self: *File, gpa: Allocator) void {
    gpa.free(self.prefixed_path.sub_path);
    if (self.contents) |contents| {
        gpa.free(contents);
        self.contents = null;
    }
    self.* = undefined;
}

FunctionupdateMaxSize[src]

pub fn updateMaxSize(file: *File, new_max_size: ?usize) void

Parameters

file: *File
new_max_size: ?usize

Source Code

Source code
pub fn updateMaxSize(file: *File, new_max_size: ?usize) void {
    const new = new_max_size orelse return;
    file.max_file_size = if (file.max_file_size) |old| @max(old, new) else new;
}

FunctionupdateHandle[src]

pub fn updateHandle(file: *File, new_handle: ?fs.File) void

Parameters

file: *File
new_handle: ?fs.File

Source Code

Source code
pub fn updateHandle(file: *File, new_handle: ?fs.File) void {
    const handle = new_handle orelse return;
    file.handle = handle;
}

Source Code

Source code
pub const File = struct {
    prefixed_path: PrefixedPath,
    max_file_size: ?usize,
    /// Populated if the user calls `addOpenedFile`.
    /// The handle is not owned here.
    handle: ?fs.File,
    stat: Stat,
    bin_digest: BinDigest,
    contents: ?[]const u8,

    pub const Stat = struct {
        inode: fs.File.INode,
        size: u64,
        mtime: i128,

        pub fn fromFs(fs_stat: fs.File.Stat) Stat {
            return .{
                .inode = fs_stat.inode,
                .size = fs_stat.size,
                .mtime = fs_stat.mtime,
            };
        }
    };

    pub fn deinit(self: *File, gpa: Allocator) void {
        gpa.free(self.prefixed_path.sub_path);
        if (self.contents) |contents| {
            gpa.free(contents);
            self.contents = null;
        }
        self.* = undefined;
    }

    pub fn updateMaxSize(file: *File, new_max_size: ?usize) void {
        const new = new_max_size orelse return;
        file.max_file_size = if (file.max_file_size) |old| @max(old, new) else new;
    }

    pub fn updateHandle(file: *File, new_handle: ?fs.File) void {
        const handle = new_handle orelse return;
        file.handle = handle;
    }
}