add read file util
This commit is contained in:
parent
cce005d410
commit
0b815bdc8d
60
platform.d
60
platform.d
@ -4,6 +4,7 @@ import dlib.aliases;
|
|||||||
import dlib.alloc : Reset;
|
import dlib.alloc : Reset;
|
||||||
import dlib.alloc;
|
import dlib.alloc;
|
||||||
import dlib.util;
|
import dlib.util;
|
||||||
|
import dlib.math;
|
||||||
|
|
||||||
import includes;
|
import includes;
|
||||||
|
|
||||||
@ -15,6 +16,8 @@ import core.time;
|
|||||||
import core.volatile;
|
import core.volatile;
|
||||||
import core.atomic;
|
import core.atomic;
|
||||||
|
|
||||||
|
import core.stdc.stdio : FilePtr = FILE, FRead = fread;
|
||||||
|
|
||||||
const WINDOW_EDGE_BUFFER = 50;
|
const WINDOW_EDGE_BUFFER = 50;
|
||||||
|
|
||||||
enum Input : u32
|
enum Input : u32
|
||||||
@ -392,6 +395,7 @@ import core.sys.posix.pthread : PThread = pthread_t,
|
|||||||
|
|
||||||
import core.stdc.string : strlen;
|
import core.stdc.string : strlen;
|
||||||
|
|
||||||
|
|
||||||
const u32 X11_CB_TRANSFER_SIZE_DEFAULT = 1048576;
|
const u32 X11_CB_TRANSFER_SIZE_DEFAULT = 1048576;
|
||||||
const u32 X11_TIMEOUT_DEFAULT = 1500;
|
const u32 X11_TIMEOUT_DEFAULT = 1500;
|
||||||
|
|
||||||
@ -1884,6 +1888,49 @@ Kill()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: replace this with proper OS stuff
|
||||||
|
u8[]
|
||||||
|
LoadFile(Arena* arena, string file_name)
|
||||||
|
{
|
||||||
|
u8[] data;
|
||||||
|
|
||||||
|
const u64 buf_size = MB(8);
|
||||||
|
static u8[] buf;
|
||||||
|
if(!buf)
|
||||||
|
{
|
||||||
|
buf = Alloc!(u8)(buf_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
File f;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
f = File(file_name, "rb");
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(f.isOpen)
|
||||||
|
{
|
||||||
|
u64 size = f.size();
|
||||||
|
data = Alloc!(u8)(arena, size);
|
||||||
|
|
||||||
|
auto fp = f.getFP();
|
||||||
|
for(u64 pos = 0; pos < size;)
|
||||||
|
{
|
||||||
|
u64 length = Min(size-pos, buf_size);
|
||||||
|
fread(data.ptr+pos, 1, length, fp);
|
||||||
|
pos -= length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
f.flush();
|
||||||
|
f.close();
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
{ // Keys
|
{ // Keys
|
||||||
@ -1911,5 +1958,18 @@ unittest
|
|||||||
|
|
||||||
assert(wd == s);
|
assert(wd == s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{ // File Reads
|
||||||
|
Arena arena = CreateArena(MB(2));
|
||||||
|
|
||||||
|
u8[] data_valid, data_test;
|
||||||
|
|
||||||
|
File f = File("platform.d", "rb");
|
||||||
|
|
||||||
|
data_valid = f.rawRead(new u8[f.size()]);
|
||||||
|
data_test = LoadFile(&arena, "platform.d");
|
||||||
|
|
||||||
|
assert(data_valid == data_test);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
util.d
2
util.d
@ -77,7 +77,7 @@ Logf(Args...)(string fmt, Args args, string prefix = "INFO", string func = __FUN
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
debug writef("[%s] FUNC: [%s]: ", prefix, func);
|
debug writef("[%s] FUNC: [%s]: ", prefix, func);
|
||||||
else write("[%s]: ", prefix);
|
else writef("[%s]: ", prefix);
|
||||||
writefln(fmt, args);
|
writefln(fmt, args);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user