I have implemented static C++ class in some lib. I would like to use it in Rust code without changing the lib.
But I can't find the way to use. Is it possible?
C++ header.

class Comm { public: static Buffer makePacket(uint8_t *data, CommHeaderData header); static bool fetchData(const uint8_t *rawData, const uint8_t rawDataSize, uint8_t *data, const uint8_t dataSize, CommHeaderData &header); static uint8_t getPacketSize(); static bool validatePacket(uint8_t *data, uint8_t dataSize); static Buffer createBuffer(size_t dataSize); static void freeBuffer(Buffer &buffer); public: static const uint8_t zdataSize; static const uint8_t startPid; static const uint8_t defaultCap; static const uint8_t maxPayload; static const size_t headerSize; }; 

And draft of Rust caller interface for it.

mod ffi { #[cxx_name = "CommHeaderData"] struct CommHeaderDataBridge { dataSize: usize, version: u8, pid: u16, capabilities: u8, } #[cxx_name = "Buffer"] struct BufferBridge { dataPtr: u8, dataSize: usize, } unsafe extern "C++" { include!("libs/Hen-Lib/proto/Comm.h"); type Comm; fn fetchData( rawData: &[u8], rawDataSize: u8, data: &mut [u8], dataSize: u8, header: &mut CommHeaderDataBridge, ) -> bool; fn makePacket(data: &[u8], header: CommHeaderDataBridge) -> BufferBridge; } } 

2 posts - 2 participants

Read full topic