hf_again/src/hf/file_io.c

71 lines
2.4 KiB
C

#define DEBUG_LOG_WRITE_STRING_LIST_TO_FILE 0
#define DEBUG_LOG_WRITE_ARRAY_BINARY 0
function void write_array_binary_F64(String8 path_to_file, F64 *values,
U32 array_size) {
OS_Handle file_handle =
OS_file_open(OS_AccessFlag_Write | OS_AccessFlag_CreateNew, path_to_file);
{
ArenaTemp scratch = scratch_get(0, 0);
String8List list = {0};
String8 temp = {0};
temp.str = (U8 *)values;
temp.size = sizeof(F64) * array_size;
str8_list_push(scratch.arena, &list, temp);
OS_file_write(scratch.arena, file_handle, 0, list, 0);
#if DEBUG_LOG_WRITE_ARRAY_BINARY
String8List log_list = {0};
str8_list_push(scratch.arena, &log_list,
str8_lit("Wrote binary array data to"));
str8_list_push(scratch.arena, &log_list, path_to_file);
StringJoin join = {0};
join.sep = str8_lit(" ");
join.post = str8_lit("\n");
String8 log_msg = str8_list_join(scratch.arena, log_list, &join);
LOG(log_msg.str);
#endif
scratch_release(scratch);
}
OS_file_close(file_handle);
}
function void write_string_list_to_file(Arena *arena, String8 path,
String8List *list) {
OS_Handle file_handle =
OS_file_open(OS_AccessFlag_Write | OS_AccessFlag_CreateNew, path);
OS_file_write(arena, file_handle, 0, *list, 0);
#if DEBUG_WRITE_STRING_LIST_TO_FILE
String8List log_list = {0};
str8_list_push(arena, &log_list, str8_lit("Wrote array to"));
str8_list_push(arena, &log_list, path);
StringJoin join = {0};
join.sep = str8_lit(" ");
join.post = str8_lit("\n");
String8 log_msg = str8_list_join(arena, log_list, &join);
LOG(log_msg.str);
#endif
OS_file_close(file_handle);
}
function void write_array_F64(String8 path_to_file, F64 *values, U32 array_size,
char *fmt) {
ArenaTemp scratch = scratch_get(0, 0);
String8List list = {0};
for (U32 i = 0; i < array_size; i++) {
str8_list_pushf(scratch.arena, &list, fmt, values[i]);
}
write_string_list_to_file(scratch.arena, path_to_file, &list);
scratch_release(scratch);
}
function String8 get_eigenvector_filename(Arena *arena, U32 energy_idx,
U32 angular_momentum_idx) {
String8 out = str8_pushf(arena, "E:\\dev\\hf_again\\out\\eigvec_n%i_l%i.dat",
energy_idx, angular_momentum_idx);
return out;
}