changeset 249:fd9005253861

Added resize method to arrays
author Michael Pavone <pavone@retrodev.com>
date Wed, 09 Apr 2014 22:54:52 -0700
parents 96fdc5b37ceb
children c58e17f5c0f6
files modules/array.tp
diffstat 1 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/modules/array.tp	Sun Mar 30 18:17:56 2014 -0700
+++ b/modules/array.tp	Wed Apr 09 22:54:52 2014 -0700
@@ -55,6 +55,23 @@
 		self
 	}
 
+	llMessage: resize withVars: {
+		newsize <- obj_uint32 ptr
+		tmp <- (object ptr) ptr
+	} andCode: :newsize {
+		self storage!: (newsize num)
+		tmp <- GC_REALLOC: data storage * (sizeof: (object ptr))
+		if: (not: tmp) {
+			fputs: "Failed to adjust array size\n" stderr
+			exit: 1
+		}
+		data <- tmp
+		if: size > storage {
+			size <- storage
+		}
+		self
+	}
+
 	llMessage: length withVars: {
 		intret <- obj_int32 ptr
 	} andCode: {