1

From https://github.com/bytedeco/javacpp/wiki/Interface-Thrust-and-CUDA, I write thrust java code. Struct field is public by default, but I use first() method to get the first field value of thrust::pair, error happen.

error: expression preceding parentheses of apparent call must have (pointer-to-) function type

error: macro "offsetof" passed 3 arguments, but takes just 2 { sizeof(thrust::pair), offsetof(thrust::pair, first) },

So how to get thrust::pair first and second value ?

@Platform(include="<thrust/pair.h>")
@Namespace("thrust")
public class Thrust {

    static { Loader.load(); }

    @Name("pair<int, double>")
    public static class Pair extends Pointer {
        static { Loader.load(); }
        public Pair(IntPointer key, DoublePointer value){
            allocate(key, value);
        }
        private native void allocate(@ByRef IntPointer k, @ByRef DoublePointer v);
        // will happen error: expression preceding parentheses of apparent call must have (pointer-to-) function type
        public native IntPointer first();
        // will happen error: macro "offsetof" passed 3 arguments, but takes just 2
{ sizeof(thrust::pair<int, double>), offsetof(thrust::pair<int, double>, first) },
        public native Pair first(IntPointer p);
    }

    public static void main(String[] args) {
        IntPointer i = new IntPointer(1);
        i.put(10);
        DoublePointer d = new DoublePointer(1);
        d.put(10.0);
        Pair p = new Pair(i, d);
        System.out.println(p.first());
    }
}
again
  • 11
  • 2

0 Answers0