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