cannam@226: /* cannam@226: Copyright 2011-2015 David Robillard cannam@226: cannam@226: Permission to use, copy, modify, and/or distribute this software for any cannam@226: purpose with or without fee is hereby granted, provided that the above cannam@226: copyright notice and this permission notice appear in all copies. cannam@226: cannam@226: THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES cannam@226: WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF cannam@226: MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR cannam@226: ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES cannam@226: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN cannam@226: ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF cannam@226: OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. cannam@226: */ cannam@226: cannam@226: #ifndef SORD_SORD_INTERNAL_H cannam@226: #define SORD_SORD_INTERNAL_H cannam@226: cannam@226: #include cannam@226: #include cannam@226: cannam@226: #include "sord/sord.h" cannam@226: cannam@226: #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) cannam@226: # define SORD_UNREACHABLE() __builtin_unreachable() cannam@226: #else cannam@226: # define SORD_UNREACHABLE() assert(false) cannam@226: #endif cannam@226: cannam@226: /** Resource node metadata */ cannam@226: typedef struct { cannam@226: size_t refs_as_obj; ///< References as a quad object cannam@226: } SordResourceMetadata; cannam@226: cannam@226: /** Literal node metadata */ cannam@226: typedef struct { cannam@226: SordNode* datatype; ///< Optional literal data type URI cannam@226: char lang[16]; ///< Optional language tag cannam@226: } SordLiteralMetadata; cannam@226: cannam@226: /** Node */ cannam@226: struct SordNodeImpl { cannam@226: SerdNode node; ///< Serd node cannam@226: size_t refs; ///< Reference count (# of containing quads) cannam@226: union { cannam@226: SordResourceMetadata res; cannam@226: SordLiteralMetadata lit; cannam@226: } meta; cannam@226: }; cannam@226: cannam@226: #endif /* SORD_SORD_INTERNAL_H */