orca/src/platform/platform_path.h

47 lines
1.3 KiB
C
Raw Normal View History

2023-09-07 12:51:48 +00:00
/*************************************************************************
2023-05-24 14:27:39 +00:00
*
2023-09-07 12:51:48 +00:00
* Orca
* Copyright 2023 Martin Fouilleul and the Orca project contributors
* See LICENSE.txt for licensing information
2023-05-24 14:27:39 +00:00
*
2023-09-07 12:51:48 +00:00
**************************************************************************/
2023-05-24 14:27:39 +00:00
#ifndef __PLATFORM_PATH_H_
#define __PLATFORM_PATH_H_
2023-09-11 14:48:26 +00:00
#include "platform.h"
2023-08-19 12:49:23 +00:00
#include "util/strings.h"
2023-05-24 14:27:39 +00:00
2023-09-11 14:48:26 +00:00
#ifdef __cplusplus
extern "C" {
#endif
/*NOTE:
by convention, functions that take an arena and return a path
allocated on that arena allocate 1 more character and null-terminate
the string.
*/
ORCA_API oc_str8 oc_path_slice_directory(oc_str8 path);
ORCA_API oc_str8 oc_path_slice_filename(oc_str8 path);
2023-05-24 14:27:39 +00:00
ORCA_API oc_str8_list oc_path_split(oc_arena* arena, oc_str8 path);
ORCA_API oc_str8 oc_path_join(oc_arena* arena, oc_str8_list elements);
ORCA_API oc_str8 oc_path_append(oc_arena* arena, oc_str8 parent, oc_str8 relPath);
2023-05-24 14:27:39 +00:00
ORCA_API bool oc_path_is_absolute(oc_str8 path);
#if !defined(OC_PLATFORM_ORCA) || !OC_PLATFORM_ORCA
ORCA_API oc_str8 oc_path_executable(oc_arena* arena);
ORCA_API oc_str8 oc_path_canonical(oc_arena* arena, oc_str8 path);
// helper: gets the path from oc_path_executable() and appends relPath
ORCA_API oc_str8 oc_path_executable_relative(oc_arena* arena, oc_str8 relPath);
#endif
2023-05-24 14:27:39 +00:00
2023-09-11 14:48:26 +00:00
#ifdef __cplusplus
}
#endif
2023-05-24 14:27:39 +00:00
#endif //__PLATFORM_PATH_H_