Displaying 20 results from an estimated 23 matches for "arg_string_list".
2019 Jun 27
0
[PATCH 7/9] Rust bindings: Complete actions
...tedIter<T> {
+ type Item = T;
+ fn next(&mut self) -> Option<T> {
+ if self.p.is_null() {
+ None
+ } else {
+ let r = unsafe { *(self.p) };
+ self.p = unsafe { self.p.offset(1) };
+ Some(r)
+ }
+ }
+}
+
fn arg_string_list (v: &Vec<String>) -> Vec<*const i8> {
let length = v.len();
let mut w = Vec::new();
@@ -144,10 +170,48 @@ fn arg_string_list (v: &Vec<String>) -> Vec<*const i8> {
w
}
+fn hashmap (l: *const *const c_char) -> collections::HashMap<String,...
2019 Jun 27
0
Re: [PATCH 08/11] Rust bindings: Fix memory management and format the file
...fn next(&mut self) -> Option<*const T> {
+ let r = unsafe { *(self.p) };
+ if r.is_null() {
None
} else {
- let r = unsafe { *(self.p) };
self.p = unsafe { self.p.offset(1) };
Some(r)
}
}
}
-fn arg_string_list (v: &Vec<String>) -> Vec<*const i8> {
- let length = v.len();
+#[repr(C)]
+struct RawList<T> {
+ size: u32,
+ ptr: *const T,
+}
+
+struct RawListIter<'a, T> {
+ current: u32,
+ list: &'a RawList<T>,
+}
+
+impl<T> RawList<T>...
2019 Jun 27
0
[PATCH 6/9] Rust bindings: Add generator of function signatures
...--- a/generator/rust.ml
+++ b/generator/rust.ml
@@ -59,8 +59,10 @@ let generate_rust () =
generate_header CStyle LGPLv2plus;
pr "
+use std::collections;
use std::ffi;
use std::slice;
+use std::ptr;
use std::os::raw::c_char;
@@ -130,6 +132,18 @@ impl CreateFlags {
}
}
+fn arg_string_list (v: &Vec<String>) -> Vec<*const i8> {
+ let length = v.len();
+ let mut w = Vec::new();
+ for x in v.iter() {
+ let y: &str = x;
+ let s = ffi::CString::new(y).unwrap();
+ w.push(s.as_ptr());
+ }
+ w.push(ptr::null());
+ w
+}
+
impl Han...
2019 Jun 27
4
Re: [PATCH 9/9] Rust bindings: Complete bindings
Patch 9 is a kind of dumping ground of all kinds of stuff. It may be
better to spend some time with git rebase -i trying to work this into
more coherent patches.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live
2019 Jun 27
16
[PATCH 1/9] Rust bindings: Add Rust bindings
From: Hiroyuki_Katsura <hiroyuki.katsura.0513@gmail.com>
---
Makefile.am | 4 ++++
configure.ac | 3 +++
generator/Makefile.am | 3 +++
generator/bindtests.ml | 3 +++
generator/bindtests.mli | 1 +
generator/main.ml | 5 +++++
generator/rust.ml | 34 ++++++++++++++++++++++++++++++++++
generator/rust.mli | 19 +++++++++++++++++++
2019 Jul 02
16
[PATCH] Add Rust bindings
I fixed the patch I submitted before based on comments, and there are some
commits which are merged or divided. So, I will re-send all the patches.
Regards,
Hiroyuki Katsura
2019 Jun 27
0
[PATCH 9/9] Rust bindings: Complete bindings
...;'a self) -> RawListIter<'a, T> {
- RawListIter{ current: 0, list: self }
+ RawListIter {
+ current: 0,
+ list: self,
+ }
}
}
@@ -193,60 +198,81 @@ impl<'a, T> Iterator for RawListIter<'a, T> {
}
}
-
-fn arg_string_list (v: &Vec<&str>) -> Vec<*const i8> {
- let length = v.len();
+fn arg_string_list(v: &[&str]) -> Result<Vec<ffi::CString>, Error> {
let mut w = Vec::new();
for x in v.iter() {
let y: &str = x;
- let s = ffi::CString::new(y...
2020 Mar 17
0
[PATCH libnbd v2 3/3] golang: Add straightforward bindings, without callbacks.
..." var c_%s *C.struct_sockaddr\n" n;
+ pr " var c_%s C.uint\n" len
+ | String n ->
+ pr " c_%s := C.CString (%s)\n" n n;
+ pr " defer C.free (unsafe.Pointer (c_%s))\n" n
+ | StringList n ->
+ pr " c_%s := arg_string_list (%s)\n" n n;
+ pr " defer free_string_list (c_%s)\n" n
+ | UInt n ->
+ pr " c_%s := C.uint (%s)\n" n n
+ | UInt32 n ->
+ pr " c_%s := C.uint32_t (%s)\n" n n
+ | UInt64 n ->
+ pr " c_%s := C.uint64_t (%s)\n...
2019 Jul 20
0
[PATCH] Rust bindings: Add Rust bindings
...ptargs.%s.map(|v| ffi::CString::new(v)).transpose()?,\n" n n;
+ | OStringList _ ->
+ pr " %s: optargs.%s.map(\n" n n;
+ pr " |v| Ok::<_, Error>({\n";
+ pr " let v = arg_string_list(v)?;\n";
+ pr " let mut w = (&v).into_iter()\n";
+ pr " .map(|v| v.as_ptr())\n";
+ pr " .collect::<Vec<_>>();\...
2019 Jul 23
2
Re: [PATCH] Rust bindings: Add Rust bindings
...tring::new(v)).transpose()?,\n" n n;
> + | OStringList _ ->
> + pr " %s: optargs.%s.map(\n" n n;
> + pr " |v| Ok::<_, Error>({\n";
> + pr " let v =
> arg_string_list(v)?;\n";
> + pr " let mut w =
> (&v).into_iter()\n";
> + pr " .map(|v|
> v.as_ptr())\n";
> + pr "
> .collect::<Vec<_>>();\n";...
2019 Jul 23
0
Re: [PATCH] Rust bindings: Add Rust bindings
...ptargs.%s.map(|v| ffi::CString::new(v)).transpose()?,\n" n n;
+ | OStringList _ ->
+ pr " %s: optargs.%s.map(\n" n n;
+ pr " |v| Ok::<_, Error>({\n";
+ pr " let v = arg_string_list(v)?;\n";
+ pr " let mut w = (&v).into_iter()\n";
+ pr " .map(|v| v.as_ptr())\n";
+ pr " .collect::<Vec<_>>();\...
2019 Jul 20
2
Re: [PATCH] Rust bindings: Add Rust bindings
> Is this just trying if the guestfs can be linked with?
Yes. In OCaml bindings, there is the corresponding test(
https://github.com/libguestfs/libguestfs/blob/master/ocaml/t/guestfs_010_load.ml).
I just mimicked it. If it is not required, I will remove it.
divided the generated files and handmade files in rust/src/ directory. I'll
send this fixed patch to this mailing list.
I'm not
2019 Jul 08
2
Re: [PATCH] Add Rust bindings
On Mon, Jul 08, 2019 at 10:04:57AM +0100, Richard W.M. Jones wrote:
>On Mon, Jul 08, 2019 at 10:49:55AM +0200, Martin Kletzander wrote:
>> On Mon, Jul 08, 2019 at 10:10:10AM +0200, Pino Toscano wrote:
>> >On Saturday, 6 July 2019 13:03:24 CEST Martin Kletzander wrote:
>> >>Just one thing, the Cargo.toml includes a version under which the crate would be
>>
2019 Jul 29
1
Re: [PATCH] Rust bindings: Add Rust bindings
...ptargs.%s.map(|v| ffi::CString::new(v)).transpose()?,\n" n n;
+ | OStringList _ ->
+ pr " %s: optargs.%s.map(\n" n n;
+ pr " |v| Ok::<_, Error>({\n";
+ pr " let v = arg_string_list(v)?;\n";
+ pr " let mut w = (&v).into_iter()\n";
+ pr " .map(|v| v.as_ptr())\n";
+ pr " .collect::<Vec<_>>();\...
2020 Mar 17
5
[PATCH libnbd v2 0/3] Unfinished golang bindings.
These bindings get as far as running very simple connections.
However there are many missing parts still:
* No callbacks.
* No functions which handle buffers (pread/pwrite!)
This is posted just for general early interest, not even for review.
Rich.
2019 Jul 17
2
[PATCH] Rust bindings: Add Rust bindings
...n next(&mut self) -> Option<*const T> {
+ if self.current >= self.list.size {
+ None
+ } else {
+ let elem = unsafe { self.list.ptr.offset(self.current as isize) };
+ self.current += 1;
+ Some(elem)
+ }
+ }
+}
+
+fn arg_string_list(v: &[&str]) -> Result<Vec<ffi::CString>, Error> {
+ let mut w = Vec::new();
+ for x in v.iter() {
+ let y: &str = x;
+ w.push(ffi::CString::new(y)?);
+ }
+ Ok(w)
+}
+
+fn free_string_list(l: *const *const c_char) {
+ for buf in NullTerminatedI...
2019 Jul 26
4
Re: [PATCH] Rust bindings: Add Rust bindings
Hi Hiroyuki,
sorry for the late reply.
Most of the work is definitely nice! There are few notes below,
although they are not big issues. I will check this patch once more
on monday, especially the rust parts.
Otherwise, I'd say that we are close to merging this :)
On Tuesday, 23 July 2019 10:37:17 CEST Hiroyuki Katsura wrote:
> From: Hiroyuki_Katsura
2020 Mar 24
1
[PATCH libnbd v3] Add Go language bindings (golang) (RHBZ#1814538).
This feature is roughly finished now, although it needs a few more
tests and some examples.
It's pretty much up to par with all the other bindings, but it lacks a
completely safe AIO buffer. It won't stop you from freeing the buffer
too early) because golang's GC inexplicably lacks a way to declare a
root from C. I can probably do it with a global variable and ref
counting on the
2015 Oct 20
3
[PATCH 1/2] generator: add a RelativePathnameList parameter type
...]string {
pr " defer C.free (unsafe.Pointer (c_%s))\n" n;
pr " }\n"
| StringList n
- | DeviceList n ->
+ | DeviceList n
+ | RelativePathnameList n ->
pr "\n";
pr " c_%s := arg_string_list (%s)\n" n n;
pr " defer free_string_list (c_%s)\n" n
@@ -455,7 +457,8 @@ func return_hashtable (argv **C.char) map[string]string {
| FileIn n | FileOut n
| GUID n -> pr "c_%s" n
| StringList n
- | DeviceList n ->...
2015 Oct 21
2
[PATCH 1/2] generator: add a FilenameList parameter type
...p[string]string {
pr " defer C.free (unsafe.Pointer (c_%s))\n" n;
pr " }\n"
| StringList n
- | DeviceList n ->
+ | DeviceList n
+ | FilenameList n ->
pr "\n";
pr " c_%s := arg_string_list (%s)\n" n n;
pr " defer free_string_list (c_%s)\n" n
@@ -455,7 +457,8 @@ func return_hashtable (argv **C.char) map[string]string {
| FileIn n | FileOut n
| GUID n -> pr "c_%s" n
| StringList n
- | DeviceList n ->...