X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Frdff.h;h=3d1362cf0e66f861acb543c2243ee2a02f082a5c;hb=0026399358e04ccac5e49dd79f4c832730060370;hp=6e9d1975365b675338afae2d86394087c4e0b600;hpb=09943e1d571bb82326c0ac8195e2cb2b9a29e1b6;p=ardour.git diff --git a/libs/ardour/rdff.h b/libs/ardour/rdff.h index 6e9d197536..3d1362cf0e 100644 --- a/libs/ardour/rdff.h +++ b/libs/ardour/rdff.h @@ -1,21 +1,18 @@ /* RDFF - RDF in RIFF Copyright 2011 David Robillard - - This is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This software is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this sofware; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - 02110-1301 USA. + + 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 @@ -34,42 +31,49 @@ extern "C" { #endif +/** + RDFF file or stream. + */ typedef struct _RDFF* RDFF; +/** + Status codes for function returns. +*/ typedef enum { - RDFF_STATUS_OK = 0, - RDFF_STATUS_UNKNOWN_ERROR = 1, - RDFF_STATUS_EOF = 2, - RDFF_STATUS_CORRUPT = 3 + RDFF_STATUS_OK = 0, /**< Success. */ + RDFF_STATUS_UNKNOWN_ERROR = 1, /**< Unknown error. */ + RDFF_STATUS_EOF = 2, /**< End of file. */ + RDFF_STATUS_CORRUPT = 3 /**< Corrupt data. */ } RDFFStatus; /** Generic RIFF chunk header. */ typedef struct { - char type[4]; - uint32_t size; - char data[]; + char type[4]; /**< Chunk type ID. */ + uint32_t size; /**< Size of chunk body (not including header). */ + char data[]; /**< Chunk body. */ } PACKED RDFFChunk; /** - Body of a URID chunk. + Body of a RDFF "urid" chunk. */ typedef struct { - uint32_t id; - char uri[]; + uint32_t id; /**< Numeric ID of URI in this RDFF. */ + char uri[]; /**< URI string. */ } PACKED RDFFURIChunk; /** - Body of a KVAL chunk. + Body of a RDFF "trip" chunk. */ typedef struct { - uint32_t key; - uint32_t type; - uint32_t size; - char value[]; -} 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. */ @@ -82,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. @@ -107,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.