# Pointer to the real C array
var native_array: NATIVE is noinit
- private init(length: Int) is old_style_init do self._length = length
+ init(length: Int) is old_style_init do self._length = length
redef fun [](index)
do
super size
end
- # Create from an `SequenceRead[Int]`
+ # Create from a `SequenceRead[Int]`
new from(array: SequenceRead[Int])
do
var carray = new CIntArray(array.length)
redef fun +(offset) `{ return self + offset; `}
end
+# Wrapper of a C array of type `uint16_t*` with length and destroy state
+class CUInt16Array
+ super CArray[Int]
+ redef type NATIVE: NativeCUInt16Array
+
+ # Initialize a new CIntArray of `size` elements.
+ init(size: Int) is old_style_init do
+ native_array = new NativeCUInt16Array(size)
+ super size
+ end
+
+ # Create from a `SequenceRead[Int]`
+ new from(array: SequenceRead[Int])
+ do
+ var carray = new CUInt16Array(array.length)
+ for i in array.length.times do
+ carray[i] = array[i]
+ end
+ return carray
+ end
+end
+
+# An array of `uint16_t` in C
+extern class NativeCUInt16Array `{ uint16_t* `}
+ super NativeCArray
+ redef type E: Int
+
+ # Initialize a new NativeCUInt16Array of `size` elements.
+ new(size: Int) `{ return calloc(size, sizeof(uint16_t)); `}
+
+ redef fun [](index) `{ return self[index]; `}
+ redef fun []=(index, val) `{ self[index] = val; `}
+
+ redef fun +(offset) `{ return self + offset; `}
+end
+
# Wrapper around an array of `unsigned char` in C (`unsigned char*`) with length and destroy state
class CByteArray
super CArray[Byte]
`}
end
-# Wrapper around an array of `NativeString` in C (`char**`) with length and destroy state.
-class CNativeStringArray
- super CArray[NativeString]
+# Wrapper around an array of `CString` in C (`char**`) with length and destroy state.
+class CCStringArray
+ super CArray[CString]
redef type NATIVE: NativeCStringArray
super size
end
- # Create from an `SequenceRead[NativeString]`
- new from(array: SequenceRead[NativeString])
+ # Create from an `SequenceRead[CString]`
+ new from(array: SequenceRead[CString])
do
- var carray = new CNativeStringArray(array.length)
+ var carray = new CCStringArray(array.length)
for i in array.length.times do
carray[i] = array[i]
end
end
end
-# An array of `NativeString` in C (`char**`)
+# An array of `CString` in C (`char**`)
extern class NativeCStringArray `{ char** `}
super NativeCArray
- redef type E: NativeString
+ redef type E: CString
# Initialize a new NativeCStringArray of `size` elements.
new(size: Int) `{ return calloc(size, sizeof(char*)); `}
redef fun +(offset) `{ return self + offset; `}
end
-redef class NativeString
+redef class CString
super NativeCArray
redef type E: Char