changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > demo / annotate src/lib.rs

changeset 22: ba323d8c0f93
parent: lib.rs@a1137af05c8d
author: ellis <ellis@rwest.io>
date: Sat, 03 Jun 2023 22:48:46 -0400
permissions: -rw-r--r--
description: refactor1
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
1
 //! demo/lib.rs --- generated by DEMO:RS-MACROEXPAND
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
2
 extern crate libc;
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
3
 extern crate obj;
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
4
 use libc::{c_char, size_t};
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
5
 use obj::{CustomService, Objective, Service};
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
6
 use std::ffi::{CStr, CString};
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
7
 use std::slice;
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
8
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
9
 pub unsafe extern "C" fn free_service(ptr: *mut Service) {
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
10
   if ptr.is_null() {
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
11
     return;
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
12
   }
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
13
   let _ = Box::from_raw(ptr);
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
14
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
15
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
16
 pub unsafe extern "C" fn service_from_string(ptr: *const c_char) -> *mut Service {
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
17
   assert!(!ptr.is_null());
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
18
   let p = CStr::from_ptr(ptr).to_str().unwrap();
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
19
   Box::into_raw(Box::new(p.into()))
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
20
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
21
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
22
 pub unsafe extern "C" fn service_from_json_string(ptr: *const c_char) -> *mut Service {
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
23
   assert!(!ptr.is_null());
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
24
   let s = CStr::from_ptr(ptr);
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
25
   Box::into_raw(Box::new(
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
26
     Service::from_json_str(&s.to_str().unwrap()).unwrap(),
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
27
   ))
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
28
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
29
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
30
 pub unsafe extern "C" fn service_to_json_string(ptr: *const Service) -> *mut c_char {
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
31
   let p = &*ptr;
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
32
   let x = p.to_json_string().unwrap();
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
33
   CString::new(x.as_str().as_bytes()).unwrap().into_raw()
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
34
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
35
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
36
 pub unsafe extern "C" fn service_from_ron_string(ptr: *const c_char) -> *mut Service {
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
37
   assert!(!ptr.is_null());
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
38
   let s = CStr::from_ptr(ptr);
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
39
   Box::into_raw(Box::new(
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
40
     Service::from_ron_str(&s.to_str().unwrap()).unwrap(),
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
41
   ))
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
42
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
43
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
44
 pub unsafe extern "C" fn service_to_ron_string(ptr: *const Service) -> *mut c_char {
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
45
   let p = &*ptr;
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
46
   let x = p.to_ron_string().unwrap();
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
47
   CString::new(x.as_str().as_bytes()).unwrap().into_raw()
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
48
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
49
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
50
 pub unsafe extern "C" fn service_decode(ptr: *const u8, len: size_t) -> *mut Service {
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
51
   Box::into_raw(Box::new(
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
52
     Service::decode(slice::from_raw_parts(ptr, len)).unwrap(),
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
53
   ))
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
54
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
55
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
56
 pub unsafe extern "C" fn service_encode(ptr: *const Service) -> *mut u8 {
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
57
   let p = &*ptr;
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
58
   let mut x = p.encode().unwrap();
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
59
   let r = x.as_mut_ptr();
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
60
   std::mem::forget(x);
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
61
   r
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
62
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
63
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
64
 pub unsafe extern "C" fn free_custom_service(ptr: *mut CustomService) {
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
65
   if ptr.is_null() {
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
66
     return;
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
67
   }
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
68
   let _ = Box::from_raw(ptr);
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
69
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
70
 #[no_mangle]
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
71
 pub unsafe extern "C" fn custom_service_from_string(ptr: *const c_char) -> *mut CustomService {
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
72
   assert!(!ptr.is_null());
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
73
   let p = CStr::from_ptr(ptr).to_str().unwrap();
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
74
   Box::into_raw(Box::new(p.into()))
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
75
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
76
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
77
 pub unsafe extern "C" fn custom_service_from_json_string(ptr: *const c_char) -> *mut CustomService {
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
78
   assert!(!ptr.is_null());
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
79
   let s = CStr::from_ptr(ptr);
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
80
   Box::into_raw(Box::new(
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
81
     CustomService::from_json_str(&s.to_str().unwrap()).unwrap(),
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
82
   ))
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
83
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
84
 #[no_mangle]
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
85
 pub unsafe extern "C" fn custom_service_to_json_string(ptr: *const CustomService) -> *mut c_char {
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
86
   let p = &*ptr;
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
87
   let x = p.to_json_string().unwrap();
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
88
   CString::new(x.as_str().as_bytes()).unwrap().into_raw()
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
89
 }
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
90
 #[no_mangle]
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
91
 pub unsafe extern "C" fn custom_service_from_ron_string(ptr: *const c_char) -> *mut CustomService {
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
92
   assert!(!ptr.is_null());
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
93
   let s = CStr::from_ptr(ptr);
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
94
   Box::into_raw(Box::new(
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
95
     CustomService::from_ron_str(&s.to_str().unwrap()).unwrap(),
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
96
   ))
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
97
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
98
 #[no_mangle]
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
99
 pub unsafe extern "C" fn custom_service_to_ron_string(ptr: *const CustomService) -> *mut c_char {
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
100
   let p = &*ptr;
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
101
   let x = p.to_ron_string().unwrap();
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
102
   CString::new(x.as_str().as_bytes()).unwrap().into_raw()
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
103
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
104
 #[no_mangle]
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
105
 pub unsafe extern "C" fn custom_service_decode(ptr: *const u8, len: size_t) -> *mut CustomService {
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
106
   Box::into_raw(Box::new(
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
107
     CustomService::decode(slice::from_raw_parts(ptr, len)).unwrap(),
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
108
   ))
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
109
 }
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
110
 #[no_mangle]
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
111
 pub unsafe extern "C" fn custom_service_encode(ptr: *const CustomService) -> *mut u8 {
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
112
   let p = &*ptr;
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
113
   let mut x = p.encode().unwrap();
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
114
   let r = x.as_mut_ptr();
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
115
   std::mem::forget(x);
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
116
   r
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 3
diff changeset
117
 }