diff --git a/src/Entity.jl b/src/Entity.jl index 064b5dcfa0afdfdcaa4a9a7fddc08a8be8c7b700..6dce4d344e05d7cd86ce38d8f99992ba338326cc 100644 --- a/src/Entity.jl +++ b/src/Entity.jl @@ -806,11 +806,29 @@ function get_value(entity::Ref{_Entity}) end end end - if @isdefined err_code - CaosDB.Exceptions.evaluate_return_code(err_code) + elseif ent_datatype[2] + # is reference + if !is_list + out = Ref{Ptr{UInt8}}(Ptr{UInt8}()) + err_code = ccall( + (:caosdb_entity_entity_get_string_value, CaosDB.library_name), + Cint, + (Ref{_Entity}, Ref{Ptr{UInt8}}), + entity, + out, + ) + out = unsafe_string(out[]) + else + # is list of references + list_length = get_property_list_length(entity) + out = [get_string_list_value_at(entity, Cint(ii)) for ii = 1:list_length] end end + if @isdefined err_code + CaosDB.Exceptions.evaluate_return_code(err_code) + end + return out end @@ -897,10 +915,27 @@ function get_value(property::Ref{_Property}) end end end - if @isdefined err_code - CaosDB.Exceptions.evaluate_return_code(err_code) + elseif prop_datatype[2] + # is reference + if !is_list + out = Ref{Ptr{UInt8}}(Ptr{UInt8}()) + err_code = ccall( + (:caosdb_entity_property_get_string_value, CaosDB.library_name), + Cint, + (Ref{_Property}, Ref{Ptr{UInt8}}), + property, + out, + ) + out = unsafe_string(out[]) + else + # is list of references + list_length = get_property_list_length(property) + out = [get_string_list_value_at(property, Cint(ii)) for ii = 1:list_length] end end + if @isdefined err_code + CaosDB.Exceptions.evaluate_return_code(err_code) + end return out end