Skip to content

Commit 2716496

Browse files
authored
Merge pull request #146 from TileDB-Inc/ss/add-cpoint-native-array-util
Add helper function to get the c pointer for a NativeArray
2 parents 35d73a8 + 8672564 commit 2716496

File tree

3 files changed

+157
-1
lines changed

3 files changed

+157
-1
lines changed

src/main/java/io/tiledb/java/api/NativeArray.java

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ public void setItem(int index, Object value) throws ArrayIndexOutOfBoundsExcepti
559559
}
560560
}
561561

562-
protected SWIGTYPE_p_void toVoidPointer() throws TileDBError {
562+
public SWIGTYPE_p_void toVoidPointer() throws TileDBError {
563563
switch (nativeType) {
564564
case TILEDB_FLOAT32:
565565
{
@@ -627,6 +627,74 @@ protected SWIGTYPE_p_void toVoidPointer() throws TileDBError {
627627
}
628628
}
629629

630+
public long toCPointer() throws TileDBError {
631+
switch (nativeType) {
632+
case TILEDB_FLOAT32:
633+
{
634+
return PointerUtils.toCPtr(floatArray);
635+
}
636+
case TILEDB_FLOAT64:
637+
{
638+
return PointerUtils.toCPtr(doubleArray);
639+
}
640+
case TILEDB_INT8:
641+
{
642+
return PointerUtils.toCPtr(int8_tArray);
643+
}
644+
case TILEDB_INT16:
645+
{
646+
return PointerUtils.toCPtr(int16_tArray);
647+
}
648+
case TILEDB_INT32:
649+
{
650+
return PointerUtils.toCPtr(int32_tArray);
651+
}
652+
case TILEDB_INT64:
653+
{
654+
return PointerUtils.toCPtr(int64_tArray);
655+
}
656+
case TILEDB_UINT8:
657+
{
658+
return PointerUtils.toCPtr(uint8_tArray);
659+
}
660+
case TILEDB_UINT16:
661+
{
662+
return PointerUtils.toCPtr(uint16_tArray);
663+
}
664+
case TILEDB_UINT32:
665+
{
666+
return PointerUtils.toCPtr(uint32_tArray);
667+
}
668+
case TILEDB_UINT64:
669+
{
670+
return PointerUtils.toCPtr(uint64_tArray);
671+
}
672+
case TILEDB_CHAR:
673+
{
674+
return PointerUtils.toCPtr(int8_tArray);
675+
}
676+
case TILEDB_DATETIME_YEAR:
677+
case TILEDB_DATETIME_MONTH:
678+
case TILEDB_DATETIME_WEEK:
679+
case TILEDB_DATETIME_DAY:
680+
case TILEDB_DATETIME_HR:
681+
case TILEDB_DATETIME_MIN:
682+
case TILEDB_DATETIME_SEC:
683+
case TILEDB_DATETIME_MS:
684+
case TILEDB_DATETIME_US:
685+
case TILEDB_DATETIME_NS:
686+
case TILEDB_DATETIME_PS:
687+
case TILEDB_DATETIME_FS:
688+
{
689+
return PointerUtils.toCPtr(int64_tArray);
690+
}
691+
default:
692+
{
693+
throw new TileDBError("Unsupported TileDB NativeArray Datatype enum: " + this.nativeType);
694+
}
695+
}
696+
}
697+
630698
/**
631699
* Return a Java array (i.e. int[], long[]) that is a copy of the entire native array
632700
*

src/main/java/io/tiledb/libtiledb/PointerUtils.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,50 @@ public static SWIGTYPE_p_void toVoid(uint64_tArray p) {
4646
return new SWIGTYPE_p_void(uint64_tArray.getCPtr(p), false);
4747
}
4848

49+
public static long toCPtr(int32_tArray p) {
50+
return int32_tArray.getCPtr(p);
51+
}
52+
53+
public static long toCPtr(int64_tArray p) {
54+
return int64_tArray.getCPtr(p);
55+
}
56+
57+
public static long toCPtr(charArray p) {
58+
return charArray.getCPtr(p);
59+
}
60+
61+
public static long toCPtr(floatArray p) {
62+
return floatArray.getCPtr(p);
63+
}
64+
65+
public static long toCPtr(doubleArray p) {
66+
return doubleArray.getCPtr(p);
67+
}
68+
69+
public static long toCPtr(int8_tArray p) {
70+
return int8_tArray.getCPtr(p);
71+
}
72+
73+
public static long toCPtr(uint8_tArray p) {
74+
return uint8_tArray.getCPtr(p);
75+
}
76+
77+
public static long toCPtr(int16_tArray p) {
78+
return int16_tArray.getCPtr(p);
79+
}
80+
81+
public static long toCPtr(uint16_tArray p) {
82+
return uint16_tArray.getCPtr(p);
83+
}
84+
85+
public static long toCPtr(uint32_tArray p) {
86+
return uint32_tArray.getCPtr(p);
87+
}
88+
89+
public static long toCPtr(uint64_tArray p) {
90+
return uint64_tArray.getCPtr(p);
91+
}
92+
4993
public static int32_tArray int32_tArrayFromVoid(SWIGTYPE_p_void p) {
5094
return new int32_tArray(SWIGTYPE_p_void.getCPtr(p), false);
5195
}

swig/customCode/PointerUtils.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,50 @@ public static SWIGTYPE_p_void toVoid(uint64_tArray p) {
4646
return new SWIGTYPE_p_void(uint64_tArray.getCPtr(p), false);
4747
}
4848

49+
public static long toCPtr(int32_tArray p) {
50+
return int32_tArray.getCPtr(p);
51+
}
52+
53+
public static long toCPtr(int64_tArray p) {
54+
return int64_tArray.getCPtr(p);
55+
}
56+
57+
public static long toCPtr(charArray p) {
58+
return charArray.getCPtr(p);
59+
}
60+
61+
public static long toCPtr(floatArray p) {
62+
return floatArray.getCPtr(p);
63+
}
64+
65+
public static long toCPtr(doubleArray p) {
66+
return doubleArray.getCPtr(p);
67+
}
68+
69+
public static long toCPtr(int8_tArray p) {
70+
return int8_tArray.getCPtr(p);
71+
}
72+
73+
public static long toCPtr(uint8_tArray p) {
74+
return uint8_tArray.getCPtr(p);
75+
}
76+
77+
public static long toCPtr(int16_tArray p) {
78+
return int16_tArray.getCPtr(p);
79+
}
80+
81+
public static long toCPtr(uint16_tArray p) {
82+
return uint16_tArray.getCPtr(p);
83+
}
84+
85+
public static long toCPtr(uint32_tArray p) {
86+
return uint32_tArray.getCPtr(p);
87+
}
88+
89+
public static long toCPtr(uint64_tArray p) {
90+
return uint64_tArray.getCPtr(p);
91+
}
92+
4993
public static int32_tArray int32_tArrayFromVoid(SWIGTYPE_p_void p) {
5094
return new int32_tArray(SWIGTYPE_p_void.getCPtr(p), false);
5195
}

0 commit comments

Comments
 (0)