abort if configuration fails
[ardour.git] / libs / ardour / rdff.h
index 960085db04498cc03ae3bba142584596d5d16b7b..3d1362cf0e66f861acb543c2243ee2a02f082a5c 100644 (file)
@@ -2,26 +2,17 @@
   RDFF - RDF in RIFF
   Copyright 2011 David Robillard <http://drobilla.net>
 
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-  1. Redistributions of source code must retain the above copyright notice,
-     this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-  AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-  AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-  OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
+  Permission to use, copy, modify, and/or distribute this software for any
+  purpose with or without fee is hereby granted, provided that the above
+  copyright notice and this permission notice appear in all copies.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
 
 #ifndef RDFF_RDFF_H
@@ -65,7 +56,7 @@ typedef struct {
 } PACKED RDFFChunk;
 
 /**
-   Body of a URID chunk.
+   Body of a RDFF "urid" chunk.
 */
 typedef struct {
        uint32_t id;     /**< Numeric ID of URI in this RDFF. */
@@ -73,14 +64,15 @@ typedef struct {
 } PACKED RDFFURIChunk;
 
 /**
-   Body of a KVAL chunk.
+   Body of a RDFF "trip" chunk.
 */
 typedef struct {
-       uint32_t key;      /**< Predicate URI ID. */
-       uint32_t type;     /**< Type URI ID. */
-       uint32_t size;     /**< Size of object data. */
-       char     value[];  /**< Object data. */
-} PACKED RDFFValueChunk;
+       uint32_t subject;      /**< Subject URI ID. */
+       uint32_t predicate;    /**< Predicate URI ID. */
+       uint32_t object_type;  /**< Object type URI ID. */
+       uint32_t object_size;  /**< Size of object data. */
+       char     object[];     /**< Object data. */
+} PACKED RDFFTripleChunk;
 
 /**
    Open/Create a new RDFF file.
@@ -94,18 +86,19 @@ rdff_open(const char* path, bool write);
 RDFFStatus
 rdff_write_uri(RDFF        file,
                uint32_t    id,
-               const char* uri,
-               uint32_t    len);
+               uint32_t    len,
+               const char* uri);
 
 /**
    Write a key/value record to @a file.
 */
 RDFFStatus
-rdff_write_value(RDFF        file,
-                 uint32_t    key,
-                 const void* value,
-                 uint32_t    size,
-                 uint32_t    type);
+rdff_write_triple(RDFF        file,
+                  uint32_t    subject,
+                  uint32_t    predicate,
+                  uint32_t    object_type,
+                  uint32_t    object_size,
+                  const void* object);
 
 /**
    Read a chunk from @a file.
@@ -119,6 +112,18 @@ RDFFStatus
 rdff_read_chunk(RDFF        file,
                 RDFFChunk** buf);
 
+/**
+   Return true iff @a chunk is a URI chunk.
+*/
+bool
+rdff_chunk_is_uri(RDFFChunk* chunk);
+
+/**
+   Return true iff @a chunk is a Triple chunk.
+*/
+bool
+rdff_chunk_is_triple(RDFFChunk* chunk);
+
 /**
    Close @a file.
    After this call, @a file is invalid.