lib/c: move up general logic from `CIntArray` to `CArray`
authorAlexis Laferrière <alexis.laf@xymus.net>
Mon, 1 Dec 2014 15:17:57 +0000 (10:17 -0500)
committerAlexis Laferrière <alexis.laf@xymus.net>
Tue, 2 Dec 2014 15:18:43 +0000 (10:18 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/c.nit

index 6c843f3..1d11d0d 100644 (file)
--- a/lib/c.nit
+++ b/lib/c.nit
@@ -23,7 +23,33 @@ intrude import standard::collection::array
 abstract class CArray[E]
        super AbstractArrayRead[E]
 
+       type NATIVE: NativeCArray
+       var native_array: NATIVE is noinit
+
        private init(length: Int) do self._length = length
+
+       redef fun [](index)
+       do
+               assert not destroyed
+               assert index >= 0 and index < length
+               return native_array[index]
+       end
+
+       fun []=(index: Int, val: E)
+       do
+               assert not destroyed
+               assert index >= 0 and index < length
+               native_array[index] = val
+       end
+
+       var destroyed = false
+       fun destroy
+       do
+               if destroyed then return
+
+               native_array.free
+               destroyed = true
+       end
 end
 
 # A native C array, as in a pointer to the first element of the array
@@ -42,36 +68,13 @@ end
 # Wrapper around an array of `int` in C (`int*`) with length and destroy state
 class CIntArray
        super CArray[Int]
+       redef type NATIVE: NativeCIntArray
 
-       var native_array: NativeCIntArray
        init(size: Int)
        do
                native_array = new NativeCIntArray(size)
                super size
        end
-
-       redef fun [](index)
-       do
-               assert not destroyed
-               assert index >= 0 and index < length
-               return native_array[index]
-       end
-
-       fun []=(index: Int, val: Int)
-       do
-               assert not destroyed
-               assert index >= 0 and index < length
-               native_array[index] = val
-       end
-
-       var destroyed = false
-       fun destroy
-       do
-               if destroyed then return
-
-               native_array.free
-               destroyed = true
-       end
 end
 
 # An array of `int` in C (`int*`)