1
0
Fork 0

Compare commits

..

No commits in common. "551be318cf80ad7374e7943f012bf911060babbe" and "98ee2b701f825b73cb44c35a9ec4c930b9057f56" have entirely different histories.

4 changed files with 4 additions and 84 deletions

View File

@ -1,11 +1,3 @@
27-04-2024 René Huiberts <rhuibertsjr@gmail.com> 27-04-2024 René Huiberts <rhuibertsjr@gmail.com>
Added: simplified boyermoore string-search algorithm
27-04-2024 René Huiberts <rhuibertsjr@gmail.com>
Added: ASCII string api
27-04-2024 René Huiberts <rhuibertsjr@gmail.com>
Added: project layout Added: project layout

View File

@ -1,46 +1,17 @@
#include "base.h" #include "base.h"
#include "arena.h" #include "arena.h"
#include "string.h"
#include "win32_platform.h" #include "win32_platform.h"
#include "arena.c" #include "arena.c"
#include "string.c"
#include "win32_platform.c" #include "win32_platform.c"
int int
main(void) main(void)
{ {
String8 input = str8_lit("Hello world"); Arena *arena = arena_initialize_default();
String8 pattern = str8_lit("wor");
if (pattern.length <= 0) /* lifetime of objects */
return -1;
for (u64 index = pattern.length; index < input.length; index += 1)
{
u8* ptr_input = input.str + index - 1;
u8* ptr_pattern = pattern.str + pattern.length - 1;
for (u64 jndex = 1; jndex != pattern.length; jndex += 1)
{
ptr_input -= 1;
ptr_pattern -= 1;
u8 char_input = *ptr_input;
u8 char_pattern = *ptr_pattern;
if (char_input == char_pattern)
{
if (jndex == pattern.length - 1)
printf("Pattern is found.\n");
continue;
}
break;
}
}
arena_release(arena);
return 0; return 0;
} }

View File

@ -1,20 +0,0 @@
internal String8
str8_initialize(u8 *cstring, u64 length)
{
String8 result = { cstring, length };
return result;
}
internal String8
str8_range(u8 *first, u8 *opl) {
String8 result = { first, (u64)(opl - first) };
return result;
}
internal String8
str8_from_cstring(u8 *cstring) {
u8 *ptr = cstring;
for (;*ptr != 0; ptr += 1);
String8 result = str8_range(cstring, ptr);
return result;
}

View File

@ -1,23 +0,0 @@
#ifndef STRING_H
#define STRING_H 1
typedef struct String8 String8;
struct String8
{
u8 *str;
u64 length;
};
internal String8 str8_initialize(u8 *cstring, u64 length);
#define str8_lit(cstring) \
str8_initialize((u8*)(cstring), sizeof(cstring) - 1)
#define str8_lit_comp(cstring) \
{(u8*)(cstring), sizeof(cstring) - 1}
//= rhjr: helper macros
#define print_str8(str8) \
printf("%.*s\n", (i32) str8.length, str8.str)
#endif // STRING_H