bytedeco/javacpp

Using std::variant

Open

#624 opened on Oct 19, 2022

View on GitHub
 (3 comments) (0 reactions) (0 assignees)Java (620 forks)batch import
bughelp wanted

Repository metrics

Stars
 (4,279 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

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);
}

Contributor guide