From 3a6f54cb9d6538ad81aa64bb4950fb3062c3fe4a Mon Sep 17 00:00:00 2001 From: sandyx86 Date: Fri, 26 Jul 2024 10:31:41 -0500 Subject: [PATCH] fix YSArray --- libyeslib.a | Bin 0 -> 18102 bytes makefile | 2 +- src/YSArray.h | 5 ++++- src/YSArray.m | 45 +++++++++++++++++++-------------------------- src/YSObject.m | 7 ++++--- 5 files changed, 28 insertions(+), 31 deletions(-) create mode 100644 libyeslib.a diff --git a/libyeslib.a b/libyeslib.a new file mode 100644 index 0000000000000000000000000000000000000000..0dc0db04604c62ebd23dfe551810b6a8c5d8fe87 GIT binary patch literal 18102 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 literal 0 HcmV?d00001 diff --git a/makefile b/makefile index f70f4bd..33b3ebb 100644 --- a/makefile +++ b/makefile @@ -35,7 +35,7 @@ $(BUILD)/%.o: $(SRC)/%.c $(CC) -c $< -o $@ $(BUILD)/%.o: $(SRC)/%.m - $(CC) -c $< -o $@ + $(CC) -c $< -o $@ clean: rm $(BUILD)/*.o \ No newline at end of file diff --git a/src/YSArray.h b/src/YSArray.h index 4b13992..0b2294b 100644 --- a/src/YSArray.h +++ b/src/YSArray.h @@ -6,11 +6,14 @@ @interface YSArray : YSObject { @public //public so you can index it directly id *array; - int count; + unsigned int count; + unsigned int cap; } -(void) addObject: (id) theObject; -(void) removeObject: (unsigned int) index; +-(unsigned int) capacity; +-(void) setCapacity: (unsigned int) c; @end diff --git a/src/YSArray.m b/src/YSArray.m index c36aee7..9ffc632 100644 --- a/src/YSArray.m +++ b/src/YSArray.m @@ -6,45 +6,38 @@ -(id) init { self = [super init]; array = malloc(sizeof(id)); //allocate for one id + cap = 1; + count = 0; return self; } +//add an object to the array, capacity increases with every object -(void) addObject: (id) theObject { - if (array == NULL) { - //it needs malloced - array = malloc(sizeof(id)); - - if (array == NULL) { - return; - } + [self setCapacity: cap + 1]; - } else { - array = realloc(array, (count + 1) * sizeof(id)); - - if (array == NULL) { - return; - } + if (array == NULL) { + return; } array[count++] = theObject; } +//remove an object from the array, capacity decreases with every object -(void) removeObject: (unsigned int) index { - if (count == 0 || count == 1) { - array[0] = NULL; - return; - } - - if (index >= count) { - return; - } + //i think this will work + memcpy(&array[index], &array[index + 1], (cap - index) * sizeof(id)); + count--; + [self setCapacity: cap - 1]; +} - if (index == count - 1) { - array[count - 1] = NULL; - } +-(unsigned int) capacity { + return cap; +} - //hope count > index; - memcpy(&array[index], &array[index + 1], (count - index) * sizeof(id)); +//setCapacity reallocs the array to the specified capacity +-(void) setCapacity: (unsigned int) c { + cap = c; + array = realloc(array, cap * sizeof(id)); } @end \ No newline at end of file diff --git a/src/YSObject.m b/src/YSObject.m index 7ae2a5b..f241cbf 100644 --- a/src/YSObject.m +++ b/src/YSObject.m @@ -65,6 +65,10 @@ inline id YSDeallocateObject(id theObject) { return self; } +-(void) dealloc { + YSDeallocateObject(self); +} + #if !defined(__MINGW32__) && !defined(__MINGW64__) -(id) self { @@ -96,9 +100,6 @@ inline id YSDeallocateObject(id theObject) { return object_getClass(self); } --(void) dealloc { - YSDeallocateObject(self); -} -(id) copy { return [(id)self copyWithZone: YSDefaultMallocZone()];