00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00021 #ifndef SRATOM_SRATOM_H
00022 #define SRATOM_SRATOM_H
00023
00024 #include <stdint.h>
00025
00026 #include "lv2/lv2plug.in/ns/ext/urid/urid.h"
00027 #include "lv2/lv2plug.in/ns/ext/atom/atom.h"
00028 #include "lv2/lv2plug.in/ns/ext/atom/forge.h"
00029 #include "serd/serd.h"
00030 #include "sord/sord.h"
00031
00032 #ifdef SRATOM_SHARED
00033 # ifdef _WIN32
00034 # define SRATOM_LIB_IMPORT __declspec(dllimport)
00035 # define SRATOM_LIB_EXPORT __declspec(dllexport)
00036 # else
00037 # define SRATOM_LIB_IMPORT __attribute__((visibility("default")))
00038 # define SRATOM_LIB_EXPORT __attribute__((visibility("default")))
00039 # endif
00040 # ifdef SRATOM_INTERNAL
00041 # define SRATOM_API SRATOM_LIB_EXPORT
00042 # else
00043 # define SRATOM_API SRATOM_LIB_IMPORT
00044 # endif
00045 #else
00046 # define SRATOM_API
00047 #endif
00048
00049 #ifdef __cplusplus
00050 extern "C" {
00051 #endif
00052
00062 typedef struct SratomImpl Sratom;
00063
00067 SRATOM_API
00068 Sratom*
00069 sratom_new(LV2_URID_Map* map);
00070
00074 SRATOM_API
00075 void
00076 sratom_free(Sratom* sratom);
00077
00083 SRATOM_API
00084 void
00085 sratom_set_sink(Sratom* sratom,
00086 const char* base_uri,
00087 SerdStatementSink sink,
00088 SerdEndSink end_sink,
00089 void* handle);
00090
00098 SRATOM_API
00099 void
00100 sratom_set_pretty_numbers(Sratom* sratom,
00101 bool pretty_numbers);
00102
00108 SRATOM_API
00109 int
00110 sratom_write(Sratom* sratom,
00111 LV2_URID_Unmap* unmap,
00112 uint32_t flags,
00113 const SerdNode* subject,
00114 const SerdNode* predicate,
00115 uint32_t type,
00116 uint32_t size,
00117 const void* body);
00118
00123 SRATOM_API
00124 void
00125 sratom_read(Sratom* sratom,
00126 LV2_Atom_Forge* forge,
00127 SordWorld* world,
00128 SordModel* model,
00129 const SordNode* node);
00130
00135 SRATOM_API
00136 char*
00137 sratom_to_turtle(Sratom* sratom,
00138 LV2_URID_Unmap* unmap,
00139 const char* base_uri,
00140 const SerdNode* subject,
00141 const SerdNode* predicate,
00142 uint32_t type,
00143 uint32_t size,
00144 const void* body);
00145
00150 SRATOM_API
00151 LV2_Atom*
00152 sratom_from_turtle(Sratom* sratom,
00153 const char* base_uri,
00154 const SerdNode* subject,
00155 const SerdNode* predicate,
00156 const char* str);
00157
00162 SRATOM_API
00163 LV2_Atom_Forge_Ref
00164 sratom_forge_sink(LV2_Atom_Forge_Sink_Handle handle,
00165 const void* buf,
00166 uint32_t size);
00167
00171 SRATOM_API
00172 LV2_Atom*
00173 sratom_forge_deref(LV2_Atom_Forge_Sink_Handle handle,
00174 LV2_Atom_Forge_Ref ref);
00175
00180 #ifdef __cplusplus
00181 }
00182 #endif
00183
00184 #endif