summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--liblali.c29
-rw-r--r--liblali.h8
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);