language = "C" documentation = true header = """ /** * The MIT License (MIT) * * Copyright (c) 2020 * - Bartosz Sypytkowski * - Kevin Jahns . * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #ifndef YRS_FFI_H #define YRS_FFI_H /** * A Yrs document type. Documents are most important units of collaborative resources management. * All shared collections live within a scope of their corresponding documents. All updates are * generated on per document basis (rather than individual shared type). All operations on shared * collections happen via `YTransaction`, which lifetime is also bound to a document. * * Document manages so called root types, which are top-level shared types definitions (as opposed * to recursively nested types). */ typedef struct YDoc {} YDoc; /** * A common shared data type. All Yrs instances can be refered to using this data type (use * `ytype_kind` function if a specific type needs to be determined). Branch pointers are passed * over type-specific functions like `ytext_insert`, `yarray_insert` or `ymap_insert` to perform * a specific shared type operations. * * Using write methods of different shared types (eg. `ytext_insert` and `yarray_insert`) over * the same branch may result in undefined behavior. */ typedef struct Branch {} Branch; typedef struct Transaction {} Transaction; typedef struct TransactionMut {} TransactionMut; /** * Iterator structure used by weak link unquote. */ typedef struct YWeakIter {} YWeakIter; /** * Iterator structure used by shared array data type. */ typedef struct YArrayIter {} YArrayIter; /** * Iterator structure used by shared map data type. Map iterators are unordered - there's no * specific order in which map entries will be returned during consecutive iterator calls. */ typedef struct YMapIter {} YMapIter; /** * Iterator structure used by XML nodes (elements and text) to iterate over node's attributes. * Attribute iterators are unordered - there's no specific order in which map entries will be * returned during consecutive iterator calls. */ typedef struct YXmlAttrIter {} YXmlAttrIter; /** * Iterator used to traverse over the complex nested tree structure of a XML node. XML node * iterator walks only over `YXmlElement` and `YXmlText` nodes. It does so in ordered manner (using * the order in which children are ordered within their parent nodes) and using **depth-first** * traverse. */ typedef struct YXmlTreeWalker {} YXmlTreeWalker; typedef struct YUndoManager {} YUndoManager; typedef struct LinkSource {} LinkSource; typedef struct Unquote {} Unquote; typedef struct StickyIndex {} StickyIndex; typedef struct YSubscription {} YSubscription; """ trailer = """ #endif """ [parse] parse_deps = false [export] exclude = [ "LinkSource", "WeakIter", "ArrayIter", "MapIter", "Attributes", "TreeWalker", "YUndoManager", "YSubscription" ] [export.rename] "Doc" = "YDoc" "DocRef" = "YDocRef" "Transaction" = "YTransaction" "Array" = "YArray" "Map" = "YMap" "Text" = "YText" "XmlElement" = "YXmlElement" "XmlText" = "YXmlText" "MapIter" = "YMapIter" "ArrayIter" = "YArrayIter" "WeakIter" = "YWeakIter" "TreeWalker" = "YXmlTreeWalker" "Attributes" = "YXmlAttrIter" "Observer" = "YObserver" "UndoManager" = "YUndoManager" "Subscription" = "YSubscription"