aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordam <dam@gudinoff>2023-02-18 02:12:02 +0000
committerdam <dam@gudinoff>2023-02-18 02:12:02 +0000
commit1c4f10d917b8bdff3c2b066f4b51843d4ad490b7 (patch)
tree99643b377ad50d6bad907eef523910f533a4a10a
parentd4d373de28e94e78e44a4f849dbae4d70f48eef9 (diff)
downloadtask-time-tracker-1c4f10d917b8bdff3c2b066f4b51843d4ad490b7.tar.zst
task-time-tracker-1c4f10d917b8bdff3c2b066f4b51843d4ad490b7.zip
First functional prototype of database load and store.
-rw-r--r--ttt.jai67
1 files changed, 43 insertions, 24 deletions
diff --git a/ttt.jai b/ttt.jai
index 585d7af..584548a 100644
--- a/ttt.jai
+++ b/ttt.jai
@@ -55,11 +55,15 @@ Task :: struct {
name.data = cast(*~s8 u8) (0x80 ^ 0x01); // *name_data[0];
}
-Database :: struct {
- active_task : *~s64 Task = null;
- selected_task : *~s64 Task = null;
+DatabaseCore :: struct {
+ active_idx : s64;
+ selected_task : s64;
modified_on : s64;
total_times : [NUM_WEEK_DAYS] s64;
+}
+
+Database :: struct {
+ #as using base : DatabaseCore;
tasks : [..] Task;
}
@@ -1264,24 +1268,40 @@ Database :: struct {
// also... the array_add
// TODO WIP
- //load_database(*db, db_file_path);
-
- task : Task;
- memcpy(task.name.data, "bazinga".data, 7);
- task.name.count = 7;
- print(">>>'%'\n", task.name);
- print("###%\n\n", task);
+ load_database(*db, db_file_path);
- add_task(*db, *task);
- store_database(db, db_file_path);
+// task : Task;
+// memcpy(task.name.data, "bazinga".data, 7);
+// task.name.count = 7;
+// {
+// path := join(app_directory, "/", "test");
+// file := file_open(path, for_writing = true);
+// file_write(*file, *task, size_of(Task));
+// file_close(*file);
+//
+// data: Task;
+// file = file_open(path);
+// file_read(file, *data, size_of(Task));
+// print("### > %\n", data);
+// }
+// array_add(*db.tasks, task);
+// store_database(db, db_file_path);
- //array_add(*db.tasks, task);
- //memcpy(*db.tasks[0], *task, size_of(Task));
+// print("size_of([..]) = %\n", size_of([..] Task));
//print("www\n");
print("loaded: %\n", db);
+// print(">>>'%'\n", task.name);
+// print("###%\n\n", task);
+// print(":%\n", size_of(type_of(db.tasks)));
-
+ array_add :: (array: *[..] $T/Task, item: T) #no_abc {
+ print("my_array\n");
+ maybe_grow(array);
+// array.data[array.count] = item;
+ memcpy(*array.data[array.count], *item, size_of(T));
+ array.count += 1;
+ }
add_task :: (db: *Database, task: *Task) {
idx := db.tasks.count;
@@ -1290,7 +1310,6 @@ Database :: struct {
memcpy(*db.tasks[idx], task, size_of(Task));
}
-
// Stores data from database into binary file.
// Returns success.
store_database :: (db: Database, path: string) -> success: bool {
@@ -1305,7 +1324,9 @@ Database :: struct {
}
file_write(*file, DB_FILE_SIGN_STR);
- file_write(*file, *db, size_of(Database));
+ file_write(*file, *db, size_of(DatabaseCore));
+ file_write(*file, *db.tasks.count, size_of(type_of(Database.tasks.count)));
+ file_write(*file, db.tasks.data, size_of(Task) * db.tasks.count);
//fwrite(DB_FILE_SIGN, SIZEOF_CHAR, DB_FILE_SIGN_LENGTH, file);
//fwrite(db, SIZEOF_DATABASE_ST, 1, file);
//fwrite(db->tasks, SIZEOF_TASK_ST, db->count, file);
@@ -1338,13 +1359,11 @@ Database :: struct {
}
// Read database structure.
-
- read_success = file_read(file, db, size_of(Database));
- //if read_success == false print_error("Failed to read database info from '%'.", path);
-
-
- //file_open :: (name: string, for_writing := false, keep_existing_content := false, log_errors := true) -> File, bool
- //file_read :: (f: File, vdata: *void, bytes_to_read: s64) -> (success: bool, total_read: s64)
+ read_success = file_read(file, db, size_of(DatabaseCore));
+ tasks_count: s64;
+ file_read(file, *tasks_count, size_of(type_of(Database.tasks.count)));
+ array_resize(*db.tasks, tasks_count, initialize = false);
+ file_read(file, db.tasks.data, size_of(Task) * tasks_count);
return true;
}