str8_substr returns copy of the string

This commit is contained in:
Abdelrahman Said 2024-09-13 02:57:06 +01:00
parent 80f20a06cd
commit dcbda91730
3 changed files with 8 additions and 6 deletions

View File

@ -61,15 +61,15 @@ internal TinyArgs parse_args(Arena *arena, int argc, char *argv[]) {
exit(TINY_EXIT_OBJ_NOT_EXIST);
}
const Str8 basename = str8_substr(&args.obj, 0, args.obj.length - 4);
u64 substr_end = args.obj.length - 4;
args.diffuse = str8_copy(arena, &basename);
args.diffuse = str8_substr(arena, &args.obj, 0, substr_end);
str8_concat(arena, &args.diffuse, "_diffuse.pnm");
if (!file_exists(&args.diffuse)) {
args.diffuse = (Str8){0};
}
args.nm_tangent = str8_copy(arena, &basename);
args.nm_tangent = str8_substr(arena, &args.obj, 0, substr_end);
str8_concat(arena, &args.nm_tangent, "_nm_tangent.pnm");
if (!file_exists(&args.nm_tangent)) {
args.nm_tangent = (Str8){0};

View File

@ -85,14 +85,16 @@ i32 str8_concat(Arena *arena, Str8 *dst, char *src) {
return STR_OP_SUCEEDED;
}
const Str8 str8_substr(const Str8 *str, u64 start, u64 count) {
Str8 str8_substr(Arena *arena, const Str8 *str, u64 start, u64 count) {
if (start > str->length || start + count > str->length) {
return (Str8){0};
}
return (Str8){
Str8 tmp = {
.str = str->str + start,
.length = count,
.capacity = count,
};
return str8_copy(arena, &tmp);
}

View File

@ -21,6 +21,6 @@ struct str8 {
Str8 str8(Arena *arena, char *str);
Str8 str8_copy(Arena *arena, const Str8 *str);
i32 str8_concat(Arena *arena, Str8 *dst, char *src);
const Str8 str8_substr(const Str8 *str, u64 start, u64 count);
Str8 str8_substr(Arena *arena, const Str8 *str, u64 start, u64 count);
#endif // !STR_H