bytedeco/javacpp

Using std::variant

Open

#624 opened on 2022年10月19日

GitHub で見る
 (3 comments) (0 reactions) (0 assignees)Java (620 forks)batch import
bughelp wanted

Repository metrics

Stars
 (4,279 stars)
PR merge metrics
 (30d に merged PR はありません)

説明

Could you please explain how create mapping for std::variant? As I see in changelog it's already supported, but I didn't find an examples of usages in tests or in javacpp-presets. I've added an example class

class MyVariant {
public:
    std::variant<
            bool,
            float,
            double> value;
};

And new class was created automatically, but std::variant was not converted:

public static class MyVariant extends Pointer {
    static { Loader.load(); }
    /** Default native constructor. */
    public MyVariant() { super((Pointer)null); allocate(); }
    /** Native array allocator. Access with {@link Pointer#position(long)}. */
    public MyVariant(long size) { super((Pointer)null); allocateArray(size); }
    /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
    public MyVariant(Pointer p) { super(p); }
    private native void allocate();
    private native void allocateArray(long size);
    @Override public MyVariant position(long position) {
        return (MyVariant)super.position(position);
    }
    @Override public MyVariant getPointer(long i) {
        return new MyVariant((Pointer)this).offsetAddress(i);
    }

    public native @ByRef std::variant<bool,float,double> value(); public native MyVariant value(std::variant<bool,float,double> setter);
}

コントリビューターガイド