Kohi Game Engine
kpackage.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "defines.h"
4 #include "strings/kname.h"
5 
6 typedef struct asset_manifest_asset {
8  // TODO: If loaded from binary, this might be null?
9  const char* path;
10  const char* source_path;
12 
16 typedef struct asset_manifest_reference {
18  const char* path;
20 
21 typedef struct asset_manifest {
23  // Path to .kpackage file. Null if loading from disk.
24  const char* file_path;
25  // Path containing the .kpackage file, without the filename itself.
26  const char* path;
27 
28  // darray
30 
31  // darray
34 
35 struct kpackage_internal;
36 
37 typedef struct kpackage {
40  struct kpackage_internal* internal_data;
42 
43 typedef enum kpackage_result {
48 
50 KAPI b8 kpackage_create_from_binary(u64 size, void* bytes, kpackage* out_package);
52 
53 KAPI kpackage_result kpackage_asset_bytes_get(const kpackage* package, kname name, u64* out_size, const void** out_data);
54 KAPI kpackage_result kpackage_asset_text_get(const kpackage* package, kname name, u64* out_size, const char** out_text);
55 
64 KAPI const char* kpackage_path_for_asset(const kpackage* package, kname name);
65 
74 KAPI const char* kpackage_source_path_for_asset(const kpackage* package, kname name);
75 
76 KAPI b8 kpackage_asset_bytes_write(kpackage* package, kname name, u64 size, const void* bytes);
77 KAPI b8 kpackage_asset_text_write(kpackage* package, kname name, u64 size, const char* text);
78 
This file contains global type definitions which are used throughout the entire engine and applicatio...
#define KAPI
Import/export qualifier.
Definition: defines.h:205
_Bool b8
8-bit boolean type
Definition: defines.h:58
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:28
This files contains an implementation of knames.
u64 kname
A kname is a string hash made for quick comparisons versus traditional string comparisons.
Definition: kname.h:36
KAPI b8 kpackage_create_from_binary(u64 size, void *bytes, kpackage *out_package)
struct asset_manifest_asset asset_manifest_asset
KAPI b8 kpackage_asset_bytes_write(kpackage *package, kname name, u64 size, const void *bytes)
struct kpackage kpackage
KAPI void kpackage_manifest_destroy(asset_manifest *manifest)
KAPI void kpackage_destroy(kpackage *package)
KAPI const char * kpackage_path_for_asset(const kpackage *package, kname name)
KAPI b8 kpackage_parse_manifest_file_content(const char *path, asset_manifest *out_manifest)
struct asset_manifest_reference asset_manifest_reference
A reference to another package in an asset manifest.
struct asset_manifest asset_manifest
KAPI const char * kpackage_source_path_for_asset(const kpackage *package, kname name)
KAPI b8 kpackage_create_from_manifest(const asset_manifest *manifest, kpackage *out_package)
kpackage_result
Definition: kpackage.h:43
@ KPACKAGE_RESULT_ASSET_GET_FAILURE
Definition: kpackage.h:45
@ KPACKAGE_RESULT_SUCCESS
Definition: kpackage.h:44
@ KPACKAGE_RESULT_INTERNAL_FAILURE
Definition: kpackage.h:46
KAPI kpackage_result kpackage_asset_bytes_get(const kpackage *package, kname name, u64 *out_size, const void **out_data)
KAPI b8 kpackage_asset_text_write(kpackage *package, kname name, u64 size, const char *text)
KAPI kpackage_result kpackage_asset_text_get(const kpackage *package, kname name, u64 *out_size, const char **out_text)
Definition: kpackage.h:6
const char * source_path
Definition: kpackage.h:10
kname name
Definition: kpackage.h:7
const char * path
Definition: kpackage.h:9
A reference to another package in an asset manifest.
Definition: kpackage.h:16
kname name
Definition: kpackage.h:17
const char * path
Definition: kpackage.h:18
Definition: kpackage.h:21
const char * file_path
Definition: kpackage.h:24
kname name
Definition: kpackage.h:22
const char * path
Definition: kpackage.h:26
asset_manifest_reference * references
Definition: kpackage.h:32
asset_manifest_asset * assets
Definition: kpackage.h:29
Definition: kpackage.h:37
kname name
Definition: kpackage.h:38
b8 is_binary
Definition: kpackage.h:39
struct kpackage_internal * internal_data
Definition: kpackage.h:40