str8_substr returns copy of the string
This commit is contained in:
parent
80f20a06cd
commit
dcbda91730
@ -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};
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user