summaryrefslogtreecommitdiff
path: root/Redland/MidLevel.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Redland/MidLevel.hs')
-rw-r--r--Redland/MidLevel.hs10
1 files changed, 7 insertions, 3 deletions
diff --git a/Redland/MidLevel.hs b/Redland/MidLevel.hs
index c8e9aa6..e9f1993 100644
--- a/Redland/MidLevel.hs
+++ b/Redland/MidLevel.hs
@@ -289,10 +289,14 @@ nodeGetLiteralValueLanguage node =
withForeignPtr node $
librdf_node_get_literal_value_language >=> maybeSharedCString
-nodeGetLiteralValueDatatypeURI :: ForeignPtr RedlandNode -> IO (Maybe String)
+nodeGetLiteralValueDatatypeURI :: ForeignPtr RedlandNode
+ -> IO (Maybe (ForeignPtr RedlandURI))
nodeGetLiteralValueDatatypeURI node =
- withForeignPtr node $
- librdf_node_get_literal_value_datatype_uri >=> maybeSharedCString
+ withForeignPtr node $ \node' -> do
+ oldURI <- librdf_node_get_literal_value_datatype_uri node'
+ if oldURI == nullPtr
+ then pure Nothing
+ else Just <$> initialize (librdf_new_uri_from_uri oldURI) p_librdf_free_uri
nodeGetLiteralValueIsWellFormedXML :: ForeignPtr RedlandNode -> IO Bool
nodeGetLiteralValueIsWellFormedXML node =