1
- use addin1c:: { name, ParamValue , RawAddin , Tm , Variant } ;
1
+ use addin1c:: { name, CStr1C , ParamValue , RawAddin , Tm , Variant } ;
2
2
3
- const PROPS : & [ & [ u16 ] ] = & [
3
+ const PROPS : & [ & CStr1C ] = & [
4
4
name ! ( "Test" ) ,
5
5
name ! ( "PropI32" ) ,
6
6
name ! ( "PropF64" ) ,
@@ -10,7 +10,7 @@ const PROPS: &[&[u16]] = &[
10
10
name ! ( "PropBlob" ) ,
11
11
] ;
12
12
13
- const METHODS : & [ & [ u16 ] ] = & [ name ! ( "Method1" ) , name ! ( "Method2" ) ] ;
13
+ const METHODS : & [ & CStr1C ] = & [ name ! ( "Method1" ) , name ! ( "Method2" ) ] ;
14
14
15
15
pub struct Addin1 {
16
16
test : i32 ,
@@ -41,19 +41,19 @@ impl Drop for Addin1 {
41
41
}
42
42
43
43
impl RawAddin for Addin1 {
44
- fn register_extension_as ( & mut self ) -> & ' static [ u16 ] {
44
+ fn register_extension_as ( & mut self ) -> & ' static CStr1C {
45
45
name ! ( "Class1" )
46
46
}
47
47
48
48
fn get_n_props ( & mut self ) -> usize {
49
49
PROPS . len ( )
50
50
}
51
51
52
- fn find_prop ( & mut self , name : & [ u16 ] ) -> Option < usize > {
52
+ fn find_prop ( & mut self , name : & CStr1C ) -> Option < usize > {
53
53
PROPS . iter ( ) . position ( |& x| x == name)
54
54
}
55
55
56
- fn get_prop_name ( & mut self , num : usize , _alias : usize ) -> Option < & ' static [ u16 ] > {
56
+ fn get_prop_name ( & mut self , num : usize , _alias : usize ) -> Option < & ' static CStr1C > {
57
57
PROPS . get ( num) . copied ( )
58
58
}
59
59
@@ -66,61 +66,61 @@ impl RawAddin for Addin1 {
66
66
4 => val. set_date ( self . prop_date ) ,
67
67
5 => {
68
68
let s: Vec < u16 > = self . prop_str . encode_utf16 ( ) . collect ( ) ;
69
- return val. set_str ( s. as_slice ( ) ) ;
69
+ return val. set_str1c ( s. as_slice ( ) ) . is_ok ( ) ;
70
70
}
71
71
6 => {
72
- return val. set_blob ( self . prop_blob . as_slice ( ) ) ;
72
+ return val. set_blob ( self . prop_blob . as_slice ( ) ) . is_ok ( ) ;
73
73
}
74
74
_ => return false ,
75
75
} ;
76
76
true
77
77
}
78
78
79
- fn set_prop_val ( & mut self , num : usize , val : & ParamValue ) -> bool {
79
+ fn set_prop_val ( & mut self , num : usize , val : & Variant ) -> bool {
80
80
match num {
81
- 0 => match val {
81
+ 0 => match val. get ( ) {
82
82
ParamValue :: I32 ( x) => {
83
- self . test = * x;
83
+ self . test = x;
84
84
true
85
85
}
86
86
_ => false ,
87
87
} ,
88
- 1 => match val {
88
+ 1 => match val. get ( ) {
89
89
ParamValue :: I32 ( x) => {
90
- self . prop_i32 = * x;
90
+ self . prop_i32 = x;
91
91
true
92
92
}
93
93
_ => false ,
94
94
} ,
95
- 2 => match val {
95
+ 2 => match val. get ( ) {
96
96
ParamValue :: F64 ( x) => {
97
- self . prop_f64 = * x;
97
+ self . prop_f64 = x;
98
98
true
99
99
}
100
100
_ => false ,
101
101
} ,
102
- 3 => match val {
102
+ 3 => match val. get ( ) {
103
103
ParamValue :: Bool ( x) => {
104
- self . prop_bool = * x;
104
+ self . prop_bool = x;
105
105
true
106
106
}
107
107
_ => false ,
108
108
} ,
109
- 4 => match val {
109
+ 4 => match val. get ( ) {
110
110
ParamValue :: Date ( x) => {
111
- self . prop_date = * x;
111
+ self . prop_date = x;
112
112
true
113
113
}
114
114
_ => false ,
115
115
} ,
116
- 5 => match val {
116
+ 5 => match val. get ( ) {
117
117
ParamValue :: Str ( x) => {
118
118
self . prop_str = String :: from_utf16 ( x) . unwrap ( ) ;
119
119
true
120
120
}
121
121
_ => false ,
122
122
} ,
123
- 6 => match val {
123
+ 6 => match val. get ( ) {
124
124
ParamValue :: Blob ( x) => {
125
125
self . prop_blob . clear ( ) ;
126
126
self . prop_blob . extend_from_slice ( x) ;
@@ -137,27 +137,18 @@ impl RawAddin for Addin1 {
137
137
}
138
138
139
139
fn is_prop_writable ( & mut self , num : usize ) -> bool {
140
- match num {
141
- 0 => true ,
142
- 1 => true ,
143
- 2 => true ,
144
- 3 => true ,
145
- 4 => true ,
146
- 5 => true ,
147
- 6 => true ,
148
- _ => false ,
149
- }
140
+ matches ! ( num, 0 ..=6 )
150
141
}
151
142
152
143
fn get_n_methods ( & mut self ) -> usize {
153
144
METHODS . len ( )
154
145
}
155
146
156
- fn find_method ( & mut self , name : & [ u16 ] ) -> Option < usize > {
147
+ fn find_method ( & mut self , name : & CStr1C ) -> Option < usize > {
157
148
METHODS . iter ( ) . position ( |& x| x == name)
158
149
}
159
150
160
- fn get_method_name ( & mut self , num : usize , _alias : usize ) -> Option < & ' static [ u16 ] > {
151
+ fn get_method_name ( & mut self , num : usize , _alias : usize ) -> Option < & ' static CStr1C > {
161
152
METHODS . get ( num) . copied ( )
162
153
}
163
154
@@ -179,11 +170,7 @@ impl RawAddin for Addin1 {
179
170
}
180
171
181
172
fn has_ret_val ( & mut self , num : usize ) -> bool {
182
- match num {
183
- 0 => true ,
184
- 1 => true ,
185
- _ => false ,
186
- }
173
+ matches ! ( num, 0 | 1 )
187
174
}
188
175
189
176
fn call_as_proc ( & mut self , _num : usize , _params : & mut [ Variant ] ) -> bool {
@@ -205,15 +192,15 @@ impl RawAddin for Addin1 {
205
192
_ => return false ,
206
193
}
207
194
}
208
- ret_value. set_str ( buf. as_slice ( ) )
195
+ ret_value. set_str1c ( buf. as_slice ( ) ) . is_ok ( )
209
196
}
210
197
1 => {
211
198
for ( i, param) in params. iter_mut ( ) . enumerate ( ) {
212
199
match param. get ( ) {
213
200
ParamValue :: Empty => {
214
201
if i == 0 {
215
202
let s = "Return value" . encode_utf16 ( ) . collect :: < Vec < u16 > > ( ) ;
216
- if ! param. set_str ( & s ) {
203
+ if param. set_str1c ( s . as_slice ( ) ) . is_err ( ) {
217
204
return false ;
218
205
}
219
206
} else {
0 commit comments