@@ -21,7 +21,8 @@ use flatbuffers::FlatBufferBuilder;
2121use crate :: flatbuffer_wrappers:: function_types:: ParameterValue ;
2222use crate :: flatbuffers:: hyperlight:: generated:: {
2323 FunctionCallResult as FbFunctionCallResult , FunctionCallResultArgs as FbFunctionCallResultArgs ,
24- ReturnValue as FbReturnValue , hlbool as Fbhlbool , hlboolArgs as FbhlboolArgs ,
24+ FunctionCallResultType as FbFunctionCallResultType , ReturnValue as FbReturnValue ,
25+ ReturnValueBox , ReturnValueBoxArgs , hlbool as Fbhlbool , hlboolArgs as FbhlboolArgs ,
2526 hldouble as Fbhldouble , hldoubleArgs as FbhldoubleArgs , hlfloat as Fbhlfloat ,
2627 hlfloatArgs as FbhlfloatArgs , hlint as Fbhlint , hlintArgs as FbhlintArgs , hllong as Fbhllong ,
2728 hllongArgs as FbhllongArgs , hlsizeprefixedbuffer as Fbhlsizeprefixedbuffer ,
@@ -34,8 +35,8 @@ use crate::flatbuffers::hyperlight::generated::{
3435/// Flatbuffer-encodes the given value
3536pub fn get_flatbuffer_result < T : FlatbufferSerializable > ( val : T ) -> Vec < u8 > {
3637 let mut builder = FlatBufferBuilder :: new ( ) ;
37- let res = & T :: serialize ( & val, & mut builder) ;
38- let result_offset = FbFunctionCallResult :: create ( & mut builder, res) ;
38+ let res = T :: serialize ( & val, & mut builder) ;
39+ let result_offset = FbFunctionCallResult :: create ( & mut builder, & res) ;
3940
4041 builder. finish_size_prefixed ( result_offset, None ) ;
4142
@@ -50,123 +51,183 @@ pub trait FlatbufferSerializable {
5051
5152impl FlatbufferSerializable for ( ) {
5253 fn serialize ( & self , builder : & mut FlatBufferBuilder ) -> FbFunctionCallResultArgs {
54+ let void_off = Fbhlvoid :: create ( builder, & FbhlvoidArgs { } ) ;
55+ let rv_box = ReturnValueBox :: create (
56+ builder,
57+ & ReturnValueBoxArgs {
58+ value_type : FbReturnValue :: hlvoid,
59+ value : Some ( void_off. as_union_value ( ) ) ,
60+ } ,
61+ ) ;
5362 FbFunctionCallResultArgs {
54- return_value : Some ( Fbhlvoid :: create ( builder , & FbhlvoidArgs { } ) . as_union_value ( ) ) ,
55- return_value_type : FbReturnValue :: hlvoid ,
63+ result_type : FbFunctionCallResultType :: ReturnValueBox ,
64+ result : Some ( rv_box . as_union_value ( ) ) ,
5665 }
5766 }
5867}
5968
6069impl FlatbufferSerializable for & str {
6170 fn serialize ( & self , builder : & mut FlatBufferBuilder ) -> FbFunctionCallResultArgs {
6271 let string_offset = builder. create_string ( self ) ;
72+ let str_off = Fbhlstring :: create (
73+ builder,
74+ & FbhlstringArgs {
75+ value : Some ( string_offset) ,
76+ } ,
77+ ) ;
78+ let rv_box = ReturnValueBox :: create (
79+ builder,
80+ & ReturnValueBoxArgs {
81+ value_type : FbReturnValue :: hlstring,
82+ value : Some ( str_off. as_union_value ( ) ) ,
83+ } ,
84+ ) ;
6385 FbFunctionCallResultArgs {
64- return_value : Some (
65- Fbhlstring :: create (
66- builder,
67- & FbhlstringArgs {
68- value : Some ( string_offset) ,
69- } ,
70- )
71- . as_union_value ( ) ,
72- ) ,
73- return_value_type : FbReturnValue :: hlstring,
86+ result_type : FbFunctionCallResultType :: ReturnValueBox ,
87+ result : Some ( rv_box. as_union_value ( ) ) ,
7488 }
7589 }
7690}
7791
7892impl FlatbufferSerializable for & [ u8 ] {
7993 fn serialize ( & self , builder : & mut FlatBufferBuilder ) -> FbFunctionCallResultArgs {
80- let vec_offset = builder. create_vector ( self ) ;
94+ let vec_off = builder. create_vector ( self ) ;
95+ let buf_off = Fbhlsizeprefixedbuffer :: create (
96+ builder,
97+ & FbhlsizeprefixedbufferArgs {
98+ size : self . len ( ) as i32 ,
99+ value : Some ( vec_off) ,
100+ } ,
101+ ) ;
102+ let rv_box = ReturnValueBox :: create (
103+ builder,
104+ & ReturnValueBoxArgs {
105+ value_type : FbReturnValue :: hlsizeprefixedbuffer,
106+ value : Some ( buf_off. as_union_value ( ) ) ,
107+ } ,
108+ ) ;
81109 FbFunctionCallResultArgs {
82- return_value : Some (
83- Fbhlsizeprefixedbuffer :: create (
84- builder,
85- & FbhlsizeprefixedbufferArgs {
86- size : self . len ( ) as i32 ,
87- value : Some ( vec_offset) ,
88- } ,
89- )
90- . as_union_value ( ) ,
91- ) ,
92- return_value_type : FbReturnValue :: hlsizeprefixedbuffer,
110+ result_type : FbFunctionCallResultType :: ReturnValueBox ,
111+ result : Some ( rv_box. as_union_value ( ) ) ,
93112 }
94113 }
95114}
96115
97116impl FlatbufferSerializable for f32 {
98117 fn serialize ( & self , builder : & mut FlatBufferBuilder ) -> FbFunctionCallResultArgs {
118+ let off = Fbhlfloat :: create ( builder, & FbhlfloatArgs { value : * self } ) ;
119+ let rv_box = ReturnValueBox :: create (
120+ builder,
121+ & ReturnValueBoxArgs {
122+ value_type : FbReturnValue :: hlfloat,
123+ value : Some ( off. as_union_value ( ) ) ,
124+ } ,
125+ ) ;
99126 FbFunctionCallResultArgs {
100- return_value : Some (
101- Fbhlfloat :: create ( builder, & FbhlfloatArgs { value : * self } ) . as_union_value ( ) ,
102- ) ,
103- return_value_type : FbReturnValue :: hlfloat,
127+ result_type : FbFunctionCallResultType :: ReturnValueBox ,
128+ result : Some ( rv_box. as_union_value ( ) ) ,
104129 }
105130 }
106131}
107132
108133impl FlatbufferSerializable for f64 {
109134 fn serialize ( & self , builder : & mut FlatBufferBuilder ) -> FbFunctionCallResultArgs {
135+ let off = Fbhldouble :: create ( builder, & FbhldoubleArgs { value : * self } ) ;
136+ let rv_box = ReturnValueBox :: create (
137+ builder,
138+ & ReturnValueBoxArgs {
139+ value_type : FbReturnValue :: hldouble,
140+ value : Some ( off. as_union_value ( ) ) ,
141+ } ,
142+ ) ;
110143 FbFunctionCallResultArgs {
111- return_value : Some (
112- Fbhldouble :: create ( builder, & FbhldoubleArgs { value : * self } ) . as_union_value ( ) ,
113- ) ,
114- return_value_type : FbReturnValue :: hldouble,
144+ result_type : FbFunctionCallResultType :: ReturnValueBox ,
145+ result : Some ( rv_box. as_union_value ( ) ) ,
115146 }
116147 }
117148}
118149
119150impl FlatbufferSerializable for i32 {
120151 fn serialize ( & self , builder : & mut FlatBufferBuilder ) -> FbFunctionCallResultArgs {
152+ let off = Fbhlint :: create ( builder, & FbhlintArgs { value : * self } ) ;
153+ let rv_box = ReturnValueBox :: create (
154+ builder,
155+ & ReturnValueBoxArgs {
156+ value_type : FbReturnValue :: hlint,
157+ value : Some ( off. as_union_value ( ) ) ,
158+ } ,
159+ ) ;
121160 FbFunctionCallResultArgs {
122- return_value : Some (
123- Fbhlint :: create ( builder, & FbhlintArgs { value : * self } ) . as_union_value ( ) ,
124- ) ,
125- return_value_type : FbReturnValue :: hlint,
161+ result_type : FbFunctionCallResultType :: ReturnValueBox ,
162+ result : Some ( rv_box. as_union_value ( ) ) ,
126163 }
127164 }
128165}
129166
130167impl FlatbufferSerializable for i64 {
131168 fn serialize ( & self , builder : & mut FlatBufferBuilder ) -> FbFunctionCallResultArgs {
169+ let off = Fbhllong :: create ( builder, & FbhllongArgs { value : * self } ) ;
170+ let rv_box = ReturnValueBox :: create (
171+ builder,
172+ & ReturnValueBoxArgs {
173+ value_type : FbReturnValue :: hllong,
174+ value : Some ( off. as_union_value ( ) ) ,
175+ } ,
176+ ) ;
132177 FbFunctionCallResultArgs {
133- return_value : Some (
134- Fbhllong :: create ( builder, & FbhllongArgs { value : * self } ) . as_union_value ( ) ,
135- ) ,
136- return_value_type : FbReturnValue :: hllong,
178+ result_type : FbFunctionCallResultType :: ReturnValueBox ,
179+ result : Some ( rv_box. as_union_value ( ) ) ,
137180 }
138181 }
139182}
140183
141184impl FlatbufferSerializable for u32 {
142185 fn serialize ( & self , builder : & mut FlatBufferBuilder ) -> FbFunctionCallResultArgs {
186+ let off = Fbhluint :: create ( builder, & FbhluintArgs { value : * self } ) ;
187+ let rv_box = ReturnValueBox :: create (
188+ builder,
189+ & ReturnValueBoxArgs {
190+ value_type : FbReturnValue :: hluint,
191+ value : Some ( off. as_union_value ( ) ) ,
192+ } ,
193+ ) ;
143194 FbFunctionCallResultArgs {
144- return_value : Some (
145- Fbhluint :: create ( builder, & FbhluintArgs { value : * self } ) . as_union_value ( ) ,
146- ) ,
147- return_value_type : FbReturnValue :: hluint,
195+ result_type : FbFunctionCallResultType :: ReturnValueBox ,
196+ result : Some ( rv_box. as_union_value ( ) ) ,
148197 }
149198 }
150199}
151200
152201impl FlatbufferSerializable for u64 {
153202 fn serialize ( & self , builder : & mut FlatBufferBuilder ) -> FbFunctionCallResultArgs {
203+ let off = Fbhlulong :: create ( builder, & FbhlulongArgs { value : * self } ) ;
204+ let rv_box = ReturnValueBox :: create (
205+ builder,
206+ & ReturnValueBoxArgs {
207+ value_type : FbReturnValue :: hlulong,
208+ value : Some ( off. as_union_value ( ) ) ,
209+ } ,
210+ ) ;
154211 FbFunctionCallResultArgs {
155- return_value : Some (
156- Fbhlulong :: create ( builder, & FbhlulongArgs { value : * self } ) . as_union_value ( ) ,
157- ) ,
158- return_value_type : FbReturnValue :: hlulong,
212+ result_type : FbFunctionCallResultType :: ReturnValueBox ,
213+ result : Some ( rv_box. as_union_value ( ) ) ,
159214 }
160215 }
161216}
162217
163218impl FlatbufferSerializable for bool {
164219 fn serialize ( & self , builder : & mut FlatBufferBuilder ) -> FbFunctionCallResultArgs {
220+ let off = Fbhlbool :: create ( builder, & FbhlboolArgs { value : * self } ) ;
221+ let rv_box = ReturnValueBox :: create (
222+ builder,
223+ & ReturnValueBoxArgs {
224+ value_type : FbReturnValue :: hlbool,
225+ value : Some ( off. as_union_value ( ) ) ,
226+ } ,
227+ ) ;
165228 FbFunctionCallResultArgs {
166- return_value : Some (
167- Fbhlbool :: create ( builder, & FbhlboolArgs { value : * self } ) . as_union_value ( ) ,
168- ) ,
169- return_value_type : FbReturnValue :: hlbool,
229+ result_type : FbFunctionCallResultType :: ReturnValueBox ,
230+ result : Some ( rv_box. as_union_value ( ) ) ,
170231 }
171232 }
172233}
0 commit comments