Как обернуть UserDefinedType * getObject () и заполнить контейнер Java из члена типа const uint16_t * возвращаемого объекта - PullRequest
1 голос
/ 15 мая 2019

У меня есть следующий struct, который содержит элемент данных pixeldata_, который является указателем на массив коротких целых.Размер этого массива: ширина * высота.

struct Frame
{
public:
    const uint16_t* getPixelData()
    {
        return this->pixeldata_;
    }
    int getWidth() { return this->width_; }
    int getHeight(){ return this->height_; }
    void setPixelData(const uint16_t* pixeldata)
    {
        this->pixeldata_ = pixeldata;
    }
    int getSize(){ return this->width_*this->height_; }
private:
    const uint16_t* pixeldata_{nullptr};
    int width_ {0}; // typically 640 for our use case
    int height_{0}; // typically 480 for our use case
};

Использование %include "stdint.i" создает непрозрачный указатель типа SWIGTYPE_p_unsigned_short, который я не могу разыменовать.Как я могу скопировать этот массив в контейнер Java выгодно ArrayList unsigned short

Итак, как бы я обернуть следующий код для Java и получить доступ к члену pixeldata_ и получить массив коротких целых из C ++слой в контейнеры Java?

Frame* Sensor::getFrame();
Frame* frame = getFrame();
auto pixel_data = frame->getPixelData();
for (auto pixel : pixel_data)
{
// possibly create an image or texture 
}
...