Adapt quote_bytes test so it return QByteArray which was not yet tested
parent
73b9c89b30
commit
5b458fddde
|
@ -50,10 +50,10 @@ impl PersonTrait for Person {
|
||||||
fn quote(&self, prefix: String, suffix: String) -> String {
|
fn quote(&self, prefix: String, suffix: String) -> String {
|
||||||
format!("{}{}{}", prefix, self.user_name, suffix)
|
format!("{}{}{}", prefix, self.user_name, suffix)
|
||||||
}
|
}
|
||||||
fn quote_bytes(&self, prefix: &[u8], suffix: &[u8]) -> String {
|
fn quote_bytes(&self, prefix: &[u8], suffix: &[u8]) -> Vec<u8> {
|
||||||
let prefix = String::from_utf8_lossy(prefix);
|
let prefix = String::from_utf8_lossy(prefix);
|
||||||
let suffix = String::from_utf8_lossy(suffix);
|
let suffix = String::from_utf8_lossy(suffix);
|
||||||
format!("{}{}{}", prefix, self.user_name, suffix)
|
format!("{}{}{}", prefix, self.user_name, suffix).into()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,9 @@ fn set_string_from_utf16(s: &mut String, str: *const c_ushort, len: c_int) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
pub enum QByteArray {}
|
||||||
|
|
||||||
|
|
||||||
fn to_usize(n: c_int) -> usize {
|
fn to_usize(n: c_int) -> usize {
|
||||||
if n < 0 {
|
if n < 0 {
|
||||||
panic!("Cannot cast {} to usize", n);
|
panic!("Cannot cast {} to usize", n);
|
||||||
|
@ -71,7 +74,7 @@ pub trait PersonTrait {
|
||||||
fn double_name(&mut self) -> ();
|
fn double_name(&mut self) -> ();
|
||||||
fn greet(&self, name: String) -> String;
|
fn greet(&self, name: String) -> String;
|
||||||
fn quote(&self, prefix: String, suffix: String) -> String;
|
fn quote(&self, prefix: String, suffix: String) -> String;
|
||||||
fn quote_bytes(&self, prefix: &[u8], suffix: &[u8]) -> String;
|
fn quote_bytes(&self, prefix: &[u8], suffix: &[u8]) -> Vec<u8>;
|
||||||
fn vowels_in_name(&self) -> u8;
|
fn vowels_in_name(&self) -> u8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +155,7 @@ pub extern "C" fn person_quote(ptr: *const Person, prefix_str: *const c_ushort,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn person_quote_bytes(ptr: *const Person, prefix_str: *const c_char, prefix_len: c_int, suffix_str: *const c_char, suffix_len: c_int, d: *mut QString, set: fn(*mut QString, str: *const c_char, len: c_int)) {
|
pub extern "C" fn person_quote_bytes(ptr: *const Person, prefix_str: *const c_char, prefix_len: c_int, suffix_str: *const c_char, suffix_len: c_int, d: *mut QByteArray, set: fn(*mut QByteArray, str: *const c_char, len: c_int)) {
|
||||||
let prefix = unsafe { slice::from_raw_parts(prefix_str as *const u8, to_usize(prefix_len)) };
|
let prefix = unsafe { slice::from_raw_parts(prefix_str as *const u8, to_usize(prefix_len)) };
|
||||||
let suffix = unsafe { slice::from_raw_parts(suffix_str as *const u8, to_usize(suffix_len)) };
|
let suffix = unsafe { slice::from_raw_parts(suffix_str as *const u8, to_usize(suffix_len)) };
|
||||||
let o = unsafe { &*ptr };
|
let o = unsafe { &*ptr };
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"quoteBytes": {
|
"quoteBytes": {
|
||||||
"return": "QString",
|
"return": "QByteArray",
|
||||||
"arguments": [
|
"arguments": [
|
||||||
{
|
{
|
||||||
"name": "prefix",
|
"name": "prefix",
|
||||||
|
|
|
@ -7,6 +7,16 @@ namespace {
|
||||||
void set_qstring(QString* val, const char* utf8, int nbytes) {
|
void set_qstring(QString* val, const char* utf8, int nbytes) {
|
||||||
*val = QString::fromUtf8(utf8, nbytes);
|
*val = QString::fromUtf8(utf8, nbytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef void (*qbytearray_set)(QByteArray* val, const char* bytes, int nbytes);
|
||||||
|
void set_qbytearray(QByteArray* v, const char* bytes, int nbytes) {
|
||||||
|
if (v->isNull() && nbytes == 0) {
|
||||||
|
*v = QByteArray(bytes, nbytes);
|
||||||
|
} else {
|
||||||
|
v->truncate(0);
|
||||||
|
v->append(bytes, nbytes);
|
||||||
|
}
|
||||||
|
}
|
||||||
inline void personUserNameChanged(Person* o)
|
inline void personUserNameChanged(Person* o)
|
||||||
{
|
{
|
||||||
emit o->userNameChanged();
|
emit o->userNameChanged();
|
||||||
|
@ -21,7 +31,7 @@ extern "C" {
|
||||||
void person_double_name(Person::Private*);
|
void person_double_name(Person::Private*);
|
||||||
void person_greet(const Person::Private*, const ushort*, int, QString*, qstring_set);
|
void person_greet(const Person::Private*, const ushort*, int, QString*, qstring_set);
|
||||||
void person_quote(const Person::Private*, const ushort*, int, const ushort*, int, QString*, qstring_set);
|
void person_quote(const Person::Private*, const ushort*, int, const ushort*, int, QString*, qstring_set);
|
||||||
void person_quote_bytes(const Person::Private*, const char*, int, const char*, int, QString*, qstring_set);
|
void person_quote_bytes(const Person::Private*, const char*, int, const char*, int, QByteArray*, qbytearray_set);
|
||||||
quint8 person_vowels_in_name(const Person::Private*);
|
quint8 person_vowels_in_name(const Person::Private*);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -74,10 +84,10 @@ QString Person::quote(const QString& prefix, const QString& suffix) const
|
||||||
person_quote(m_d, prefix.utf16(), prefix.size(), suffix.utf16(), suffix.size(), &s, set_qstring);
|
person_quote(m_d, prefix.utf16(), prefix.size(), suffix.utf16(), suffix.size(), &s, set_qstring);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
QString Person::quoteBytes(const QByteArray& prefix, const QByteArray& suffix) const
|
QByteArray Person::quoteBytes(const QByteArray& prefix, const QByteArray& suffix) const
|
||||||
{
|
{
|
||||||
QString s;
|
QByteArray s;
|
||||||
person_quote_bytes(m_d, prefix.data(), prefix.size(), suffix.data(), suffix.size(), &s, set_qstring);
|
person_quote_bytes(m_d, prefix.data(), prefix.size(), suffix.data(), suffix.size(), &s, set_qbytearray);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
quint8 Person::vowelsInName() const
|
quint8 Person::vowelsInName() const
|
||||||
|
|
|
@ -26,7 +26,7 @@ public:
|
||||||
Q_INVOKABLE void doubleName();
|
Q_INVOKABLE void doubleName();
|
||||||
Q_INVOKABLE QString greet(const QString& name) const;
|
Q_INVOKABLE QString greet(const QString& name) const;
|
||||||
Q_INVOKABLE QString quote(const QString& prefix, const QString& suffix) const;
|
Q_INVOKABLE QString quote(const QString& prefix, const QString& suffix) const;
|
||||||
Q_INVOKABLE QString quoteBytes(const QByteArray& prefix, const QByteArray& suffix) const;
|
Q_INVOKABLE QByteArray quoteBytes(const QByteArray& prefix, const QByteArray& suffix) const;
|
||||||
Q_INVOKABLE quint8 vowelsInName() const;
|
Q_INVOKABLE quint8 vowelsInName() const;
|
||||||
signals:
|
signals:
|
||||||
void userNameChanged();
|
void userNameChanged();
|
||||||
|
|
Loading…
Reference in New Issue