| 
									
										
										
										
											2018-04-12 23:54:58 -07:00
										 |  |  | #include "value.h"
 | 
					
						
							| 
									
										
										
										
											2018-04-17 15:49:09 -07:00
										 |  |  | #include "parsetype.h"
 | 
					
						
							| 
									
										
										
										
											2018-04-12 23:54:58 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 14:53:48 -07:00
										 |  |  | void libab_value_init_ref(libab_value* value, libab_ref* data, | 
					
						
							|  |  |  |                           libab_ref* type) { | 
					
						
							| 
									
										
										
										
											2018-05-14 17:41:41 -07:00
										 |  |  |     libab_ref_copy(data, &value->data); | 
					
						
							| 
									
										
										
										
											2018-04-12 23:54:58 -07:00
										 |  |  |     libab_ref_copy(type, &value->type); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 14:53:48 -07:00
										 |  |  | libab_result libab_value_init_raw(libab_value* value, void* data, | 
					
						
							|  |  |  |                                   libab_ref* type) { | 
					
						
							| 
									
										
										
										
											2018-05-14 17:41:41 -07:00
										 |  |  |     libab_result result = LIBAB_SUCCESS; | 
					
						
							|  |  |  |     libab_ref tmp_ref; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 14:53:48 -07:00
										 |  |  |     result = libab_ref_new( | 
					
						
							|  |  |  |         &tmp_ref, data, | 
					
						
							|  |  |  |         ((libab_parsetype*)libab_ref_get(type))->data_u.base->free_function); | 
					
						
							| 
									
										
										
										
											2018-05-14 17:41:41 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 14:53:48 -07:00
										 |  |  |     if (result == LIBAB_SUCCESS) { | 
					
						
							| 
									
										
										
										
											2018-05-14 17:41:41 -07:00
										 |  |  |         libab_value_init_ref(value, &tmp_ref, type); | 
					
						
							|  |  |  |         libab_ref_free(&tmp_ref); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return result; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-12 23:54:58 -07:00
										 |  |  | void libab_value_free(libab_value* value) { | 
					
						
							| 
									
										
										
										
											2018-05-14 17:41:41 -07:00
										 |  |  |     libab_ref_free(&value->data); | 
					
						
							| 
									
										
										
										
											2018-04-24 18:28:31 -07:00
										 |  |  |     libab_ref_free(&value->type); | 
					
						
							| 
									
										
										
										
											2018-04-12 23:54:58 -07:00
										 |  |  | } |