// Copyright 2011-2023 David Robillard // SPDX-License-Identifier: ISC #ifndef SERD_SRC_NODE_H #define SERD_SRC_NODE_H #include "serd/attributes.h" #include "serd/node.h" #include "serd/string_view.h" #include "serd/uri.h" #include #include struct SerdNodeImpl { size_t length; ///< Length in bytes (not including null) SerdNodeFlags flags; ///< Node flags SerdNodeType type; ///< Node type }; static const size_t serd_node_align = 2 * sizeof(uint64_t); static inline char* SERD_NONNULL serd_node_buffer(SerdNode* SERD_NONNULL node) { return (char*)(node + 1); } static inline const char* SERD_NONNULL serd_node_buffer_c(const SerdNode* SERD_NONNULL node) { return (const char*)(node + 1); } SerdNode* SERD_ALLOCATED serd_node_malloc(size_t length, SerdNodeFlags flags, SerdNodeType type); void serd_node_set(SerdNode* SERD_NONNULL* SERD_NONNULL dst, const SerdNode* SERD_NONNULL src); /// Create a new URI from a string, resolved against a base URI SerdNode* SERD_ALLOCATED serd_new_resolved_uri(SerdStringView string, SerdURIView base_uri); #endif // SERD_SRC_NODE_H