Add support for QByteArray
parent
81b9aa29e5
commit
08753ff63a
|
@ -22,6 +22,10 @@
|
|||
"name": "misc",
|
||||
"type": "QVariant",
|
||||
"write": true
|
||||
}, {
|
||||
"name": "icon",
|
||||
"type": "QByteArray",
|
||||
"write": true
|
||||
}]
|
||||
}]
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ pub struct Test {
|
|||
age: c_int,
|
||||
active: bool,
|
||||
misc: Variant,
|
||||
icon: Vec<u8>,
|
||||
}
|
||||
|
||||
impl TestTrait for Test {
|
||||
|
@ -18,6 +19,7 @@ impl TestTrait for Test {
|
|||
age: 0,
|
||||
active: true,
|
||||
misc: Variant::None,
|
||||
icon: Vec::new(),
|
||||
}
|
||||
}
|
||||
fn emit(&self) -> &TestEmitter {
|
||||
|
@ -47,4 +49,11 @@ impl TestTrait for Test {
|
|||
self.misc = value;
|
||||
self.emit.misc_changed();
|
||||
}
|
||||
fn get_icon(&self) -> Vec<u8> {
|
||||
self.icon.clone()
|
||||
}
|
||||
fn set_icon(&mut self, value: Vec<u8>) {
|
||||
self.icon = value;
|
||||
self.emit.icon_changed();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,28 @@ impl<'a> From<&'a String> for QString {
|
|||
}
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
pub struct QByteArray {
|
||||
data: *const uint8_t,
|
||||
len: c_int,
|
||||
}
|
||||
|
||||
impl QByteArray {
|
||||
pub fn convert(&self) -> Vec<u8> {
|
||||
let data = unsafe { slice::from_raw_parts(self.data, self.len as usize) };
|
||||
Vec::from(data)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> From<&'a Vec<u8>> for QByteArray {
|
||||
fn from(value: &'a Vec<u8>) -> QByteArray {
|
||||
QByteArray {
|
||||
len: value.len() as c_int,
|
||||
data: value.as_ptr(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub enum Variant {
|
||||
None,
|
||||
Bool(bool),
|
||||
|
|
|
@ -250,6 +250,10 @@ namespace {
|
|||
const char* data;
|
||||
int len;
|
||||
public:
|
||||
qbytearray_t(const QByteArray& v):
|
||||
data(v.data()),
|
||||
len(v.size()) {
|
||||
}
|
||||
operator QByteArray() const {
|
||||
return QByteArray(data, len);
|
||||
}
|
||||
|
@ -336,6 +340,10 @@ typedef void (*qstring_set)(QString*, qstring_t*);
|
|||
void set_qstring(QString* v, qstring_t* val) {
|
||||
*v = *val;
|
||||
}
|
||||
typedef void (*qbytearray_set)(QByteArray*, qbytearray_t*);
|
||||
void set_qbytearray(QByteArray* v, qbytearray_t* val) {
|
||||
*v = *val;
|
||||
}
|
||||
typedef void (*qvariant_set)(QVariant*, qvariant_t*);
|
||||
void set_qvariant(QVariant* v, qvariant_t* val) {
|
||||
*v = variant(*val);
|
||||
|
@ -355,11 +363,9 @@ extern "C" {
|
|||
}
|
||||
|
||||
QString rustType(const Property& p) {
|
||||
/*
|
||||
if (p.type == "QVariant") {
|
||||
return "Variant";
|
||||
if (p.type == "QByteArray") {
|
||||
return "Vec<u8>";
|
||||
}
|
||||
*/
|
||||
if (p.type.startsWith("Q")) {
|
||||
return p.type.mid(1);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue