Listing built-in functionality

Raptor can be configured and compiled with support for different parsers and serializers. Lists of the functionality built into the library can be interrogated by means of enumerate functions. These take as input an int counter and return descriptions of the feature at that offset in the list. The descriptions are returned stored in the variables pointed to by the reference arguments of the **var form. The return value of the function is non-zero when the counter has gone too far.

Listing Functionality with Enumeration

List the parse syntaxes (parser names)
int
raptor_parsers_enumerate(const unsigned int counter,
                         const char **name, const char **label);
List the parse syntaxes (same as above but with more information)
int
raptor_syntaxes_enumerate(const unsigned int counter,
                          const char **name,
                          const char **label, 
                          const char **mime_type,
                          const unsigned char **uri_string);
List the serializer syntaxes (serializer names)
int
raptor_serializers_enumerate(const unsigned int counter,
                             const char **name,
                             const char **label,
                             const char **mime_type,
                             const unsigned char **uri_string);
List the Parser features
int
raptor_features_enumerate(const raptor_feature feature,
                          const char **name, raptor_uri **uri,
                          const char **label);
List the Serializer features
int
raptor_serializer_features_enumerate(const raptor_feature feature,
                                     const char **name,
                                     raptor_uri **uri,
                                     const char **label);
List the XML Writer features
int
raptor_xml_writer_features_enumerate(const raptor_feature feature,
                                     const char **name,
                                     raptor_uri **uri,
                                     const char **label);

These functions can be called directly after raptor_init() has been called so can be used to find name parameters for creating parser and serializer instances. This is one way to find a parser (name) by it's MIME Type, the other is to use the mime_type parameter of the raptor_new_parser_for_content().

Example 1. List all features of parsers with an enumerate function

  int i;
  for(i=0; i < RAPTOR_FEATURE_LAST; i++) {
    const char *name;
    raptor_uri *uri;
    const char *label;
    if(raptor_features_enumerate((raptor_feature)i, &name, &uri, &label))
      continue;
    /* do something with name, uri and label */
  }

There are more examples of this usage in the source for the rapper utility in util/rapper.c.