From d804473bbf326409856544200818279a9acda805 Mon Sep 17 00:00:00 2001 From: Daniel Cerqueira Date: Mon, 17 Aug 2026 10:13:24 +0100 Subject: add revString() --- liblali.c | 29 +++++++++++++++++++++++++++++ liblali.h | 8 ++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/liblali.c b/liblali.c index 831cc66..3636d4b 100644 --- a/liblali.c +++ b/liblali.c @@ -66,6 +66,35 @@ void exceptionWithObject(Object *object, char *format, ...) { longjmp(exceptionEnv, 1); } + +// STRINGS //////////////////////////////////////////////////////////////////// + +bool hasADot(char *string) { + for (int i = 0; string[i] != '\0'; i++) + if (string[i] == '.') + return true; + return false; +} + +void revString(char* string) { + // Initialize l and r pointers + int l = 0; + int r = strlen(string) - 1; + char t; + + // Swap characters till l and r meet + while (l < r) { + // Swap characters + t = string[l]; + string[l] = string[r]; + string[r] = t; + + // Move pointers towards each other + l++; + r--; + } +} + // GARBAGE COLLECTION ///////////////////////////////////////////////////////// /* This implements Cheney's copying garbage collector, with which memory is diff --git a/liblali.h b/liblali.h index bb13b58..e28c4c3 100644 --- a/liblali.h +++ b/liblali.h @@ -183,6 +183,12 @@ size_t memoryAlign(size_t size, size_t alignment); Object *memoryAllocObject(Type type, size_t size, GC_PARAM); +// STRING HELPERS ///////////////////////////////////////////////////////////// + +bool hasADot(char *string); + +void revString(char* string); + // CONSTRUCTING OBJECTS /////////////////////////////////////////////////////// Object *newObject(Type type, GC_PARAM); @@ -332,8 +338,6 @@ Object *primitiveLess(Object **args, GC_PARAM); Object *primitiveGreater(Object **args, GC_PARAM); -bool hasADot(char *string); - Object *say(Object *object, GC_PARAM); bool isSplittedNumber(Object *lnum); -- cgit