83
83
/* class methods */
86
86
raptor_serializers_init(void)
88
90
serializers=raptor_new_sequence((raptor_sequence_free_handler *)raptor_free_serializer_factory, NULL);
91
RAPTOR_FATAL1("Out of memory\n");
94
94
/* raptor_init_serializer_simple(); */
96
96
#ifdef RAPTOR_SERIALIZER_NTRIPLES
97
raptor_init_serializer_ntriples();
97
rc+= raptor_init_serializer_ntriples() != 0;
100
100
#ifdef RAPTOR_SERIALIZER_TURTLE
101
raptor_init_serializer_turtle();
101
rc+= raptor_init_serializer_turtle() != 0;
104
104
#ifdef RAPTOR_SERIALIZER_RDFXML_ABBREV
105
raptor_init_serializer_rdfxmla();
105
rc+= raptor_init_serializer_rdfxmla() != 0;
108
108
#ifdef RAPTOR_SERIALIZER_RDFXML
109
raptor_init_serializer_rdfxml();
109
rc+= raptor_init_serializer_rdfxml() != 0;
112
112
#ifdef RAPTOR_SERIALIZER_RSS_1_0
113
raptor_init_serializer_rss10();
113
rc+= raptor_init_serializer_rss10() != 0;
116
116
#ifdef RAPTOR_SERIALIZER_ATOM
117
raptor_init_serializer_atom();
117
rc+= raptor_init_serializer_atom() != 0;
120
120
#ifdef RAPTOR_SERIALIZER_DOT
121
raptor_init_serializer_dot();
121
rc+= raptor_init_serializer_dot() != 0;
124
#ifdef RAPTOR_SERIALIZER_JSON
125
rc+= raptor_init_serializer_json() != 0;
155
* Return value: non-0 on failure
151
158
raptor_serializer_register_factory(const char *name, const char *label,
152
159
const char *mime_type,
153
160
const char *alias,
154
161
const unsigned char *uri_string,
155
void (*factory) (raptor_serializer_factory*))
162
int (*factory) (raptor_serializer_factory*))
157
164
raptor_serializer_factory *serializer;
158
165
char *name_copy, *label_copy, *mime_type_copy, *alias_copy;
180
187
serializer=(raptor_serializer_factory*)RAPTOR_CALLOC(raptor_serializer_factory, 1,
181
188
sizeof(raptor_serializer_factory));
183
goto fail_noserializer;
185
192
name_copy=(char*)RAPTOR_CALLOC(cstring, strlen(name)+1, 1);
188
195
strcpy(name_copy, name);
189
196
serializer->name=name_copy;
191
198
label_copy=(char*)RAPTOR_CALLOC(cstring, strlen(label)+1, 1);
194
201
strcpy(label_copy, label);
195
202
serializer->label=label_copy;
198
205
mime_type_copy=(char*)RAPTOR_CALLOC(cstring, strlen(mime_type)+1, 1);
199
206
if(!mime_type_copy)
201
208
strcpy(mime_type_copy, mime_type);
202
209
serializer->mime_type=mime_type_copy;
206
213
uri_string_copy=(unsigned char*)RAPTOR_CALLOC(cstring, strlen((const char*)uri_string)+1, 1);
207
214
if(!uri_string_copy)
209
216
strcpy((char*)uri_string_copy, (const char*)uri_string);
210
217
serializer->uri_string=uri_string_copy;
214
221
alias_copy=(char*)RAPTOR_CALLOC(cstring, strlen(alias)+1, 1);
217
224
strcpy(alias_copy, alias);
218
225
serializer->alias=alias_copy;
221
228
if(raptor_sequence_push(serializers, serializer))
222
goto fail_noserializer; /* on error, serializer is already freed by the sequence */
229
return 1; /* on error, serializer is already freed by the sequence */
224
231
/* Call the serializer registration function on the new object */
225
(*factory)(serializer);
232
if (factory(serializer))
233
return 1; /* serializer is owned and freed by the serializers sequence */
227
235
#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
228
236
RAPTOR_DEBUG3("%s has context size %d\n", name, serializer->context_length);
233
241
/* Clean up on failure */
235
243
raptor_free_serializer_factory(serializer);
238
RAPTOR_FATAL1("Out of memory\n");
369
375
rdf_serializer->factory=factory;
371
377
/* Default features */
379
/* Emit @base directive or equivalent */
380
rdf_serializer->feature_write_base_uri=1;
372
382
/* Emit relative URIs where possible */
373
383
rdf_serializer->feature_relative_uris=1;
385
395
/* Write XML declaration */
386
396
rdf_serializer->feature_write_xml_declaration=1;
398
/* JSON callback function name */
399
rdf_serializer->feature_json_callback= NULL;
401
/* JSON extra data */
402
rdf_serializer->feature_json_extra_data= NULL;
388
404
if(factory->init(rdf_serializer, name)) {
389
405
raptor_free_serializer(rdf_serializer);
658
674
if(rdf_serializer->feature_start_uri)
659
675
raptor_free_uri(rdf_serializer->feature_start_uri);
677
if(rdf_serializer->feature_resource_border)
678
RAPTOR_FREE(cstring, rdf_serializer->feature_resource_border);
680
if(rdf_serializer->feature_literal_border)
681
RAPTOR_FREE(cstring, rdf_serializer->feature_literal_border);
683
if(rdf_serializer->feature_bnode_border)
684
RAPTOR_FREE(cstring, rdf_serializer->feature_bnode_border);
686
if(rdf_serializer->feature_resource_fill)
687
RAPTOR_FREE(cstring, rdf_serializer->feature_resource_fill);
689
if(rdf_serializer->feature_literal_fill)
690
RAPTOR_FREE(cstring, rdf_serializer->feature_literal_fill);
692
if(rdf_serializer->feature_bnode_fill)
693
RAPTOR_FREE(cstring, rdf_serializer->feature_bnode_fill);
695
if(rdf_serializer->feature_json_callback)
696
RAPTOR_FREE(cstring, rdf_serializer->feature_json_callback);
698
if(rdf_serializer->feature_json_extra_data)
699
RAPTOR_FREE(cstring, rdf_serializer->feature_json_extra_data);
661
701
RAPTOR_FREE(raptor_serializer, rdf_serializer);
769
813
case RAPTOR_FEATURE_RESOURCE_FILL:
770
814
case RAPTOR_FEATURE_LITERAL_FILL:
771
815
case RAPTOR_FEATURE_BNODE_FILL:
816
case RAPTOR_FEATURE_JSON_CALLBACK:
817
case RAPTOR_FEATURE_JSON_EXTRA_DATA:
820
case RAPTOR_FEATURE_WWW_HTTP_CACHE_CONTROL:
821
case RAPTOR_FEATURE_WWW_HTTP_USER_AGENT:
887
938
(unsigned char **)&(serializer->feature_bnode_fill), value);
941
/* JSON serializer features */
942
case RAPTOR_FEATURE_JSON_CALLBACK:
943
return raptor_serializer_copy_string(
944
(unsigned char **)&(serializer->feature_json_callback), value);
947
case RAPTOR_FEATURE_JSON_EXTRA_DATA:
948
return raptor_serializer_copy_string(
949
(unsigned char **)&(serializer->feature_json_extra_data), value);
953
case RAPTOR_FEATURE_WWW_HTTP_CACHE_CONTROL:
954
case RAPTOR_FEATURE_WWW_HTTP_USER_AGENT:
928
998
case RAPTOR_FEATURE_RESOURCE_FILL:
929
999
case RAPTOR_FEATURE_LITERAL_FILL:
930
1000
case RAPTOR_FEATURE_BNODE_FILL:
1001
case RAPTOR_FEATURE_JSON_CALLBACK:
1002
case RAPTOR_FEATURE_JSON_EXTRA_DATA:
1020
1097
case RAPTOR_FEATURE_BNODE_FILL:
1021
1098
return (unsigned char *)(serializer->feature_bnode_fill);
1100
case RAPTOR_FEATURE_JSON_CALLBACK:
1101
return (unsigned char *)(serializer->feature_json_callback);
1103
case RAPTOR_FEATURE_JSON_EXTRA_DATA:
1104
return (unsigned char *)(serializer->feature_json_extra_data);
1024
1107
/* parser features */
1025
1108
case RAPTOR_FEATURE_SCANNING: