Thu, 23 Jan 2025 01:15:52 +0100
start overhauling the entire web documentation
relates to #451
--- a/Doxyfile Wed Jan 22 21:02:46 2025 +0100 +++ b/Doxyfile Thu Jan 23 01:15:52 2025 +0100 @@ -1238,7 +1238,7 @@ # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = web/api +HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp).
--- a/Makefile Wed Jan 22 21:02:46 2025 +0100 +++ b/Makefile Thu Jan 23 01:15:52 2025 +0100 @@ -21,7 +21,7 @@ # 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. -all: compile test-compile FORCE +all: compile test-compile docs FORCE install: config.mk FORCE @cd src && $(MAKE) install
--- a/configure Wed Jan 22 21:02:46 2025 +0100 +++ b/configure Thu Jan 23 01:15:52 2025 +0100 @@ -110,10 +110,8 @@ --debug add extra compile flags for debug builds --release add extra compile flags for release builds -Options: - --with-docs=(all|html|api|none) - Optional Features: + --enable-api-docs --enable-coverage --disable-cxx-tests the check-cxx makefile target --disable-szmul-builtin use custom implementation, instead @@ -158,7 +156,6 @@ ; then root_dir=`pwd` DOXYGEN=`command -v doxygen` - PANDOC=`command -v pandoc` fi # features @@ -190,8 +187,8 @@ "--help"*) printhelp; abort_configure ;; "--debug") BUILD_TYPE="debug" ;; "--release") BUILD_TYPE="release" ;; - "--with-docs="*) OPT_WITH_DOCS=${ARG#--with-docs=} ;; - "--with-docs") echo "option '$ARG' needs a value:"; echo " $ARG=(all|html|api|none)"; abort_configure ;; + "--enable-api-docs") FEATURE_API_DOCS=on ;; + "--disable-api-docs") unset FEATURE_API_DOCS ;; "--enable-coverage") FEATURE_COVERAGE=on ;; "--disable-coverage") unset FEATURE_COVERAGE ;; "--enable-cxx-tests") FEATURE_CXX_TESTS=on ;; @@ -326,30 +323,6 @@ dep_checked_coverage=1 return 0 } -dependency_error_pandoc() -{ - print_check_msg "$dep_checked_pandoc" "checking for pandoc... " - # dependency pandoc - while true - do - if test -n "$PANDOC" > /dev/null ; then - : - else - break - fi - cat >> $TEMP_DIR/make.mk << __EOF__ -# Dependency: pandoc -PANDOC=$PANDOC -__EOF__ - print_check_msg "$dep_checked_pandoc" "yes\n" - dep_checked_pandoc=1 - return 1 - done - - print_check_msg "$dep_checked_pandoc" "no\n" - dep_checked_pandoc=1 - return 0 -} dependency_error_cxx() { print_check_msg "$dep_checked_cxx" "checking for cxx... " @@ -566,63 +539,6 @@ # # OPTION VALUES # -checkopt_with_docs_all() -{ - VERR=0 - if dependency_error_pandoc ; then - VERR=1 - fi - if dependency_error_doxygen ; then - VERR=1 - fi - if [ $VERR -ne 0 ]; then - return 1 - fi - cat >> "$TEMP_DIR/make.mk" << __EOF__ -# Documentation -WITH_DOCS_API=yes -WITH_DOCS_HTML=yes -__EOF__ - return 0 -} -checkopt_with_docs_html() -{ - VERR=0 - if dependency_error_pandoc ; then - VERR=1 - fi - if [ $VERR -ne 0 ]; then - return 1 - fi - cat >> "$TEMP_DIR/make.mk" << __EOF__ -# Documentation -WITH_DOCS_HTML=yes -__EOF__ - return 0 -} -checkopt_with_docs_api() -{ - VERR=0 - if dependency_error_doxygen ; then - VERR=1 - fi - if [ $VERR -ne 0 ]; then - return 1 - fi - cat >> "$TEMP_DIR/make.mk" << __EOF__ -# Documentation -WITH_DOCS_API=yes -__EOF__ - return 0 -} -checkopt_with_docs_none() -{ - VERR=0 - if [ $VERR -ne 0 ]; then - return 1 - fi - return 0 -} # # TARGETS @@ -645,6 +561,30 @@ fi # Features +if [ -n "$FEATURE_API_DOCS" ]; then + # check dependency + if dependency_error_doxygen ; then + # "auto" features can fail and are just disabled in this case + if [ "$FEATURE_API_DOCS" = "auto" ]; then + DISABLE_FEATURE_API_DOCS=1 + else + DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED doxygen " + ERROR=1 + fi + fi + if [ -n "$DISABLE_FEATURE_API_DOCS" ]; then + unset FEATURE_API_DOCS + fi +fi +if [ -n "$FEATURE_API_DOCS" ]; then + : + cat >> "$TEMP_DIR/make.mk" << __EOF__ +# Documentation +WITH_API_DOCS=yes +__EOF__ +else + : +fi if [ -n "$FEATURE_COVERAGE" ]; then # check dependency if dependency_error_coverage ; then @@ -712,85 +652,6 @@ TEMP_CXXFLAGS="$TEMP_CXXFLAGS -DCX_NO_SZMUL_BUILTIN" fi -# Option: --with-docs -if [ -z "$OPT_WITH_DOCS" ]; then - echo "auto-detecting option 'with-docs'" - SAVED_ERROR="$ERROR" - SAVED_DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED" - ERROR=1 - while true - do - if checkopt_with_docs_all ; then - echo " with-docs: all" >> "$TEMP_DIR/options" - ERROR=0 - break - fi - if checkopt_with_docs_html ; then - echo " with-docs: html" >> "$TEMP_DIR/options" - ERROR=0 - break - fi - if checkopt_with_docs_api ; then - echo " with-docs: api" >> "$TEMP_DIR/options" - ERROR=0 - break - fi - if checkopt_with_docs_none ; then - echo " with-docs: none" >> "$TEMP_DIR/options" - ERROR=0 - break - fi - break - done - if [ $ERROR -ne 0 ]; then - SAVED_ERROR=1 - SAVED_DEPENDENCIES_FAILED="option 'with-docs' $SAVED_DEPENDENCIES_FAILED" - fi - ERROR="$SAVED_ERROR" - DEPENDENCIES_FAILED="$SAVED_DEPENDENCIES_FAILED" -else - echo "checking option with-docs = $OPT_WITH_DOCS" - if false; then - false - elif [ "$OPT_WITH_DOCS" = "all" ]; then - echo " with-docs: $OPT_WITH_DOCS" >> $TEMP_DIR/options - if checkopt_with_docs_all ; then - : - else - ERROR=1 - DEPENDENCIES_FAILED="option 'with-docs' $DEPENDENCIES_FAILED" - fi - elif [ "$OPT_WITH_DOCS" = "html" ]; then - echo " with-docs: $OPT_WITH_DOCS" >> $TEMP_DIR/options - if checkopt_with_docs_html ; then - : - else - ERROR=1 - DEPENDENCIES_FAILED="option 'with-docs' $DEPENDENCIES_FAILED" - fi - elif [ "$OPT_WITH_DOCS" = "api" ]; then - echo " with-docs: $OPT_WITH_DOCS" >> $TEMP_DIR/options - if checkopt_with_docs_api ; then - : - else - ERROR=1 - DEPENDENCIES_FAILED="option 'with-docs' $DEPENDENCIES_FAILED" - fi - elif [ "$OPT_WITH_DOCS" = "none" ]; then - echo " with-docs: $OPT_WITH_DOCS" >> $TEMP_DIR/options - if checkopt_with_docs_none ; then - : - else - ERROR=1 - DEPENDENCIES_FAILED="option 'with-docs' $DEPENDENCIES_FAILED" - fi - else - echo - echo "Invalid option value - usage:" - echo " --with-docs=(all|html|api|none)" - abort_configure - fi -fi if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" @@ -832,9 +693,12 @@ echo "Build Config:" echo " PREFIX: $prefix" echo " TOOLCHAIN: $TOOLCHAIN_NAME" -echo "Options:" -cat "$TEMP_DIR/options" echo "Features:" +if [ -n "$FEATURE_API_DOCS" ]; then +echo " api-docs: on" +else +echo " api-docs: off" +fi if [ -n "$FEATURE_COVERAGE" ]; then echo " coverage: on" else
--- a/docs/Makefile Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -# Copyright 2023 Mike Becker. All rights reserved. -# -# 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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. - -include ../config.mk - -PAGES = index features install license modules-ucx2 -DOCS_HTML = $(PAGES:%=$(docs_dir)/web/%.html) -DOCS_CSS = $(docs_dir)/web/ucx.css - -all: all-html all-api - -all-html: $(docs_dir)/web $(DOCS_HTML) $(DOCS_CSS) FORCE - @echo "[ HTML Docs Generated ]" - -all-api: $(docs_dir)/web $(docs_dir)/web/api-2.1 $(docs_dir)/web/api FORCE - @echo "[ API Docs Generated ]" - -$(docs_dir)/web/api-2.1: api-2.1 FORCE - $(MKDIR) $@ - $(COPYALL) $< "$@/.." - -$(docs_dir)/web/api: FORCE - cd $(root_dir); $(DOXYGEN) - -$(docs_dir)/web: - $(MKDIR) $@ - -$(DOCS_CSS): src/ucx.css - $(COPYFILE) $< $@ - -$(docs_dir)/web/modules-ucx2.html: src/modules-ucx2.md - $(PANDOC) -c ucx.css -B src/header-ucx2.html -A src/footer.html \ - -T 'UAP Common Extensions' -o $@ $< - -$(docs_dir)/web/%.html: src/%.md - $(PANDOC) -c ucx.css -B src/header.html -A src/footer.html \ - -T 'UAP Common Extensions' -o $@ $< - -FORCE:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/Writerside/cfg/buildprofiles.xml Thu Jan 23 01:15:52 2025 +0100 @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE buildprofiles SYSTEM "https://resources.jetbrains.com/writerside/1.0/build-profiles.dtd"> +<buildprofiles xsi:noNamespaceSchemaLocation="https://resources.jetbrains.com/writerside/1.0/build-profiles.xsd" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <variables> + <download-title>Download Latest</download-title> + <download-page>https://sourceforge.net/projects/ucx/files/latest/download</download-page> + <showDownloadButton>true</showDownloadButton> + <custom-css>ucx.css</custom-css> + <primary-color>deep-ocean</primary-color> + </variables> + <build-profile instance="ucx"> + <variables> + <noindex-content>true</noindex-content> + </variables> + </build-profile> + <footer> + <copyright>2025 Mike Becker, Olaf Wintermann. All rights reserved.</copyright> + <link href="https://sourceforge.net/projects/ucx/">Source Forge</link> + <link href="https://uap-core.de/">UAP Core</link> + <link href="https://unixwork.de/">UNIXwork</link> + </footer> +</buildprofiles>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/Writerside/cfg/glossary.xml Thu Jan 23 01:15:52 2025 +0100 @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE terms SYSTEM "https://resources.jetbrains.com/writerside/1.0/glossary.dtd"> +<terms> + <term name="supported-compilers"> + Supported compilers for Unix and Linux builds are gcc, clang, suncc. + For Windows there is a separate MSVC project. + </term> +</terms> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/Writerside/cfg/static/ucx.css Thu Jan 23 01:15:52 2025 +0100 @@ -0,0 +1,27 @@ +html.theme-light { + --ucx-color-accent: #5b6f7a; +} +html.theme-dark { + --ucx-color-accent: #215c59; +} + +.article__h1 { + margin: 0; + padding: 0; + .title { + display: block; + } + .title__content { + display: block; + color: white; + background-color: var(--ucx-color-accent); + padding: 0.1em; + } +} + +.article__h2 .title__content { + border-bottom-color: var(--ucx-color-accent); + border-bottom-style: solid; + border-bottom-width: 1pt; + width: 100%; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/Writerside/topics/about.md Thu Jan 23 01:15:52 2025 +0100 @@ -0,0 +1,71 @@ +# Overview + +Welcome to the UAP Common Extensions. + +With this library we provide useful data structures and algorithms for common +programmatic tasks in the C language. Using the build files you can create +a static and a shared lib containing all units, but you may also use the UCX +sources in your project and compile specific units by yourself. + +If you want to use this library, you can [download and install](install.md) +the recent version. +The source code is also available as Mercurial repository [at our site][1] and +on [Source Forge][2]. + +[1]: https://develop.uap-core.de/hg/ucx/ +[2]: https://sourceforge.net/p/ucx/code/ + +### Authors + +Mike Becker [<universe@uap-core.de>](mailto:universe@uap-core.de) + +Olaf Wintermann +[<olaf.wintermann@gmail.com>](mailto:olaf.wintermann@gmail.com) + +Changelog +--------- + +### Version 3.0 - 2023-07-09 {collapsible="true"} + +* complete redesign from scratch +* collections can now store copies of objects and not just pointers +* collections are now dynamically implemented +* users of the library can specify own implementations of collections that work with the UCX API +* low level API for custom lists that do not use the UCX structures +* various fixes and improvements +* drops some other, rarely used, features +* removes testing implementation from the lib + +### Version 2.1 - 2019-12-30 {collapsible="true"} + +* adds string replace functions +* adds set operations for ` UcxList` and `UcxMap` +* adds `sstrcaseprefix()` and `sstrcasesuffix()` +* improves Doxygen documentation in ucx/string.h +* adds `UcxArray` data type +* adds support for CMake builds, but main build system is still autotools + +### Version 2.0 - 2018-12-28 {collapsible="true"} + +* some uncritical bug fixes +* overflow of `sstrnlen` now returns `SIZE_MAX` instead of zero +* adds `scstr_t` - a `const char*` variant for sstr_t +* renames utility compare functions + +### Version 1.1 - 2018-05-14 {collapsible="true"} + +* adds missing 32 bit support to integer overflow checks +* adds `ucx_buffer_to_sstr()` macro +* adds `ucx_avl_free_content()` +* adds some more compare and distance functions in utils.h +* adds `SFMT()` and `PRIsstr` convenience macros +* destructor functions for `*_free_content()` functions are now optional + +### Version 1.0.1 - 2018-01-21 {collapsible="true"} + +* some bug fixes +* adds integer overflow checks + +### Version 1.0 - 2017-10-28 {collapsible="true"} + +* first stable version of UCX released
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/Writerside/topics/features.md Thu Jan 23 01:15:52 2025 +0100 @@ -0,0 +1,395 @@ +--- +title: UCX Features +--- + +<div id="modules"> + +------------------------ ------------------------- ------------------- --------------------------------- +[Allocator](#allocator) [String](#string) [Buffer](#buffer) [Memory Pool](#memory-pool) +[Iterator](#iterator) [Collection](#collection) [List](#list) [Map](#map) +[Utilities](#utilities) +------------------------ ------------------------- ------------------- --------------------------------- + +</div> + +## Allocator + +*Header file:* [allocator.h](api/allocator_8h.html) + +The UCX allocator provides an interface for implementing an own memory allocation mechanism. +Various function in UCX provide an additional alternative signature that takes an allocator as +argument. A default allocator implementation using the stdlib memory management functions is +available via the global symbol `cxDefaultAllocator`. + +If you want to define your own allocator, you need to initialize the `CxAllocator` structure +with a pointer to an allocator class (containing function pointers for the memory management +functions) and an optional pointer to an arbitrary memory region that can be used to store +state information for the allocator. An example is shown below: + +```c +struct my_allocator_state { + size_t total; + size_t avail; + char mem[]; +}; + +static cx_allocator_class my_allocator_class = { + my_malloc_impl, + my_realloc_impl, // all these functions are somewhere defined + my_calloc_impl, + my_free_impl +}; + +CxAllocator create_my_allocator(size_t n) { + CxAllocator alloc; + alloc.cl = &my_allocator_class; + alloc.data = calloc(1, sizeof(struct my_allocator_state) + n); + return alloc; +} +``` + +## String + +*Header file:* [string.h](api/string_8h.html) + +UCX strings come in two variants: immutable (`cxstring`) and mutable (`cxmutstr`). +The functions of UCX are designed to work with immutable strings by default but in situations where it is necessary, +the API also provides alternative functions that work directly with mutable strings. +Functions that change a string in-place are, of course, only accepting mutable strings. + +When you are using UCX functions, or defining your own functions, you are sometimes facing the "problem", +that the function only accepts arguments of type `cxstring` but you only have a `cxmutstr` at hand. +In this case you _should not_ introduce a wrapper function that accepts the `cxmutstr`, +but instead you should use the `cx_strcast()` function to cast the argument to the correct type. + +In general, UCX strings are **not** necessarily zero-terminated. If a function guarantees to return zero-terminated +string, it is explicitly mentioned in the documentation of the respective function. +As a rule of thumb, you _should not_ pass the strings of a UCX string structure to another API without explicitly +ensuring that the string is zero-terminated. + +## Buffer + +*Header file:* [buffer.h](api/buffer_8h.html) + +Instances of this buffer implementation can be used to read from or write to memory like you would do with a stream. +This allows the use of `cx_stream_copy()` (see [Utilities](#utilities)) to copy contents from one buffer to another, +or from a file or network streams to the buffer and vice-versa. + +More features for convenient use of the buffer can be enabled, like automatic memory management and automatic +resizing of the buffer space. + +Since UCX 3.0, the buffer also supports automatic flushing of contents to another stream (or buffer) as an alternative +to automatically resizing the buffer space. +Please refer to the API doc for the fields prefixed with `flush_` to learn more. + +## Memory Pool + +*Header file:* [mempool.h](api/mempool_8h.html) + +A memory pool is providing an allocator implementation that automatically deallocates the memory upon its destruction. +It also allows you to register destructor functions for the allocated memory, which are automatically called before +the memory is deallocated. +Additionally, you may also register _independent_ destructor functions within a pool in case some external library +allocated memory for you, which should be freed together with this pool. + +Many UCX features support the use of an allocator. +The [strings](#string), for instance, provide several functions suffixed with `_a` that allow specifying an allocator. +You can use this to keep track of the memory occupied by dynamically allocated strings and cleanup everything with +just a single call to `cxMempoolFree()`. + +The following code illustrates this on the example of reading a CSV file into memory. +```C +#include <stdio.h> +#include <cx/mempool.h> +#include <cx/linked_list.h> +#include <cx/string.h> +#include <cx/buffer.h> +#include <cx/utils.h> + +typedef struct { + cxstring column_a; + cxstring column_b; + cxstring column_c; +} CSVData; + +int main(void) { + CxMempool* pool = cxBasicMempoolCreate(128); + + FILE *f = fopen("test.csv", "r"); + if (!f) { + perror("Cannot open file"); + return 1; + } + // close the file automatically at pool destruction + cxMempoolRegister(pool, f, (cx_destructor_func) fclose); + + // create a buffer using the memory pool for destruction + CxBuffer *content = cxBufferCreate(NULL, 256, pool->allocator, CX_BUFFER_AUTO_EXTEND); + + // read the file into the buffer and turn it into a string + cx_stream_copy(f, content, (cx_read_func) fread, cxBufferWriteFunc); + fclose(f); + cxstring contentstr = cx_strn(content->space, content->size); + + // split the string into lines - use the mempool for allocating the target array + cxstring* lines; + size_t lc = cx_strsplit_a(pool->allocator, contentstr, + CX_STR("\n"), SIZE_MAX, &lines); + + // skip the header and parse the remaining data into a linked list + // the nodes of the linked list shall also be allocated by the mempool + CxList* datalist = cxLinkedListCreate(pool->allocator, NULL, sizeof(CSVData)); + for (size_t i = 1 ; i < lc ; i++) { + if (lines[i].length == 0) continue; + cxstring fields[3]; + size_t fc = cx_strsplit(lines[i], CX_STR(";"), 3, fields); + if (fc != 3) { + fprintf(stderr, "Syntax error in line %zu.\n", i); + cxMempoolFree(pool); + return 1; + } + CSVData data; + data.column_a = fields[0]; + data.column_b = fields[1]; + data.column_c = fields[2]; + cxListAdd(datalist, &data); + } + + // iterate through the list and output the data + CxIterator iter = cxListIterator(datalist); + cx_foreach(CSVData*, data, iter) { + printf("Column A: %.*s | " + "Column B: %.*s | " + "Column C: %.*s\n", + (int)data->column_a.length, data->column_a.ptr, + (int)data->column_b.length, data->column_b.ptr, + (int)data->column_c.length, data->column_c.ptr + ); + } + + // cleanup everything, no manual free() needed + cxMempoolFree(pool); + + return 0; +} +``` + +## Iterator + +*Header file:* [iterator.h](api/iterator_8h.html) + +In UCX 3 a new feature has been introduced to write own iterators, that work with the `cx_foreach` macro. +In previous UCX releases there were different hard-coded foreach macros for lists and maps that were not customizable. +Now, creating an iterator is as simple as creating a `CxIterator` struct and setting the fields in a meaningful way. + +You do not always need all fields in the iterator structure, depending on your use case. +Sometimes you only need the `index` (for example when iterating over simple lists), and other times you will need the +`slot` and `kv_data` fields (for example when iterating over maps). + +If the predefined fields are insufficient for your use case, you can alternatively create your own iterator structure +and place the `CX_ITERATOR_BASE` macro as first member of that structure. + +Usually an iterator is not mutating the collection it is iterating over. +In some programming languages it is even disallowed to change the collection while iterating with foreach. +But sometimes it is desirable to remove an element from the collection while iterating over it. +For this purpose, most collections allow the creation of a _mutating_ iterator. +The only differences are, that the `mutating` flag is `true` and the `src_handle` is not const. +On mutating iterators it is allowed to call the `cxFlagForRemoval()` function, which instructs the iterator to remove +the current element from the collection on the next call to `cxIteratorNext()` and clear the flag afterward. +If you are implementing your own iterator, it is up to you to implement this behavior. + +## Collection + +*Header file:* [collection.h](api/collection_8h.html) + +Collections in UCX 3 have several common features. +If you want to implement an own collection data type that uses the same features, you can use the +`CX_COLLECTION_BASE` macro at the beginning of your struct to roll out all members a usual UCX collection has. +```c +struct my_fancy_collection_s { + CX_COLLECTION_BASE; + struct my_collection_data_s *data; +}; +``` +Based on this structure, this header provides some convenience macros for invoking the destructor functions +that are part of the basic collection members. +The idea of having destructor functions within a collection is that you can destroy the collection _and_ the +contents with one single function call. +When you are implementing a collection, you are responsible for invoking the destructors at the right places, e.g. +when removing (and deleting) elements in the collection, clearing the collection, or - the most prominent case - +destroying the collection. + +You can always look at the UCX list and map implementations if you need some inspiration. + +## List + +*Header file:* [list.h](api/list_8h.html) + +This header defines a common interface for all list implementations. + +UCX already comes with two common list implementations (linked list and array list) that should cover most use cases. +But if you feel the need to implement an own list, the only thing you need to do is to define a struct with a +`struct cx_list_s` as first member, and set an appropriate list class that implements the functionality. +It is strongly recommended that this class is shared among all instances of the same list type, because otherwise +the `cxListCompare` function cannot use the optimized implementation of your class and will instead fall back to +using iterators to compare the contents element-wise. + +### Linked List + +*Header file:* [linked_list.h](api/linked__list_8h.html) + +On top of implementing the list interface, this header also defines several low-level functions that +work with arbitrary structures. +Low-level functions, in contrast to the high-level list interface, can easily be recognized by their snake-casing. +The function `cx_linked_list_at`, for example, implements a similar functionality like `cxListAt`, but operates +on arbitrary structures. +The following snippet shows how it is used. +All other low-level functions work similarly. +```c +struct node { + node *next; + node *prev; + int data; +}; + +const ptrdiff_t loc_prev = offsetof(struct node, prev); +const ptrdiff_t loc_next = offsetof(struct node, next); +const ptrdiff_t loc_data = offsetof(struct node, data); + +struct node a = {0}, b = {0}, c = {0}, d = {0}; +cx_linked_list_link(&a, &b, loc_prev, loc_next); +cx_linked_list_link(&b, &c, loc_prev, loc_next); +cx_linked_list_link(&c, &d, loc_prev, loc_next); + +cx_linked_list_at(&a, 0, loc_next, 2); // returns pointer to c +``` + +### Array List + +*Header file:* [array_list.h](api/array__list_8h.html) + +Since low-level array lists are just plain arrays, there is no need for such many low-level functions as for linked +lists. +However, there is one extremely powerful function that can be used for several complex tasks: `cx_array_copy`. +The full signature is shown below: +```c +int cx_array_copy( + void **target, + void *size, + void *capacity, + unsigned width, + size_t index, + const void *src, + size_t elem_size, + size_t elem_count, + struct cx_array_reallocator_s *reallocator +); +``` +The `target` argument is a pointer to the target array pointer. +The reason for this additional indirection is that this function writes +back the pointer to the possibly reallocated array. +The next two arguments are pointers to the `size` and `capacity` of the target array for which the width +(in bits) is specified in the `width` argument. + +On a successful invocation, the function copies `elem_count` number of elements, each of size `elem_size` from +`src` to `*target` and uses the `reallocator` to extend the array when necessary. +Finally, the size, capacity, and the pointer to the array are all updated and the function returns zero. + +A few things to note: +* `*target` and `src` can point to the same memory region, effectively copying elements within the array with `memmove` +* `*target` does not need to point to the start of the array, but `size` and `capacity` always start counting from the + position, `*target` points to - in this scenario, the need for reallocation must be avoided for obvious reasons +* `index` does not need to be within size of the current array +* `index` does not even need to be within the capacity of the array +* `width` must be one of 8, 16, 32, 64 (only on 64-bit systems), or zero (in which case the native word width is used) + +If you just want to add one single element to an existing array, you can use the macro `cx_array_add()`. +You can use `CX_ARRAY_DECLARE()` to declare the necessary fields within a structure and then use the +`cx_array_simple_*()` convenience macros to reduce code overhead. +The convenience macros automatically determine the width of the size/capacity variables. + +## Map + +*Header file:* [map.h](api/map_8h.html) + +Similar to the list interface, the map interface provides a common API for implementing maps. +There are some minor subtle differences, though. + +First, the `remove` method is not always a destructive removal. +Instead, the last argument is a Boolean that indicates whether the element shall be destroyed or returned. +```c +void *(*remove)(CxMap *map, CxHashKey key, bool destroy); +``` +When you implement this method, you are either supposed to invoke the destructors and return `NULL`, +or just remove the element from the map and return it. + +Secondly, the iterator method is a bit more complete. The signature is as follows: +```c +CxIterator (*iterator)(const CxMap *map, enum cx_map_iterator_type type); +``` +There are three map iterator types: for values, for keys, for pairs. +Depending on the iterator type requested, you need to create an iterator with the correct methods that +return the requested thing. +There are no automatic checks to enforce this - it's completely up to you. +If you need inspiration on how to do that, check the hash map implementation that comes with UCX. + +### Hash Map + +*Header file:* [hash_map.h](api/hash__map_8h.html) + +UCX provides a basic hash map implementation with a configurable amount of buckets. +If you do not specify the number of buckets, a default of 16 buckets will be used. +You can always rehash the map with `cxMapRehash()` to change the number of buckets to something more efficient, +but you need to be careful, because when you use this function you are effectively locking into using this +specific hash map implementation, and you would need to remove all calls to this function when you want to +exchange the concrete map implementation with something different. + +## Utilities + +*Header file:* [utils.h](api/utils_8h.html) + +UCX provides some utilities for routine tasks. + +The most useful utilities are the *stream copy* functions, which provide a simple way to copy all - or a +bounded amount of - data from one stream to another. Since the read/write functions of a UCX buffer are +fully compatible with stream read/write functions, you can easily transfer data from file or network streams to +a UCX buffer or vice-versa. + +The following example shows, how easy it is to read the contents of a file into a buffer: +```c +FILE *inputfile = fopen(infilename, "r"); +if (inputfile) { + CxBuffer fbuf; + cxBufferInit(&fbuf, NULL, 4096, NULL, CX_BUFFER_AUTO_EXTEND); + cx_stream_copy(inputfile, &fbuf, + (cx_read_func) fread, + cxBufferWriteFunc); + fclose(inputfile); + + // ... do something meaningful with the contents ... + + cxBufferDestroy(&fbuf); +} else { + perror("Error opening input file"); + if (fout != stdout) { + fclose(fout); + } +} +``` + +### Printf Functions + +*Header file:* [printf.h](api/printf_8h.html) + +In this utility header you can find `printf()`-like functions that can write the formatted output to an arbitrary +stream (or UCX buffer, resp.), or to memory allocated by an allocator within a single function call. +With the help of these convenience functions, you do not need to `snprintf` your string to a temporary buffer anymore, +plus you do not need to worry about too small buffer sizes, because the functions will automatically allocate enough +memory to contain the entire formatted string. + +### Compare Functions + +*Header file:* [compare.h](api/compare_8h.html) + +This header file contains a collection of compare functions for various data types. +Their signatures are designed to be compatible with the `cx_compare_func` function pointer type.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/Writerside/topics/install.md Thu Jan 23 01:15:52 2025 +0100 @@ -0,0 +1,139 @@ +--- +title: Build Instructions +--- + +The build processes uses configure and make. +Make sure that you have `make` and a +<tooltip term="supported-compilers">supported compiler</tooltip> +installed. + +<tabs> +<tab title="Unix / Linux"> +<procedure> +<step> +Download the latest source archive from <a href="https://sourceforge.net/projects/ucx/files/">Source Forge</a> +and extract it somewhere on your machine. +You can also use the command line to do this. +<code-block lang="sh"> +wget https://sourceforge.net/projects/ucx/files/ucx-latest.tar.gz +tar -xzf ucx-latest.tar.gz +cd ucx-latest +</code-block> +</step> +<step> +Configure the build according to your preferences. You can get a list of +all available options with <code>./configure --help</code>. +The recommended configuration for production builds is <code>./configure --release</code>. +<code-block lang="sh"> + ./configure --release + make + make check + sudo make install +</code-block> +<note>The check target is optional and only runs some tests with the built software.</note> +</step> +</procedure> +</tab> +<tab title="Windows"> +<procedure> +<step> +Download the latest source archive from <a href="https://sourceforge.net/projects/ucx/files/">Source Forge</a> +and extract it somewhere on your machine. +</step> +<step> +Navigate to the folder named <code>msvc</code> in the extracted directory structure. +</step> +<step> +Open the contained <code>ucx.sln</code> in Visual Studio and build the solution. +</step> +</procedure> +</tab> +</tabs> + +## Compile Time Options + +When compiling UCX, you can tweak several compile time variables via macro definitions. + +### Features Defines + +The following macros are not defined by default. +The effect when they are defined in described in the table. + +<table> +<tr> +<th>Macro</th> +<th>Effect</th> +</tr> +<tr> + <td>CX_NO_SZMUL_BUILTINT</td> + <td> + By default, UCX uses a compiler builtin (only available for clang and gcc) + to perform multiplications with overflow check. + When this macro is defined, using the builtin is disabled and UCX will + always use an own implementation. + <tip> + This macro is defined when you use the <code>--disable-szmul-builtin</code> + option during configuration, so you do not need to define it manually. + </tip> + </td> +</tr> +</table> + +### Small Buffer Optimizations + +<table> +<tr> +<th>Macro</th> +<th>Description</th> +<th>Default</th> +</tr> +<tr> + <td>CX_ARRAY_SWAP_SBO_SIZE</td> + <td>The maximum item size in an array list that uses SBO.</td> + <td>128</td> +</tr> +<tr> + <td>CX_LINKED_LIST_SORT_SBO_SIZE</td> + <td>The maximum list size that uses SBO during sort.</td> + <td>1024</td> +</tr> +<tr> + <td>CX_PRINTF_SBO_SIZE</td> + <td>The maximum string length functions in printf.h use stack memory for.</td> + <td>512</td> +</tr> +<tr> + <td>CX_STRSTR_SBO_SIZE</td> + <td>The maximum length of the "needle" in cx_strstr that can use SBO.</td> + <td>128</td> +</tr> +</table> + + +### Other Buffers + +<table> +<tr> +<th>Macro</th> +<th>Description</th> +<th>Default</th> +</tr> +<tr> + <td>CX_STRREPLACE_INDEX_BUFFER_SIZE</td> + <td> + The number of matches the index buffer can store on the stack. + If the function finds more matches, more index buffers of the same size are allocated on the heap. + </td> + <td>64</td> +</tr> +<tr> + <td>CX_STREAM_COPY_BUF_SIZE</td> + <td>The buffer size on the stack for a stream copy.</td> + <td>1024</td> +</tr> +<tr> + <td>CX_STREAM_BCOPY_BUF_SIZE</td> + <td>The buffer size on the heap for a stream copy.</td> + <td>8192</td> +</tr> +</table>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/Writerside/topics/license.md Thu Jan 23 01:15:52 2025 +0100 @@ -0,0 +1,27 @@ +--- +title: License +--- + +Copyright 2017 - 2025 â“’ Mike Becker, Olaf Wintermann. All rights reserved. + +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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/Writerside/ucx.tree Thu Jan 23 01:15:52 2025 +0100 @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE instance-profile + SYSTEM "https://resources.jetbrains.com/writerside/1.0/product-profile.dtd"> + +<instance-profile id="ucx" + name="UAP Common Extensions" + start-page="about.md"> + <toc-element topic="about.md"/> + <toc-element topic="features.md"> + </toc-element> + <toc-element topic="install.md"/> + <toc-element topic="license.md" /> +</instance-profile> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/Writerside/writerside.cfg Thu Jan 23 01:15:52 2025 +0100 @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE ihp SYSTEM "https://resources.jetbrains.com/writerside/1.0/ihp.dtd"> + +<ihp version="2.0"> + <topics dir="topics" web-path="topics"/> + <images dir="images" web-path="images"/> + <instance src="ucx.tree" version="3.1"/> +</ihp> \ No newline at end of file
--- a/docs/api-2.1/allocator_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,600 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/allocator.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#typedef-members">Typedefs</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">allocator.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Allocator for custom memory management. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -</div> -<p><a href="allocator_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAllocator.html">UcxAllocator</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">UCX allocator data structure containing memory management functions. <a href="structUcxAllocator.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:ae1bc218fea8a35f4a3706f0beefcfb19"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#ae1bc218fea8a35f4a3706f0beefcfb19">almalloc</a>(allocator, n)   ((allocator)->malloc((allocator)->pool, n))</td></tr> -<tr class="memdesc:ae1bc218fea8a35f4a3706f0beefcfb19"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for calling an allocators malloc function. <a href="#ae1bc218fea8a35f4a3706f0beefcfb19">More...</a><br /></td></tr> -<tr class="separator:ae1bc218fea8a35f4a3706f0beefcfb19"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8d71470816f88f78cb9a9686c57e1b10"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a8d71470816f88f78cb9a9686c57e1b10">alcalloc</a>(allocator, n, size)   ((allocator)->calloc((allocator)->pool, n, size))</td></tr> -<tr class="memdesc:a8d71470816f88f78cb9a9686c57e1b10"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for calling an allocators calloc function. <a href="#a8d71470816f88f78cb9a9686c57e1b10">More...</a><br /></td></tr> -<tr class="separator:a8d71470816f88f78cb9a9686c57e1b10"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a029ee5c9bcbb3f873571553f788c5820"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a029ee5c9bcbb3f873571553f788c5820">alrealloc</a>(allocator, ptr, n)   ((allocator)->realloc((allocator)->pool, ptr, n))</td></tr> -<tr class="memdesc:a029ee5c9bcbb3f873571553f788c5820"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for calling an allocators realloc function. <a href="#a029ee5c9bcbb3f873571553f788c5820">More...</a><br /></td></tr> -<tr class="separator:a029ee5c9bcbb3f873571553f788c5820"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:acd775785b54e97dc2b33a432c12c8fb2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#acd775785b54e97dc2b33a432c12c8fb2">alfree</a>(allocator, ptr)   ((allocator)->free((allocator)->pool, ptr))</td></tr> -<tr class="memdesc:acd775785b54e97dc2b33a432c12c8fb2"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for calling an allocators free function. <a href="#acd775785b54e97dc2b33a432c12c8fb2">More...</a><br /></td></tr> -<tr class="separator:acd775785b54e97dc2b33a432c12c8fb2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a1283a8f875f90a7af3aba5e031fc2e3f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a1283a8f875f90a7af3aba5e031fc2e3f">UCX_ALLOCATOR_DEFAULT</a></td></tr> -<tr class="memdesc:a1283a8f875f90a7af3aba5e031fc2e3f"><td class="mdescLeft"> </td><td class="mdescRight">Convenient macro for a default allocator <code>struct</code> definition. <a href="#a1283a8f875f90a7af3aba5e031fc2e3f">More...</a><br /></td></tr> -<tr class="separator:a1283a8f875f90a7af3aba5e031fc2e3f"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> -Typedefs</h2></td></tr> -<tr class="memitem:a29f0f6a23a70db3b60635cd6dc384473"><td class="memItemLeft" align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473">ucx_allocator_malloc</a>) (void *pool, size_t n)</td></tr> -<tr class="memdesc:a29f0f6a23a70db3b60635cd6dc384473"><td class="mdescLeft"> </td><td class="mdescRight">A function pointer to the allocators <code>malloc()</code> function. <a href="#a29f0f6a23a70db3b60635cd6dc384473">More...</a><br /></td></tr> -<tr class="separator:a29f0f6a23a70db3b60635cd6dc384473"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2c0aba4221c1ac6801f03ed799f15b12"><td class="memItemLeft" align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12">ucx_allocator_calloc</a>) (void *pool, size_t n, size_t size)</td></tr> -<tr class="memdesc:a2c0aba4221c1ac6801f03ed799f15b12"><td class="mdescLeft"> </td><td class="mdescRight">A function pointer to the allocators <code>calloc()</code> function. <a href="#a2c0aba4221c1ac6801f03ed799f15b12">More...</a><br /></td></tr> -<tr class="separator:a2c0aba4221c1ac6801f03ed799f15b12"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a6d7cf038a806e327c5da37321d04e426"><td class="memItemLeft" align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a6d7cf038a806e327c5da37321d04e426">ucx_allocator_realloc</a>) (void *pool, void *data, size_t n)</td></tr> -<tr class="memdesc:a6d7cf038a806e327c5da37321d04e426"><td class="mdescLeft"> </td><td class="mdescRight">A function pointer to the allocators <code>realloc()</code> function. <a href="#a6d7cf038a806e327c5da37321d04e426">More...</a><br /></td></tr> -<tr class="separator:a6d7cf038a806e327c5da37321d04e426"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aaf2387ddaddd8ab4b267e6b00e5d6f7e"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e">ucx_allocator_free</a>) (void *pool, void *data)</td></tr> -<tr class="memdesc:aaf2387ddaddd8ab4b267e6b00e5d6f7e"><td class="mdescLeft"> </td><td class="mdescRight">A function pointer to the allocators <code>free()</code> function. <a href="#aaf2387ddaddd8ab4b267e6b00e5d6f7e">More...</a><br /></td></tr> -<tr class="separator:aaf2387ddaddd8ab4b267e6b00e5d6f7e"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:a98d2f1b341118b7a0e341fda5d8b2ebf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a> ()</td></tr> -<tr class="memdesc:a98d2f1b341118b7a0e341fda5d8b2ebf"><td class="mdescLeft"> </td><td class="mdescRight">Returns a pointer to the default allocator. <a href="#a98d2f1b341118b7a0e341fda5d8b2ebf">More...</a><br /></td></tr> -<tr class="separator:a98d2f1b341118b7a0e341fda5d8b2ebf"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a96403ebf3d2312d95f2fe7627a1cdbc0"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a96403ebf3d2312d95f2fe7627a1cdbc0">ucx_default_malloc</a> (void *ignore, size_t n)</td></tr> -<tr class="memdesc:a96403ebf3d2312d95f2fe7627a1cdbc0"><td class="mdescLeft"> </td><td class="mdescRight">A wrapper for the standard libc <code>malloc()</code> function. <a href="#a96403ebf3d2312d95f2fe7627a1cdbc0">More...</a><br /></td></tr> -<tr class="separator:a96403ebf3d2312d95f2fe7627a1cdbc0"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3a0bfdd13d887012309c459b339f338f"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a3a0bfdd13d887012309c459b339f338f">ucx_default_calloc</a> (void *ignore, size_t n, size_t size)</td></tr> -<tr class="memdesc:a3a0bfdd13d887012309c459b339f338f"><td class="mdescLeft"> </td><td class="mdescRight">A wrapper for the standard libc <code>calloc()</code> function. <a href="#a3a0bfdd13d887012309c459b339f338f">More...</a><br /></td></tr> -<tr class="separator:a3a0bfdd13d887012309c459b339f338f"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a47cfc8af626a86fcb93a2b14b90498ed"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a47cfc8af626a86fcb93a2b14b90498ed">ucx_default_realloc</a> (void *ignore, void *data, size_t n)</td></tr> -<tr class="memdesc:a47cfc8af626a86fcb93a2b14b90498ed"><td class="mdescLeft"> </td><td class="mdescRight">A wrapper for the standard libc <code>realloc()</code> function. <a href="#a47cfc8af626a86fcb93a2b14b90498ed">More...</a><br /></td></tr> -<tr class="separator:a47cfc8af626a86fcb93a2b14b90498ed"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a646d83aaaadfe33ae414c0fad8bfc52a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html#a646d83aaaadfe33ae414c0fad8bfc52a">ucx_default_free</a> (void *ignore, void *data)</td></tr> -<tr class="memdesc:a646d83aaaadfe33ae414c0fad8bfc52a"><td class="mdescLeft"> </td><td class="mdescRight">A wrapper for the standard libc <code>free()</code> function. <a href="#a646d83aaaadfe33ae414c0fad8bfc52a">More...</a><br /></td></tr> -<tr class="separator:a646d83aaaadfe33ae414c0fad8bfc52a"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Allocator for custom memory management. </p> -<p>A UCX allocator consists of a pointer to the memory area / pool and four function pointers to memory management functions operating on this memory area / pool. These functions shall behave equivalent to the standard libc functions <code>malloc(), calloc(), realloc()</code> and <code>free()</code>.</p> -<p>The signature of the memory management functions is based on the signature of the respective libc function but each of them takes the pointer to the memory area / pool as first argument.</p> -<p>As the pointer to the memory area / pool can be arbitrarily chosen, any data can be provided to the memory management functions. A <a class="el" href="structUcxMempool.html" title="UCX mempool structure. ">UcxMempool</a> is just one example.</p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="mempool_8h.html" title="Memory pool implementation. ">mempool.h</a> </dd> -<dd> -<a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a></dd></dl> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a8d71470816f88f78cb9a9686c57e1b10"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8d71470816f88f78cb9a9686c57e1b10">◆ </a></span>alcalloc</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define alcalloc</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">allocator, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">n, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">size </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   ((allocator)->calloc((allocator)->pool, n, size))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for calling an allocators calloc function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - <tr><td class="paramname">n</td><td>the count of elements the space should be allocated for </td></tr> - <tr><td class="paramname">size</td><td>the size of each element </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the allocated memory area </dd></dl> - -</div> -</div> -<a id="acd775785b54e97dc2b33a432c12c8fb2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#acd775785b54e97dc2b33a432c12c8fb2">◆ </a></span>alfree</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define alfree</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">allocator, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">ptr </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   ((allocator)->free((allocator)->pool, ptr))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for calling an allocators free function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - <tr><td class="paramname">ptr</td><td>the pointer to the memory area that shall be freed </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="ae1bc218fea8a35f4a3706f0beefcfb19"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae1bc218fea8a35f4a3706f0beefcfb19">◆ </a></span>almalloc</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define almalloc</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">allocator, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">n </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   ((allocator)->malloc((allocator)->pool, n))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for calling an allocators malloc function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - <tr><td class="paramname">n</td><td>size of space to allocate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the allocated memory area </dd></dl> - -</div> -</div> -<a id="a029ee5c9bcbb3f873571553f788c5820"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a029ee5c9bcbb3f873571553f788c5820">◆ </a></span>alrealloc</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define alrealloc</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">allocator, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">ptr, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">n </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   ((allocator)->realloc((allocator)->pool, ptr, n))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for calling an allocators realloc function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - <tr><td class="paramname">ptr</td><td>the pointer to the memory area that shall be reallocated </td></tr> - <tr><td class="paramname">n</td><td>the new size of the allocated memory area </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the reallocated memory area </dd></dl> - -</div> -</div> -<a id="a1283a8f875f90a7af3aba5e031fc2e3f"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1283a8f875f90a7af3aba5e031fc2e3f">◆ </a></span>UCX_ALLOCATOR_DEFAULT</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_ALLOCATOR_DEFAULT</td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line">{NULL, \</div><div class="line"> ucx_default_malloc, <a class="code" href="allocator_8h.html#a3a0bfdd13d887012309c459b339f338f">ucx_default_calloc</a>, <a class="code" href="allocator_8h.html#a47cfc8af626a86fcb93a2b14b90498ed">ucx_default_realloc</a>, \</div><div class="line"> ucx_default_free }</div><div class="ttc" id="allocator_8h_html_a3a0bfdd13d887012309c459b339f338f"><div class="ttname"><a href="allocator_8h.html#a3a0bfdd13d887012309c459b339f338f">ucx_default_calloc</a></div><div class="ttdeci">void * ucx_default_calloc(void *ignore, size_t n, size_t size)</div><div class="ttdoc">A wrapper for the standard libc calloc() function. </div><div class="ttdef"><b>Definition:</b> allocator.c:50</div></div> -<div class="ttc" id="allocator_8h_html_a47cfc8af626a86fcb93a2b14b90498ed"><div class="ttname"><a href="allocator_8h.html#a47cfc8af626a86fcb93a2b14b90498ed">ucx_default_realloc</a></div><div class="ttdeci">void * ucx_default_realloc(void *ignore, void *data, size_t n)</div><div class="ttdoc">A wrapper for the standard libc realloc() function. </div><div class="ttdef"><b>Definition:</b> allocator.c:54</div></div> -</div><!-- fragment --> -<p>Convenient macro for a default allocator <code>struct</code> definition. </p> - -</div> -</div> -<h2 class="groupheader">Typedef Documentation</h2> -<a id="a2c0aba4221c1ac6801f03ed799f15b12"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2c0aba4221c1ac6801f03ed799f15b12">◆ </a></span>ucx_allocator_calloc</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef void*(* ucx_allocator_calloc) (void *pool, size_t n, size_t size)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A function pointer to the allocators <code>calloc()</code> function. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> </dd></dl> - -</div> -</div> -<a id="aaf2387ddaddd8ab4b267e6b00e5d6f7e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aaf2387ddaddd8ab4b267e6b00e5d6f7e">◆ </a></span>ucx_allocator_free</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef void(* ucx_allocator_free) (void *pool, void *data)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A function pointer to the allocators <code>free()</code> function. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> </dd></dl> - -</div> -</div> -<a id="a29f0f6a23a70db3b60635cd6dc384473"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a29f0f6a23a70db3b60635cd6dc384473">◆ </a></span>ucx_allocator_malloc</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef void*(* ucx_allocator_malloc) (void *pool, size_t n)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A function pointer to the allocators <code>malloc()</code> function. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> </dd></dl> - -</div> -</div> -<a id="a6d7cf038a806e327c5da37321d04e426"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6d7cf038a806e327c5da37321d04e426">◆ </a></span>ucx_allocator_realloc</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef void*(* ucx_allocator_realloc) (void *pool, void *data, size_t n)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A function pointer to the allocators <code>realloc()</code> function. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> </dd></dl> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="a98d2f1b341118b7a0e341fda5d8b2ebf"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a98d2f1b341118b7a0e341fda5d8b2ebf">◆ </a></span>ucx_default_allocator()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxAllocator.html">UcxAllocator</a>* ucx_default_allocator </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a pointer to the default allocator. </p> -<p>The default allocator contains wrappers to the standard libc memory management functions. Use this function to get a pointer to a globally available allocator. You may also define an own <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> by assigning <a class="el" href="allocator_8h.html#a1283a8f875f90a7af3aba5e031fc2e3f" title="Convenient macro for a default allocator struct definition. ">UCX_ALLOCATOR_DEFAULT</a> to a variable and pass the address of this variable to any function that takes a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> as argument. Note that using this function is the recommended way of passing a default allocator, thus it never runs out of scope.</p> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the default allocator</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="allocator_8h.html#a1283a8f875f90a7af3aba5e031fc2e3f" title="Convenient macro for a default allocator struct definition. ">UCX_ALLOCATOR_DEFAULT</a> </dd></dl> - -</div> -</div> -<a id="a3a0bfdd13d887012309c459b339f338f"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3a0bfdd13d887012309c459b339f338f">◆ </a></span>ucx_default_calloc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_default_calloc </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ignore</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>size</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A wrapper for the standard libc <code>calloc()</code> function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">ignore</td><td>ignored (may be used by allocators for pooled memory) </td></tr> - <tr><td class="paramname">n</td><td>argument passed to <code>calloc()</code> </td></tr> - <tr><td class="paramname">size</td><td>argument passed to <code>calloc()</code> </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>return value of <code>calloc()</code> </dd></dl> - -</div> -</div> -<a id="a646d83aaaadfe33ae414c0fad8bfc52a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a646d83aaaadfe33ae414c0fad8bfc52a">◆ </a></span>ucx_default_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_default_free </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ignore</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A wrapper for the standard libc <code>free()</code> function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">ignore</td><td>ignored (may be used by allocators for pooled memory) </td></tr> - <tr><td class="paramname">data</td><td>argument passed to <code>free()</code> </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a96403ebf3d2312d95f2fe7627a1cdbc0"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a96403ebf3d2312d95f2fe7627a1cdbc0">◆ </a></span>ucx_default_malloc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_default_malloc </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ignore</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A wrapper for the standard libc <code>malloc()</code> function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">ignore</td><td>ignored (may be used by allocators for pooled memory) </td></tr> - <tr><td class="paramname">n</td><td>argument passed to <code>malloc()</code> </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>return value of <code>malloc()</code> </dd></dl> - -</div> -</div> -<a id="a47cfc8af626a86fcb93a2b14b90498ed"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a47cfc8af626a86fcb93a2b14b90498ed">◆ </a></span>ucx_default_realloc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_default_realloc </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ignore</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A wrapper for the standard libc <code>realloc()</code> function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">ignore</td><td>ignored (may be used by allocators for pooled memory) </td></tr> - <tr><td class="paramname">data</td><td>argumend passed to <code>realloc()</code> </td></tr> - <tr><td class="paramname">n</td><td>argument passed to <code>realloc()</code> </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>return value of <code>realloc()</code> </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/allocator_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/allocator.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">allocator.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="allocator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#ifndef UCX_ALLOCATOR_H</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#define UCX_ALLOCATOR_H</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473"> 65</a></span> <span class="keyword">typedef</span> <span class="keywordtype">void</span>*(*ucx_allocator_malloc)(<span class="keywordtype">void</span> *pool, <span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12"> 71</a></span> <span class="keyword">typedef</span> <span class="keywordtype">void</span>*(*ucx_allocator_calloc)(<span class="keywordtype">void</span> *pool, <span class="keywordtype">size_t</span> n, <span class="keywordtype">size_t</span> size);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="allocator_8h.html#a6d7cf038a806e327c5da37321d04e426"> 77</a></span> <span class="keyword">typedef</span> <span class="keywordtype">void</span>*(*ucx_allocator_realloc)(<span class="keywordtype">void</span> *pool, <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e"> 83</a></span> <span class="keyword">typedef</span> void(*<a class="code" href="allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e">ucx_allocator_free</a>)(<span class="keywordtype">void</span> *pool, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="structUcxAllocator.html"> 88</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="structUcxAllocator.html#a1b78012998d1c28be86dc595f8f0aac9"> 93</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structUcxAllocator.html#a1b78012998d1c28be86dc595f8f0aac9">pool</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a"> 97</a></span>  <a class="code" href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473">ucx_allocator_malloc</a> <a class="code" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a">malloc</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structUcxAllocator.html#ab94ec1cba45cc4e7d81e1588a11cbb62"> 101</a></span>  <a class="code" href="allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12">ucx_allocator_calloc</a> <a class="code" href="structUcxAllocator.html#ab94ec1cba45cc4e7d81e1588a11cbb62">calloc</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="structUcxAllocator.html#a3550e3847f31d9e9ce3ffcb0d3440c15"> 105</a></span>  <a class="code" href="allocator_8h.html#a6d7cf038a806e327c5da37321d04e426">ucx_allocator_realloc</a> <a class="code" href="structUcxAllocator.html#a3550e3847f31d9e9ce3ffcb0d3440c15">realloc</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f"> 109</a></span>  <a class="code" href="allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e">ucx_allocator_free</a> <a class="code" href="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f">free</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> } <a class="code" href="structUcxAllocator.html">UcxAllocator</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keywordtype">void</span> *<a class="code" href="allocator_8h.html#a96403ebf3d2312d95f2fe7627a1cdbc0">ucx_default_malloc</a>(<span class="keywordtype">void</span> *ignore, <span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="keywordtype">void</span> *<a class="code" href="allocator_8h.html#a3a0bfdd13d887012309c459b339f338f">ucx_default_calloc</a>(<span class="keywordtype">void</span> *ignore, <span class="keywordtype">size_t</span> n, <span class="keywordtype">size_t</span> size);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keywordtype">void</span> *<a class="code" href="allocator_8h.html#a47cfc8af626a86fcb93a2b14b90498ed">ucx_default_realloc</a>(<span class="keywordtype">void</span> *ignore, <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="keywordtype">void</span> <a class="code" href="allocator_8h.html#a646d83aaaadfe33ae414c0fad8bfc52a">ucx_default_free</a>(<span class="keywordtype">void</span> *ignore, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="allocator_8h.html#ae1bc218fea8a35f4a3706f0beefcfb19"> 165</a></span> <span class="preprocessor">#define almalloc(allocator, n) ((allocator)->malloc((allocator)->pool, n))</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="allocator_8h.html#a8d71470816f88f78cb9a9686c57e1b10"> 174</a></span> <span class="preprocessor">#define alcalloc(allocator, n, size) \</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor"> ((allocator)->calloc((allocator)->pool, n, size))</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="allocator_8h.html#a029ee5c9bcbb3f873571553f788c5820"> 184</a></span> <span class="preprocessor">#define alrealloc(allocator, ptr, n) \</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor"> ((allocator)->realloc((allocator)->pool, ptr, n))</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="allocator_8h.html#acd775785b54e97dc2b33a432c12c8fb2"> 192</a></span> <span class="preprocessor">#define alfree(allocator, ptr) ((allocator)->free((allocator)->pool, ptr))</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="allocator_8h.html#a1283a8f875f90a7af3aba5e031fc2e3f"> 197</a></span> <span class="preprocessor">#define UCX_ALLOCATOR_DEFAULT {NULL, \</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor"> ucx_default_malloc, ucx_default_calloc, ucx_default_realloc, \</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor"> ucx_default_free }</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_ALLOCATOR_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="allocator_8h_html_a96403ebf3d2312d95f2fe7627a1cdbc0"><div class="ttname"><a href="allocator_8h.html#a96403ebf3d2312d95f2fe7627a1cdbc0">ucx_default_malloc</a></div><div class="ttdeci">void * ucx_default_malloc(void *ignore, size_t n)</div><div class="ttdoc">A wrapper for the standard libc malloc() function. </div><div class="ttdef"><b>Definition:</b> allocator.c:46</div></div> -<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div> -<div class="ttc" id="structUcxAllocator_html_a013376172be39ed54f77c4be6898845a"><div class="ttname"><a href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a">UcxAllocator::malloc</a></div><div class="ttdeci">ucx_allocator_malloc malloc</div><div class="ttdoc">The malloc() function for this allocator. </div><div class="ttdef"><b>Definition:</b> allocator.h:97</div></div> -<div class="ttc" id="allocator_8h_html_a2c0aba4221c1ac6801f03ed799f15b12"><div class="ttname"><a href="allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12">ucx_allocator_calloc</a></div><div class="ttdeci">void *(* ucx_allocator_calloc)(void *pool, size_t n, size_t size)</div><div class="ttdoc">A function pointer to the allocators calloc() function. </div><div class="ttdef"><b>Definition:</b> allocator.h:71</div></div> -<div class="ttc" id="structUcxAllocator_html_aecce1840378ed53f1002190f4f87026f"><div class="ttname"><a href="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f">UcxAllocator::free</a></div><div class="ttdeci">ucx_allocator_free free</div><div class="ttdoc">The free() function for this allocator. </div><div class="ttdef"><b>Definition:</b> allocator.h:109</div></div> -<div class="ttc" id="allocator_8h_html_a29f0f6a23a70db3b60635cd6dc384473"><div class="ttname"><a href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473">ucx_allocator_malloc</a></div><div class="ttdeci">void *(* ucx_allocator_malloc)(void *pool, size_t n)</div><div class="ttdoc">A function pointer to the allocators malloc() function. </div><div class="ttdef"><b>Definition:</b> allocator.h:65</div></div> -<div class="ttc" id="allocator_8h_html_a98d2f1b341118b7a0e341fda5d8b2ebf"><div class="ttname"><a href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a></div><div class="ttdeci">UcxAllocator * ucx_default_allocator()</div><div class="ttdoc">Returns a pointer to the default allocator. </div><div class="ttdef"><b>Definition:</b> allocator.c:41</div></div> -<div class="ttc" id="allocator_8h_html_a3a0bfdd13d887012309c459b339f338f"><div class="ttname"><a href="allocator_8h.html#a3a0bfdd13d887012309c459b339f338f">ucx_default_calloc</a></div><div class="ttdeci">void * ucx_default_calloc(void *ignore, size_t n, size_t size)</div><div class="ttdoc">A wrapper for the standard libc calloc() function. </div><div class="ttdef"><b>Definition:</b> allocator.c:50</div></div> -<div class="ttc" id="allocator_8h_html_a6d7cf038a806e327c5da37321d04e426"><div class="ttname"><a href="allocator_8h.html#a6d7cf038a806e327c5da37321d04e426">ucx_allocator_realloc</a></div><div class="ttdeci">void *(* ucx_allocator_realloc)(void *pool, void *data, size_t n)</div><div class="ttdoc">A function pointer to the allocators realloc() function. </div><div class="ttdef"><b>Definition:</b> allocator.h:77</div></div> -<div class="ttc" id="allocator_8h_html_a47cfc8af626a86fcb93a2b14b90498ed"><div class="ttname"><a href="allocator_8h.html#a47cfc8af626a86fcb93a2b14b90498ed">ucx_default_realloc</a></div><div class="ttdeci">void * ucx_default_realloc(void *ignore, void *data, size_t n)</div><div class="ttdoc">A wrapper for the standard libc realloc() function. </div><div class="ttdef"><b>Definition:</b> allocator.c:54</div></div> -<div class="ttc" id="allocator_8h_html_aaf2387ddaddd8ab4b267e6b00e5d6f7e"><div class="ttname"><a href="allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e">ucx_allocator_free</a></div><div class="ttdeci">void(* ucx_allocator_free)(void *pool, void *data)</div><div class="ttdoc">A function pointer to the allocators free() function. </div><div class="ttdef"><b>Definition:</b> allocator.h:83</div></div> -<div class="ttc" id="structUcxAllocator_html_ab94ec1cba45cc4e7d81e1588a11cbb62"><div class="ttname"><a href="structUcxAllocator.html#ab94ec1cba45cc4e7d81e1588a11cbb62">UcxAllocator::calloc</a></div><div class="ttdeci">ucx_allocator_calloc calloc</div><div class="ttdoc">The calloc() function for this allocator. </div><div class="ttdef"><b>Definition:</b> allocator.h:101</div></div> -<div class="ttc" id="allocator_8h_html_a646d83aaaadfe33ae414c0fad8bfc52a"><div class="ttname"><a href="allocator_8h.html#a646d83aaaadfe33ae414c0fad8bfc52a">ucx_default_free</a></div><div class="ttdeci">void ucx_default_free(void *ignore, void *data)</div><div class="ttdoc">A wrapper for the standard libc free() function. </div><div class="ttdef"><b>Definition:</b> allocator.c:58</div></div> -<div class="ttc" id="structUcxAllocator_html_a3550e3847f31d9e9ce3ffcb0d3440c15"><div class="ttname"><a href="structUcxAllocator.html#a3550e3847f31d9e9ce3ffcb0d3440c15">UcxAllocator::realloc</a></div><div class="ttdeci">ucx_allocator_realloc realloc</div><div class="ttdoc">The realloc() function for this allocator. </div><div class="ttdef"><b>Definition:</b> allocator.h:105</div></div> -<div class="ttc" id="structUcxAllocator_html_a1b78012998d1c28be86dc595f8f0aac9"><div class="ttname"><a href="structUcxAllocator.html#a1b78012998d1c28be86dc595f8f0aac9">UcxAllocator::pool</a></div><div class="ttdeci">void * pool</div><div class="ttdoc">Pointer to an area of memory or a complex memory pool. </div><div class="ttdef"><b>Definition:</b> allocator.h:93</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/annotated.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Data Structures</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="header"> - <div class="headertitle"> -<div class="title">Data Structures</div> </div> -</div><!--header--> -<div class="contents"> -<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory"> -<table class="directory"> -<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structscstr__t.html" target="_self">scstr_t</a></td><td class="desc">The UCX string structure for immutable (constant) strings </td></tr> -<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsstr__t.html" target="_self">sstr_t</a></td><td class="desc">The UCX string structure </td></tr> -<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structucx__memchunk.html" target="_self">ucx_memchunk</a></td><td class="desc">Capsule for destructible memory chunks </td></tr> -<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structucx__regdestr.html" target="_self">ucx_regdestr</a></td><td class="desc">Capsule for data and its destructor </td></tr> -<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structucx__stack__metadata.html" target="_self">ucx_stack_metadata</a></td><td class="desc">Metadata for each UCX stack element </td></tr> -<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxAllocator.html" target="_self">UcxAllocator</a></td><td class="desc">UCX allocator data structure containing memory management functions </td></tr> -<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxArray.html" target="_self">UcxArray</a></td><td class="desc">UCX array type </td></tr> -<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxAVLNode.html" target="_self">UcxAVLNode</a></td><td class="desc">UCX AVL Node </td></tr> -<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxAVLTree.html" target="_self">UcxAVLTree</a></td><td class="desc">UCX AVL Tree </td></tr> -<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxBuffer.html" target="_self">UcxBuffer</a></td><td class="desc">UCX Buffer </td></tr> -<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxKey.html" target="_self">UcxKey</a></td><td class="desc">Structure to publicly denote a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a> </td></tr> -<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxList.html" target="_self">UcxList</a></td><td class="desc">UCX list structure </td></tr> -<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxLogger.html" target="_self">UcxLogger</a></td><td class="desc">The UCX Logger object </td></tr> -<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxMap.html" target="_self">UcxMap</a></td><td class="desc">Structure for the UCX map </td></tr> -<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxMapElement.html" target="_self">UcxMapElement</a></td><td class="desc">Structure for an element of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a> </td></tr> -<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxMapIterator.html" target="_self">UcxMapIterator</a></td><td class="desc">Structure for an iterator over a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a> </td></tr> -<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxMapKey.html" target="_self">UcxMapKey</a></td><td class="desc">Internal structure for a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a> </td></tr> -<tr id="row_17_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxMempool.html" target="_self">UcxMempool</a></td><td class="desc">UCX mempool structure </td></tr> -<tr id="row_18_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxProperties.html" target="_self">UcxProperties</a></td><td class="desc"><a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object for parsing properties data </td></tr> -<tr id="row_19_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxStack.html" target="_self">UcxStack</a></td><td class="desc">UCX stack structure </td></tr> -<tr id="row_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxTestList.html" target="_self">UcxTestList</a></td><td class="desc">Structure for the internal list of test cases </td></tr> -<tr id="row_21_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structUcxTestSuite.html" target="_self">UcxTestSuite</a></td><td class="desc">A test suite containing multiple test cases </td></tr> -</table> -</div><!-- directory --> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/array_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1376 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/array.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">array.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Dynamically allocated array implementation. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> -</div> -<p><a href="array_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxArray.html">UcxArray</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">UCX array type. <a href="structUcxArray.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:a1d959c29af3125bdd37cde3a554e729c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a1d959c29af3125bdd37cde3a554e729c">ucx_array_util_set</a>(array, capacity, elmsize, idx, data)</td></tr> -<tr class="memdesc:a1d959c29af3125bdd37cde3a554e729c"><td class="mdescLeft"> </td><td class="mdescRight">Sets an element in an arbitrary user defined array. <a href="#a1d959c29af3125bdd37cde3a554e729c">More...</a><br /></td></tr> -<tr class="separator:a1d959c29af3125bdd37cde3a554e729c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a59a5b342965e790945f9c7a3f86b99f9"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a59a5b342965e790945f9c7a3f86b99f9">ucx_array_util_setptr</a>(array, capacity, idx, ptr)</td></tr> -<tr class="memdesc:a59a5b342965e790945f9c7a3f86b99f9"><td class="mdescLeft"> </td><td class="mdescRight">Stores a pointer in an arbitrary user defined array. <a href="#a59a5b342965e790945f9c7a3f86b99f9">More...</a><br /></td></tr> -<tr class="separator:a59a5b342965e790945f9c7a3f86b99f9"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:ad0a8d76980cf1c1910e64a245803fb9a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#ad0a8d76980cf1c1910e64a245803fb9a">ucx_array_util_set_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *alloc, void **array, size_t *capacity, size_t elmsize, size_t idx, void *data)</td></tr> -<tr class="memdesc:ad0a8d76980cf1c1910e64a245803fb9a"><td class="mdescLeft"> </td><td class="mdescRight">Sets an element in an arbitrary user defined array. <a href="#ad0a8d76980cf1c1910e64a245803fb9a">More...</a><br /></td></tr> -<tr class="separator:ad0a8d76980cf1c1910e64a245803fb9a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad708b333c0c1b02c998309a58ea65e31"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#ad708b333c0c1b02c998309a58ea65e31">ucx_array_util_setptr_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *alloc, void **array, size_t *capacity, size_t idx, void *ptr)</td></tr> -<tr class="memdesc:ad708b333c0c1b02c998309a58ea65e31"><td class="mdescLeft"> </td><td class="mdescRight">Stores a pointer in an arbitrary user defined array. <a href="#ad708b333c0c1b02c998309a58ea65e31">More...</a><br /></td></tr> -<tr class="separator:ad708b333c0c1b02c998309a58ea65e31"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a994a2fbf1c33a3833e2a70cd9a4352b7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxArray.html">UcxArray</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a994a2fbf1c33a3833e2a70cd9a4352b7">ucx_array_new</a> (size_t capacity, size_t elemsize)</td></tr> -<tr class="memdesc:a994a2fbf1c33a3833e2a70cd9a4352b7"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new UCX array with the given capacity and element size. <a href="#a994a2fbf1c33a3833e2a70cd9a4352b7">More...</a><br /></td></tr> -<tr class="separator:a994a2fbf1c33a3833e2a70cd9a4352b7"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a177170258c215eb2e4f5a32e59f0cb1b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxArray.html">UcxArray</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a177170258c215eb2e4f5a32e59f0cb1b">ucx_array_new_a</a> (size_t capacity, size_t elemsize, <a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator)</td></tr> -<tr class="memdesc:a177170258c215eb2e4f5a32e59f0cb1b"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new UCX array using the specified allocator. <a href="#a177170258c215eb2e4f5a32e59f0cb1b">More...</a><br /></td></tr> -<tr class="separator:a177170258c215eb2e4f5a32e59f0cb1b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad921e85c28ffae32230777a53c5037e5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#ad921e85c28ffae32230777a53c5037e5">ucx_array_init</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, size_t capacity, size_t elemsize)</td></tr> -<tr class="memdesc:ad921e85c28ffae32230777a53c5037e5"><td class="mdescLeft"> </td><td class="mdescRight">Initializes a UCX array structure with the given capacity and element size. <a href="#ad921e85c28ffae32230777a53c5037e5">More...</a><br /></td></tr> -<tr class="separator:ad921e85c28ffae32230777a53c5037e5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2451e61ebb15a7ba1c1319267ba75b8c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a2451e61ebb15a7ba1c1319267ba75b8c">ucx_array_init_a</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, size_t capacity, size_t elemsize, <a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator)</td></tr> -<tr class="memdesc:a2451e61ebb15a7ba1c1319267ba75b8c"><td class="mdescLeft"> </td><td class="mdescRight">Initializes a UCX array structure using the specified allocator. <a href="#a2451e61ebb15a7ba1c1319267ba75b8c">More...</a><br /></td></tr> -<tr class="separator:a2451e61ebb15a7ba1c1319267ba75b8c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4a8c273370e4a3a3e2624e364f5ab410"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a4a8c273370e4a3a3e2624e364f5ab410">ucx_array_clone</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *dest, <a class="el" href="structUcxArray.html">UcxArray</a> const *src)</td></tr> -<tr class="memdesc:a4a8c273370e4a3a3e2624e364f5ab410"><td class="mdescLeft"> </td><td class="mdescRight">Creates an shallow copy of an array. <a href="#a4a8c273370e4a3a3e2624e364f5ab410">More...</a><br /></td></tr> -<tr class="separator:a4a8c273370e4a3a3e2624e364f5ab410"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a43292b448adb1741677aa8c578bcc201"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a43292b448adb1741677aa8c578bcc201">ucx_array_equals</a> (<a class="el" href="structUcxArray.html">UcxArray</a> const *array1, <a class="el" href="structUcxArray.html">UcxArray</a> const *array2, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr> -<tr class="memdesc:a43292b448adb1741677aa8c578bcc201"><td class="mdescLeft"> </td><td class="mdescRight">Compares two UCX arrays element-wise by using a compare function. <a href="#a43292b448adb1741677aa8c578bcc201">More...</a><br /></td></tr> -<tr class="separator:a43292b448adb1741677aa8c578bcc201"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8e83681d8d5d8cddbf10f63ce5be4c10"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a8e83681d8d5d8cddbf10f63ce5be4c10">ucx_array_destroy</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array)</td></tr> -<tr class="memdesc:a8e83681d8d5d8cddbf10f63ce5be4c10"><td class="mdescLeft"> </td><td class="mdescRight">Destroys the array. <a href="#a8e83681d8d5d8cddbf10f63ce5be4c10">More...</a><br /></td></tr> -<tr class="separator:a8e83681d8d5d8cddbf10f63ce5be4c10"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac01ee914468a16f470bf3071fffbe438"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#ac01ee914468a16f470bf3071fffbe438">ucx_array_free</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array)</td></tr> -<tr class="memdesc:ac01ee914468a16f470bf3071fffbe438"><td class="mdescLeft"> </td><td class="mdescRight">Destroys and frees the array. <a href="#ac01ee914468a16f470bf3071fffbe438">More...</a><br /></td></tr> -<tr class="separator:ac01ee914468a16f470bf3071fffbe438"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aea01731ad94ea73c0c8fb1d1b7a35fcf"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#aea01731ad94ea73c0c8fb1d1b7a35fcf">ucx_array_append_from</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, void *data, size_t count)</td></tr> -<tr class="memdesc:aea01731ad94ea73c0c8fb1d1b7a35fcf"><td class="mdescLeft"> </td><td class="mdescRight">Inserts elements at the end of the array. <a href="#aea01731ad94ea73c0c8fb1d1b7a35fcf">More...</a><br /></td></tr> -<tr class="separator:aea01731ad94ea73c0c8fb1d1b7a35fcf"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a95b52acc2193b5c33cf0eaa4f2082477"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a95b52acc2193b5c33cf0eaa4f2082477">ucx_array_prepend_from</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, void *data, size_t count)</td></tr> -<tr class="memdesc:a95b52acc2193b5c33cf0eaa4f2082477"><td class="mdescLeft"> </td><td class="mdescRight">Inserts elements at the beginning of the array. <a href="#a95b52acc2193b5c33cf0eaa4f2082477">More...</a><br /></td></tr> -<tr class="separator:a95b52acc2193b5c33cf0eaa4f2082477"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a1bb545d065358d265d80d815ba382a28"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a1bb545d065358d265d80d815ba382a28">ucx_array_set_from</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, size_t index, void *data, size_t count)</td></tr> -<tr class="memdesc:a1bb545d065358d265d80d815ba382a28"><td class="mdescLeft"> </td><td class="mdescRight">Sets elements starting at the specified index. <a href="#a1bb545d065358d265d80d815ba382a28">More...</a><br /></td></tr> -<tr class="separator:a1bb545d065358d265d80d815ba382a28"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa5a0bf3d3f0df6406beb0e569021cc28"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#aa5a0bf3d3f0df6406beb0e569021cc28">ucx_array_concat</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array1, const <a class="el" href="structUcxArray.html">UcxArray</a> *array2)</td></tr> -<tr class="memdesc:aa5a0bf3d3f0df6406beb0e569021cc28"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates two arrays. <a href="#aa5a0bf3d3f0df6406beb0e569021cc28">More...</a><br /></td></tr> -<tr class="separator:aa5a0bf3d3f0df6406beb0e569021cc28"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa698085fd1a8b70d6b709999c51b49e8"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#aa698085fd1a8b70d6b709999c51b49e8">ucx_array_at</a> (<a class="el" href="structUcxArray.html">UcxArray</a> const *array, size_t index)</td></tr> -<tr class="memdesc:aa698085fd1a8b70d6b709999c51b49e8"><td class="mdescLeft"> </td><td class="mdescRight">Returns a pointer to the array element at the specified index. <a href="#aa698085fd1a8b70d6b709999c51b49e8">More...</a><br /></td></tr> -<tr class="separator:aa698085fd1a8b70d6b709999c51b49e8"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae7bdbed94afee9b20b38b95e3ab470f0"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#ae7bdbed94afee9b20b38b95e3ab470f0">ucx_array_find</a> (<a class="el" href="structUcxArray.html">UcxArray</a> const *array, void *elem, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr> -<tr class="memdesc:ae7bdbed94afee9b20b38b95e3ab470f0"><td class="mdescLeft"> </td><td class="mdescRight">Returns the index of an element containing the specified data. <a href="#ae7bdbed94afee9b20b38b95e3ab470f0">More...</a><br /></td></tr> -<tr class="separator:ae7bdbed94afee9b20b38b95e3ab470f0"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5241058cd2329147bc5b1593ae7e51dc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a5241058cd2329147bc5b1593ae7e51dc">ucx_array_contains</a> (<a class="el" href="structUcxArray.html">UcxArray</a> const *array, void *elem, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr> -<tr class="memdesc:a5241058cd2329147bc5b1593ae7e51dc"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if an array contains a specific element. <a href="#a5241058cd2329147bc5b1593ae7e51dc">More...</a><br /></td></tr> -<tr class="separator:a5241058cd2329147bc5b1593ae7e51dc"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:add773514569b872a6624381b4b6af52c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#add773514569b872a6624381b4b6af52c">ucx_array_sort</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr> -<tr class="memdesc:add773514569b872a6624381b4b6af52c"><td class="mdescLeft"> </td><td class="mdescRight">Sorts a <a class="el" href="structUcxArray.html" title="UCX array type. ">UcxArray</a> with the best available sort algorithm. <a href="#add773514569b872a6624381b4b6af52c">More...</a><br /></td></tr> -<tr class="separator:add773514569b872a6624381b4b6af52c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa45eac6b697f83adac81c0860cf306b8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#aa45eac6b697f83adac81c0860cf306b8">ucx_array_remove</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, size_t index)</td></tr> -<tr class="memdesc:aa45eac6b697f83adac81c0860cf306b8"><td class="mdescLeft"> </td><td class="mdescRight">Removes an element from the array. <a href="#aa45eac6b697f83adac81c0860cf306b8">More...</a><br /></td></tr> -<tr class="separator:aa45eac6b697f83adac81c0860cf306b8"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a548d81b07612bae3ba8c4c4b49104b8e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a548d81b07612bae3ba8c4c4b49104b8e">ucx_array_remove_fast</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, size_t index)</td></tr> -<tr class="memdesc:a548d81b07612bae3ba8c4c4b49104b8e"><td class="mdescLeft"> </td><td class="mdescRight">Removes an element from the array. <a href="#a548d81b07612bae3ba8c4c4b49104b8e">More...</a><br /></td></tr> -<tr class="separator:a548d81b07612bae3ba8c4c4b49104b8e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2daf50e80aee9bccebee876a7efd2dfc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a2daf50e80aee9bccebee876a7efd2dfc">ucx_array_shrink</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array)</td></tr> -<tr class="memdesc:a2daf50e80aee9bccebee876a7efd2dfc"><td class="mdescLeft"> </td><td class="mdescRight">Shrinks the memory to exactly fit the contents. <a href="#a2daf50e80aee9bccebee876a7efd2dfc">More...</a><br /></td></tr> -<tr class="separator:a2daf50e80aee9bccebee876a7efd2dfc"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a27762e7c06a6c781015e3c8ceeee0ce3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a27762e7c06a6c781015e3c8ceeee0ce3">ucx_array_resize</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, size_t capacity)</td></tr> -<tr class="memdesc:a27762e7c06a6c781015e3c8ceeee0ce3"><td class="mdescLeft"> </td><td class="mdescRight">Sets the capacity of the array. <a href="#a27762e7c06a6c781015e3c8ceeee0ce3">More...</a><br /></td></tr> -<tr class="separator:a27762e7c06a6c781015e3c8ceeee0ce3"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a1c3bf8433c1de3c933f3854ab297fe1d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#a1c3bf8433c1de3c933f3854ab297fe1d">ucx_array_reserve</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, size_t capacity)</td></tr> -<tr class="memdesc:a1c3bf8433c1de3c933f3854ab297fe1d"><td class="mdescLeft"> </td><td class="mdescRight">Resizes the array only, if the capacity is insufficient. <a href="#a1c3bf8433c1de3c933f3854ab297fe1d">More...</a><br /></td></tr> -<tr class="separator:a1c3bf8433c1de3c933f3854ab297fe1d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ab0cbf243824aaebee48277315e03afce"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html#ab0cbf243824aaebee48277315e03afce">ucx_array_grow</a> (<a class="el" href="structUcxArray.html">UcxArray</a> *array, size_t count)</td></tr> -<tr class="memdesc:ab0cbf243824aaebee48277315e03afce"><td class="mdescLeft"> </td><td class="mdescRight">Resizes the capacity, if the specified number of elements would not fit. <a href="#ab0cbf243824aaebee48277315e03afce">More...</a><br /></td></tr> -<tr class="separator:ab0cbf243824aaebee48277315e03afce"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Dynamically allocated array implementation. </p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a1d959c29af3125bdd37cde3a554e729c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1d959c29af3125bdd37cde3a554e729c">◆ </a></span>ucx_array_util_set</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_array_util_set</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">array, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">capacity, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">elmsize, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">idx, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">data </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="array_8h.html#ad0a8d76980cf1c1910e64a245803fb9a">ucx_array_util_set_a</a>(<a class="code" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>(), (<span class="keywordtype">void</span>**)(array), capacity, \</div><div class="line"> elmsize, idx, data)</div><div class="ttc" id="array_8h_html_ad0a8d76980cf1c1910e64a245803fb9a"><div class="ttname"><a href="array_8h.html#ad0a8d76980cf1c1910e64a245803fb9a">ucx_array_util_set_a</a></div><div class="ttdeci">int ucx_array_util_set_a(UcxAllocator *alloc, void **array, size_t *capacity, size_t elmsize, size_t idx, void *data)</div><div class="ttdoc">Sets an element in an arbitrary user defined array. </div><div class="ttdef"><b>Definition:</b> array.c:72</div></div> -<div class="ttc" id="allocator_8h_html_a98d2f1b341118b7a0e341fda5d8b2ebf"><div class="ttname"><a href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a></div><div class="ttdeci">UcxAllocator * ucx_default_allocator()</div><div class="ttdoc">Returns a pointer to the default allocator. </div><div class="ttdef"><b>Definition:</b> allocator.c:41</div></div> -</div><!-- fragment --> -<p>Sets an element in an arbitrary user defined array. </p> -<p>The data is copied from the specified data location.</p> -<p>If the capacity is insufficient, the array is automatically reallocated and the possibly new pointer is stored in the <code>array</code> argument.</p> -<p>On reallocation the capacity of the array is doubled until it is sufficient. The new capacity is stored back to <code>capacity</code>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>a pointer to location of the array pointer </td></tr> - <tr><td class="paramname">capacity</td><td>a pointer to the capacity </td></tr> - <tr><td class="paramname">elmsize</td><td>the size of each element </td></tr> - <tr><td class="paramname">idx</td><td>the index of the element to set </td></tr> - <tr><td class="paramname">data</td><td>a pointer to the element data </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success or non-zero on error (errno will be set) </dd></dl> - -</div> -</div> -<a id="a59a5b342965e790945f9c7a3f86b99f9"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a59a5b342965e790945f9c7a3f86b99f9">◆ </a></span>ucx_array_util_setptr</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_array_util_setptr</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">array, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">capacity, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">idx, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">ptr </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="array_8h.html#ad708b333c0c1b02c998309a58ea65e31">ucx_array_util_setptr_a</a>(<a class="code" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>(), (<span class="keywordtype">void</span>**)(array), \</div><div class="line"> capacity, idx, ptr)</div><div class="ttc" id="allocator_8h_html_a98d2f1b341118b7a0e341fda5d8b2ebf"><div class="ttname"><a href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a></div><div class="ttdeci">UcxAllocator * ucx_default_allocator()</div><div class="ttdoc">Returns a pointer to the default allocator. </div><div class="ttdef"><b>Definition:</b> allocator.c:41</div></div> -<div class="ttc" id="array_8h_html_ad708b333c0c1b02c998309a58ea65e31"><div class="ttname"><a href="array_8h.html#ad708b333c0c1b02c998309a58ea65e31">ucx_array_util_setptr_a</a></div><div class="ttdeci">int ucx_array_util_setptr_a(UcxAllocator *alloc, void **array, size_t *capacity, size_t idx, void *ptr)</div><div class="ttdoc">Stores a pointer in an arbitrary user defined array. </div><div class="ttdef"><b>Definition:</b> array.c:112</div></div> -</div><!-- fragment --> -<p>Stores a pointer in an arbitrary user defined array. </p> -<p>The element size of the array must be sizeof(void*).</p> -<p>If the capacity is insufficient, the array is automatically reallocated and the possibly new pointer is stored in the <code>array</code> argument.</p> -<p>On reallocation the capacity of the array is doubled until it is sufficient. The new capacity is stored back to <code>capacity</code>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>a pointer to location of the array pointer </td></tr> - <tr><td class="paramname">capacity</td><td>a pointer to the capacity </td></tr> - <tr><td class="paramname">idx</td><td>the index of the element to set </td></tr> - <tr><td class="paramname">ptr</td><td>the pointer to store </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success or non-zero on error (errno will be set) </dd></dl> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="aea01731ad94ea73c0c8fb1d1b7a35fcf"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aea01731ad94ea73c0c8fb1d1b7a35fcf">◆ </a></span>ucx_array_append_from()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_append_from </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>count</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Inserts elements at the end of the array. </p> -<p>This is an O(1) operation. The array will automatically grow, if the capacity is exceeded. If a pointer to data is provided, the data is copied into the array with memcpy(). Otherwise the new elements are completely zeroed.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>a pointer the array where to append the data </td></tr> - <tr><td class="paramname">data</td><td>a pointer to the data to insert (may be <code>NULL</code>) </td></tr> - <tr><td class="paramname">count</td><td>number of elements to copy from data (if data is <code>NULL</code>, zeroed elements are appended) </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success, non-zero if a reallocation was necessary but failed </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="array_8h.html#a1bb545d065358d265d80d815ba382a28" title="Sets elements starting at the specified index. ">ucx_array_set_from()</a> </dd> -<dd> -ucx_array_append() </dd></dl> - -</div> -</div> -<a id="aa698085fd1a8b70d6b709999c51b49e8"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa698085fd1a8b70d6b709999c51b49e8">◆ </a></span>ucx_array_at()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_array_at </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> const * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>index</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a pointer to the array element at the specified index. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>the array to retrieve the element from </td></tr> - <tr><td class="paramname">index</td><td>index of the element to return </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the element at the specified index or <code>NULL</code>, if the index is greater than the array size </dd></dl> - -</div> -</div> -<a id="a4a8c273370e4a3a3e2624e364f5ab410"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4a8c273370e4a3a3e2624e364f5ab410">◆ </a></span>ucx_array_clone()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_clone </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>dest</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> const * </td> - <td class="paramname"><em>src</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates an shallow copy of an array. </p> -<p>This function clones the specified array by using memcpy(). If the destination capacity is insufficient, an automatic reallocation is attempted.</p> -<p>Note: if the destination array is uninitialized, the behavior is undefined.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">dest</td><td>the array to copy to </td></tr> - <tr><td class="paramname">src</td><td>the array to copy from </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success, non-zero on reallocation failure. </dd></dl> - -</div> -</div> -<a id="aa5a0bf3d3f0df6406beb0e569021cc28"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa5a0bf3d3f0df6406beb0e569021cc28">◆ </a></span>ucx_array_concat()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_concat </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array2</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Concatenates two arrays. </p> -<p>The contents of the second array are appended to the first array in one single operation. The second array is otherwise left untouched.</p> -<p>The first array may grow automatically. If this fails, both arrays remain unmodified.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array1</td><td>first array </td></tr> - <tr><td class="paramname">array2</td><td>second array </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success, non-zero if reallocation was necessary but failed or the element size does not match </dd></dl> - -</div> -</div> -<a id="a5241058cd2329147bc5b1593ae7e51dc"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a5241058cd2329147bc5b1593ae7e51dc">◆ </a></span>ucx_array_contains()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_contains </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> const * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>elem</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if an array contains a specific element. </p> -<p>An element is found, if <a class="el" href="array_8h.html#ae7bdbed94afee9b20b38b95e3ab470f0" title="Returns the index of an element containing the specified data. ">ucx_array_find()</a> returns a value less than the size.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>the array where to search for the data </td></tr> - <tr><td class="paramname">elem</td><td>the element data </td></tr> - <tr><td class="paramname">cmpfnc</td><td>the compare function </td></tr> - <tr><td class="paramname">data</td><td>additional data for the compare function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the array contains the specified element data </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="array_8h.html#ae7bdbed94afee9b20b38b95e3ab470f0" title="Returns the index of an element containing the specified data. ">ucx_array_find()</a> </dd></dl> - -</div> -</div> -<a id="a8e83681d8d5d8cddbf10f63ce5be4c10"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8e83681d8d5d8cddbf10f63ce5be4c10">◆ </a></span>ucx_array_destroy()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_array_destroy </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys the array. </p> -<p>The data is freed and both capacity and count are reset to zero. If the array structure itself has been dynamically allocated, it has to be freed separately.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>the array to destroy </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a43292b448adb1741677aa8c578bcc201"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a43292b448adb1741677aa8c578bcc201">◆ </a></span>ucx_array_equals()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_equals </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> const * </td> - <td class="paramname"><em>array1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> const * </td> - <td class="paramname"><em>array2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two UCX arrays element-wise by using a compare function. </p> -<p>Elements of the two specified arrays are compared by using the specified compare function and the additional data. The type and content of this additional data depends on the <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791" title="Function pointer to a compare function. ">cmp_func()</a> used.</p> -<p>This function always returns zero, if the element sizes of the arrays do not match and performs no comparisons in this case.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array1</td><td>the first array </td></tr> - <tr><td class="paramname">array2</td><td>the second array </td></tr> - <tr><td class="paramname">cmpfnc</td><td>the compare function </td></tr> - <tr><td class="paramname">data</td><td>additional data for the compare function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the two arrays equal element-wise, 0 otherwise </dd></dl> - -</div> -</div> -<a id="ae7bdbed94afee9b20b38b95e3ab470f0"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae7bdbed94afee9b20b38b95e3ab470f0">◆ </a></span>ucx_array_find()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t ucx_array_find </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> const * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>elem</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the index of an element containing the specified data. </p> -<p>This function uses a <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791" title="Function pointer to a compare function. ">cmp_func()</a> to compare the data of each list element with the specified data. If no cmp_func is provided, memcmp() is used.</p> -<p>If the array contains the data more than once, the index of the first occurrence is returned. If the array does not contain the data, the size of array is returned.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>the array where to search for the data </td></tr> - <tr><td class="paramname">elem</td><td>the element data </td></tr> - <tr><td class="paramname">cmpfnc</td><td>the compare function </td></tr> - <tr><td class="paramname">data</td><td>additional data for the compare function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the index of the element containing the specified data or the size of the array, if the data is not found in this array </dd></dl> - -</div> -</div> -<a id="ac01ee914468a16f470bf3071fffbe438"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac01ee914468a16f470bf3071fffbe438">◆ </a></span>ucx_array_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_array_free </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys and frees the array. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>the array to free </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="ab0cbf243824aaebee48277315e03afce"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ab0cbf243824aaebee48277315e03afce">◆ </a></span>ucx_array_grow()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_grow </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>count</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Resizes the capacity, if the specified number of elements would not fit. </p> -<p>A call to ucx_array_grow(array, count) is effectively the same as ucx_array_reserve(array, array->size+count).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>a pointer to the array </td></tr> - <tr><td class="paramname">count</td><td>the number of elements that should additionally fit into the array </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success, non-zero if reallocation failed </dd></dl> - -</div> -</div> -<a id="ad921e85c28ffae32230777a53c5037e5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad921e85c28ffae32230777a53c5037e5">◆ </a></span>ucx_array_init()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_array_init </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>capacity</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>elemsize</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Initializes a UCX array structure with the given capacity and element size. </p> -<p>The structure must be uninitialized as the data pointer will be overwritten.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>the structure to initialize </td></tr> - <tr><td class="paramname">capacity</td><td>the initial capacity </td></tr> - <tr><td class="paramname">elemsize</td><td>the element size </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a2451e61ebb15a7ba1c1319267ba75b8c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2451e61ebb15a7ba1c1319267ba75b8c">◆ </a></span>ucx_array_init_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_array_init_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>capacity</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>elemsize</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Initializes a UCX array structure using the specified allocator. </p> -<p>The structure must be uninitialized as the data pointer will be overwritten.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>the structure to initialize </td></tr> - <tr><td class="paramname">capacity</td><td>the initial capacity </td></tr> - <tr><td class="paramname">elemsize</td><td>the element size </td></tr> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a994a2fbf1c33a3833e2a70cd9a4352b7"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a994a2fbf1c33a3833e2a70cd9a4352b7">◆ </a></span>ucx_array_new()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxArray.html">UcxArray</a>* ucx_array_new </td> - <td>(</td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>capacity</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>elemsize</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new UCX array with the given capacity and element size. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">capacity</td><td>the initial capacity </td></tr> - <tr><td class="paramname">elemsize</td><td>the element size </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to a new UCX array structure </dd></dl> - -</div> -</div> -<a id="a177170258c215eb2e4f5a32e59f0cb1b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a177170258c215eb2e4f5a32e59f0cb1b">◆ </a></span>ucx_array_new_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxArray.html">UcxArray</a>* ucx_array_new_a </td> - <td>(</td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>capacity</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>elemsize</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new UCX array using the specified allocator. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">capacity</td><td>the initial capacity </td></tr> - <tr><td class="paramname">elemsize</td><td>the element size </td></tr> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to new UCX array structure </dd></dl> - -</div> -</div> -<a id="a95b52acc2193b5c33cf0eaa4f2082477"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a95b52acc2193b5c33cf0eaa4f2082477">◆ </a></span>ucx_array_prepend_from()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_prepend_from </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>count</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Inserts elements at the beginning of the array. </p> -<p>This is an expensive operation, because the contents must be moved. If there is no particular reason to prepend data, you should use <a class="el" href="array_8h.html#aea01731ad94ea73c0c8fb1d1b7a35fcf" title="Inserts elements at the end of the array. ">ucx_array_append_from()</a> instead.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>a pointer the array where to prepend the data </td></tr> - <tr><td class="paramname">data</td><td>a pointer to the data to insert (may be <code>NULL</code>) </td></tr> - <tr><td class="paramname">count</td><td>number of elements to copy from data (if data is <code>NULL</code>, zeroed elements are inserted) </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success, non-zero if a reallocation was necessary but failed </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="array_8h.html#aea01731ad94ea73c0c8fb1d1b7a35fcf" title="Inserts elements at the end of the array. ">ucx_array_append_from()</a> </dd> -<dd> -<a class="el" href="array_8h.html#a1bb545d065358d265d80d815ba382a28" title="Sets elements starting at the specified index. ">ucx_array_set_from()</a> </dd> -<dd> -ucx_array_prepend() </dd></dl> - -</div> -</div> -<a id="aa45eac6b697f83adac81c0860cf306b8"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa45eac6b697f83adac81c0860cf306b8">◆ </a></span>ucx_array_remove()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_array_remove </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>index</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Removes an element from the array. </p> -<p>This is in general an expensive operation, because several elements may be moved. If the order of the elements is not relevant, use <a class="el" href="array_8h.html#a548d81b07612bae3ba8c4c4b49104b8e" title="Removes an element from the array. ">ucx_array_remove_fast()</a> instead.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>pointer to the array from which the element shall be removed </td></tr> - <tr><td class="paramname">index</td><td>the index of the element to remove </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a548d81b07612bae3ba8c4c4b49104b8e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a548d81b07612bae3ba8c4c4b49104b8e">◆ </a></span>ucx_array_remove_fast()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_array_remove_fast </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>index</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Removes an element from the array. </p> -<p>This is an O(1) operation, but does not maintain the order of the elements. The last element in the array is moved to the location of the removed element.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>pointer to the array from which the element shall be removed </td></tr> - <tr><td class="paramname">index</td><td>the index of the element to remove </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a1c3bf8433c1de3c933f3854ab297fe1d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1c3bf8433c1de3c933f3854ab297fe1d">◆ </a></span>ucx_array_reserve()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_reserve </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>capacity</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Resizes the array only, if the capacity is insufficient. </p> -<p>If the requested capacity is smaller than the current capacity, this function does nothing.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>a pointer to the array </td></tr> - <tr><td class="paramname">capacity</td><td>the guaranteed capacity </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success, non-zero if reallocation failed </dd></dl> - -</div> -</div> -<a id="a27762e7c06a6c781015e3c8ceeee0ce3"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a27762e7c06a6c781015e3c8ceeee0ce3">◆ </a></span>ucx_array_resize()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_resize </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>capacity</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Sets the capacity of the array. </p> -<p>If the new capacity is smaller than the size of the array, the elements are removed and the size is adjusted accordingly.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>a pointer to the array </td></tr> - <tr><td class="paramname">capacity</td><td>the new capacity </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success, non-zero if reallocation failed </dd></dl> - -</div> -</div> -<a id="a1bb545d065358d265d80d815ba382a28"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1bb545d065358d265d80d815ba382a28">◆ </a></span>ucx_array_set_from()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_set_from </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>index</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>count</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Sets elements starting at the specified index. </p> -<p>If the any index is out of bounds, the array automatically grows. The pointer to the data may be NULL, in which case the elements are zeroed.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>a pointer the array where to set the data </td></tr> - <tr><td class="paramname">index</td><td>the index of the element to set </td></tr> - <tr><td class="paramname">data</td><td>a pointer to the data to insert (may be <code>NULL</code>) </td></tr> - <tr><td class="paramname">count</td><td>number of elements to copy from data (if data is <code>NULL</code>, the memory in the array is zeroed) </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success, non-zero if a reallocation was necessary but failed </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="array_8h.html#aea01731ad94ea73c0c8fb1d1b7a35fcf" title="Inserts elements at the end of the array. ">ucx_array_append_from()</a> </dd> -<dd> -ucx_array_set() </dd></dl> - -</div> -</div> -<a id="a2daf50e80aee9bccebee876a7efd2dfc"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2daf50e80aee9bccebee876a7efd2dfc">◆ </a></span>ucx_array_shrink()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_shrink </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shrinks the memory to exactly fit the contents. </p> -<p>After this operation, the capacity equals the size.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>a pointer to the array </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success, non-zero if reallocation failed </dd></dl> - -</div> -</div> -<a id="add773514569b872a6624381b4b6af52c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#add773514569b872a6624381b4b6af52c">◆ </a></span>ucx_array_sort()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_array_sort </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxArray.html">UcxArray</a> * </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Sorts a <a class="el" href="structUcxArray.html" title="UCX array type. ">UcxArray</a> with the best available sort algorithm. </p> -<p>The qsort_r() function is used, if available (glibc, FreeBSD or MacOS). The order of arguments is automatically adjusted for the FreeBSD and MacOS version of qsort_r().</p> -<p>If qsort_r() is not available, a merge sort algorithm is used, which is guaranteed to use no more additional memory than for exactly one element.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">array</td><td>the array to sort </td></tr> - <tr><td class="paramname">cmpfnc</td><td>the function that shall be used to compare the element data </td></tr> - <tr><td class="paramname">data</td><td>additional data for the <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791" title="Function pointer to a compare function. ">cmp_func()</a> or <code>NULL</code> </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="ad0a8d76980cf1c1910e64a245803fb9a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad0a8d76980cf1c1910e64a245803fb9a">◆ </a></span>ucx_array_util_set_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_util_set_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>alloc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void ** </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t * </td> - <td class="paramname"><em>capacity</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>elmsize</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>idx</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Sets an element in an arbitrary user defined array. </p> -<p>The data is copied from the specified data location.</p> -<p>If the capacity is insufficient, the array is automatically reallocated using the specified allocator and the possibly new pointer is stored in the <code>array</code> argument.</p> -<p>On reallocation the capacity of the array is doubled until it is sufficient. The new capacity is stored back to <code>capacity</code>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">alloc</td><td>the allocator that shall be used to reallocate the array </td></tr> - <tr><td class="paramname">array</td><td>a pointer to location of the array pointer </td></tr> - <tr><td class="paramname">capacity</td><td>a pointer to the capacity </td></tr> - <tr><td class="paramname">elmsize</td><td>the size of each element </td></tr> - <tr><td class="paramname">idx</td><td>the index of the element to set </td></tr> - <tr><td class="paramname">data</td><td>a pointer to the element data </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success or non-zero on error (errno will be set) </dd></dl> - -</div> -</div> -<a id="ad708b333c0c1b02c998309a58ea65e31"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad708b333c0c1b02c998309a58ea65e31">◆ </a></span>ucx_array_util_setptr_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_array_util_setptr_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>alloc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void ** </td> - <td class="paramname"><em>array</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t * </td> - <td class="paramname"><em>capacity</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>idx</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ptr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Stores a pointer in an arbitrary user defined array. </p> -<p>The element size of the array must be sizeof(void*).</p> -<p>If the capacity is insufficient, the array is automatically reallocated using the specified allocator and the possibly new pointer is stored in the <code>array</code> argument.</p> -<p>On reallocation the capacity of the array is doubled until it is sufficient. The new capacity is stored back to <code>capacity</code>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">alloc</td><td>the allocator that shall be used to reallocate the array </td></tr> - <tr><td class="paramname">array</td><td>a pointer to location of the array pointer </td></tr> - <tr><td class="paramname">capacity</td><td>a pointer to the capacity </td></tr> - <tr><td class="paramname">idx</td><td>the index of the element to set </td></tr> - <tr><td class="paramname">ptr</td><td>the pointer to store </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success or non-zero on error (errno will be set) </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/array_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/array.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">array.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="array_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2019 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef UCX_ARRAY_H</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define UCX_ARRAY_H</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="allocator_8h.html">allocator.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structUcxArray.html"> 49</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structUcxArray.html#a7ed074887908e45bde7e1fbc67b31c18"> 53</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxArray.html#a7ed074887908e45bde7e1fbc67b31c18">capacity</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structUcxArray.html#a20c11f2c9048cda80062842b7c094e20"> 57</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxArray.html#a20c11f2c9048cda80062842b7c094e20">size</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="structUcxArray.html#ac4e9ecdf8a8d010644f6e44dfef8190f"> 61</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxArray.html#ac4e9ecdf8a8d010644f6e44dfef8190f">elemsize</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structUcxArray.html#a04d2b03d0a45af1fab19b4216602075a"> 65</a></span>  <span class="keywordtype">void</span>* <a class="code" href="structUcxArray.html#a04d2b03d0a45af1fab19b4216602075a">data</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="structUcxArray.html#a2ef31303b7548b9aa8e2b9187e295212"> 69</a></span>  <a class="code" href="structUcxAllocator.html">UcxAllocator</a>* <a class="code" href="structUcxArray.html#a2ef31303b7548b9aa8e2b9187e295212">allocator</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> } <a class="code" href="structUcxArray.html">UcxArray</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="array_8h.html#a1d959c29af3125bdd37cde3a554e729c"> 89</a></span> <span class="preprocessor">#define ucx_array_util_set(array, capacity, elmsize, idx, data) \</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor"> ucx_array_util_set_a(ucx_default_allocator(), (void**)(array), capacity, \</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor"> elmsize, idx, data)</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#ad0a8d76980cf1c1910e64a245803fb9a">ucx_array_util_set_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a>* alloc, <span class="keywordtype">void</span>** array, <span class="keywordtype">size_t</span>* capacity,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordtype">size_t</span> elmsize, <span class="keywordtype">size_t</span> idx, <span class="keywordtype">void</span>* data);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="array_8h.html#a59a5b342965e790945f9c7a3f86b99f9"> 131</a></span> <span class="preprocessor">#define ucx_array_util_setptr(array, capacity, idx, ptr) \</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor"> ucx_array_util_setptr_a(ucx_default_allocator(), (void**)(array), \</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor"> capacity, idx, ptr)</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#ad708b333c0c1b02c998309a58ea65e31">ucx_array_util_setptr_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a>* alloc, <span class="keywordtype">void</span>** array, <span class="keywordtype">size_t</span>* capacity,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordtype">size_t</span> idx, <span class="keywordtype">void</span>* ptr);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <a class="code" href="structUcxArray.html">UcxArray</a>* <a class="code" href="array_8h.html#a994a2fbf1c33a3833e2a70cd9a4352b7">ucx_array_new</a>(<span class="keywordtype">size_t</span> capacity, <span class="keywordtype">size_t</span> elemsize);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <a class="code" href="structUcxArray.html">UcxArray</a>* <a class="code" href="array_8h.html#a177170258c215eb2e4f5a32e59f0cb1b">ucx_array_new_a</a>(<span class="keywordtype">size_t</span> capacity, <span class="keywordtype">size_t</span> elemsize,</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="structUcxAllocator.html">UcxAllocator</a>* allocator);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keywordtype">void</span> <a class="code" href="array_8h.html#ad921e85c28ffae32230777a53c5037e5">ucx_array_init</a>(<a class="code" href="structUcxArray.html">UcxArray</a>* array, <span class="keywordtype">size_t</span> capacity, <span class="keywordtype">size_t</span> elemsize);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keywordtype">void</span> <a class="code" href="array_8h.html#a2451e61ebb15a7ba1c1319267ba75b8c">ucx_array_init_a</a>(<a class="code" href="structUcxArray.html">UcxArray</a>* array, <span class="keywordtype">size_t</span> capacity, <span class="keywordtype">size_t</span> elemsize,</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="structUcxAllocator.html">UcxAllocator</a>* allocator);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#a4a8c273370e4a3a3e2624e364f5ab410">ucx_array_clone</a>(<a class="code" href="structUcxArray.html">UcxArray</a>* dest, <a class="code" href="structUcxArray.html">UcxArray</a> <span class="keyword">const</span>* src);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#a43292b448adb1741677aa8c578bcc201">ucx_array_equals</a>(<a class="code" href="structUcxArray.html">UcxArray</a> <span class="keyword">const</span> *array1, <a class="code" href="structUcxArray.html">UcxArray</a> <span class="keyword">const</span> *array2,</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span>* data);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="keywordtype">void</span> <a class="code" href="array_8h.html#a8e83681d8d5d8cddbf10f63ce5be4c10">ucx_array_destroy</a>(<a class="code" href="structUcxArray.html">UcxArray</a> *array);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="keywordtype">void</span> <a class="code" href="array_8h.html#ac01ee914468a16f470bf3071fffbe438">ucx_array_free</a>(<a class="code" href="structUcxArray.html">UcxArray</a> *array);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#aea01731ad94ea73c0c8fb1d1b7a35fcf">ucx_array_append_from</a>(<a class="code" href="structUcxArray.html">UcxArray</a> *array, <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> count);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#a95b52acc2193b5c33cf0eaa4f2082477">ucx_array_prepend_from</a>(<a class="code" href="structUcxArray.html">UcxArray</a> *array, <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> count);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#a1bb545d065358d265d80d815ba382a28">ucx_array_set_from</a>(<a class="code" href="structUcxArray.html">UcxArray</a> *array, <span class="keywordtype">size_t</span> index, <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> count);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#aa5a0bf3d3f0df6406beb0e569021cc28">ucx_array_concat</a>(<a class="code" href="structUcxArray.html">UcxArray</a> *array1, <span class="keyword">const</span> <a class="code" href="structUcxArray.html">UcxArray</a> *array2);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="keywordtype">void</span> *<a class="code" href="array_8h.html#aa698085fd1a8b70d6b709999c51b49e8">ucx_array_at</a>(<a class="code" href="structUcxArray.html">UcxArray</a> <span class="keyword">const</span>* array, <span class="keywordtype">size_t</span> index);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="keywordtype">size_t</span> <a class="code" href="array_8h.html#ae7bdbed94afee9b20b38b95e3ab470f0">ucx_array_find</a>(<a class="code" href="structUcxArray.html">UcxArray</a> <span class="keyword">const</span> *array, <span class="keywordtype">void</span> *elem,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#a5241058cd2329147bc5b1593ae7e51dc">ucx_array_contains</a>(<a class="code" href="structUcxArray.html">UcxArray</a> <span class="keyword">const</span> *array, <span class="keywordtype">void</span> *elem,</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="keywordtype">void</span> <a class="code" href="array_8h.html#add773514569b872a6624381b4b6af52c">ucx_array_sort</a>(<a class="code" href="structUcxArray.html">UcxArray</a>* array, <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="keywordtype">void</span> <a class="code" href="array_8h.html#aa45eac6b697f83adac81c0860cf306b8">ucx_array_remove</a>(<a class="code" href="structUcxArray.html">UcxArray</a> *array, <span class="keywordtype">size_t</span> index);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="keywordtype">void</span> <a class="code" href="array_8h.html#a548d81b07612bae3ba8c4c4b49104b8e">ucx_array_remove_fast</a>(<a class="code" href="structUcxArray.html">UcxArray</a> *array, <span class="keywordtype">size_t</span> index);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#a2daf50e80aee9bccebee876a7efd2dfc">ucx_array_shrink</a>(<a class="code" href="structUcxArray.html">UcxArray</a>* array);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#a27762e7c06a6c781015e3c8ceeee0ce3">ucx_array_resize</a>(<a class="code" href="structUcxArray.html">UcxArray</a>* array, <span class="keywordtype">size_t</span> capacity);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#a1c3bf8433c1de3c933f3854ab297fe1d">ucx_array_reserve</a>(<a class="code" href="structUcxArray.html">UcxArray</a>* array, <span class="keywordtype">size_t</span> capacity);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="keywordtype">int</span> <a class="code" href="array_8h.html#ab0cbf243824aaebee48277315e03afce">ucx_array_grow</a>(<a class="code" href="structUcxArray.html">UcxArray</a>* array, <span class="keywordtype">size_t</span> count);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_ARRAY_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="ttc" id="array_8h_html_aea01731ad94ea73c0c8fb1d1b7a35fcf"><div class="ttname"><a href="array_8h.html#aea01731ad94ea73c0c8fb1d1b7a35fcf">ucx_array_append_from</a></div><div class="ttdeci">int ucx_array_append_from(UcxArray *array, void *data, size_t count)</div><div class="ttdoc">Inserts elements at the end of the array. </div><div class="ttdef"><b>Definition:</b> array.c:206</div></div> -<div class="ttc" id="array_8h_html_a95b52acc2193b5c33cf0eaa4f2082477"><div class="ttname"><a href="array_8h.html#a95b52acc2193b5c33cf0eaa4f2082477">ucx_array_prepend_from</a></div><div class="ttdeci">int ucx_array_prepend_from(UcxArray *array, void *data, size_t count)</div><div class="ttdoc">Inserts elements at the beginning of the array. </div><div class="ttdef"><b>Definition:</b> array.c:221</div></div> -<div class="ttc" id="array_8h_html_ab0cbf243824aaebee48277315e03afce"><div class="ttname"><a href="array_8h.html#ab0cbf243824aaebee48277315e03afce">ucx_array_grow</a></div><div class="ttdeci">int ucx_array_grow(UcxArray *array, size_t count)</div><div class="ttdoc">Resizes the capacity, if the specified number of elements would not fit. </div><div class="ttdef"><b>Definition:</b> array.c:465</div></div> -<div class="ttc" id="ucx_8h_html_afe5e2d5dbf34778e0e97852051570791"><div class="ttname"><a href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a></div><div class="ttdeci">int(* cmp_func)(const void *, const void *, void *)</div><div class="ttdoc">Function pointer to a compare function. </div><div class="ttdef"><b>Definition:</b> ucx.h:84</div></div> -<div class="ttc" id="array_8h_html_a2daf50e80aee9bccebee876a7efd2dfc"><div class="ttname"><a href="array_8h.html#a2daf50e80aee9bccebee876a7efd2dfc">ucx_array_shrink</a></div><div class="ttdeci">int ucx_array_shrink(UcxArray *array)</div><div class="ttdoc">Shrinks the memory to exactly fit the contents. </div><div class="ttdef"><b>Definition:</b> array.c:418</div></div> -<div class="ttc" id="array_8h_html_aa5a0bf3d3f0df6406beb0e569021cc28"><div class="ttname"><a href="array_8h.html#aa5a0bf3d3f0df6406beb0e569021cc28">ucx_array_concat</a></div><div class="ttdeci">int ucx_array_concat(UcxArray *array1, const UcxArray *array2)</div><div class="ttdoc">Concatenates two arrays. </div><div class="ttdef"><b>Definition:</b> array.c:259</div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="structUcxArray_html_a7ed074887908e45bde7e1fbc67b31c18"><div class="ttname"><a href="structUcxArray.html#a7ed074887908e45bde7e1fbc67b31c18">UcxArray::capacity</a></div><div class="ttdeci">size_t capacity</div><div class="ttdoc">The current capacity of the array. </div><div class="ttdef"><b>Definition:</b> array.h:53</div></div> -<div class="ttc" id="array_8h_html_ad0a8d76980cf1c1910e64a245803fb9a"><div class="ttname"><a href="array_8h.html#ad0a8d76980cf1c1910e64a245803fb9a">ucx_array_util_set_a</a></div><div class="ttdeci">int ucx_array_util_set_a(UcxAllocator *alloc, void **array, size_t *capacity, size_t elmsize, size_t idx, void *data)</div><div class="ttdoc">Sets an element in an arbitrary user defined array. </div><div class="ttdef"><b>Definition:</b> array.c:72</div></div> -<div class="ttc" id="array_8h_html_a43292b448adb1741677aa8c578bcc201"><div class="ttname"><a href="array_8h.html#a43292b448adb1741677aa8c578bcc201">ucx_array_equals</a></div><div class="ttdeci">int ucx_array_equals(UcxArray const *array1, UcxArray const *array2, cmp_func cmpfnc, void *data)</div><div class="ttdoc">Compares two UCX arrays element-wise by using a compare function. </div><div class="ttdef"><b>Definition:</b> array.c:166</div></div> -<div class="ttc" id="array_8h_html_a2451e61ebb15a7ba1c1319267ba75b8c"><div class="ttname"><a href="array_8h.html#a2451e61ebb15a7ba1c1319267ba75b8c">ucx_array_init_a</a></div><div class="ttdeci">void ucx_array_init_a(UcxArray *array, size_t capacity, size_t elemsize, UcxAllocator *allocator)</div><div class="ttdoc">Initializes a UCX array structure using the specified allocator. </div><div class="ttdef"><b>Definition:</b> array.c:136</div></div> -<div class="ttc" id="array_8h_html_add773514569b872a6624381b4b6af52c"><div class="ttname"><a href="array_8h.html#add773514569b872a6624381b4b6af52c">ucx_array_sort</a></div><div class="ttdeci">void ucx_array_sort(UcxArray *array, cmp_func cmpfnc, void *data)</div><div class="ttdoc">Sorts a UcxArray with the best available sort algorithm. </div><div class="ttdef"><b>Definition:</b> array.c:395</div></div> -<div class="ttc" id="structUcxArray_html_a04d2b03d0a45af1fab19b4216602075a"><div class="ttname"><a href="structUcxArray.html#a04d2b03d0a45af1fab19b4216602075a">UcxArray::data</a></div><div class="ttdeci">void * data</div><div class="ttdoc">A pointer to the data. </div><div class="ttdef"><b>Definition:</b> array.h:65</div></div> -<div class="ttc" id="array_8h_html_a994a2fbf1c33a3833e2a70cd9a4352b7"><div class="ttname"><a href="array_8h.html#a994a2fbf1c33a3833e2a70cd9a4352b7">ucx_array_new</a></div><div class="ttdeci">UcxArray * ucx_array_new(size_t capacity, size_t elemsize)</div><div class="ttdoc">Creates a new UCX array with the given capacity and element size. </div><div class="ttdef"><b>Definition:</b> array.c:119</div></div> -<div class="ttc" id="array_8h_html_aa45eac6b697f83adac81c0860cf306b8"><div class="ttname"><a href="array_8h.html#aa45eac6b697f83adac81c0860cf306b8">ucx_array_remove</a></div><div class="ttdeci">void ucx_array_remove(UcxArray *array, size_t index)</div><div class="ttdoc">Removes an element from the array. </div><div class="ttdef"><b>Definition:</b> array.c:400</div></div> -<div class="ttc" id="structUcxArray_html_a2ef31303b7548b9aa8e2b9187e295212"><div class="ttname"><a href="structUcxArray.html#a2ef31303b7548b9aa8e2b9187e295212">UcxArray::allocator</a></div><div class="ttdeci">UcxAllocator * allocator</div><div class="ttdoc">The allocator used for the data. </div><div class="ttdef"><b>Definition:</b> array.h:69</div></div> -<div class="ttc" id="array_8h_html_a1bb545d065358d265d80d815ba382a28"><div class="ttname"><a href="array_8h.html#a1bb545d065358d265d80d815ba382a28">ucx_array_set_from</a></div><div class="ttdeci">int ucx_array_set_from(UcxArray *array, size_t index, void *data, size_t count)</div><div class="ttdoc">Sets elements starting at the specified index. </div><div class="ttdef"><b>Definition:</b> array.c:240</div></div> -<div class="ttc" id="array_8h_html_a548d81b07612bae3ba8c4c4b49104b8e"><div class="ttname"><a href="array_8h.html#a548d81b07612bae3ba8c4c4b49104b8e">ucx_array_remove_fast</a></div><div class="ttdeci">void ucx_array_remove_fast(UcxArray *array, size_t index)</div><div class="ttdoc">Removes an element from the array. </div><div class="ttdef"><b>Definition:</b> array.c:409</div></div> -<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div> -<div class="ttc" id="array_8h_html_a5241058cd2329147bc5b1593ae7e51dc"><div class="ttname"><a href="array_8h.html#a5241058cd2329147bc5b1593ae7e51dc">ucx_array_contains</a></div><div class="ttdeci">int ucx_array_contains(UcxArray const *array, void *elem, cmp_func cmpfnc, void *data)</div><div class="ttdoc">Checks, if an array contains a specific element. </div><div class="ttdef"><b>Definition:</b> array.c:309</div></div> -<div class="ttc" id="array_8h_html_ae7bdbed94afee9b20b38b95e3ab470f0"><div class="ttname"><a href="array_8h.html#ae7bdbed94afee9b20b38b95e3ab470f0">ucx_array_find</a></div><div class="ttdeci">size_t ucx_array_find(UcxArray const *array, void *elem, cmp_func cmpfnc, void *data)</div><div class="ttdoc">Returns the index of an element containing the specified data. </div><div class="ttdef"><b>Definition:</b> array.c:286</div></div> -<div class="ttc" id="structUcxArray_html"><div class="ttname"><a href="structUcxArray.html">UcxArray</a></div><div class="ttdoc">UCX array type. </div><div class="ttdef"><b>Definition:</b> array.h:49</div></div> -<div class="ttc" id="structUcxArray_html_a20c11f2c9048cda80062842b7c094e20"><div class="ttname"><a href="structUcxArray.html#a20c11f2c9048cda80062842b7c094e20">UcxArray::size</a></div><div class="ttdeci">size_t size</div><div class="ttdoc">The actual number of elements in the array. </div><div class="ttdef"><b>Definition:</b> array.h:57</div></div> -<div class="ttc" id="array_8h_html_a8e83681d8d5d8cddbf10f63ce5be4c10"><div class="ttname"><a href="array_8h.html#a8e83681d8d5d8cddbf10f63ce5be4c10">ucx_array_destroy</a></div><div class="ttdeci">void ucx_array_destroy(UcxArray *array)</div><div class="ttdoc">Destroys the array. </div><div class="ttdef"><b>Definition:</b> array.c:194</div></div> -<div class="ttc" id="array_8h_html_ad708b333c0c1b02c998309a58ea65e31"><div class="ttname"><a href="array_8h.html#ad708b333c0c1b02c998309a58ea65e31">ucx_array_util_setptr_a</a></div><div class="ttdeci">int ucx_array_util_setptr_a(UcxAllocator *alloc, void **array, size_t *capacity, size_t idx, void *ptr)</div><div class="ttdoc">Stores a pointer in an arbitrary user defined array. </div><div class="ttdef"><b>Definition:</b> array.c:112</div></div> -<div class="ttc" id="allocator_8h_html"><div class="ttname"><a href="allocator_8h.html">allocator.h</a></div><div class="ttdoc">Allocator for custom memory management. </div></div> -<div class="ttc" id="array_8h_html_ac01ee914468a16f470bf3071fffbe438"><div class="ttname"><a href="array_8h.html#ac01ee914468a16f470bf3071fffbe438">ucx_array_free</a></div><div class="ttdeci">void ucx_array_free(UcxArray *array)</div><div class="ttdoc">Destroys and frees the array. </div><div class="ttdef"><b>Definition:</b> array.c:201</div></div> -<div class="ttc" id="array_8h_html_a4a8c273370e4a3a3e2624e364f5ab410"><div class="ttname"><a href="array_8h.html#a4a8c273370e4a3a3e2624e364f5ab410">ucx_array_clone</a></div><div class="ttdeci">int ucx_array_clone(UcxArray *dest, UcxArray const *src)</div><div class="ttdoc">Creates an shallow copy of an array. </div><div class="ttdef"><b>Definition:</b> array.c:151</div></div> -<div class="ttc" id="array_8h_html_aa698085fd1a8b70d6b709999c51b49e8"><div class="ttname"><a href="array_8h.html#aa698085fd1a8b70d6b709999c51b49e8">ucx_array_at</a></div><div class="ttdeci">void * ucx_array_at(UcxArray const *array, size_t index)</div><div class="ttdoc">Returns a pointer to the array element at the specified index. </div><div class="ttdef"><b>Definition:</b> array.c:280</div></div> -<div class="ttc" id="array_8h_html_a27762e7c06a6c781015e3c8ceeee0ce3"><div class="ttname"><a href="array_8h.html#a27762e7c06a6c781015e3c8ceeee0ce3">ucx_array_resize</a></div><div class="ttdeci">int ucx_array_resize(UcxArray *array, size_t capacity)</div><div class="ttdoc">Sets the capacity of the array. </div><div class="ttdef"><b>Definition:</b> array.c:430</div></div> -<div class="ttc" id="array_8h_html_ad921e85c28ffae32230777a53c5037e5"><div class="ttname"><a href="array_8h.html#ad921e85c28ffae32230777a53c5037e5">ucx_array_init</a></div><div class="ttdeci">void ucx_array_init(UcxArray *array, size_t capacity, size_t elemsize)</div><div class="ttdoc">Initializes a UCX array structure with the given capacity and element size. </div><div class="ttdef"><b>Definition:</b> array.c:132</div></div> -<div class="ttc" id="structUcxArray_html_ac4e9ecdf8a8d010644f6e44dfef8190f"><div class="ttname"><a href="structUcxArray.html#ac4e9ecdf8a8d010644f6e44dfef8190f">UcxArray::elemsize</a></div><div class="ttdeci">size_t elemsize</div><div class="ttdoc">The size of an individual element in bytes. </div><div class="ttdef"><b>Definition:</b> array.h:61</div></div> -<div class="ttc" id="array_8h_html_a1c3bf8433c1de3c933f3854ab297fe1d"><div class="ttname"><a href="array_8h.html#a1c3bf8433c1de3c933f3854ab297fe1d">ucx_array_reserve</a></div><div class="ttdeci">int ucx_array_reserve(UcxArray *array, size_t capacity)</div><div class="ttdoc">Resizes the array only, if the capacity is insufficient. </div><div class="ttdef"><b>Definition:</b> array.c:449</div></div> -<div class="ttc" id="array_8h_html_a177170258c215eb2e4f5a32e59f0cb1b"><div class="ttname"><a href="array_8h.html#a177170258c215eb2e4f5a32e59f0cb1b">ucx_array_new_a</a></div><div class="ttdeci">UcxArray * ucx_array_new_a(size_t capacity, size_t elemsize, UcxAllocator *allocator)</div><div class="ttdoc">Creates a new UCX array using the specified allocator. </div><div class="ttdef"><b>Definition:</b> array.c:123</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/avl_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,883 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/avl.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#typedef-members">Typedefs</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">avl.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>AVL tree implementation. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> -<code>#include <inttypes.h></code><br /> -</div> -<p><a href="avl_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">UCX AVL Node. <a href="structUcxAVLNode.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">UCX AVL Tree. <a href="structUcxAVLTree.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:ac2886d4b79b48c9fabf6408873f84cd2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#ac2886d4b79b48c9fabf6408873f84cd2">ucx_avl_default_new</a>()   <a class="el" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2">ucx_avl_new_a</a>(<a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8">ucx_cmp_ptr</a>, <a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>())</td></tr> -<tr class="memdesc:ac2886d4b79b48c9fabf6408873f84cd2"><td class="mdescLeft"> </td><td class="mdescRight">Macro for initializing a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with the default allocator and a <a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8" title="Compares two pointers. ">ucx_cmp_ptr()</a> compare function. <a href="#ac2886d4b79b48c9fabf6408873f84cd2">More...</a><br /></td></tr> -<tr class="separator:ac2886d4b79b48c9fabf6408873f84cd2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aaaf4a6f6f661cda7791db239212285d9"><td class="memItemLeft" align="right" valign="top"><a id="aaaf4a6f6f661cda7791db239212285d9"></a> -#define </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#aaaf4a6f6f661cda7791db239212285d9">UCX_AVL_FIND_EXACT</a>   0</td></tr> -<tr class="memdesc:aaaf4a6f6f661cda7791db239212285d9"><td class="mdescLeft"> </td><td class="mdescRight">A mode for <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> with the same behavior as <a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e" title="Gets the node from the tree, that is associated with the specified key. ">ucx_avl_get_node()</a>. <br /></td></tr> -<tr class="separator:aaaf4a6f6f661cda7791db239212285d9"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:abd2446d544d5412b6997ee8a17bd368c"><td class="memItemLeft" align="right" valign="top"><a id="abd2446d544d5412b6997ee8a17bd368c"></a> -#define </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#abd2446d544d5412b6997ee8a17bd368c">UCX_AVL_FIND_LOWER_BOUNDED</a>   1</td></tr> -<tr class="memdesc:abd2446d544d5412b6997ee8a17bd368c"><td class="mdescLeft"> </td><td class="mdescRight">A mode for <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> finding the node whose key is at least as large as the specified key. <br /></td></tr> -<tr class="separator:abd2446d544d5412b6997ee8a17bd368c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac74ee7649c1e206b08b31f37dd68ca5e"><td class="memItemLeft" align="right" valign="top"><a id="ac74ee7649c1e206b08b31f37dd68ca5e"></a> -#define </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#ac74ee7649c1e206b08b31f37dd68ca5e">UCX_AVL_FIND_UPPER_BOUNDED</a>   2</td></tr> -<tr class="memdesc:ac74ee7649c1e206b08b31f37dd68ca5e"><td class="mdescLeft"> </td><td class="mdescRight">A mode for <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> finding the node whose key is at most as large as the specified key. <br /></td></tr> -<tr class="separator:ac74ee7649c1e206b08b31f37dd68ca5e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af16f24d74fd6af0154de041566c6603b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#af16f24d74fd6af0154de041566c6603b">UCX_AVL_FIND_CLOSEST</a>   3</td></tr> -<tr class="memdesc:af16f24d74fd6af0154de041566c6603b"><td class="mdescLeft"> </td><td class="mdescRight">A mode for <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> finding the node with a key that is as close to the specified key as possible. <a href="#af16f24d74fd6af0154de041566c6603b">More...</a><br /></td></tr> -<tr class="separator:af16f24d74fd6af0154de041566c6603b"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> -Typedefs</h2></td></tr> -<tr class="memitem:a08ba2496c2316df58548c3cc29712add"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a08ba2496c2316df58548c3cc29712add">UcxAVLNode</a></td></tr> -<tr class="memdesc:a08ba2496c2316df58548c3cc29712add"><td class="mdescLeft"> </td><td class="mdescRight">UCX AVL Node type. <a href="#a08ba2496c2316df58548c3cc29712add">More...</a><br /></td></tr> -<tr class="separator:a08ba2496c2316df58548c3cc29712add"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:a11b043d65a11b7092d5d98b298e5ede3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a11b043d65a11b7092d5d98b298e5ede3">ucx_avl_new</a> (<a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfunc)</td></tr> -<tr class="memdesc:a11b043d65a11b7092d5d98b298e5ede3"><td class="mdescLeft"> </td><td class="mdescRight">Initializes a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with a default allocator. <a href="#a11b043d65a11b7092d5d98b298e5ede3">More...</a><br /></td></tr> -<tr class="separator:a11b043d65a11b7092d5d98b298e5ede3"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af0f868d67e9dc08b4867c02a06c23ee2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2">ucx_avl_new_a</a> (<a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfunc, <a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator)</td></tr> -<tr class="memdesc:af0f868d67e9dc08b4867c02a06c23ee2"><td class="mdescLeft"> </td><td class="mdescRight">Initializes a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with the specified allocator. <a href="#af0f868d67e9dc08b4867c02a06c23ee2">More...</a><br /></td></tr> -<tr class="separator:af0f868d67e9dc08b4867c02a06c23ee2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2f92db538f25fce908d2cb3e5590944c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a2f92db538f25fce908d2cb3e5590944c">ucx_avl_free</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree)</td></tr> -<tr class="memdesc:a2f92db538f25fce908d2cb3e5590944c"><td class="mdescLeft"> </td><td class="mdescRight">Destroys a <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. <a href="#a2f92db538f25fce908d2cb3e5590944c">More...</a><br /></td></tr> -<tr class="separator:a2f92db538f25fce908d2cb3e5590944c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a31ad7fb196ca211f1fc39f4e15f72279"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279">ucx_avl_free_content</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, <a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr)</td></tr> -<tr class="memdesc:a31ad7fb196ca211f1fc39f4e15f72279"><td class="mdescLeft"> </td><td class="mdescRight">Frees the contents of a <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. <a href="#a31ad7fb196ca211f1fc39f4e15f72279">More...</a><br /></td></tr> -<tr class="separator:a31ad7fb196ca211f1fc39f4e15f72279"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:acf42da9a4168e47dc10b4ba0d27ceb4e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e">ucx_avl_get_node</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key)</td></tr> -<tr class="memdesc:acf42da9a4168e47dc10b4ba0d27ceb4e"><td class="mdescLeft"> </td><td class="mdescRight">Gets the node from the tree, that is associated with the specified key. <a href="#acf42da9a4168e47dc10b4ba0d27ceb4e">More...</a><br /></td></tr> -<tr class="separator:acf42da9a4168e47dc10b4ba0d27ceb4e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:adbcf7ceb3f014a30c7214f7304519efe"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#adbcf7ceb3f014a30c7214f7304519efe">ucx_avl_get</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key)</td></tr> -<tr class="memdesc:adbcf7ceb3f014a30c7214f7304519efe"><td class="mdescLeft"> </td><td class="mdescRight">Gets the value from the tree, that is associated with the specified key. <a href="#adbcf7ceb3f014a30c7214f7304519efe">More...</a><br /></td></tr> -<tr class="separator:adbcf7ceb3f014a30c7214f7304519efe"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a664986f64d6865605199fbff06e19cd5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5">ucx_avl_find_node</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key, <a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a> dfnc, int mode)</td></tr> -<tr class="memdesc:a664986f64d6865605199fbff06e19cd5"><td class="mdescLeft"> </td><td class="mdescRight">Finds a node within the tree. <a href="#a664986f64d6865605199fbff06e19cd5">More...</a><br /></td></tr> -<tr class="separator:a664986f64d6865605199fbff06e19cd5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a51770e1614b28d7d22dea096c3704f83"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a51770e1614b28d7d22dea096c3704f83">ucx_avl_find</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key, <a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a> dfnc, int mode)</td></tr> -<tr class="memdesc:a51770e1614b28d7d22dea096c3704f83"><td class="mdescLeft"> </td><td class="mdescRight">Finds a value within the tree. <a href="#a51770e1614b28d7d22dea096c3704f83">More...</a><br /></td></tr> -<tr class="separator:a51770e1614b28d7d22dea096c3704f83"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aec401fab4a24a7edffa734f9baf88577"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#aec401fab4a24a7edffa734f9baf88577">ucx_avl_put</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key, void *value)</td></tr> -<tr class="memdesc:aec401fab4a24a7edffa734f9baf88577"><td class="mdescLeft"> </td><td class="mdescRight">Puts a key/value pair into the tree. <a href="#aec401fab4a24a7edffa734f9baf88577">More...</a><br /></td></tr> -<tr class="separator:aec401fab4a24a7edffa734f9baf88577"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a32cf8955cc0226a82bacfc7b76d6474c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a32cf8955cc0226a82bacfc7b76d6474c">ucx_avl_put_s</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key, void *value, void **oldvalue)</td></tr> -<tr class="memdesc:a32cf8955cc0226a82bacfc7b76d6474c"><td class="mdescLeft"> </td><td class="mdescRight">Puts a key/value pair into the tree. <a href="#a32cf8955cc0226a82bacfc7b76d6474c">More...</a><br /></td></tr> -<tr class="separator:a32cf8955cc0226a82bacfc7b76d6474c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9a792b7d9e58073deef74a341f8bc720"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a9a792b7d9e58073deef74a341f8bc720">ucx_avl_remove_node</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, <a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *node)</td></tr> -<tr class="memdesc:a9a792b7d9e58073deef74a341f8bc720"><td class="mdescLeft"> </td><td class="mdescRight">Removes a node from the AVL tree. <a href="#a9a792b7d9e58073deef74a341f8bc720">More...</a><br /></td></tr> -<tr class="separator:a9a792b7d9e58073deef74a341f8bc720"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a1d821119c805d7fbb7e424bc3effeba9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a1d821119c805d7fbb7e424bc3effeba9">ucx_avl_remove</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key)</td></tr> -<tr class="memdesc:a1d821119c805d7fbb7e424bc3effeba9"><td class="mdescLeft"> </td><td class="mdescRight">Removes an element from the AVL tree. <a href="#a1d821119c805d7fbb7e424bc3effeba9">More...</a><br /></td></tr> -<tr class="separator:a1d821119c805d7fbb7e424bc3effeba9"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a01aeeecd6415f0cc2b623486eb28f254"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a01aeeecd6415f0cc2b623486eb28f254">ucx_avl_remove_s</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key, intptr_t *oldkey, void **oldvalue)</td></tr> -<tr class="memdesc:a01aeeecd6415f0cc2b623486eb28f254"><td class="mdescLeft"> </td><td class="mdescRight">Removes an element from the AVL tree. <a href="#a01aeeecd6415f0cc2b623486eb28f254">More...</a><br /></td></tr> -<tr class="separator:a01aeeecd6415f0cc2b623486eb28f254"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a92c1d41c2b22fe4a029a486ab2153e35"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a92c1d41c2b22fe4a029a486ab2153e35">ucx_avl_count</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree)</td></tr> -<tr class="memdesc:a92c1d41c2b22fe4a029a486ab2153e35"><td class="mdescLeft"> </td><td class="mdescRight">Counts the nodes in the specified <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. <a href="#a92c1d41c2b22fe4a029a486ab2153e35">More...</a><br /></td></tr> -<tr class="separator:a92c1d41c2b22fe4a029a486ab2153e35"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a0e739aeb66dda6a6a3f6eb51b50cf346"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a0e739aeb66dda6a6a3f6eb51b50cf346">ucx_avl_pred</a> (<a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *node)</td></tr> -<tr class="memdesc:a0e739aeb66dda6a6a3f6eb51b50cf346"><td class="mdescLeft"> </td><td class="mdescRight">Finds the in-order predecessor of the given node. <a href="#a0e739aeb66dda6a6a3f6eb51b50cf346">More...</a><br /></td></tr> -<tr class="separator:a0e739aeb66dda6a6a3f6eb51b50cf346"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aab1ad9b027ff5e50671aa0ee84e2d541"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#aab1ad9b027ff5e50671aa0ee84e2d541">ucx_avl_succ</a> (<a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *node)</td></tr> -<tr class="memdesc:aab1ad9b027ff5e50671aa0ee84e2d541"><td class="mdescLeft"> </td><td class="mdescRight">Finds the in-order successor of the given node. <a href="#aab1ad9b027ff5e50671aa0ee84e2d541">More...</a><br /></td></tr> -<tr class="separator:aab1ad9b027ff5e50671aa0ee84e2d541"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>AVL tree implementation. </p> -<p>This binary search tree implementation allows average O(1) insertion and removal of elements (excluding binary search time).</p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="ac2886d4b79b48c9fabf6408873f84cd2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac2886d4b79b48c9fabf6408873f84cd2">◆ </a></span>ucx_avl_default_new</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_avl_default_new</td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td>   <a class="el" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2">ucx_avl_new_a</a>(<a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8">ucx_cmp_ptr</a>, <a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>())</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Macro for initializing a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with the default allocator and a <a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8" title="Compares two pointers. ">ucx_cmp_ptr()</a> compare function. </p> -<dl class="section return"><dt>Returns</dt><dd>a new default <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> object </dd></dl> - -</div> -</div> -<a id="af16f24d74fd6af0154de041566c6603b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af16f24d74fd6af0154de041566c6603b">◆ </a></span>UCX_AVL_FIND_CLOSEST</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_AVL_FIND_CLOSEST   3</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A mode for <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> finding the node with a key that is as close to the specified key as possible. </p> -<p>If the key is present, the behavior is like <a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e" title="Gets the node from the tree, that is associated with the specified key. ">ucx_avl_get_node()</a>. This mode only returns <code>NULL</code> on empty trees. </p> - -</div> -</div> -<h2 class="groupheader">Typedef Documentation</h2> -<a id="a08ba2496c2316df58548c3cc29712add"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a08ba2496c2316df58548c3cc29712add">◆ </a></span>UcxAVLNode</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef struct <a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> <a class="el" href="structUcxAVLNode.html">UcxAVLNode</a></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>UCX AVL Node type. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxAVLNode.html" title="UCX AVL Node. ">UcxAVLNode</a> </dd></dl> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="a92c1d41c2b22fe4a029a486ab2153e35"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a92c1d41c2b22fe4a029a486ab2153e35">◆ </a></span>ucx_avl_count()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t ucx_avl_count </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Counts the nodes in the specified <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the AVL tree </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the node count </dd></dl> - -</div> -</div> -<a id="a51770e1614b28d7d22dea096c3704f83"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a51770e1614b28d7d22dea096c3704f83">◆ </a></span>ucx_avl_find()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_avl_find </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">intptr_t </td> - <td class="paramname"><em>key</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a> </td> - <td class="paramname"><em>dfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">int </td> - <td class="paramname"><em>mode</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Finds a value within the tree. </p> -<p>See <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> for details.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - <tr><td class="paramname">dfnc</td><td>the distance function </td></tr> - <tr><td class="paramname">mode</td><td>the find mode </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the value (or <code>NULL</code>, if no value can be found) </dd></dl> - -</div> -</div> -<a id="a664986f64d6865605199fbff06e19cd5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a664986f64d6865605199fbff06e19cd5">◆ </a></span>ucx_avl_find_node()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a>* ucx_avl_find_node </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">intptr_t </td> - <td class="paramname"><em>key</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a> </td> - <td class="paramname"><em>dfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">int </td> - <td class="paramname"><em>mode</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Finds a node within the tree. </p> -<p>The following modes are supported: </p><ul> -<li> -<a class="el" href="avl_8h.html#aaaf4a6f6f661cda7791db239212285d9" title="A mode for ucx_avl_find_node() with the same behavior as ucx_avl_get_node(). ">UCX_AVL_FIND_EXACT</a>: the same behavior as <a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e" title="Gets the node from the tree, that is associated with the specified key. ">ucx_avl_get_node()</a> </li> -<li> -<a class="el" href="avl_8h.html#abd2446d544d5412b6997ee8a17bd368c" title="A mode for ucx_avl_find_node() finding the node whose key is at least as large as the specified key...">UCX_AVL_FIND_LOWER_BOUNDED</a>: finds the node whose key is at least as large as the specified key </li> -<li> -<a class="el" href="avl_8h.html#ac74ee7649c1e206b08b31f37dd68ca5e" title="A mode for ucx_avl_find_node() finding the node whose key is at most as large as the specified key...">UCX_AVL_FIND_UPPER_BOUNDED</a>: finds the node whose key is at most as large as the specified key </li> -<li> -<a class="el" href="avl_8h.html#af16f24d74fd6af0154de041566c6603b" title="A mode for ucx_avl_find_node() finding the node with a key that is as close to the specified key as p...">UCX_AVL_FIND_CLOSEST</a>: finds the node with a key that is as close to the specified key as possible. If the key is present, the behavior is like <a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e" title="Gets the node from the tree, that is associated with the specified key. ">ucx_avl_get_node()</a>. This mode only returns <code>NULL</code> on empty trees. </li> -</ul> -<p>The distance function provided MUST agree with the compare function of the AVL tree.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - <tr><td class="paramname">dfnc</td><td>the distance function </td></tr> - <tr><td class="paramname">mode</td><td>the find mode </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the node (or <code>NULL</code>, if no node can be found) </dd></dl> - -</div> -</div> -<a id="a2f92db538f25fce908d2cb3e5590944c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2f92db538f25fce908d2cb3e5590944c">◆ </a></span>ucx_avl_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_avl_free </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys a <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. </p> -<p>Note, that the contents are not automatically freed. Use may use <a class="el" href="avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279" title="Frees the contents of a UcxAVLTree. ">ucx_avl_free_content()</a> before calling this function.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the tree to destroy </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279" title="Frees the contents of a UcxAVLTree. ">ucx_avl_free_content()</a> </dd></dl> - -</div> -</div> -<a id="a31ad7fb196ca211f1fc39f4e15f72279"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a31ad7fb196ca211f1fc39f4e15f72279">◆ </a></span>ucx_avl_free_content()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_avl_free_content </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> </td> - <td class="paramname"><em>destr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Frees the contents of a <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. </p> -<p>This is a convenience function that iterates over the tree and passes all values to the specified destructor function.</p> -<p>If no destructor is specified (<code>NULL</code>), the free() function of the tree's own allocator is used.</p> -<p>You must ensure, that it is valid to pass each value in the map to the same destructor function.</p> -<p>You should free the entire tree afterwards, as the contents will be invalid.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>for which the contents shall be freed </td></tr> - <tr><td class="paramname">destr</td><td>optional pointer to a destructor function </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="avl_8h.html#a2f92db538f25fce908d2cb3e5590944c" title="Destroys a UcxAVLTree. ">ucx_avl_free()</a> </dd></dl> - -</div> -</div> -<a id="adbcf7ceb3f014a30c7214f7304519efe"></a> -<h2 class="memtitle"><span class="permalink"><a href="#adbcf7ceb3f014a30c7214f7304519efe">◆ </a></span>ucx_avl_get()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_avl_get </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">intptr_t </td> - <td class="paramname"><em>key</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Gets the value from the tree, that is associated with the specified key. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the value (or <code>NULL</code>, if the key is not present) </dd></dl> - -</div> -</div> -<a id="acf42da9a4168e47dc10b4ba0d27ceb4e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#acf42da9a4168e47dc10b4ba0d27ceb4e">◆ </a></span>ucx_avl_get_node()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a>* ucx_avl_get_node </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">intptr_t </td> - <td class="paramname"><em>key</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Gets the node from the tree, that is associated with the specified key. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the node (or <code>NULL</code>, if the key is not present) </dd></dl> - -</div> -</div> -<a id="a11b043d65a11b7092d5d98b298e5ede3"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a11b043d65a11b7092d5d98b298e5ede3">◆ </a></span>ucx_avl_new()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a>* ucx_avl_new </td> - <td>(</td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfunc</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Initializes a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with a default allocator. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">cmpfunc</td><td>the compare function that shall be used </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> object </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2" title="Initializes a new UcxAVLTree with the specified allocator. ">ucx_avl_new_a()</a> </dd></dl> - -</div> -</div> -<a id="af0f868d67e9dc08b4867c02a06c23ee2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af0f868d67e9dc08b4867c02a06c23ee2">◆ </a></span>ucx_avl_new_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a>* ucx_avl_new_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfunc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Initializes a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with the specified allocator. </p> -<p>The cmpfunc should be capable of comparing two keys within this AVL tree. So if you want to use null terminated strings as keys, you could use the <a class="el" href="utils_8h.html#aa6a37b9d172b6a5b2803d152f9e1b258" title="Wraps the strcmp function. ">ucx_cmp_str()</a> function here.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">cmpfunc</td><td>the compare function that shall be used </td></tr> - <tr><td class="paramname">allocator</td><td>the <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> that shall be used </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> object </dd></dl> - -</div> -</div> -<a id="a0e739aeb66dda6a6a3f6eb51b50cf346"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a0e739aeb66dda6a6a3f6eb51b50cf346">◆ </a></span>ucx_avl_pred()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a>* ucx_avl_pred </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td> - <td class="paramname"><em>node</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Finds the in-order predecessor of the given node. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">node</td><td>an AVL node </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the in-order predecessor of the given node, or <code>NULL</code> if the given node is the in-order minimum </dd></dl> - -</div> -</div> -<a id="aec401fab4a24a7edffa734f9baf88577"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aec401fab4a24a7edffa734f9baf88577">◆ </a></span>ucx_avl_put()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_avl_put </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">intptr_t </td> - <td class="paramname"><em>key</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>value</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Puts a key/value pair into the tree. </p> -<p>Attention: use this function only, if a possible old value does not need to be preserved.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - <tr><td class="paramname">value</td><td>the new value </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero, if and only if the operation succeeded </dd></dl> - -</div> -</div> -<a id="a32cf8955cc0226a82bacfc7b76d6474c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a32cf8955cc0226a82bacfc7b76d6474c">◆ </a></span>ucx_avl_put_s()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_avl_put_s </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">intptr_t </td> - <td class="paramname"><em>key</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>value</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void ** </td> - <td class="paramname"><em>oldvalue</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Puts a key/value pair into the tree. </p> -<p>This is a secure function which saves the old value to the variable pointed at by oldvalue.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - <tr><td class="paramname">value</td><td>the new value </td></tr> - <tr><td class="paramname">oldvalue</td><td>optional: a pointer to the location where a possible old value shall be stored </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero, if and only if the operation succeeded </dd></dl> - -</div> -</div> -<a id="a1d821119c805d7fbb7e424bc3effeba9"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1d821119c805d7fbb7e424bc3effeba9">◆ </a></span>ucx_avl_remove()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_avl_remove </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">intptr_t </td> - <td class="paramname"><em>key</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Removes an element from the AVL tree. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero, if and only if an element has been removed </dd></dl> - -</div> -</div> -<a id="a9a792b7d9e58073deef74a341f8bc720"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9a792b7d9e58073deef74a341f8bc720">◆ </a></span>ucx_avl_remove_node()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_avl_remove_node </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td> - <td class="paramname"><em>node</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Removes a node from the AVL tree. </p> -<p>Note: the specified node is logically removed. The tree implementation decides which memory area is freed. In most cases the here provided node is freed, so its further use is generally undefined.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr> - <tr><td class="paramname">node</td><td>the node to remove </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero, if and only if an element has been removed </dd></dl> - -</div> -</div> -<a id="a01aeeecd6415f0cc2b623486eb28f254"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a01aeeecd6415f0cc2b623486eb28f254">◆ </a></span>ucx_avl_remove_s()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_avl_remove_s </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> * </td> - <td class="paramname"><em>tree</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">intptr_t </td> - <td class="paramname"><em>key</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">intptr_t * </td> - <td class="paramname"><em>oldkey</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void ** </td> - <td class="paramname"><em>oldvalue</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Removes an element from the AVL tree. </p> -<p>This is a secure function which saves the old key and value data from node to the variables at the location of oldkey and oldvalue (if specified), so they can be freed afterwards (if necessary).</p> -<p>Note: the returned key in oldkey is possibly not the same as the provided key for the lookup (in terms of memory location).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr> - <tr><td class="paramname">key</td><td>the key of the element to remove </td></tr> - <tr><td class="paramname">oldkey</td><td>optional: a pointer to the location where the old key shall be stored </td></tr> - <tr><td class="paramname">oldvalue</td><td>optional: a pointer to the location where the old value shall be stored </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero, if and only if an element has been removed </dd></dl> - -</div> -</div> -<a id="aab1ad9b027ff5e50671aa0ee84e2d541"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aab1ad9b027ff5e50671aa0ee84e2d541">◆ </a></span>ucx_avl_succ()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a>* ucx_avl_succ </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td> - <td class="paramname"><em>node</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Finds the in-order successor of the given node. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">node</td><td>an AVL node </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the in-order successor of the given node, or <code>NULL</code> if the given node is the in-order maximum </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/avl_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/avl.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">avl.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="avl_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#ifndef UCX_AVL_H</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define UCX_AVL_H</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "<a class="code" href="allocator_8h.html">allocator.h</a>"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <inttypes.h></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="avl_8h.html#a08ba2496c2316df58548c3cc29712add"> 58</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxAVLNode.html">UcxAVLNode</a> <a class="code" href="structUcxAVLNode.html">UcxAVLNode</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="structUcxAVLNode.html"> 63</a></span> <span class="keyword">struct </span><a class="code" href="structUcxAVLNode.html">UcxAVLNode</a> {</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6"> 67</a></span>  intptr_t <a class="code" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">key</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="structUcxAVLNode.html#a302501b8c04c3fde668fe72249871258"> 71</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structUcxAVLNode.html#a302501b8c04c3fde668fe72249871258">value</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structUcxAVLNode.html#af129fd32863a7c35e82c5cd9d11dc95a"> 75</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxAVLNode.html#af129fd32863a7c35e82c5cd9d11dc95a">height</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="structUcxAVLNode.html#afc4e3b4f452aa2d91cabb2135b9d42f7"> 79</a></span>  <a class="code" href="structUcxAVLNode.html">UcxAVLNode</a> *<a class="code" href="structUcxAVLNode.html#afc4e3b4f452aa2d91cabb2135b9d42f7">parent</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="structUcxAVLNode.html#ad3a1c733f2c1cc81ac527f846fc24b9c"> 83</a></span>  <a class="code" href="structUcxAVLNode.html">UcxAVLNode</a> *<a class="code" href="structUcxAVLNode.html#ad3a1c733f2c1cc81ac527f846fc24b9c">left</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structUcxAVLNode.html#a7cbaa31dba8c7a89f4f8f7905f6fd238"> 87</a></span>  <a class="code" href="structUcxAVLNode.html">UcxAVLNode</a> *<a class="code" href="structUcxAVLNode.html#a7cbaa31dba8c7a89f4f8f7905f6fd238">right</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> };</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="structUcxAVLTree.html"> 93</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="structUcxAVLTree.html#a30652776b540156ad54c7d52833e4e28"> 97</a></span>  <a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxAVLTree.html#a30652776b540156ad54c7d52833e4e28">allocator</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structUcxAVLTree.html#a393a8fc99eb2c290d3cb67170081d742"> 101</a></span>  <a class="code" href="structUcxAVLNode.html">UcxAVLNode</a> *<a class="code" href="structUcxAVLTree.html#a393a8fc99eb2c290d3cb67170081d742">root</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="structUcxAVLTree.html#a87aff25cb726cb9eb88eb815a10d1004"> 106</a></span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> <a class="code" href="structUcxAVLTree.html#a87aff25cb726cb9eb88eb815a10d1004">cmpfunc</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="structUcxAVLTree.html#ae92a3bfad3fe33c8dcbdad85112f83fd"> 111</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structUcxAVLTree.html#ae92a3bfad3fe33c8dcbdad85112f83fd">userdata</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> } <a class="code" href="structUcxAVLTree.html">UcxAVLTree</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *<a class="code" href="avl_8h.html#a11b043d65a11b7092d5d98b298e5ede3">ucx_avl_new</a>(<a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfunc);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *<a class="code" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2">ucx_avl_new_a</a>(<a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfunc, <a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keywordtype">void</span> <a class="code" href="avl_8h.html#a2f92db538f25fce908d2cb3e5590944c">ucx_avl_free</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keywordtype">void</span> <a class="code" href="avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279">ucx_avl_free_content</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, <a class="code" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="avl_8h.html#ac2886d4b79b48c9fabf6408873f84cd2"> 173</a></span> <span class="preprocessor">#define ucx_avl_default_new() \</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor"> ucx_avl_new_a(ucx_cmp_ptr, ucx_default_allocator())</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <a class="code" href="structUcxAVLNode.html">UcxAVLNode</a> *<a class="code" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e">ucx_avl_get_node</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t <a class="code" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">key</a>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keywordtype">void</span> *<a class="code" href="avl_8h.html#adbcf7ceb3f014a30c7214f7304519efe">ucx_avl_get</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t <a class="code" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">key</a>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="avl_8h.html#aaaf4a6f6f661cda7791db239212285d9"> 196</a></span> <span class="preprocessor">#define UCX_AVL_FIND_EXACT 0</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="avl_8h.html#abd2446d544d5412b6997ee8a17bd368c"> 201</a></span> <span class="preprocessor">#define UCX_AVL_FIND_LOWER_BOUNDED 1</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="avl_8h.html#ac74ee7649c1e206b08b31f37dd68ca5e"> 206</a></span> <span class="preprocessor">#define UCX_AVL_FIND_UPPER_BOUNDED 2</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="avl_8h.html#af16f24d74fd6af0154de041566c6603b"> 213</a></span> <span class="preprocessor">#define UCX_AVL_FIND_CLOSEST 3</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <a class="code" href="structUcxAVLNode.html">UcxAVLNode</a> *<a class="code" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5">ucx_avl_find_node</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t <a class="code" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">key</a>,</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a> dfnc, <span class="keywordtype">int</span> mode);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="keywordtype">void</span> *<a class="code" href="avl_8h.html#a51770e1614b28d7d22dea096c3704f83">ucx_avl_find</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t <a class="code" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">key</a>,</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a> dfnc, <span class="keywordtype">int</span> mode);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keywordtype">int</span> <a class="code" href="avl_8h.html#aec401fab4a24a7edffa734f9baf88577">ucx_avl_put</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t <a class="code" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">key</a>, <span class="keywordtype">void</span> *<a class="code" href="structUcxAVLNode.html#a302501b8c04c3fde668fe72249871258">value</a>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="keywordtype">int</span> <a class="code" href="avl_8h.html#a32cf8955cc0226a82bacfc7b76d6474c">ucx_avl_put_s</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t <a class="code" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">key</a>, <span class="keywordtype">void</span> *<a class="code" href="structUcxAVLNode.html#a302501b8c04c3fde668fe72249871258">value</a>, <span class="keywordtype">void</span> **oldvalue);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="keywordtype">int</span> <a class="code" href="avl_8h.html#a9a792b7d9e58073deef74a341f8bc720">ucx_avl_remove_node</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, <a class="code" href="structUcxAVLNode.html">UcxAVLNode</a> *node);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="keywordtype">int</span> <a class="code" href="avl_8h.html#a1d821119c805d7fbb7e424bc3effeba9">ucx_avl_remove</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t <a class="code" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">key</a>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="keywordtype">int</span> <a class="code" href="avl_8h.html#a01aeeecd6415f0cc2b623486eb28f254">ucx_avl_remove_s</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t <a class="code" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">key</a>,</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  intptr_t *oldkey, <span class="keywordtype">void</span> **oldvalue);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="keywordtype">size_t</span> <a class="code" href="avl_8h.html#a92c1d41c2b22fe4a029a486ab2153e35">ucx_avl_count</a>(<a class="code" href="structUcxAVLTree.html">UcxAVLTree</a> *tree);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <a class="code" href="structUcxAVLNode.html">UcxAVLNode</a>* <a class="code" href="avl_8h.html#a0e739aeb66dda6a6a3f6eb51b50cf346">ucx_avl_pred</a>(<a class="code" href="structUcxAVLNode.html">UcxAVLNode</a>* node);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <a class="code" href="structUcxAVLNode.html">UcxAVLNode</a>* <a class="code" href="avl_8h.html#aab1ad9b027ff5e50671aa0ee84e2d541">ucx_avl_succ</a>(<a class="code" href="structUcxAVLNode.html">UcxAVLNode</a>* node);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_AVL_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="ttc" id="avl_8h_html_a11b043d65a11b7092d5d98b298e5ede3"><div class="ttname"><a href="avl_8h.html#a11b043d65a11b7092d5d98b298e5ede3">ucx_avl_new</a></div><div class="ttdeci">UcxAVLTree * ucx_avl_new(cmp_func cmpfunc)</div><div class="ttdoc">Initializes a new UcxAVLTree with a default allocator. </div><div class="ttdef"><b>Definition:</b> avl.c:109</div></div> -<div class="ttc" id="avl_8h_html_a1d821119c805d7fbb7e424bc3effeba9"><div class="ttname"><a href="avl_8h.html#a1d821119c805d7fbb7e424bc3effeba9">ucx_avl_remove</a></div><div class="ttdeci">int ucx_avl_remove(UcxAVLTree *tree, intptr_t key)</div><div class="ttdoc">Removes an element from the AVL tree. </div><div class="ttdef"><b>Definition:</b> avl.c:266</div></div> -<div class="ttc" id="structUcxAVLNode_html"><div class="ttname"><a href="structUcxAVLNode.html">UcxAVLNode</a></div><div class="ttdoc">UCX AVL Node. </div><div class="ttdef"><b>Definition:</b> avl.h:63</div></div> -<div class="ttc" id="ucx_8h_html_afe5e2d5dbf34778e0e97852051570791"><div class="ttname"><a href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a></div><div class="ttdeci">int(* cmp_func)(const void *, const void *, void *)</div><div class="ttdoc">Function pointer to a compare function. </div><div class="ttdef"><b>Definition:</b> ucx.h:84</div></div> -<div class="ttc" id="structUcxAVLNode_html_afc4e3b4f452aa2d91cabb2135b9d42f7"><div class="ttname"><a href="structUcxAVLNode.html#afc4e3b4f452aa2d91cabb2135b9d42f7">UcxAVLNode::parent</a></div><div class="ttdeci">UcxAVLNode * parent</div><div class="ttdoc">Parent node. </div><div class="ttdef"><b>Definition:</b> avl.h:79</div></div> -<div class="ttc" id="avl_8h_html_a0e739aeb66dda6a6a3f6eb51b50cf346"><div class="ttname"><a href="avl_8h.html#a0e739aeb66dda6a6a3f6eb51b50cf346">ucx_avl_pred</a></div><div class="ttdeci">UcxAVLNode * ucx_avl_pred(UcxAVLNode *node)</div><div class="ttdoc">Finds the in-order predecessor of the given node. </div><div class="ttdef"><b>Definition:</b> avl.c:335</div></div> -<div class="ttc" id="avl_8h_html_aec401fab4a24a7edffa734f9baf88577"><div class="ttname"><a href="avl_8h.html#aec401fab4a24a7edffa734f9baf88577">ucx_avl_put</a></div><div class="ttdeci">int ucx_avl_put(UcxAVLTree *tree, intptr_t key, void *value)</div><div class="ttdoc">Puts a key/value pair into the tree. </div><div class="ttdef"><b>Definition:</b> avl.c:211</div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="structUcxAVLTree_html"><div class="ttname"><a href="structUcxAVLTree.html">UcxAVLTree</a></div><div class="ttdoc">UCX AVL Tree. </div><div class="ttdef"><b>Definition:</b> avl.h:93</div></div> -<div class="ttc" id="avl_8h_html_a92c1d41c2b22fe4a029a486ab2153e35"><div class="ttname"><a href="avl_8h.html#a92c1d41c2b22fe4a029a486ab2153e35">ucx_avl_count</a></div><div class="ttdeci">size_t ucx_avl_count(UcxAVLTree *tree)</div><div class="ttdoc">Counts the nodes in the specified UcxAVLTree. </div><div class="ttdef"><b>Definition:</b> avl.c:331</div></div> -<div class="ttc" id="avl_8h_html_af0f868d67e9dc08b4867c02a06c23ee2"><div class="ttname"><a href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2">ucx_avl_new_a</a></div><div class="ttdeci">UcxAVLTree * ucx_avl_new_a(cmp_func cmpfunc, UcxAllocator *allocator)</div><div class="ttdoc">Initializes a new UcxAVLTree with the specified allocator. </div><div class="ttdef"><b>Definition:</b> avl.c:113</div></div> -<div class="ttc" id="structUcxAVLTree_html_ae92a3bfad3fe33c8dcbdad85112f83fd"><div class="ttname"><a href="structUcxAVLTree.html#ae92a3bfad3fe33c8dcbdad85112f83fd">UcxAVLTree::userdata</a></div><div class="ttdeci">void * userdata</div><div class="ttdoc">Custom user data. </div><div class="ttdef"><b>Definition:</b> avl.h:111</div></div> -<div class="ttc" id="avl_8h_html_a9a792b7d9e58073deef74a341f8bc720"><div class="ttname"><a href="avl_8h.html#a9a792b7d9e58073deef74a341f8bc720">ucx_avl_remove_node</a></div><div class="ttdeci">int ucx_avl_remove_node(UcxAVLTree *tree, UcxAVLNode *node)</div><div class="ttdoc">Removes a node from the AVL tree. </div><div class="ttdef"><b>Definition:</b> avl.c:270</div></div> -<div class="ttc" id="structUcxAVLTree_html_a87aff25cb726cb9eb88eb815a10d1004"><div class="ttname"><a href="structUcxAVLTree.html#a87aff25cb726cb9eb88eb815a10d1004">UcxAVLTree::cmpfunc</a></div><div class="ttdeci">cmp_func cmpfunc</div><div class="ttdoc">Compare function that shall be used to compare the UcxAVLNode keys. </div><div class="ttdef"><b>Definition:</b> avl.h:106</div></div> -<div class="ttc" id="avl_8h_html_aab1ad9b027ff5e50671aa0ee84e2d541"><div class="ttname"><a href="avl_8h.html#aab1ad9b027ff5e50671aa0ee84e2d541">ucx_avl_succ</a></div><div class="ttdeci">UcxAVLNode * ucx_avl_succ(UcxAVLNode *node)</div><div class="ttdoc">Finds the in-order successor of the given node. </div><div class="ttdef"><b>Definition:</b> avl.c:355</div></div> -<div class="ttc" id="avl_8h_html_a31ad7fb196ca211f1fc39f4e15f72279"><div class="ttname"><a href="avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279">ucx_avl_free_content</a></div><div class="ttdeci">void ucx_avl_free_content(UcxAVLTree *tree, ucx_destructor destr)</div><div class="ttdoc">Frees the contents of a UcxAVLTree. </div><div class="ttdef"><b>Definition:</b> avl.c:152</div></div> -<div class="ttc" id="structUcxAVLTree_html_a30652776b540156ad54c7d52833e4e28"><div class="ttname"><a href="structUcxAVLTree.html#a30652776b540156ad54c7d52833e4e28">UcxAVLTree::allocator</a></div><div class="ttdeci">UcxAllocator * allocator</div><div class="ttdoc">The UcxAllocator that shall be used to manage the memory for node data. </div><div class="ttdef"><b>Definition:</b> avl.h:97</div></div> -<div class="ttc" id="avl_8h_html_a01aeeecd6415f0cc2b623486eb28f254"><div class="ttname"><a href="avl_8h.html#a01aeeecd6415f0cc2b623486eb28f254">ucx_avl_remove_s</a></div><div class="ttdeci">int ucx_avl_remove_s(UcxAVLTree *tree, intptr_t key, intptr_t *oldkey, void **oldvalue)</div><div class="ttdoc">Removes an element from the AVL tree. </div><div class="ttdef"><b>Definition:</b> avl.c:274</div></div> -<div class="ttc" id="avl_8h_html_a51770e1614b28d7d22dea096c3704f83"><div class="ttname"><a href="avl_8h.html#a51770e1614b28d7d22dea096c3704f83">ucx_avl_find</a></div><div class="ttdeci">void * ucx_avl_find(UcxAVLTree *tree, intptr_t key, distance_func dfnc, int mode)</div><div class="ttdoc">Finds a value within the tree. </div><div class="ttdef"><b>Definition:</b> avl.c:205</div></div> -<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div> -<div class="ttc" id="avl_8h_html_a32cf8955cc0226a82bacfc7b76d6474c"><div class="ttname"><a href="avl_8h.html#a32cf8955cc0226a82bacfc7b76d6474c">ucx_avl_put_s</a></div><div class="ttdeci">int ucx_avl_put_s(UcxAVLTree *tree, intptr_t key, void *value, void **oldvalue)</div><div class="ttdoc">Puts a key/value pair into the tree. </div><div class="ttdef"><b>Definition:</b> avl.c:215</div></div> -<div class="ttc" id="structUcxAVLTree_html_a393a8fc99eb2c290d3cb67170081d742"><div class="ttname"><a href="structUcxAVLTree.html#a393a8fc99eb2c290d3cb67170081d742">UcxAVLTree::root</a></div><div class="ttdeci">UcxAVLNode * root</div><div class="ttdoc">Root node of the tree. </div><div class="ttdef"><b>Definition:</b> avl.h:101</div></div> -<div class="ttc" id="ucx_8h_html_a0bc5bf89e556c1d45d10863d52728ac9"><div class="ttname"><a href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a></div><div class="ttdeci">intmax_t(* distance_func)(const void *, const void *, void *)</div><div class="ttdoc">Function pointer to a distance function. </div><div class="ttdef"><b>Definition:</b> ucx.h:93</div></div> -<div class="ttc" id="allocator_8h_html"><div class="ttname"><a href="allocator_8h.html">allocator.h</a></div><div class="ttdoc">Allocator for custom memory management. </div></div> -<div class="ttc" id="avl_8h_html_adbcf7ceb3f014a30c7214f7304519efe"><div class="ttname"><a href="avl_8h.html#adbcf7ceb3f014a30c7214f7304519efe">ucx_avl_get</a></div><div class="ttdeci">void * ucx_avl_get(UcxAVLTree *tree, intptr_t key)</div><div class="ttdoc">Gets the value from the tree, that is associated with the specified key. </div><div class="ttdef"><b>Definition:</b> avl.c:166</div></div> -<div class="ttc" id="structUcxAVLNode_html_ad3a1c733f2c1cc81ac527f846fc24b9c"><div class="ttname"><a href="structUcxAVLNode.html#ad3a1c733f2c1cc81ac527f846fc24b9c">UcxAVLNode::left</a></div><div class="ttdeci">UcxAVLNode * left</div><div class="ttdoc">Root node of left subtree. </div><div class="ttdef"><b>Definition:</b> avl.h:83</div></div> -<div class="ttc" id="avl_8h_html_a2f92db538f25fce908d2cb3e5590944c"><div class="ttname"><a href="avl_8h.html#a2f92db538f25fce908d2cb3e5590944c">ucx_avl_free</a></div><div class="ttdeci">void ucx_avl_free(UcxAVLTree *tree)</div><div class="ttdoc">Destroys a UcxAVLTree. </div><div class="ttdef"><b>Definition:</b> avl.c:133</div></div> -<div class="ttc" id="structUcxAVLNode_html_a302501b8c04c3fde668fe72249871258"><div class="ttname"><a href="structUcxAVLNode.html#a302501b8c04c3fde668fe72249871258">UcxAVLNode::value</a></div><div class="ttdeci">void * value</div><div class="ttdoc">Data contained by this node. </div><div class="ttdef"><b>Definition:</b> avl.h:71</div></div> -<div class="ttc" id="avl_8h_html_a664986f64d6865605199fbff06e19cd5"><div class="ttname"><a href="avl_8h.html#a664986f64d6865605199fbff06e19cd5">ucx_avl_find_node</a></div><div class="ttdeci">UcxAVLNode * ucx_avl_find_node(UcxAVLTree *tree, intptr_t key, distance_func dfnc, int mode)</div><div class="ttdoc">Finds a node within the tree. </div><div class="ttdef"><b>Definition:</b> avl.c:171</div></div> -<div class="ttc" id="structUcxAVLNode_html_ab65a31010d26a3df898e6ba534702af6"><div class="ttname"><a href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">UcxAVLNode::key</a></div><div class="ttdeci">intptr_t key</div><div class="ttdoc">The key for this node. </div><div class="ttdef"><b>Definition:</b> avl.h:67</div></div> -<div class="ttc" id="structUcxAVLNode_html_a7cbaa31dba8c7a89f4f8f7905f6fd238"><div class="ttname"><a href="structUcxAVLNode.html#a7cbaa31dba8c7a89f4f8f7905f6fd238">UcxAVLNode::right</a></div><div class="ttdeci">UcxAVLNode * right</div><div class="ttdoc">Root node of right subtree. </div><div class="ttdef"><b>Definition:</b> avl.h:87</div></div> -<div class="ttc" id="avl_8h_html_acf42da9a4168e47dc10b4ba0d27ceb4e"><div class="ttname"><a href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e">ucx_avl_get_node</a></div><div class="ttdeci">UcxAVLNode * ucx_avl_get_node(UcxAVLTree *tree, intptr_t key)</div><div class="ttdoc">Gets the node from the tree, that is associated with the specified key. </div><div class="ttdef"><b>Definition:</b> avl.c:156</div></div> -<div class="ttc" id="structUcxAVLNode_html_af129fd32863a7c35e82c5cd9d11dc95a"><div class="ttname"><a href="structUcxAVLNode.html#af129fd32863a7c35e82c5cd9d11dc95a">UcxAVLNode::height</a></div><div class="ttdeci">size_t height</div><div class="ttdoc">The height of this (sub)-tree. </div><div class="ttdef"><b>Definition:</b> avl.h:75</div></div> -<div class="ttc" id="ucx_8h_html_ad2b370c2809914c8b7fedab163c266b3"><div class="ttname"><a href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a></div><div class="ttdeci">void(* ucx_destructor)(void *)</div><div class="ttdoc">A function pointer to a destructor function. </div><div class="ttdef"><b>Definition:</b> ucx.h:72</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/buffer_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,844 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/buffer.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">buffer.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Advanced buffer implementation. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include <sys/types.h></code><br /> -<code>#include <stdio.h></code><br /> -</div> -<p><a href="buffer_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxBuffer.html">UcxBuffer</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">UCX Buffer. <a href="structUcxBuffer.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:acc77c8ed7b26854f555d4a5d11e49ea2"><td class="memItemLeft" align="right" valign="top"><a id="acc77c8ed7b26854f555d4a5d11e49ea2"></a> -#define </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#acc77c8ed7b26854f555d4a5d11e49ea2">UCX_BUFFER_DEFAULT</a>   0x00</td></tr> -<tr class="memdesc:acc77c8ed7b26854f555d4a5d11e49ea2"><td class="mdescLeft"> </td><td class="mdescRight">No buffer features enabled (all flags cleared). <br /></td></tr> -<tr class="separator:acc77c8ed7b26854f555d4a5d11e49ea2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8bab11ad8a76719228b9ee91e2e45535"><td class="memItemLeft" align="right" valign="top"><a id="a8bab11ad8a76719228b9ee91e2e45535"></a> -#define </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535">UCX_BUFFER_AUTOFREE</a>   0x01</td></tr> -<tr class="memdesc:a8bab11ad8a76719228b9ee91e2e45535"><td class="mdescLeft"> </td><td class="mdescRight">If this flag is enabled, the buffer will automatically free its contents. <br /></td></tr> -<tr class="separator:a8bab11ad8a76719228b9ee91e2e45535"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a05f9565f2d04399168c3b1c152a632be"><td class="memItemLeft" align="right" valign="top"><a id="a05f9565f2d04399168c3b1c152a632be"></a> -#define </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a05f9565f2d04399168c3b1c152a632be">UCX_BUFFER_AUTOEXTEND</a>   0x02</td></tr> -<tr class="memdesc:a05f9565f2d04399168c3b1c152a632be"><td class="mdescLeft"> </td><td class="mdescRight">If this flag is enabled, the buffer will automatically extends its capacity. <br /></td></tr> -<tr class="separator:a05f9565f2d04399168c3b1c152a632be"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a828353846428c2c2f695f9938f059e52"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a828353846428c2c2f695f9938f059e52">ucx_buffer_clone</a>(src, flags)   <a class="el" href="buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef">ucx_buffer_extract</a>(src, 0, (src)->capacity, flags)</td></tr> -<tr class="memdesc:a828353846428c2c2f695f9938f059e52"><td class="mdescLeft"> </td><td class="mdescRight">A shorthand macro for the full extraction of the buffer. <a href="#a828353846428c2c2f695f9938f059e52">More...</a><br /></td></tr> -<tr class="separator:a828353846428c2c2f695f9938f059e52"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a374abd5aabfcc3ee0777a79d5fe651ab"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a374abd5aabfcc3ee0777a79d5fe651ab">ucx_buffer_clear</a>(buffer)</td></tr> -<tr class="memdesc:a374abd5aabfcc3ee0777a79d5fe651ab"><td class="mdescLeft"> </td><td class="mdescRight">Clears the buffer by resetting the position and deleting the data. <a href="#a374abd5aabfcc3ee0777a79d5fe651ab">More...</a><br /></td></tr> -<tr class="separator:a374abd5aabfcc3ee0777a79d5fe651ab"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a0f4b64f1b3a74c4f6c5d9409d6b6086a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a0f4b64f1b3a74c4f6c5d9409d6b6086a">ucx_buffer_to_sstr</a>(buffer)   <a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>((buffer)->space, (buffer)->size)</td></tr> -<tr class="memdesc:a0f4b64f1b3a74c4f6c5d9409d6b6086a"><td class="mdescLeft"> </td><td class="mdescRight">Returns the complete buffer content as <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a>. <a href="#a0f4b64f1b3a74c4f6c5d9409d6b6086a">More...</a><br /></td></tr> -<tr class="separator:a0f4b64f1b3a74c4f6c5d9409d6b6086a"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:aacea876d692193ec6f859ce98da7351c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#aacea876d692193ec6f859ce98da7351c">ucx_buffer_new</a> (void *space, size_t capacity, int flags)</td></tr> -<tr class="memdesc:aacea876d692193ec6f859ce98da7351c"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new buffer. <a href="#aacea876d692193ec6f859ce98da7351c">More...</a><br /></td></tr> -<tr class="separator:aacea876d692193ec6f859ce98da7351c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2af8646d8905c22c7322e7540b0440af"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a2af8646d8905c22c7322e7540b0440af">ucx_buffer_free</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer)</td></tr> -<tr class="memdesc:a2af8646d8905c22c7322e7540b0440af"><td class="mdescLeft"> </td><td class="mdescRight">Destroys a buffer. <a href="#a2af8646d8905c22c7322e7540b0440af">More...</a><br /></td></tr> -<tr class="separator:a2af8646d8905c22c7322e7540b0440af"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a33fa7bb35fe08bbb3542f227514332ef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef">ucx_buffer_extract</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *src, size_t start, size_t length, int flags)</td></tr> -<tr class="memdesc:a33fa7bb35fe08bbb3542f227514332ef"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new buffer and fills it with extracted content from another buffer. <a href="#a33fa7bb35fe08bbb3542f227514332ef">More...</a><br /></td></tr> -<tr class="separator:a33fa7bb35fe08bbb3542f227514332ef"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a12a0c6a2379ef080043e6286bb8bad69"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69">ucx_buffer_shift</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, off_t shift)</td></tr> -<tr class="memdesc:a12a0c6a2379ef080043e6286bb8bad69"><td class="mdescLeft"> </td><td class="mdescRight">Shifts the contents of the buffer by the given offset. <a href="#a12a0c6a2379ef080043e6286bb8bad69">More...</a><br /></td></tr> -<tr class="separator:a12a0c6a2379ef080043e6286bb8bad69"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4fa10b6471495547eb981248fd4f1bc2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a4fa10b6471495547eb981248fd4f1bc2">ucx_buffer_shift_right</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, size_t shift)</td></tr> -<tr class="memdesc:a4fa10b6471495547eb981248fd4f1bc2"><td class="mdescLeft"> </td><td class="mdescRight">Shifts the buffer to the right. <a href="#a4fa10b6471495547eb981248fd4f1bc2">More...</a><br /></td></tr> -<tr class="separator:a4fa10b6471495547eb981248fd4f1bc2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a20431dd0ed6a6fe9f15333bd72afe4db"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a20431dd0ed6a6fe9f15333bd72afe4db">ucx_buffer_shift_left</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, size_t shift)</td></tr> -<tr class="memdesc:a20431dd0ed6a6fe9f15333bd72afe4db"><td class="mdescLeft"> </td><td class="mdescRight">Shifts the buffer to the left. <a href="#a20431dd0ed6a6fe9f15333bd72afe4db">More...</a><br /></td></tr> -<tr class="separator:a20431dd0ed6a6fe9f15333bd72afe4db"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a47d98482662073c74f35deb0957d15d1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a47d98482662073c74f35deb0957d15d1">ucx_buffer_seek</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, off_t offset, int whence)</td></tr> -<tr class="memdesc:a47d98482662073c74f35deb0957d15d1"><td class="mdescLeft"> </td><td class="mdescRight">Moves the position of the buffer. <a href="#a47d98482662073c74f35deb0957d15d1">More...</a><br /></td></tr> -<tr class="separator:a47d98482662073c74f35deb0957d15d1"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:abad7fd9ad5061224c780b8d1d4c55f09"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#abad7fd9ad5061224c780b8d1d4c55f09">ucx_buffer_eof</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer)</td></tr> -<tr class="memdesc:abad7fd9ad5061224c780b8d1d4c55f09"><td class="mdescLeft"> </td><td class="mdescRight">Tests, if the buffer position has exceeded the buffer capacity. <a href="#abad7fd9ad5061224c780b8d1d4c55f09">More...</a><br /></td></tr> -<tr class="separator:abad7fd9ad5061224c780b8d1d4c55f09"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:afaf97d2cd7e9faad79a9d35fe33e30c6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#afaf97d2cd7e9faad79a9d35fe33e30c6">ucx_buffer_extend</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, size_t additional_bytes)</td></tr> -<tr class="memdesc:afaf97d2cd7e9faad79a9d35fe33e30c6"><td class="mdescLeft"> </td><td class="mdescRight">Extends the capacity of the buffer. <a href="#afaf97d2cd7e9faad79a9d35fe33e30c6">More...</a><br /></td></tr> -<tr class="separator:afaf97d2cd7e9faad79a9d35fe33e30c6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af8aacc7401814392b58c1b7b81bffc05"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05">ucx_buffer_write</a> (const void *ptr, size_t size, size_t nitems, <a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer)</td></tr> -<tr class="memdesc:af8aacc7401814392b58c1b7b81bffc05"><td class="mdescLeft"> </td><td class="mdescRight">Writes data to a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. <a href="#af8aacc7401814392b58c1b7b81bffc05">More...</a><br /></td></tr> -<tr class="separator:af8aacc7401814392b58c1b7b81bffc05"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae5c3430759f0059547b35d5a254d4da5"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#ae5c3430759f0059547b35d5a254d4da5">ucx_buffer_read</a> (void *ptr, size_t size, size_t nitems, <a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer)</td></tr> -<tr class="memdesc:ae5c3430759f0059547b35d5a254d4da5"><td class="mdescLeft"> </td><td class="mdescRight">Reads data from a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. <a href="#ae5c3430759f0059547b35d5a254d4da5">More...</a><br /></td></tr> -<tr class="separator:ae5c3430759f0059547b35d5a254d4da5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7d6f01b9d631b0123475dfb98fb849ac"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a7d6f01b9d631b0123475dfb98fb849ac">ucx_buffer_putc</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, int c)</td></tr> -<tr class="memdesc:a7d6f01b9d631b0123475dfb98fb849ac"><td class="mdescLeft"> </td><td class="mdescRight">Writes a character to a buffer. <a href="#a7d6f01b9d631b0123475dfb98fb849ac">More...</a><br /></td></tr> -<tr class="separator:a7d6f01b9d631b0123475dfb98fb849ac"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a396339022159ce4ca6d069de9f9209b0"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a396339022159ce4ca6d069de9f9209b0">ucx_buffer_getc</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer)</td></tr> -<tr class="memdesc:a396339022159ce4ca6d069de9f9209b0"><td class="mdescLeft"> </td><td class="mdescRight">Gets a character from a buffer. <a href="#a396339022159ce4ca6d069de9f9209b0">More...</a><br /></td></tr> -<tr class="separator:a396339022159ce4ca6d069de9f9209b0"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af1d4b478e04b3ae0bf30e7c2ea964ea2"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#af1d4b478e04b3ae0bf30e7c2ea964ea2">ucx_buffer_puts</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, const char *str)</td></tr> -<tr class="memdesc:af1d4b478e04b3ae0bf30e7c2ea964ea2"><td class="mdescLeft"> </td><td class="mdescRight">Writes a string to a buffer. <a href="#af1d4b478e04b3ae0bf30e7c2ea964ea2">More...</a><br /></td></tr> -<tr class="separator:af1d4b478e04b3ae0bf30e7c2ea964ea2"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Advanced buffer implementation. </p> -<p>Instances of <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a> can be used to read from or to write to like one would do with a stream. This allows the use of <a class="el" href="utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392" title="Shorthand for an unbounded ucx_stream_bncopy call using a default buffer. ">ucx_stream_copy()</a> to copy contents from one buffer to another.</p> -<p>Some features for convenient use of the buffer can be enabled. See the documentation of the macro constants for more information.</p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a374abd5aabfcc3ee0777a79d5fe651ab"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a374abd5aabfcc3ee0777a79d5fe651ab">◆ </a></span>ucx_buffer_clear</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_buffer_clear</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">buffer</td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line">memset((buffer)->space, 0, (buffer)->size); \</div><div class="line"> (buffer)->size = 0; (buffer)->pos = 0;</div></div><!-- fragment --> -<p>Clears the buffer by resetting the position and deleting the data. </p> -<p>The data is deleted by a zeroing it with call to <code>memset()</code>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer to be cleared </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a828353846428c2c2f695f9938f059e52"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a828353846428c2c2f695f9938f059e52">◆ </a></span>ucx_buffer_clone</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_buffer_clone</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">src, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">flags </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef">ucx_buffer_extract</a>(src, 0, (src)->capacity, flags)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A shorthand macro for the full extraction of the buffer. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">src</td><td>the source buffer </td></tr> - <tr><td class="paramname">flags</td><td>feature mask for the new buffer </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new buffer with the extracted content </dd></dl> - -</div> -</div> -<a id="a0f4b64f1b3a74c4f6c5d9409d6b6086a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a0f4b64f1b3a74c4f6c5d9409d6b6086a">◆ </a></span>ucx_buffer_to_sstr</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_buffer_to_sstr</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">buffer</td><td>)</td> - <td>   <a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>((buffer)->space, (buffer)->size)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the complete buffer content as <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a>. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the result of <code><a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c" title="Creates a new sstr_t of the specified length based on a C string. ">sstrn()</a></code> with the buffer space and size as arguments </dd></dl> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="abad7fd9ad5061224c780b8d1d4c55f09"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abad7fd9ad5061224c780b8d1d4c55f09">◆ </a></span>ucx_buffer_eof()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_buffer_eof </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Tests, if the buffer position has exceeded the buffer capacity. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer to test </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>non-zero, if the current buffer position has exceeded the last available byte of the buffer. </dd></dl> - -</div> -</div> -<a id="afaf97d2cd7e9faad79a9d35fe33e30c6"></a> -<h2 class="memtitle"><span class="permalink"><a href="#afaf97d2cd7e9faad79a9d35fe33e30c6">◆ </a></span>ucx_buffer_extend()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_buffer_extend </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>additional_bytes</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Extends the capacity of the buffer. </p> -<p><b>Note:</b> The buffer capacity increased by a power of two. I.e. the buffer capacity is doubled, as long as it would not hold the current content plus the additional required bytes.</p> -<p><b>Attention:</b> the argument provided is the number of <em>additional</em> bytes the buffer shall hold. It is <b>NOT</b> the total number of bytes the buffer shall hold.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer to extend </td></tr> - <tr><td class="paramname">additional_bytes</td><td>the number of additional bytes the buffer shall <em>at least</em> hold </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success or a non-zero value on failure </dd></dl> - -</div> -</div> -<a id="a33fa7bb35fe08bbb3542f227514332ef"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a33fa7bb35fe08bbb3542f227514332ef">◆ </a></span>ucx_buffer_extract()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxBuffer.html">UcxBuffer</a>* ucx_buffer_extract </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>src</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>start</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>length</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">int </td> - <td class="paramname"><em>flags</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new buffer and fills it with extracted content from another buffer. </p> -<p><b>Note:</b> the <a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535" title="If this flag is enabled, the buffer will automatically free its contents. ">UCX_BUFFER_AUTOFREE</a> feature is enforced for the new buffer.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">src</td><td>the source buffer </td></tr> - <tr><td class="paramname">start</td><td>the start position of extraction </td></tr> - <tr><td class="paramname">length</td><td>the count of bytes to extract (must not be zero) </td></tr> - <tr><td class="paramname">flags</td><td>feature mask for the new buffer </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new buffer containing the extraction </dd></dl> - -</div> -</div> -<a id="a2af8646d8905c22c7322e7540b0440af"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2af8646d8905c22c7322e7540b0440af">◆ </a></span>ucx_buffer_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_buffer_free </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys a buffer. </p> -<p>If the <a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535" title="If this flag is enabled, the buffer will automatically free its contents. ">UCX_BUFFER_AUTOFREE</a> feature is enabled, the contents of the buffer are also freed.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer to destroy </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a396339022159ce4ca6d069de9f9209b0"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a396339022159ce4ca6d069de9f9209b0">◆ </a></span>ucx_buffer_getc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_buffer_getc </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Gets a character from a buffer. </p> -<p>The current position of the buffer is increased after a successful read.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer to read from </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the character as <code>int</code> value or <code>EOF</code>, if the end of the buffer is reached </dd></dl> - -</div> -</div> -<a id="aacea876d692193ec6f859ce98da7351c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aacea876d692193ec6f859ce98da7351c">◆ </a></span>ucx_buffer_new()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxBuffer.html">UcxBuffer</a>* ucx_buffer_new </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>space</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>capacity</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">int </td> - <td class="paramname"><em>flags</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new buffer. </p> -<p><b>Note:</b> you may provide <code>NULL</code> as argument for <code>space</code>. Then this function will allocate the space and enforce the <a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535" title="If this flag is enabled, the buffer will automatically free its contents. ">UCX_BUFFER_AUTOFREE</a> flag.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">space</td><td>pointer to the memory area, or <code>NULL</code> to allocate new memory </td></tr> - <tr><td class="paramname">capacity</td><td>the capacity of the buffer </td></tr> - <tr><td class="paramname">flags</td><td>buffer features (see <a class="el" href="structUcxBuffer.html#ac642e07b0a03be5aac48eb4aa5bec2f7" title="Flag register for buffer features. ">UcxBuffer.flags</a>) </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the new buffer </dd></dl> - -</div> -</div> -<a id="a7d6f01b9d631b0123475dfb98fb849ac"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a7d6f01b9d631b0123475dfb98fb849ac">◆ </a></span>ucx_buffer_putc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_buffer_putc </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">int </td> - <td class="paramname"><em>c</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Writes a character to a buffer. </p> -<p>The least significant byte of the argument is written to the buffer. If the end of the buffer is reached and <a class="el" href="buffer_8h.html#a05f9565f2d04399168c3b1c152a632be" title="If this flag is enabled, the buffer will automatically extends its capacity. ">UCX_BUFFER_AUTOEXTEND</a> feature is enabled, the buffer capacity is extended by <a class="el" href="buffer_8h.html#afaf97d2cd7e9faad79a9d35fe33e30c6" title="Extends the capacity of the buffer. ">ucx_buffer_extend()</a>. If the feature is disabled or buffer extension fails, <code>EOF</code> is returned.</p> -<p>On successful write the position of the buffer is increased.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer to write to </td></tr> - <tr><td class="paramname">c</td><td>the character to write as <code>int</code> value </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the byte that has bean written as <code>int</code> value or <code>EOF</code> when the end of the stream is reached and automatic extension is not enabled or not possible </dd></dl> - -</div> -</div> -<a id="af1d4b478e04b3ae0bf30e7c2ea964ea2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af1d4b478e04b3ae0bf30e7c2ea964ea2">◆ </a></span>ucx_buffer_puts()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t ucx_buffer_puts </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const char * </td> - <td class="paramname"><em>str</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Writes a string to a buffer. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer </td></tr> - <tr><td class="paramname">str</td><td>the string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the number of bytes written </dd></dl> - -</div> -</div> -<a id="ae5c3430759f0059547b35d5a254d4da5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae5c3430759f0059547b35d5a254d4da5">◆ </a></span>ucx_buffer_read()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t ucx_buffer_read </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ptr</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>size</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>nitems</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Reads data from a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. </p> -<p>The position of the buffer is increased by the number of bytes read.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">ptr</td><td>a pointer to the memory area where to store the read data </td></tr> - <tr><td class="paramname">size</td><td>the length of one element </td></tr> - <tr><td class="paramname">nitems</td><td>the element count </td></tr> - <tr><td class="paramname">buffer</td><td>the <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a> to read from </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the total number of elements read </dd></dl> - -</div> -</div> -<a id="a47d98482662073c74f35deb0957d15d1"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a47d98482662073c74f35deb0957d15d1">◆ </a></span>ucx_buffer_seek()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_buffer_seek </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">off_t </td> - <td class="paramname"><em>offset</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">int </td> - <td class="paramname"><em>whence</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Moves the position of the buffer. </p> -<p>The new position is relative to the <code>whence</code> argument.</p> -<p>SEEK_SET marks the start of the buffer. SEEK_CUR marks the current position. SEEK_END marks the end of the buffer.</p> -<p>With an offset of zero, this function sets the buffer position to zero (SEEK_SET), the buffer size (SEEK_END) or leaves the buffer position unchanged (SEEK_CUR).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td></td></tr> - <tr><td class="paramname">offset</td><td>position offset relative to <code>whence</code> </td></tr> - <tr><td class="paramname">whence</td><td>one of SEEK_SET, SEEK_CUR or SEEK_END </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero if the position is invalid </dd></dl> - -</div> -</div> -<a id="a12a0c6a2379ef080043e6286bb8bad69"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a12a0c6a2379ef080043e6286bb8bad69">◆ </a></span>ucx_buffer_shift()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_buffer_shift </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">off_t </td> - <td class="paramname"><em>shift</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shifts the contents of the buffer by the given offset. </p> -<p>If the offset is positive, the contents are shifted to the right. If auto extension is enabled, the buffer grows, if necessary. In case the auto extension fails, this function returns a non-zero value and no contents are changed. If auto extension is disabled, the contents that do not fit into the buffer are discarded.</p> -<p>If the offset is negative, the contents are shifted to the left where the first <code>shift</code> bytes are discarded. The new size of the buffer is the old size minus the absolute shift value. If this value is larger than the buffer size, the buffer is emptied (but not cleared, see the security note below).</p> -<p>The buffer position gets shifted alongside with the content but is kept within the boundaries of the buffer.</p> -<p><b>Security note:</b> the shifting operation does <em>not</em> erase the previously occupied memory cells. You can easily do that manually, e.g. by calling <code>memset(buffer->space, 0, shift)</code> for a right shift or <code>memset(buffer->size, 0, buffer->capacity-buffer->size)</code> for a left shift.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer </td></tr> - <tr><td class="paramname">shift</td><td>the shift offset (negative means left shift) </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero if a required auto-extension fails </dd></dl> - -</div> -</div> -<a id="a20431dd0ed6a6fe9f15333bd72afe4db"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a20431dd0ed6a6fe9f15333bd72afe4db">◆ </a></span>ucx_buffer_shift_left()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_buffer_shift_left </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>shift</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shifts the buffer to the left. </p> -<p>See <a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69" title="Shifts the contents of the buffer by the given offset. ">ucx_buffer_shift()</a> for details. Note, however, that this method expects a positive shift offset.</p> -<p>Since a left shift cannot fail due to memory allocation problems, this function always returns zero.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer </td></tr> - <tr><td class="paramname">shift</td><td>the shift offset </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>always zero </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69" title="Shifts the contents of the buffer by the given offset. ">ucx_buffer_shift()</a> </dd></dl> - -</div> -</div> -<a id="a4fa10b6471495547eb981248fd4f1bc2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4fa10b6471495547eb981248fd4f1bc2">◆ </a></span>ucx_buffer_shift_right()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_buffer_shift_right </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>shift</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shifts the buffer to the right. </p> -<p>See <a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69" title="Shifts the contents of the buffer by the given offset. ">ucx_buffer_shift()</a> for details.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer </td></tr> - <tr><td class="paramname">shift</td><td>the shift offset </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero if a required auto-extension fails </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69" title="Shifts the contents of the buffer by the given offset. ">ucx_buffer_shift()</a> </dd></dl> - -</div> -</div> -<a id="af8aacc7401814392b58c1b7b81bffc05"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af8aacc7401814392b58c1b7b81bffc05">◆ </a></span>ucx_buffer_write()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t ucx_buffer_write </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>ptr</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>size</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>nitems</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> * </td> - <td class="paramname"><em>buffer</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Writes data to a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. </p> -<p>The position of the buffer is increased by the number of bytes written.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">ptr</td><td>a pointer to the memory area containing the bytes to be written </td></tr> - <tr><td class="paramname">size</td><td>the length of one element </td></tr> - <tr><td class="paramname">nitems</td><td>the element count </td></tr> - <tr><td class="paramname">buffer</td><td>the <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a> to write to </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the total count of bytes written </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/buffer_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/buffer.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">buffer.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="buffer_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#ifndef UCX_BUFFER_H</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#define UCX_BUFFER_H</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="buffer_8h.html#acc77c8ed7b26854f555d4a5d11e49ea2"> 60</a></span> <span class="preprocessor">#define UCX_BUFFER_DEFAULT 0x00</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535"> 65</a></span> <span class="preprocessor">#define UCX_BUFFER_AUTOFREE 0x01</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="buffer_8h.html#a05f9565f2d04399168c3b1c152a632be"> 70</a></span> <span class="preprocessor">#define UCX_BUFFER_AUTOEXTEND 0x02</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="structUcxBuffer.html"> 73</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structUcxBuffer.html#a1a5076e85acb84b715a53bc0f37fb721"> 75</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structUcxBuffer.html#a1a5076e85acb84b715a53bc0f37fb721">space</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="structUcxBuffer.html#a7a64288f002cf62b492e2ea49c79615c"> 77</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxBuffer.html#a7a64288f002cf62b492e2ea49c79615c">pos</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="structUcxBuffer.html#a385661894f3cee9c549bfe07a8b316bf"> 79</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxBuffer.html#a385661894f3cee9c549bfe07a8b316bf">capacity</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="structUcxBuffer.html#aec0aea8325394951d5ad4a9fbb8e1ac7"> 81</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxBuffer.html#aec0aea8325394951d5ad4a9fbb8e1ac7">size</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="structUcxBuffer.html#ac642e07b0a03be5aac48eb4aa5bec2f7"> 88</a></span>  <span class="keywordtype">int</span> <a class="code" href="structUcxBuffer.html#ac642e07b0a03be5aac48eb4aa5bec2f7">flags</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> } <a class="code" href="structUcxBuffer.html">UcxBuffer</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <a class="code" href="structUcxBuffer.html">UcxBuffer</a> *<a class="code" href="buffer_8h.html#aacea876d692193ec6f859ce98da7351c">ucx_buffer_new</a>(<span class="keywordtype">void</span> *space, <span class="keywordtype">size_t</span> capacity, <span class="keywordtype">int</span> flags);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">void</span> <a class="code" href="buffer_8h.html#a2af8646d8905c22c7322e7540b0440af">ucx_buffer_free</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a>* buffer);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <a class="code" href="structUcxBuffer.html">UcxBuffer</a>* <a class="code" href="buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef">ucx_buffer_extract</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a> *src,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">size_t</span> start, <span class="keywordtype">size_t</span> length, <span class="keywordtype">int</span> flags);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="buffer_8h.html#a828353846428c2c2f695f9938f059e52"> 137</a></span> <span class="preprocessor">#define ucx_buffer_clone(src,flags) \</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor"> ucx_buffer_extract(src, 0, (src)->capacity, flags)</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keywordtype">int</span> <a class="code" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69">ucx_buffer_shift</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a>* buffer, off_t shift);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keywordtype">int</span> <a class="code" href="buffer_8h.html#a4fa10b6471495547eb981248fd4f1bc2">ucx_buffer_shift_right</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a>* buffer, <span class="keywordtype">size_t</span> shift);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="keywordtype">int</span> <a class="code" href="buffer_8h.html#a20431dd0ed6a6fe9f15333bd72afe4db">ucx_buffer_shift_left</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a>* buffer, <span class="keywordtype">size_t</span> shift);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="keywordtype">int</span> <a class="code" href="buffer_8h.html#a47d98482662073c74f35deb0957d15d1">ucx_buffer_seek</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a> *buffer, off_t offset, <span class="keywordtype">int</span> whence);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="buffer_8h.html#a374abd5aabfcc3ee0777a79d5fe651ab"> 229</a></span> <span class="preprocessor">#define ucx_buffer_clear(buffer) memset((buffer)->space, 0, (buffer)->size); \</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor"> (buffer)->size = 0; (buffer)->pos = 0;</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keywordtype">int</span> <a class="code" href="buffer_8h.html#abad7fd9ad5061224c780b8d1d4c55f09">ucx_buffer_eof</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a> *buffer);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="keywordtype">int</span> <a class="code" href="buffer_8h.html#afaf97d2cd7e9faad79a9d35fe33e30c6">ucx_buffer_extend</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a> *buffer, <span class="keywordtype">size_t</span> additional_bytes);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="keywordtype">size_t</span> <a class="code" href="buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05">ucx_buffer_write</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> size, <span class="keywordtype">size_t</span> nitems,</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="structUcxBuffer.html">UcxBuffer</a> *buffer);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="keywordtype">size_t</span> <a class="code" href="buffer_8h.html#ae5c3430759f0059547b35d5a254d4da5">ucx_buffer_read</a>(<span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> size, <span class="keywordtype">size_t</span> nitems,</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <a class="code" href="structUcxBuffer.html">UcxBuffer</a> *buffer);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keywordtype">int</span> <a class="code" href="buffer_8h.html#a7d6f01b9d631b0123475dfb98fb849ac">ucx_buffer_putc</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a> *buffer, <span class="keywordtype">int</span> c);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="keywordtype">int</span> <a class="code" href="buffer_8h.html#a396339022159ce4ca6d069de9f9209b0">ucx_buffer_getc</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a> *buffer);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keywordtype">size_t</span> <a class="code" href="buffer_8h.html#af1d4b478e04b3ae0bf30e7c2ea964ea2">ucx_buffer_puts</a>(<a class="code" href="structUcxBuffer.html">UcxBuffer</a> *buffer, <span class="keyword">const</span> <span class="keywordtype">char</span> *str);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="buffer_8h.html#a0f4b64f1b3a74c4f6c5d9409d6b6086a"> 332</a></span> <span class="preprocessor">#define ucx_buffer_to_sstr(buffer) sstrn((buffer)->space, (buffer)->size)</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_BUFFER_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="ttc" id="structUcxBuffer_html_ac642e07b0a03be5aac48eb4aa5bec2f7"><div class="ttname"><a href="structUcxBuffer.html#ac642e07b0a03be5aac48eb4aa5bec2f7">UcxBuffer::flags</a></div><div class="ttdeci">int flags</div><div class="ttdoc">Flag register for buffer features. </div><div class="ttdef"><b>Definition:</b> buffer.h:88</div></div> -<div class="ttc" id="buffer_8h_html_a47d98482662073c74f35deb0957d15d1"><div class="ttname"><a href="buffer_8h.html#a47d98482662073c74f35deb0957d15d1">ucx_buffer_seek</a></div><div class="ttdeci">int ucx_buffer_seek(UcxBuffer *buffer, off_t offset, int whence)</div><div class="ttdoc">Moves the position of the buffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:90</div></div> -<div class="ttc" id="buffer_8h_html_ae5c3430759f0059547b35d5a254d4da5"><div class="ttname"><a href="buffer_8h.html#ae5c3430759f0059547b35d5a254d4da5">ucx_buffer_read</a></div><div class="ttdeci">size_t ucx_buffer_read(void *ptr, size_t size, size_t nitems, UcxBuffer *buffer)</div><div class="ttdoc">Reads data from a UcxBuffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:189</div></div> -<div class="ttc" id="buffer_8h_html_a20431dd0ed6a6fe9f15333bd72afe4db"><div class="ttname"><a href="buffer_8h.html#a20431dd0ed6a6fe9f15333bd72afe4db">ucx_buffer_shift_left</a></div><div class="ttdeci">int ucx_buffer_shift_left(UcxBuffer *buffer, size_t shift)</div><div class="ttdoc">Shifts the buffer to the left. </div><div class="ttdef"><b>Definition:</b> buffer.c:244</div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="buffer_8h_html_afaf97d2cd7e9faad79a9d35fe33e30c6"><div class="ttname"><a href="buffer_8h.html#afaf97d2cd7e9faad79a9d35fe33e30c6">ucx_buffer_extend</a></div><div class="ttdeci">int ucx_buffer_extend(UcxBuffer *buffer, size_t additional_bytes)</div><div class="ttdoc">Extends the capacity of the buffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:126</div></div> -<div class="ttc" id="buffer_8h_html_a2af8646d8905c22c7322e7540b0440af"><div class="ttname"><a href="buffer_8h.html#a2af8646d8905c22c7322e7540b0440af">ucx_buffer_free</a></div><div class="ttdeci">void ucx_buffer_free(UcxBuffer *buffer)</div><div class="ttdoc">Destroys a buffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:59</div></div> -<div class="ttc" id="structUcxBuffer_html_a7a64288f002cf62b492e2ea49c79615c"><div class="ttname"><a href="structUcxBuffer.html#a7a64288f002cf62b492e2ea49c79615c">UcxBuffer::pos</a></div><div class="ttdeci">size_t pos</div><div class="ttdoc">Current position of the buffer. </div><div class="ttdef"><b>Definition:</b> buffer.h:77</div></div> -<div class="ttc" id="buffer_8h_html_af8aacc7401814392b58c1b7b81bffc05"><div class="ttname"><a href="buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05">ucx_buffer_write</a></div><div class="ttdeci">size_t ucx_buffer_write(const void *ptr, size_t size, size_t nitems, UcxBuffer *buffer)</div><div class="ttdoc">Writes data to a UcxBuffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:152</div></div> -<div class="ttc" id="structUcxBuffer_html_a385661894f3cee9c549bfe07a8b316bf"><div class="ttname"><a href="structUcxBuffer.html#a385661894f3cee9c549bfe07a8b316bf">UcxBuffer::capacity</a></div><div class="ttdeci">size_t capacity</div><div class="ttdoc">Current capacity (i.e. </div><div class="ttdef"><b>Definition:</b> buffer.h:79</div></div> -<div class="ttc" id="structUcxBuffer_html_a1a5076e85acb84b715a53bc0f37fb721"><div class="ttname"><a href="structUcxBuffer.html#a1a5076e85acb84b715a53bc0f37fb721">UcxBuffer::space</a></div><div class="ttdeci">char * space</div><div class="ttdoc">A pointer to the buffer contents. </div><div class="ttdef"><b>Definition:</b> buffer.h:75</div></div> -<div class="ttc" id="buffer_8h_html_abad7fd9ad5061224c780b8d1d4c55f09"><div class="ttname"><a href="buffer_8h.html#abad7fd9ad5061224c780b8d1d4c55f09">ucx_buffer_eof</a></div><div class="ttdeci">int ucx_buffer_eof(UcxBuffer *buffer)</div><div class="ttdoc">Tests, if the buffer position has exceeded the buffer capacity. </div><div class="ttdef"><b>Definition:</b> buffer.c:122</div></div> -<div class="ttc" id="structUcxBuffer_html"><div class="ttname"><a href="structUcxBuffer.html">UcxBuffer</a></div><div class="ttdoc">UCX Buffer. </div><div class="ttdef"><b>Definition:</b> buffer.h:73</div></div> -<div class="ttc" id="buffer_8h_html_af1d4b478e04b3ae0bf30e7c2ea964ea2"><div class="ttname"><a href="buffer_8h.html#af1d4b478e04b3ae0bf30e7c2ea964ea2">ucx_buffer_puts</a></div><div class="ttdeci">size_t ucx_buffer_puts(UcxBuffer *buffer, const char *str)</div><div class="ttdoc">Writes a string to a buffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:240</div></div> -<div class="ttc" id="buffer_8h_html_a7d6f01b9d631b0123475dfb98fb849ac"><div class="ttname"><a href="buffer_8h.html#a7d6f01b9d631b0123475dfb98fb849ac">ucx_buffer_putc</a></div><div class="ttdeci">int ucx_buffer_putc(UcxBuffer *buffer, int c)</div><div class="ttdoc">Writes a character to a buffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:210</div></div> -<div class="ttc" id="buffer_8h_html_a12a0c6a2379ef080043e6286bb8bad69"><div class="ttname"><a href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69">ucx_buffer_shift</a></div><div class="ttdeci">int ucx_buffer_shift(UcxBuffer *buffer, off_t shift)</div><div class="ttdoc">Shifts the contents of the buffer by the given offset. </div><div class="ttdef"><b>Definition:</b> buffer.c:289</div></div> -<div class="ttc" id="buffer_8h_html_aacea876d692193ec6f859ce98da7351c"><div class="ttname"><a href="buffer_8h.html#aacea876d692193ec6f859ce98da7351c">ucx_buffer_new</a></div><div class="ttdeci">UcxBuffer * ucx_buffer_new(void *space, size_t capacity, int flags)</div><div class="ttdoc">Creates a new buffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:35</div></div> -<div class="ttc" id="buffer_8h_html_a33fa7bb35fe08bbb3542f227514332ef"><div class="ttname"><a href="buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef">ucx_buffer_extract</a></div><div class="ttdeci">UcxBuffer * ucx_buffer_extract(UcxBuffer *src, size_t start, size_t length, int flags)</div><div class="ttdoc">Creates a new buffer and fills it with extracted content from another buffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:66</div></div> -<div class="ttc" id="structUcxBuffer_html_aec0aea8325394951d5ad4a9fbb8e1ac7"><div class="ttname"><a href="structUcxBuffer.html#aec0aea8325394951d5ad4a9fbb8e1ac7">UcxBuffer::size</a></div><div class="ttdeci">size_t size</div><div class="ttdoc">Current size of the buffer content. </div><div class="ttdef"><b>Definition:</b> buffer.h:81</div></div> -<div class="ttc" id="buffer_8h_html_a396339022159ce4ca6d069de9f9209b0"><div class="ttname"><a href="buffer_8h.html#a396339022159ce4ca6d069de9f9209b0">ucx_buffer_getc</a></div><div class="ttdeci">int ucx_buffer_getc(UcxBuffer *buffer)</div><div class="ttdoc">Gets a character from a buffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:230</div></div> -<div class="ttc" id="buffer_8h_html_a4fa10b6471495547eb981248fd4f1bc2"><div class="ttname"><a href="buffer_8h.html#a4fa10b6471495547eb981248fd4f1bc2">ucx_buffer_shift_right</a></div><div class="ttdeci">int ucx_buffer_shift_right(UcxBuffer *buffer, size_t shift)</div><div class="ttdoc">Shifts the buffer to the right. </div><div class="ttdef"><b>Definition:</b> buffer.c:260</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/classes.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Data Structure Index</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="header"> - <div class="headertitle"> -<div class="title">Data Structure Index</div> </div> -</div><!--header--> -<div class="contents"> -<div class="qindex"><a class="qindex" href="#letter_s">s</a> | <a class="qindex" href="#letter_u">u</a></div> -<table class="classindex"> -<tr><td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  s  </div></td></tr></table> -</td><td valign="top"><a class="el" href="structucx__regdestr.html">ucx_regdestr</a>   </td><td valign="top"><a class="el" href="structUcxBuffer.html">UcxBuffer</a>   </td><td valign="top"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a>   </td><td valign="top"><a class="el" href="structUcxTestSuite.html">UcxTestSuite</a>   </td></tr> -<tr><td valign="top"><a class="el" href="structucx__stack__metadata.html">ucx_stack_metadata</a>   </td><td valign="top"><a class="el" href="structUcxKey.html">UcxKey</a>   </td><td valign="top"><a class="el" href="structUcxMapKey.html">UcxMapKey</a>   </td><td></td></tr> -<tr><td valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>   </td><td valign="top"><a class="el" href="structUcxAllocator.html">UcxAllocator</a>   </td><td valign="top"><a class="el" href="structUcxList.html">UcxList</a>   </td><td valign="top"><a class="el" href="structUcxMempool.html">UcxMempool</a>   </td><td></td></tr> -<tr><td valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>   </td><td valign="top"><a class="el" href="structUcxArray.html">UcxArray</a>   </td><td valign="top"><a class="el" href="structUcxLogger.html">UcxLogger</a>   </td><td valign="top"><a class="el" href="structUcxProperties.html">UcxProperties</a>   </td><td></td></tr> -<tr><td rowspan="2" valign="bottom"><a name="letter_u"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  u  </div></td></tr></table> -</td><td valign="top"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a>   </td><td valign="top"><a class="el" href="structUcxMap.html">UcxMap</a>   </td><td valign="top"><a class="el" href="structUcxStack.html">UcxStack</a>   </td><td></td></tr> -<tr><td valign="top"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a>   </td><td valign="top"><a class="el" href="structUcxMapElement.html">UcxMapElement</a>   </td><td valign="top"><a class="el" href="structUcxTestList.html">UcxTestList</a>   </td><td></td></tr> -<tr><td valign="top"><a class="el" href="structucx__memchunk.html">ucx_memchunk</a>   </td><td></td><td></td><td></td><td></td></tr> -<tr><td></td><td></td><td></td><td></td><td></td></tr> -</table> -<div class="qindex"><a class="qindex" href="#letter_s">s</a> | <a class="qindex" href="#letter_u">u</a></div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/dir_68267d1309a1af8e8297ef4c3efbcdba.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src Directory Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">src Directory Reference</div> </div> -</div><!--header--> -<div class="contents"> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a> -Directories</h2></td></tr> -</table> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/dir_69f4ea29401808fe6229564976cde3ce.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx Directory Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">ucx Directory Reference</div> </div> -</div><!--header--> -<div class="contents"> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> -Files</h2></td></tr> -<tr class="memitem:allocator_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="allocator_8h.html">allocator.h</a> <a href="allocator_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:allocator_8h"><td class="mdescLeft"> </td><td class="mdescRight">Allocator for custom memory management. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:array_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="array_8h.html">array.h</a> <a href="array_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:array_8h"><td class="mdescLeft"> </td><td class="mdescRight">Dynamically allocated array implementation. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:avl_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html">avl.h</a> <a href="avl_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:avl_8h"><td class="mdescLeft"> </td><td class="mdescRight">AVL tree implementation. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:buffer_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html">buffer.h</a> <a href="buffer_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:buffer_8h"><td class="mdescLeft"> </td><td class="mdescRight">Advanced buffer implementation. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:list_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html">list.h</a> <a href="list_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:list_8h"><td class="mdescLeft"> </td><td class="mdescRight">Doubly linked list implementation. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:logging_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html">logging.h</a> <a href="logging_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:logging_8h"><td class="mdescLeft"> </td><td class="mdescRight">Logging API. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:map_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html">map.h</a> <a href="map_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:map_8h"><td class="mdescLeft"> </td><td class="mdescRight">Hash map implementation. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:mempool_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html">mempool.h</a> <a href="mempool_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:mempool_8h"><td class="mdescLeft"> </td><td class="mdescRight">Memory pool implementation. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:properties_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="properties_8h.html">properties.h</a> <a href="properties_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:properties_8h"><td class="mdescLeft"> </td><td class="mdescRight">Load / store utilities for properties files. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:stack_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html">stack.h</a> <a href="stack_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:stack_8h"><td class="mdescLeft"> </td><td class="mdescRight">Default stack memory allocation implementation. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:string_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html">string.h</a> <a href="string_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:string_8h"><td class="mdescLeft"> </td><td class="mdescRight">Bounded string implementation. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:test_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html">test.h</a> <a href="test_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:test_8h"><td class="mdescLeft"> </td><td class="mdescRight">UCX Test Framework. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ucx_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html">ucx.h</a> <a href="ucx_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:ucx_8h"><td class="mdescLeft"> </td><td class="mdescRight">Main UCX Header providing most common definitions. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:utils_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html">utils.h</a> <a href="utils_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:utils_8h"><td class="mdescLeft"> </td><td class="mdescRight">Compare, copy and printf functions. <br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/doxygen.css Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1596 +0,0 @@ -/* The standard CSS for doxygen 1.8.13 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0px; - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ - margin-left: 0px; - padding-left: 0px; -} - -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; -} - -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; -} - -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; -} - -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; -} - -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -/* -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - - -/* @end */
--- a/docs/api-2.1/dynsections.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l<level+1) { - i.removeClass('iconfopen iconfclosed').addClass('iconfopen'); - a.html('▼'); - $(this).show(); - } else if (l==level+1) { - i.removeClass('iconfclosed iconfopen').addClass('iconfclosed'); - a.html('►'); - $(this).show(); - } else { - $(this).hide(); - } - }); - updateStripes(); -} - -function toggleFolder(id) -{ - // the clicked row - var currentRow = $('#row_'+id); - - // all rows after the clicked row - var rows = currentRow.nextAll("tr"); - - var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub - - // only match elements AFTER this one (can't hide elements before) - var childRows = rows.filter(function() { return this.id.match(re); }); - - // first row is visible we are HIDING - if (childRows.filter(':first').is(':visible')===true) { - // replace down arrow by right arrow for current row - var currentRowSpans = currentRow.find("span"); - currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); - currentRowSpans.filter(".arrow").html('►'); - rows.filter("[id^=row_"+id+"]").hide(); // hide all children - } else { // we are SHOWING - // replace right arrow by down arrow for current row - var currentRowSpans = currentRow.find("span"); - currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen"); - currentRowSpans.filter(".arrow").html('▼'); - // replace down arrows by right arrows for child rows - var childRowsSpans = childRows.find("span"); - childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); - childRowsSpans.filter(".arrow").html('►'); - childRows.show(); //show all children - } - updateStripes(); -} - - -function toggleInherit(id) -{ - var rows = $('tr.inherit.'+id); - var img = $('tr.inherit_header.'+id+' img'); - var src = $(img).attr('src'); - if (rows.filter(':first').is(':visible')===true) { - rows.css('display','none'); - $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - rows.css('display','table-row'); // using show() causes jump in firefox - $(img).attr('src',src.substring(0,src.length-10)+'open.png'); - } -} -
--- a/docs/api-2.1/files.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: File List</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="header"> - <div class="headertitle"> -<div class="title">File List</div> </div> -</div><!--header--> -<div class="contents"> -<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory"> -<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory"> -<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">▼</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')"> </span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr> -<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">▼</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')"> </span><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html" target="_self">ucx</a></td><td class="desc"></td></tr> -<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="allocator_8h_source.html"><span class="icondoc"></span></a><a class="el" href="allocator_8h.html" target="_self">allocator.h</a></td><td class="desc">Allocator for custom memory management </td></tr> -<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="array_8h_source.html"><span class="icondoc"></span></a><a class="el" href="array_8h.html" target="_self">array.h</a></td><td class="desc">Dynamically allocated array implementation </td></tr> -<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="avl_8h_source.html"><span class="icondoc"></span></a><a class="el" href="avl_8h.html" target="_self">avl.h</a></td><td class="desc">AVL tree implementation </td></tr> -<tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="buffer_8h_source.html"><span class="icondoc"></span></a><a class="el" href="buffer_8h.html" target="_self">buffer.h</a></td><td class="desc">Advanced buffer implementation </td></tr> -<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="list_8h_source.html"><span class="icondoc"></span></a><a class="el" href="list_8h.html" target="_self">list.h</a></td><td class="desc">Doubly linked list implementation </td></tr> -<tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="logging_8h_source.html"><span class="icondoc"></span></a><a class="el" href="logging_8h.html" target="_self">logging.h</a></td><td class="desc">Logging API </td></tr> -<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="map_8h_source.html"><span class="icondoc"></span></a><a class="el" href="map_8h.html" target="_self">map.h</a></td><td class="desc">Hash map implementation </td></tr> -<tr id="row_0_0_7_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="mempool_8h_source.html"><span class="icondoc"></span></a><a class="el" href="mempool_8h.html" target="_self">mempool.h</a></td><td class="desc">Memory pool implementation </td></tr> -<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="properties_8h_source.html"><span class="icondoc"></span></a><a class="el" href="properties_8h.html" target="_self">properties.h</a></td><td class="desc">Load / store utilities for properties files </td></tr> -<tr id="row_0_0_9_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="stack_8h_source.html"><span class="icondoc"></span></a><a class="el" href="stack_8h.html" target="_self">stack.h</a></td><td class="desc">Default stack memory allocation implementation </td></tr> -<tr id="row_0_0_10_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="string_8h_source.html"><span class="icondoc"></span></a><a class="el" href="string_8h.html" target="_self">string.h</a></td><td class="desc">Bounded string implementation </td></tr> -<tr id="row_0_0_11_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="test_8h_source.html"><span class="icondoc"></span></a><a class="el" href="test_8h.html" target="_self">test.h</a></td><td class="desc">UCX Test Framework </td></tr> -<tr id="row_0_0_12_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="ucx_8h_source.html"><span class="icondoc"></span></a><a class="el" href="ucx_8h.html" target="_self">ucx.h</a></td><td class="desc">Main UCX Header providing most common definitions </td></tr> -<tr id="row_0_0_13_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><a href="utils_8h_source.html"><span class="icondoc"></span></a><a class="el" href="utils_8h.html" target="_self">utils.h</a></td><td class="desc">Compare, copy and printf functions </td></tr> -</table> -</div><!-- directory --> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/functions.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,343 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Data Fields</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div> - -<h3><a id="index_a"></a>- a -</h3><ul> -<li>allocator -: <a class="el" href="structUcxArray.html#a2ef31303b7548b9aa8e2b9187e295212">UcxArray</a> -, <a class="el" href="structUcxAVLTree.html#a30652776b540156ad54c7d52833e4e28">UcxAVLTree</a> -, <a class="el" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">UcxMap</a> -, <a class="el" href="structUcxMempool.html#ac45fd1e9269399e4c434d6bdaa770d92">UcxMempool</a> -, <a class="el" href="structUcxStack.html#a33cda4f6890ac56ab31701598bc1ae10">UcxStack</a> -</li> -</ul> - - -<h3><a id="index_b"></a>- b -</h3><ul> -<li>buffer -: <a class="el" href="structUcxProperties.html#a6bb4d29686df41a0f42641ee15232bfd">UcxProperties</a> -</li> -<li>buflen -: <a class="el" href="structUcxProperties.html#a4e7524434525267e29f493a25dcca6b5">UcxProperties</a> -</li> -</ul> - - -<h3><a id="index_c"></a>- c -</h3><ul> -<li>c -: <a class="el" href="structucx__memchunk.html#ab86550503e5f019bfa61a1e91f1c40da">ucx_memchunk</a> -</li> -<li>calloc -: <a class="el" href="structUcxAllocator.html#ab94ec1cba45cc4e7d81e1588a11cbb62">UcxAllocator</a> -</li> -<li>capacity -: <a class="el" href="structUcxArray.html#a7ed074887908e45bde7e1fbc67b31c18">UcxArray</a> -, <a class="el" href="structUcxBuffer.html#a385661894f3cee9c549bfe07a8b316bf">UcxBuffer</a> -</li> -<li>cmpfunc -: <a class="el" href="structUcxAVLTree.html#a87aff25cb726cb9eb88eb815a10d1004">UcxAVLTree</a> -</li> -<li>comment1 -: <a class="el" href="structUcxProperties.html#afaa2e6a289fa6949b7b01df35fa5def8">UcxProperties</a> -</li> -<li>comment2 -: <a class="el" href="structUcxProperties.html#a9ea7ecb414ca8bc7bef62cdd19cc6363">UcxProperties</a> -</li> -<li>comment3 -: <a class="el" href="structUcxProperties.html#a5f3e561e32bac03e36a191a6940cca92">UcxProperties</a> -</li> -<li>count -: <a class="el" href="structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd">UcxMap</a> -</li> -<li>cur -: <a class="el" href="structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f">UcxMapIterator</a> -</li> -</ul> - - -<h3><a id="index_d"></a>- d -</h3><ul> -<li>data -: <a class="el" href="structUcxArray.html#a04d2b03d0a45af1fab19b4216602075a">UcxArray</a> -, <a class="el" href="structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c">UcxKey</a> -, <a class="el" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">UcxList</a> -, <a class="el" href="structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c">UcxMapElement</a> -, <a class="el" href="structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5">UcxMapKey</a> -, <a class="el" href="structUcxMempool.html#ae98c1b0150bb119ee0a8506a6f310d6e">UcxMempool</a> -</li> -<li>dateformat -: <a class="el" href="structUcxLogger.html#a086f75df0f6c81ec491f25c0a4d9262b">UcxLogger</a> -</li> -<li>delimiter -: <a class="el" href="structUcxProperties.html#af6adb3f69616cf9d2bb5ea7b4d837ca5">UcxProperties</a> -</li> -<li>destructor -: <a class="el" href="structucx__memchunk.html#ac7b5e3fda47b917d6fb2a1d7ea28447b">ucx_memchunk</a> -, <a class="el" href="structucx__regdestr.html#acea2a3bb66909aa800a931ac8b0cce56">ucx_regdestr</a> -</li> -</ul> - - -<h3><a id="index_e"></a>- e -</h3><ul> -<li>elemsize -: <a class="el" href="structUcxArray.html#ac4e9ecdf8a8d010644f6e44dfef8190f">UcxArray</a> -</li> -<li>error -: <a class="el" href="structUcxProperties.html#a34f71a6ab6dcb6892e3b4eb802e75bff">UcxProperties</a> -</li> -</ul> - - -<h3><a id="index_f"></a>- f -</h3><ul> -<li>failure -: <a class="el" href="structUcxTestSuite.html#abfd240541d1e956e49cde0ac36286951">UcxTestSuite</a> -</li> -<li>flags -: <a class="el" href="structUcxBuffer.html#ac642e07b0a03be5aac48eb4aa5bec2f7">UcxBuffer</a> -</li> -<li>free -: <a class="el" href="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f">UcxAllocator</a> -</li> -</ul> - - -<h3><a id="index_h"></a>- h -</h3><ul> -<li>hash -: <a class="el" href="structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752">UcxKey</a> -, <a class="el" href="structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913">UcxMapKey</a> -</li> -<li>height -: <a class="el" href="structUcxAVLNode.html#af129fd32863a7c35e82c5cd9d11dc95a">UcxAVLNode</a> -</li> -</ul> - - -<h3><a id="index_i"></a>- i -</h3><ul> -<li>index -: <a class="el" href="structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65">UcxMapIterator</a> -</li> -</ul> - - -<h3><a id="index_k"></a>- k -</h3><ul> -<li>key -: <a class="el" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">UcxAVLNode</a> -, <a class="el" href="structUcxMapElement.html#aa446141b708e106e2c8de1303318187c">UcxMapElement</a> -</li> -</ul> - - -<h3><a id="index_l"></a>- l -</h3><ul> -<li>left -: <a class="el" href="structUcxAVLNode.html#ad3a1c733f2c1cc81ac527f846fc24b9c">UcxAVLNode</a> -</li> -<li>len -: <a class="el" href="structUcxKey.html#abef01de37f355688f2ac797d2c280683">UcxKey</a> -, <a class="el" href="structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270">UcxMapKey</a> -</li> -<li>length -: <a class="el" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172">scstr_t</a> -, <a class="el" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229">sstr_t</a> -</li> -<li>level -: <a class="el" href="structUcxLogger.html#a2e0ee94c25b2307096c7970280d189cd">UcxLogger</a> -</li> -<li>levels -: <a class="el" href="structUcxLogger.html#a187129f7bc6e5064b3d92a5f1217f396">UcxLogger</a> -</li> -</ul> - - -<h3><a id="index_m"></a>- m -</h3><ul> -<li>malloc -: <a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a">UcxAllocator</a> -</li> -<li>map -: <a class="el" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">UcxMap</a> -, <a class="el" href="structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95">UcxMapIterator</a> -</li> -<li>mask -: <a class="el" href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c">UcxLogger</a> -</li> -</ul> - - -<h3><a id="index_n"></a>- n -</h3><ul> -<li>ndata -: <a class="el" href="structUcxMempool.html#aa3a73ab231e1bc207d526f46f1c1e23a">UcxMempool</a> -</li> -<li>next -: <a class="el" href="structUcxList.html#a82a1818f1abf765b026fa91478569a8f">UcxList</a> -, <a class="el" href="structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51">UcxMapElement</a> -, <a class="el" href="structUcxTestList.html#aeebb80ff75d9f6f82ab6dc2641a3c74e">UcxTestList</a> -</li> -</ul> - - -<h3><a id="index_p"></a>- p -</h3><ul> -<li>parent -: <a class="el" href="structUcxAVLNode.html#afc4e3b4f452aa2d91cabb2135b9d42f7">UcxAVLNode</a> -</li> -<li>pool -: <a class="el" href="structUcxAllocator.html#a1b78012998d1c28be86dc595f8f0aac9">UcxAllocator</a> -</li> -<li>pos -: <a class="el" href="structUcxBuffer.html#a7a64288f002cf62b492e2ea49c79615c">UcxBuffer</a> -, <a class="el" href="structUcxProperties.html#addd36ac8e5e42241c0a57453633970db">UcxProperties</a> -</li> -<li>prev -: <a class="el" href="structucx__stack__metadata.html#ad46d2e8e5b0acf05f2def41d451c5579">ucx_stack_metadata</a> -, <a class="el" href="structUcxList.html#a0f1fddce9088b9c1414745d0b1b5c08b">UcxList</a> -</li> -<li>ptr -: <a class="el" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391">scstr_t</a> -, <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0">sstr_t</a> -, <a class="el" href="structucx__regdestr.html#aac0e9ec8df4aab08728b4f8292b5f5e7">ucx_regdestr</a> -</li> -</ul> - - -<h3><a id="index_r"></a>- r -</h3><ul> -<li>realloc -: <a class="el" href="structUcxAllocator.html#a3550e3847f31d9e9ce3ffcb0d3440c15">UcxAllocator</a> -</li> -<li>right -: <a class="el" href="structUcxAVLNode.html#a7cbaa31dba8c7a89f4f8f7905f6fd238">UcxAVLNode</a> -</li> -<li>root -: <a class="el" href="structUcxAVLTree.html#a393a8fc99eb2c290d3cb67170081d742">UcxAVLTree</a> -</li> -</ul> - - -<h3><a id="index_s"></a>- s -</h3><ul> -<li>size -: <a class="el" href="structucx__stack__metadata.html#ae2a2848b721cfa44a7e963484c5e4b28">ucx_stack_metadata</a> -, <a class="el" href="structUcxArray.html#a20c11f2c9048cda80062842b7c094e20">UcxArray</a> -, <a class="el" href="structUcxBuffer.html#aec0aea8325394951d5ad4a9fbb8e1ac7">UcxBuffer</a> -, <a class="el" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">UcxMap</a> -, <a class="el" href="structUcxMempool.html#a304729986f2894971d0469e71e196bf0">UcxMempool</a> -, <a class="el" href="structUcxStack.html#a4df86b1917bfc3bbf760220870638143">UcxStack</a> -</li> -<li>space -: <a class="el" href="structUcxBuffer.html#a1a5076e85acb84b715a53bc0f37fb721">UcxBuffer</a> -, <a class="el" href="structUcxStack.html#af64d528744bf3a47fec87d2e45d2992f">UcxStack</a> -</li> -<li>stream -: <a class="el" href="structUcxLogger.html#a33fddf4791e8d49e479ecc78bf5d1b9e">UcxLogger</a> -</li> -<li>success -: <a class="el" href="structUcxTestSuite.html#a6cefa870a3c2e38d6ee682e38643dbbb">UcxTestSuite</a> -</li> -</ul> - - -<h3><a id="index_t"></a>- t -</h3><ul> -<li>test -: <a class="el" href="structUcxTestList.html#a6022faa52e772b073141ca0a2f5a56c9">UcxTestList</a> -</li> -<li>tests -: <a class="el" href="structUcxTestSuite.html#a630677a70ebc2c3296704cda3196492b">UcxTestSuite</a> -</li> -<li>tmp -: <a class="el" href="structUcxProperties.html#a68556d4260153f58dde44e4c365edce6">UcxProperties</a> -</li> -<li>tmpcap -: <a class="el" href="structUcxProperties.html#a5af10131ea9f679b4ee174499f92e210">UcxProperties</a> -</li> -<li>tmplen -: <a class="el" href="structUcxProperties.html#a8a81853d5903bee2f4e1fa53fdffae6e">UcxProperties</a> -</li> -<li>top -: <a class="el" href="structUcxStack.html#af0ff6f58edce469f17683013b86ade27">UcxStack</a> -</li> -</ul> - - -<h3><a id="index_u"></a>- u -</h3><ul> -<li>userdata -: <a class="el" href="structUcxAVLTree.html#ae92a3bfad3fe33c8dcbdad85112f83fd">UcxAVLTree</a> -</li> -</ul> - - -<h3><a id="index_v"></a>- v -</h3><ul> -<li>value -: <a class="el" href="structUcxAVLNode.html#a302501b8c04c3fde668fe72249871258">UcxAVLNode</a> -</li> -</ul> - - -<h3><a id="index_w"></a>- w -</h3><ul> -<li>writer -: <a class="el" href="structUcxLogger.html#ada13bba090a9dc4f8d6cd9be73c60930">UcxLogger</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/functions_vars.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,343 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Data Fields - Variables</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -  - -<h3><a id="index_a"></a>- a -</h3><ul> -<li>allocator -: <a class="el" href="structUcxArray.html#a2ef31303b7548b9aa8e2b9187e295212">UcxArray</a> -, <a class="el" href="structUcxAVLTree.html#a30652776b540156ad54c7d52833e4e28">UcxAVLTree</a> -, <a class="el" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">UcxMap</a> -, <a class="el" href="structUcxMempool.html#ac45fd1e9269399e4c434d6bdaa770d92">UcxMempool</a> -, <a class="el" href="structUcxStack.html#a33cda4f6890ac56ab31701598bc1ae10">UcxStack</a> -</li> -</ul> - - -<h3><a id="index_b"></a>- b -</h3><ul> -<li>buffer -: <a class="el" href="structUcxProperties.html#a6bb4d29686df41a0f42641ee15232bfd">UcxProperties</a> -</li> -<li>buflen -: <a class="el" href="structUcxProperties.html#a4e7524434525267e29f493a25dcca6b5">UcxProperties</a> -</li> -</ul> - - -<h3><a id="index_c"></a>- c -</h3><ul> -<li>c -: <a class="el" href="structucx__memchunk.html#ab86550503e5f019bfa61a1e91f1c40da">ucx_memchunk</a> -</li> -<li>calloc -: <a class="el" href="structUcxAllocator.html#ab94ec1cba45cc4e7d81e1588a11cbb62">UcxAllocator</a> -</li> -<li>capacity -: <a class="el" href="structUcxArray.html#a7ed074887908e45bde7e1fbc67b31c18">UcxArray</a> -, <a class="el" href="structUcxBuffer.html#a385661894f3cee9c549bfe07a8b316bf">UcxBuffer</a> -</li> -<li>cmpfunc -: <a class="el" href="structUcxAVLTree.html#a87aff25cb726cb9eb88eb815a10d1004">UcxAVLTree</a> -</li> -<li>comment1 -: <a class="el" href="structUcxProperties.html#afaa2e6a289fa6949b7b01df35fa5def8">UcxProperties</a> -</li> -<li>comment2 -: <a class="el" href="structUcxProperties.html#a9ea7ecb414ca8bc7bef62cdd19cc6363">UcxProperties</a> -</li> -<li>comment3 -: <a class="el" href="structUcxProperties.html#a5f3e561e32bac03e36a191a6940cca92">UcxProperties</a> -</li> -<li>count -: <a class="el" href="structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd">UcxMap</a> -</li> -<li>cur -: <a class="el" href="structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f">UcxMapIterator</a> -</li> -</ul> - - -<h3><a id="index_d"></a>- d -</h3><ul> -<li>data -: <a class="el" href="structUcxArray.html#a04d2b03d0a45af1fab19b4216602075a">UcxArray</a> -, <a class="el" href="structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c">UcxKey</a> -, <a class="el" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">UcxList</a> -, <a class="el" href="structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c">UcxMapElement</a> -, <a class="el" href="structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5">UcxMapKey</a> -, <a class="el" href="structUcxMempool.html#ae98c1b0150bb119ee0a8506a6f310d6e">UcxMempool</a> -</li> -<li>dateformat -: <a class="el" href="structUcxLogger.html#a086f75df0f6c81ec491f25c0a4d9262b">UcxLogger</a> -</li> -<li>delimiter -: <a class="el" href="structUcxProperties.html#af6adb3f69616cf9d2bb5ea7b4d837ca5">UcxProperties</a> -</li> -<li>destructor -: <a class="el" href="structucx__memchunk.html#ac7b5e3fda47b917d6fb2a1d7ea28447b">ucx_memchunk</a> -, <a class="el" href="structucx__regdestr.html#acea2a3bb66909aa800a931ac8b0cce56">ucx_regdestr</a> -</li> -</ul> - - -<h3><a id="index_e"></a>- e -</h3><ul> -<li>elemsize -: <a class="el" href="structUcxArray.html#ac4e9ecdf8a8d010644f6e44dfef8190f">UcxArray</a> -</li> -<li>error -: <a class="el" href="structUcxProperties.html#a34f71a6ab6dcb6892e3b4eb802e75bff">UcxProperties</a> -</li> -</ul> - - -<h3><a id="index_f"></a>- f -</h3><ul> -<li>failure -: <a class="el" href="structUcxTestSuite.html#abfd240541d1e956e49cde0ac36286951">UcxTestSuite</a> -</li> -<li>flags -: <a class="el" href="structUcxBuffer.html#ac642e07b0a03be5aac48eb4aa5bec2f7">UcxBuffer</a> -</li> -<li>free -: <a class="el" href="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f">UcxAllocator</a> -</li> -</ul> - - -<h3><a id="index_h"></a>- h -</h3><ul> -<li>hash -: <a class="el" href="structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752">UcxKey</a> -, <a class="el" href="structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913">UcxMapKey</a> -</li> -<li>height -: <a class="el" href="structUcxAVLNode.html#af129fd32863a7c35e82c5cd9d11dc95a">UcxAVLNode</a> -</li> -</ul> - - -<h3><a id="index_i"></a>- i -</h3><ul> -<li>index -: <a class="el" href="structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65">UcxMapIterator</a> -</li> -</ul> - - -<h3><a id="index_k"></a>- k -</h3><ul> -<li>key -: <a class="el" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">UcxAVLNode</a> -, <a class="el" href="structUcxMapElement.html#aa446141b708e106e2c8de1303318187c">UcxMapElement</a> -</li> -</ul> - - -<h3><a id="index_l"></a>- l -</h3><ul> -<li>left -: <a class="el" href="structUcxAVLNode.html#ad3a1c733f2c1cc81ac527f846fc24b9c">UcxAVLNode</a> -</li> -<li>len -: <a class="el" href="structUcxKey.html#abef01de37f355688f2ac797d2c280683">UcxKey</a> -, <a class="el" href="structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270">UcxMapKey</a> -</li> -<li>length -: <a class="el" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172">scstr_t</a> -, <a class="el" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229">sstr_t</a> -</li> -<li>level -: <a class="el" href="structUcxLogger.html#a2e0ee94c25b2307096c7970280d189cd">UcxLogger</a> -</li> -<li>levels -: <a class="el" href="structUcxLogger.html#a187129f7bc6e5064b3d92a5f1217f396">UcxLogger</a> -</li> -</ul> - - -<h3><a id="index_m"></a>- m -</h3><ul> -<li>malloc -: <a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a">UcxAllocator</a> -</li> -<li>map -: <a class="el" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">UcxMap</a> -, <a class="el" href="structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95">UcxMapIterator</a> -</li> -<li>mask -: <a class="el" href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c">UcxLogger</a> -</li> -</ul> - - -<h3><a id="index_n"></a>- n -</h3><ul> -<li>ndata -: <a class="el" href="structUcxMempool.html#aa3a73ab231e1bc207d526f46f1c1e23a">UcxMempool</a> -</li> -<li>next -: <a class="el" href="structUcxList.html#a82a1818f1abf765b026fa91478569a8f">UcxList</a> -, <a class="el" href="structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51">UcxMapElement</a> -, <a class="el" href="structUcxTestList.html#aeebb80ff75d9f6f82ab6dc2641a3c74e">UcxTestList</a> -</li> -</ul> - - -<h3><a id="index_p"></a>- p -</h3><ul> -<li>parent -: <a class="el" href="structUcxAVLNode.html#afc4e3b4f452aa2d91cabb2135b9d42f7">UcxAVLNode</a> -</li> -<li>pool -: <a class="el" href="structUcxAllocator.html#a1b78012998d1c28be86dc595f8f0aac9">UcxAllocator</a> -</li> -<li>pos -: <a class="el" href="structUcxBuffer.html#a7a64288f002cf62b492e2ea49c79615c">UcxBuffer</a> -, <a class="el" href="structUcxProperties.html#addd36ac8e5e42241c0a57453633970db">UcxProperties</a> -</li> -<li>prev -: <a class="el" href="structucx__stack__metadata.html#ad46d2e8e5b0acf05f2def41d451c5579">ucx_stack_metadata</a> -, <a class="el" href="structUcxList.html#a0f1fddce9088b9c1414745d0b1b5c08b">UcxList</a> -</li> -<li>ptr -: <a class="el" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391">scstr_t</a> -, <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0">sstr_t</a> -, <a class="el" href="structucx__regdestr.html#aac0e9ec8df4aab08728b4f8292b5f5e7">ucx_regdestr</a> -</li> -</ul> - - -<h3><a id="index_r"></a>- r -</h3><ul> -<li>realloc -: <a class="el" href="structUcxAllocator.html#a3550e3847f31d9e9ce3ffcb0d3440c15">UcxAllocator</a> -</li> -<li>right -: <a class="el" href="structUcxAVLNode.html#a7cbaa31dba8c7a89f4f8f7905f6fd238">UcxAVLNode</a> -</li> -<li>root -: <a class="el" href="structUcxAVLTree.html#a393a8fc99eb2c290d3cb67170081d742">UcxAVLTree</a> -</li> -</ul> - - -<h3><a id="index_s"></a>- s -</h3><ul> -<li>size -: <a class="el" href="structucx__stack__metadata.html#ae2a2848b721cfa44a7e963484c5e4b28">ucx_stack_metadata</a> -, <a class="el" href="structUcxArray.html#a20c11f2c9048cda80062842b7c094e20">UcxArray</a> -, <a class="el" href="structUcxBuffer.html#aec0aea8325394951d5ad4a9fbb8e1ac7">UcxBuffer</a> -, <a class="el" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">UcxMap</a> -, <a class="el" href="structUcxMempool.html#a304729986f2894971d0469e71e196bf0">UcxMempool</a> -, <a class="el" href="structUcxStack.html#a4df86b1917bfc3bbf760220870638143">UcxStack</a> -</li> -<li>space -: <a class="el" href="structUcxBuffer.html#a1a5076e85acb84b715a53bc0f37fb721">UcxBuffer</a> -, <a class="el" href="structUcxStack.html#af64d528744bf3a47fec87d2e45d2992f">UcxStack</a> -</li> -<li>stream -: <a class="el" href="structUcxLogger.html#a33fddf4791e8d49e479ecc78bf5d1b9e">UcxLogger</a> -</li> -<li>success -: <a class="el" href="structUcxTestSuite.html#a6cefa870a3c2e38d6ee682e38643dbbb">UcxTestSuite</a> -</li> -</ul> - - -<h3><a id="index_t"></a>- t -</h3><ul> -<li>test -: <a class="el" href="structUcxTestList.html#a6022faa52e772b073141ca0a2f5a56c9">UcxTestList</a> -</li> -<li>tests -: <a class="el" href="structUcxTestSuite.html#a630677a70ebc2c3296704cda3196492b">UcxTestSuite</a> -</li> -<li>tmp -: <a class="el" href="structUcxProperties.html#a68556d4260153f58dde44e4c365edce6">UcxProperties</a> -</li> -<li>tmpcap -: <a class="el" href="structUcxProperties.html#a5af10131ea9f679b4ee174499f92e210">UcxProperties</a> -</li> -<li>tmplen -: <a class="el" href="structUcxProperties.html#a8a81853d5903bee2f4e1fa53fdffae6e">UcxProperties</a> -</li> -<li>top -: <a class="el" href="structUcxStack.html#af0ff6f58edce469f17683013b86ade27">UcxStack</a> -</li> -</ul> - - -<h3><a id="index_u"></a>- u -</h3><ul> -<li>userdata -: <a class="el" href="structUcxAVLTree.html#ae92a3bfad3fe33c8dcbdad85112f83fd">UcxAVLTree</a> -</li> -</ul> - - -<h3><a id="index_v"></a>- v -</h3><ul> -<li>value -: <a class="el" href="structUcxAVLNode.html#a302501b8c04c3fde668fe72249871258">UcxAVLNode</a> -</li> -</ul> - - -<h3><a id="index_w"></a>- w -</h3><ul> -<li>writer -: <a class="el" href="structUcxLogger.html#ada13bba090a9dc4f8d6cd9be73c60930">UcxLogger</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div> - -<h3><a id="index__"></a>- _ -</h3><ul> -<li>__FUNCTION__ -: <a class="el" href="test_8h.html#a828bb1dfda1afd67ca795075903d227d">test.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_a.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div> - -<h3><a id="index_a"></a>- a -</h3><ul> -<li>alcalloc -: <a class="el" href="allocator_8h.html#a8d71470816f88f78cb9a9686c57e1b10">allocator.h</a> -</li> -<li>alfree -: <a class="el" href="allocator_8h.html#acd775785b54e97dc2b33a432c12c8fb2">allocator.h</a> -</li> -<li>almalloc -: <a class="el" href="allocator_8h.html#ae1bc218fea8a35f4a3706f0beefcfb19">allocator.h</a> -</li> -<li>alrealloc -: <a class="el" href="allocator_8h.html#a029ee5c9bcbb3f873571553f788c5820">allocator.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_c.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div> - -<h3><a id="index_c"></a>- c -</h3><ul> -<li>cmp_func -: <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">ucx.h</a> -</li> -<li>copy_func -: <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">ucx.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_d.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div> - -<h3><a id="index_d"></a>- d -</h3><ul> -<li>distance_func -: <a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">ucx.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_defs.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,364 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -  - -<h3><a id="index__"></a>- _ -</h3><ul> -<li>__FUNCTION__ -: <a class="el" href="test_8h.html#a828bb1dfda1afd67ca795075903d227d">test.h</a> -</li> -</ul> - - -<h3><a id="index_a"></a>- a -</h3><ul> -<li>alcalloc -: <a class="el" href="allocator_8h.html#a8d71470816f88f78cb9a9686c57e1b10">allocator.h</a> -</li> -<li>alfree -: <a class="el" href="allocator_8h.html#acd775785b54e97dc2b33a432c12c8fb2">allocator.h</a> -</li> -<li>almalloc -: <a class="el" href="allocator_8h.html#ae1bc218fea8a35f4a3706f0beefcfb19">allocator.h</a> -</li> -<li>alrealloc -: <a class="el" href="allocator_8h.html#a029ee5c9bcbb3f873571553f788c5820">allocator.h</a> -</li> -</ul> - - -<h3><a id="index_p"></a>- p -</h3><ul> -<li>PRIsstr -: <a class="el" href="string_8h.html#a7d5bc48708405a28b23667e32dfcecae">string.h</a> -</li> -</ul> - - -<h3><a id="index_s"></a>- s -</h3><ul> -<li>S -: <a class="el" href="string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e">string.h</a> -</li> -<li>SC -: <a class="el" href="string_8h.html#a7d261dd0bc358c957a368bc058c1ce53">string.h</a> -</li> -<li>SCSTR -: <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">string.h</a> -</li> -<li>SFMT -: <a class="el" href="string_8h.html#a23ed51e87385886bb65e8cd19c839362">string.h</a> -</li> -<li>sstrcasecmp -: <a class="el" href="string_8h.html#a81b0f6df794152c2038703d4e9d0ad59">string.h</a> -</li> -<li>sstrcaseprefix -: <a class="el" href="string_8h.html#acd3dc64e90db9b4046e14f115a815ff4">string.h</a> -</li> -<li>sstrcasesuffix -: <a class="el" href="string_8h.html#a57eabd4862d531dd685bbf2feb8468bf">string.h</a> -</li> -<li>sstrcat -: <a class="el" href="string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759">string.h</a> -</li> -<li>sstrcat_a -: <a class="el" href="string_8h.html#a6068d460f9bc05962666a917d26568b3">string.h</a> -</li> -<li>sstrcmp -: <a class="el" href="string_8h.html#a7ae7156c8de57454ca38d306100b8160">string.h</a> -</li> -<li>sstrdup -: <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80">string.h</a> -</li> -<li>sstrdup_a -: <a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007">string.h</a> -</li> -<li>sstrlower -: <a class="el" href="string_8h.html#a89343ea3e719f00ee802b557db57b769">string.h</a> -</li> -<li>sstrlower_a -: <a class="el" href="string_8h.html#a4bb4742fe71115f493991d307cb22b23">string.h</a> -</li> -<li>sstrnlen -: <a class="el" href="string_8h.html#a33fa945acc5ac2ce962e5ef13cf1638c">string.h</a> -</li> -<li>sstrprefix -: <a class="el" href="string_8h.html#a7d73b66256384b26927e787318fdefa2">string.h</a> -</li> -<li>sstrscstr -: <a class="el" href="string_8h.html#aa696932213265e10f864678686f4ccde">string.h</a> -</li> -<li>sstrsplit -: <a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7">string.h</a> -</li> -<li>sstrsplit_a -: <a class="el" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601">string.h</a> -</li> -<li>sstrstr -: <a class="el" href="string_8h.html#a9d03be026afa9447c52bb34b9e3b895a">string.h</a> -</li> -<li>sstrsuffix -: <a class="el" href="string_8h.html#ac6a5246f26be2e8a5f34d8995b7ec14e">string.h</a> -</li> -<li>sstrupper -: <a class="el" href="string_8h.html#a084fe5a3a90d6fb6b15ecda03bb30824">string.h</a> -</li> -<li>sstrupper_a -: <a class="el" href="string_8h.html#a5f0dd83c0176b812fb428004b2877a34">string.h</a> -</li> -<li>ST -: <a class="el" href="string_8h.html#a9037956cca97a4e84b642f17f3d10378">string.h</a> -</li> -</ul> - - -<h3><a id="index_u"></a>- u -</h3><ul> -<li>UCX_ALLOCATOR_DEFAULT -: <a class="el" href="allocator_8h.html#a1283a8f875f90a7af3aba5e031fc2e3f">allocator.h</a> -</li> -<li>ucx_array_util_set -: <a class="el" href="array_8h.html#a1d959c29af3125bdd37cde3a554e729c">array.h</a> -</li> -<li>ucx_array_util_setptr -: <a class="el" href="array_8h.html#a59a5b342965e790945f9c7a3f86b99f9">array.h</a> -</li> -<li>ucx_avl_default_new -: <a class="el" href="avl_8h.html#ac2886d4b79b48c9fabf6408873f84cd2">avl.h</a> -</li> -<li>UCX_AVL_FIND_CLOSEST -: <a class="el" href="avl_8h.html#af16f24d74fd6af0154de041566c6603b">avl.h</a> -</li> -<li>UCX_AVL_FIND_EXACT -: <a class="el" href="avl_8h.html#aaaf4a6f6f661cda7791db239212285d9">avl.h</a> -</li> -<li>UCX_AVL_FIND_LOWER_BOUNDED -: <a class="el" href="avl_8h.html#abd2446d544d5412b6997ee8a17bd368c">avl.h</a> -</li> -<li>UCX_AVL_FIND_UPPER_BOUNDED -: <a class="el" href="avl_8h.html#ac74ee7649c1e206b08b31f37dd68ca5e">avl.h</a> -</li> -<li>ucx_bprintf -: <a class="el" href="utils_8h.html#a9d7d65a420f026fcb6982803d5120519">utils.h</a> -</li> -<li>UCX_BUFFER_AUTOEXTEND -: <a class="el" href="buffer_8h.html#a05f9565f2d04399168c3b1c152a632be">buffer.h</a> -</li> -<li>UCX_BUFFER_AUTOFREE -: <a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535">buffer.h</a> -</li> -<li>ucx_buffer_clear -: <a class="el" href="buffer_8h.html#a374abd5aabfcc3ee0777a79d5fe651ab">buffer.h</a> -</li> -<li>ucx_buffer_clone -: <a class="el" href="buffer_8h.html#a828353846428c2c2f695f9938f059e52">buffer.h</a> -</li> -<li>UCX_BUFFER_DEFAULT -: <a class="el" href="buffer_8h.html#acc77c8ed7b26854f555d4a5d11e49ea2">buffer.h</a> -</li> -<li>ucx_buffer_to_sstr -: <a class="el" href="buffer_8h.html#a0f4b64f1b3a74c4f6c5d9409d6b6086a">buffer.h</a> -</li> -<li>UCX_FOREACH -: <a class="el" href="list_8h.html#a4b143b6526a410aa4d22cb3bb9365d70">list.h</a> -</li> -<li>ucx_logger_debug -: <a class="el" href="logging_8h.html#a2936402799892db5138e5f1f8c25db0c">logging.h</a> -</li> -<li>UCX_LOGGER_DEBUG -: <a class="el" href="logging_8h.html#acff01d1ef919ea997cfce755fc1b83d8">logging.h</a> -</li> -<li>ucx_logger_error -: <a class="el" href="logging_8h.html#a6a9e472e14d6768e59d96d245e065397">logging.h</a> -</li> -<li>UCX_LOGGER_ERROR -: <a class="el" href="logging_8h.html#aa254c07fe3a907613e2256a318d5c9a8">logging.h</a> -</li> -<li>UCX_LOGGER_INFO -: <a class="el" href="logging_8h.html#a4b0178bf60a6129373ffc59114ca4c9b">logging.h</a> -</li> -<li>ucx_logger_info -: <a class="el" href="logging_8h.html#a98464d8d51376ce2716dcc4eca00d5da">logging.h</a> -</li> -<li>UCX_LOGGER_LEVEL -: <a class="el" href="logging_8h.html#aee18bc20e58ffb69910121512c350839">logging.h</a> -</li> -<li>ucx_logger_log -: <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">logging.h</a> -</li> -<li>ucx_logger_register_level -: <a class="el" href="logging_8h.html#a5cffc19502c4c90bfb3bd3bbcd18170a">logging.h</a> -</li> -<li>UCX_LOGGER_SOURCE -: <a class="el" href="logging_8h.html#a0e0d72b12616c1e49ff8834eaf4cb8a2">logging.h</a> -</li> -<li>UCX_LOGGER_TIMESTAMP -: <a class="el" href="logging_8h.html#a38607008268b4f776ee500fb95d2e823">logging.h</a> -</li> -<li>UCX_LOGGER_TRACE -: <a class="el" href="logging_8h.html#a55b88d1fec7036d841b3ddd6195c5586">logging.h</a> -</li> -<li>ucx_logger_trace -: <a class="el" href="logging_8h.html#a3031b7ff13f4cfae9c2916543be2877c">logging.h</a> -</li> -<li>UCX_LOGGER_WARN -: <a class="el" href="logging_8h.html#abd01ca11486226ba34e8f7028d9fffba">logging.h</a> -</li> -<li>ucx_logger_warn -: <a class="el" href="logging_8h.html#aca7bd861b646892813fd7310c0aa69af">logging.h</a> -</li> -<li>ucx_map_cstr_get -: <a class="el" href="map_8h.html#a64e1fb55498fa502dd2ed8ed69062cdd">map.h</a> -</li> -<li>ucx_map_cstr_put -: <a class="el" href="map_8h.html#ad9356b01425b934ab237b52339ac0cc3">map.h</a> -</li> -<li>ucx_map_cstr_remove -: <a class="el" href="map_8h.html#a9c4405a5a75ecf64e2ef3d0c6501a9fe">map.h</a> -</li> -<li>UCX_MAP_FOREACH -: <a class="el" href="map_8h.html#a940896c4aa1b13e54c55c04c3efc186b">map.h</a> -</li> -<li>ucx_map_int_get -: <a class="el" href="map_8h.html#aa1681bd2178553cd092fd24c4d681d3c">map.h</a> -</li> -<li>ucx_map_int_put -: <a class="el" href="map_8h.html#aaa30af79b4068c923895619e83f44367">map.h</a> -</li> -<li>ucx_map_int_remove -: <a class="el" href="map_8h.html#aa767958b5468737755c09f7185b1770c">map.h</a> -</li> -<li>ucx_map_sstr_get -: <a class="el" href="map_8h.html#a14d385f6b7f371f0507861cabd2eab4e">map.h</a> -</li> -<li>ucx_map_sstr_put -: <a class="el" href="map_8h.html#ac26a8615bfc8f47ee9eaceb47645f98e">map.h</a> -</li> -<li>ucx_map_sstr_remove -: <a class="el" href="map_8h.html#a48700ea86fadb9ea54d13010f9124df2">map.h</a> -</li> -<li>ucx_mempool_new_default -: <a class="el" href="mempool_8h.html#a49f7bd1da5ac201d0cf54dc0f0d82dd2">mempool.h</a> -</li> -<li>ucx_sprintf -: <a class="el" href="utils_8h.html#af9f333b66ecd639c347c7235f4992e2e">utils.h</a> -</li> -<li>ucx_stack_dim -: <a class="el" href="stack_8h.html#a3b761343c6491222604341ebfa443226">stack.h</a> -</li> -<li>ucx_stack_empty -: <a class="el" href="stack_8h.html#a4f7239dbd6c032c56812e370b71c1985">stack.h</a> -</li> -<li>ucx_stack_pop -: <a class="el" href="stack_8h.html#a506b82374734ec476d086ddfb561174d">stack.h</a> -</li> -<li>ucx_stack_topsize -: <a class="el" href="stack_8h.html#a030197051a803e87d5eeac5adb80b15a">stack.h</a> -</li> -<li>ucx_stream_bcopy -: <a class="el" href="utils_8h.html#a6003a1750a66234169bd1f8cc84b297b">utils.h</a> -</li> -<li>ucx_stream_copy -: <a class="el" href="utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392">utils.h</a> -</li> -<li>UCX_STREAM_COPY_BUFSIZE -: <a class="el" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">utils.h</a> -</li> -<li>ucx_stream_ncopy -: <a class="el" href="utils_8h.html#add13f39a8af440b4f7e6f74339eaada2">utils.h</a> -</li> -<li>ucx_szmul -: <a class="el" href="ucx_8h.html#a0b5ed6c1a0b15356f4f948acfd32a4cc">ucx.h</a> -</li> -<li>UCX_TEST -: <a class="el" href="test_8h.html#a66cfb29c329fc9eaef071f2449836659">test.h</a> -</li> -<li>UCX_TEST_ASSERT -: <a class="el" href="test_8h.html#a08f477cd12fc3fe741a92493e5df58a9">test.h</a> -</li> -<li>UCX_TEST_BEGIN -: <a class="el" href="test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4">test.h</a> -</li> -<li>UCX_TEST_CALL_SUBROUTINE -: <a class="el" href="test_8h.html#a0efbab91c54f5237a2ab207f48cf0e51">test.h</a> -</li> -<li>UCX_TEST_END -: <a class="el" href="test_8h.html#a86e64857c04f0447f8b16fb9c2b3b639">test.h</a> -</li> -<li>UCX_TEST_SUBROUTINE -: <a class="el" href="test_8h.html#ae073cf5ead22cb27d662da048e16f44a">test.h</a> -</li> -<li>UCX_VERSION -: <a class="el" href="ucx_8h.html#af12001920ca2fc1405615684e4dea284">ucx.h</a> -</li> -<li>UCX_VERSION_MAJOR -: <a class="el" href="ucx_8h.html#aa57e5dd22d42387d748cc16777df1383">ucx.h</a> -</li> -<li>UCX_VERSION_MINOR -: <a class="el" href="ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0">ucx.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_func.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,174 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -  - -<h3><a id="index_s"></a>- s -</h3><ul> -<li>scstr() -: <a class="el" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6">string.h</a> -</li> -<li>scstrcasecmp() -: <a class="el" href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">string.h</a> -</li> -<li>scstrcaseprefix() -: <a class="el" href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">string.h</a> -</li> -<li>scstrcasesuffix() -: <a class="el" href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">string.h</a> -</li> -<li>scstrcat() -: <a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">string.h</a> -</li> -<li>scstrcat_a() -: <a class="el" href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">string.h</a> -</li> -<li>scstrchr() -: <a class="el" href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87">string.h</a> -</li> -<li>scstrcmp() -: <a class="el" href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">string.h</a> -</li> -<li>scstrdup() -: <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">string.h</a> -</li> -<li>scstrdup_a() -: <a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014">string.h</a> -</li> -<li>scstrlower() -: <a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">string.h</a> -</li> -<li>scstrlower_a() -: <a class="el" href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">string.h</a> -</li> -<li>scstrn() -: <a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">string.h</a> -</li> -<li>scstrnlen() -: <a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">string.h</a> -</li> -<li>scstrprefix() -: <a class="el" href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">string.h</a> -</li> -<li>scstrrchr() -: <a class="el" href="string_8h.html#ae389835b97cd9382e7d6a6a075323376">string.h</a> -</li> -<li>scstrscstr() -: <a class="el" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">string.h</a> -</li> -<li>scstrsplit() -: <a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">string.h</a> -</li> -<li>scstrsplit_a() -: <a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">string.h</a> -</li> -<li>scstrsstr() -: <a class="el" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">string.h</a> -</li> -<li>scstrsubs() -: <a class="el" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060">string.h</a> -</li> -<li>scstrsubsl() -: <a class="el" href="string_8h.html#ad50f0f67b906fad0744f46bcb51e144b">string.h</a> -</li> -<li>scstrsuffix() -: <a class="el" href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">string.h</a> -</li> -<li>scstrtrim() -: <a class="el" href="string_8h.html#ad374b16eb1be8b48019debad9b9f268c">string.h</a> -</li> -<li>scstrupper() -: <a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">string.h</a> -</li> -<li>scstrupper_a() -: <a class="el" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">string.h</a> -</li> -<li>sstr() -: <a class="el" href="string_8h.html#a539eb7059251a051ee5d179526a23e9a">string.h</a> -</li> -<li>sstrchr() -: <a class="el" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481">string.h</a> -</li> -<li>sstrn() -: <a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">string.h</a> -</li> -<li>sstrrchr() -: <a class="el" href="string_8h.html#adae3f59957ca328e1da5285cb8b02a72">string.h</a> -</li> -<li>sstrsubs() -: <a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258">string.h</a> -</li> -<li>sstrsubsl() -: <a class="el" href="string_8h.html#a78925c91af54f23cebd20ff99ef4331a">string.h</a> -</li> -<li>sstrtrim() -: <a class="el" href="string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56">string.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_func_u.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,621 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -  - -<h3><a id="index_u"></a>- u -</h3><ul> -<li>ucx_array_append_from() -: <a class="el" href="array_8h.html#aea01731ad94ea73c0c8fb1d1b7a35fcf">array.h</a> -</li> -<li>ucx_array_at() -: <a class="el" href="array_8h.html#aa698085fd1a8b70d6b709999c51b49e8">array.h</a> -</li> -<li>ucx_array_clone() -: <a class="el" href="array_8h.html#a4a8c273370e4a3a3e2624e364f5ab410">array.h</a> -</li> -<li>ucx_array_concat() -: <a class="el" href="array_8h.html#aa5a0bf3d3f0df6406beb0e569021cc28">array.h</a> -</li> -<li>ucx_array_contains() -: <a class="el" href="array_8h.html#a5241058cd2329147bc5b1593ae7e51dc">array.h</a> -</li> -<li>ucx_array_destroy() -: <a class="el" href="array_8h.html#a8e83681d8d5d8cddbf10f63ce5be4c10">array.h</a> -</li> -<li>ucx_array_equals() -: <a class="el" href="array_8h.html#a43292b448adb1741677aa8c578bcc201">array.h</a> -</li> -<li>ucx_array_find() -: <a class="el" href="array_8h.html#ae7bdbed94afee9b20b38b95e3ab470f0">array.h</a> -</li> -<li>ucx_array_free() -: <a class="el" href="array_8h.html#ac01ee914468a16f470bf3071fffbe438">array.h</a> -</li> -<li>ucx_array_grow() -: <a class="el" href="array_8h.html#ab0cbf243824aaebee48277315e03afce">array.h</a> -</li> -<li>ucx_array_init() -: <a class="el" href="array_8h.html#ad921e85c28ffae32230777a53c5037e5">array.h</a> -</li> -<li>ucx_array_init_a() -: <a class="el" href="array_8h.html#a2451e61ebb15a7ba1c1319267ba75b8c">array.h</a> -</li> -<li>ucx_array_new() -: <a class="el" href="array_8h.html#a994a2fbf1c33a3833e2a70cd9a4352b7">array.h</a> -</li> -<li>ucx_array_new_a() -: <a class="el" href="array_8h.html#a177170258c215eb2e4f5a32e59f0cb1b">array.h</a> -</li> -<li>ucx_array_prepend_from() -: <a class="el" href="array_8h.html#a95b52acc2193b5c33cf0eaa4f2082477">array.h</a> -</li> -<li>ucx_array_remove() -: <a class="el" href="array_8h.html#aa45eac6b697f83adac81c0860cf306b8">array.h</a> -</li> -<li>ucx_array_remove_fast() -: <a class="el" href="array_8h.html#a548d81b07612bae3ba8c4c4b49104b8e">array.h</a> -</li> -<li>ucx_array_reserve() -: <a class="el" href="array_8h.html#a1c3bf8433c1de3c933f3854ab297fe1d">array.h</a> -</li> -<li>ucx_array_resize() -: <a class="el" href="array_8h.html#a27762e7c06a6c781015e3c8ceeee0ce3">array.h</a> -</li> -<li>ucx_array_set_from() -: <a class="el" href="array_8h.html#a1bb545d065358d265d80d815ba382a28">array.h</a> -</li> -<li>ucx_array_shrink() -: <a class="el" href="array_8h.html#a2daf50e80aee9bccebee876a7efd2dfc">array.h</a> -</li> -<li>ucx_array_sort() -: <a class="el" href="array_8h.html#add773514569b872a6624381b4b6af52c">array.h</a> -</li> -<li>ucx_array_util_set_a() -: <a class="el" href="array_8h.html#ad0a8d76980cf1c1910e64a245803fb9a">array.h</a> -</li> -<li>ucx_array_util_setptr_a() -: <a class="el" href="array_8h.html#ad708b333c0c1b02c998309a58ea65e31">array.h</a> -</li> -<li>ucx_asprintf() -: <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5">utils.h</a> -</li> -<li>ucx_avl_count() -: <a class="el" href="avl_8h.html#a92c1d41c2b22fe4a029a486ab2153e35">avl.h</a> -</li> -<li>ucx_avl_find() -: <a class="el" href="avl_8h.html#a51770e1614b28d7d22dea096c3704f83">avl.h</a> -</li> -<li>ucx_avl_find_node() -: <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5">avl.h</a> -</li> -<li>ucx_avl_free() -: <a class="el" href="avl_8h.html#a2f92db538f25fce908d2cb3e5590944c">avl.h</a> -</li> -<li>ucx_avl_free_content() -: <a class="el" href="avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279">avl.h</a> -</li> -<li>ucx_avl_get() -: <a class="el" href="avl_8h.html#adbcf7ceb3f014a30c7214f7304519efe">avl.h</a> -</li> -<li>ucx_avl_get_node() -: <a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e">avl.h</a> -</li> -<li>ucx_avl_new() -: <a class="el" href="avl_8h.html#a11b043d65a11b7092d5d98b298e5ede3">avl.h</a> -</li> -<li>ucx_avl_new_a() -: <a class="el" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2">avl.h</a> -</li> -<li>ucx_avl_pred() -: <a class="el" href="avl_8h.html#a0e739aeb66dda6a6a3f6eb51b50cf346">avl.h</a> -</li> -<li>ucx_avl_put() -: <a class="el" href="avl_8h.html#aec401fab4a24a7edffa734f9baf88577">avl.h</a> -</li> -<li>ucx_avl_put_s() -: <a class="el" href="avl_8h.html#a32cf8955cc0226a82bacfc7b76d6474c">avl.h</a> -</li> -<li>ucx_avl_remove() -: <a class="el" href="avl_8h.html#a1d821119c805d7fbb7e424bc3effeba9">avl.h</a> -</li> -<li>ucx_avl_remove_node() -: <a class="el" href="avl_8h.html#a9a792b7d9e58073deef74a341f8bc720">avl.h</a> -</li> -<li>ucx_avl_remove_s() -: <a class="el" href="avl_8h.html#a01aeeecd6415f0cc2b623486eb28f254">avl.h</a> -</li> -<li>ucx_avl_succ() -: <a class="el" href="avl_8h.html#aab1ad9b027ff5e50671aa0ee84e2d541">avl.h</a> -</li> -<li>ucx_buffer_eof() -: <a class="el" href="buffer_8h.html#abad7fd9ad5061224c780b8d1d4c55f09">buffer.h</a> -</li> -<li>ucx_buffer_extend() -: <a class="el" href="buffer_8h.html#afaf97d2cd7e9faad79a9d35fe33e30c6">buffer.h</a> -</li> -<li>ucx_buffer_extract() -: <a class="el" href="buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef">buffer.h</a> -</li> -<li>ucx_buffer_free() -: <a class="el" href="buffer_8h.html#a2af8646d8905c22c7322e7540b0440af">buffer.h</a> -</li> -<li>ucx_buffer_getc() -: <a class="el" href="buffer_8h.html#a396339022159ce4ca6d069de9f9209b0">buffer.h</a> -</li> -<li>ucx_buffer_new() -: <a class="el" href="buffer_8h.html#aacea876d692193ec6f859ce98da7351c">buffer.h</a> -</li> -<li>ucx_buffer_putc() -: <a class="el" href="buffer_8h.html#a7d6f01b9d631b0123475dfb98fb849ac">buffer.h</a> -</li> -<li>ucx_buffer_puts() -: <a class="el" href="buffer_8h.html#af1d4b478e04b3ae0bf30e7c2ea964ea2">buffer.h</a> -</li> -<li>ucx_buffer_read() -: <a class="el" href="buffer_8h.html#ae5c3430759f0059547b35d5a254d4da5">buffer.h</a> -</li> -<li>ucx_buffer_seek() -: <a class="el" href="buffer_8h.html#a47d98482662073c74f35deb0957d15d1">buffer.h</a> -</li> -<li>ucx_buffer_shift() -: <a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69">buffer.h</a> -</li> -<li>ucx_buffer_shift_left() -: <a class="el" href="buffer_8h.html#a20431dd0ed6a6fe9f15333bd72afe4db">buffer.h</a> -</li> -<li>ucx_buffer_shift_right() -: <a class="el" href="buffer_8h.html#a4fa10b6471495547eb981248fd4f1bc2">buffer.h</a> -</li> -<li>ucx_buffer_write() -: <a class="el" href="buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05">buffer.h</a> -</li> -<li>ucx_cmp_double() -: <a class="el" href="utils_8h.html#ab804b7c27d0bfcd7bf3a3583140825b6">utils.h</a> -</li> -<li>ucx_cmp_float() -: <a class="el" href="utils_8h.html#ad1196b561bcdad76c393885819769a97">utils.h</a> -</li> -<li>ucx_cmp_int() -: <a class="el" href="utils_8h.html#a8ce7e11e6b3deafe89a32a091fde7f16">utils.h</a> -</li> -<li>ucx_cmp_int16() -: <a class="el" href="utils_8h.html#aa29e6e559946375e34113e34e0b0bd0d">utils.h</a> -</li> -<li>ucx_cmp_int32() -: <a class="el" href="utils_8h.html#a858b2ac443fb202643b71f6a7e9218dd">utils.h</a> -</li> -<li>ucx_cmp_int64() -: <a class="el" href="utils_8h.html#a54701aea6a89fed1402dfb0bf56bc7f6">utils.h</a> -</li> -<li>ucx_cmp_longint() -: <a class="el" href="utils_8h.html#aeb57a2b9a6aaa0460c7a6bec29accf2c">utils.h</a> -</li> -<li>ucx_cmp_longlong() -: <a class="el" href="utils_8h.html#a366b57def20f86a41eaedf575eea5375">utils.h</a> -</li> -<li>ucx_cmp_mem() -: <a class="el" href="utils_8h.html#aff7d2bcded71196831a8c0664333f8e7">utils.h</a> -</li> -<li>ucx_cmp_ptr() -: <a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8">utils.h</a> -</li> -<li>ucx_cmp_sstr() -: <a class="el" href="utils_8h.html#adee0739589166d272f8cb7c23aabf8ba">utils.h</a> -</li> -<li>ucx_cmp_str() -: <a class="el" href="utils_8h.html#aa6a37b9d172b6a5b2803d152f9e1b258">utils.h</a> -</li> -<li>ucx_cmp_strn() -: <a class="el" href="utils_8h.html#ac6b354a878f551a3a5b20a167db3f308">utils.h</a> -</li> -<li>ucx_cmp_uint() -: <a class="el" href="utils_8h.html#abd83a5da91c3dd026a6931bd80c12f1e">utils.h</a> -</li> -<li>ucx_cmp_uint16() -: <a class="el" href="utils_8h.html#acde5366437e886a459b7468f7a9e11f0">utils.h</a> -</li> -<li>ucx_cmp_uint32() -: <a class="el" href="utils_8h.html#a5879d1722330355914d8c9146fa549d3">utils.h</a> -</li> -<li>ucx_cmp_uint64() -: <a class="el" href="utils_8h.html#a1572a78b5b42f7151a5b2a5a7283d62d">utils.h</a> -</li> -<li>ucx_cmp_ulongint() -: <a class="el" href="utils_8h.html#a3f3cbae2594d6f722bae29acb0408a24">utils.h</a> -</li> -<li>ucx_cmp_ulonglong() -: <a class="el" href="utils_8h.html#a6acfc359421f21f9a042a654ff7faac5">utils.h</a> -</li> -<li>ucx_default_allocator() -: <a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">allocator.h</a> -</li> -<li>ucx_default_calloc() -: <a class="el" href="allocator_8h.html#a3a0bfdd13d887012309c459b339f338f">allocator.h</a> -</li> -<li>ucx_default_free() -: <a class="el" href="allocator_8h.html#a646d83aaaadfe33ae414c0fad8bfc52a">allocator.h</a> -</li> -<li>ucx_default_malloc() -: <a class="el" href="allocator_8h.html#a96403ebf3d2312d95f2fe7627a1cdbc0">allocator.h</a> -</li> -<li>ucx_default_realloc() -: <a class="el" href="allocator_8h.html#a47cfc8af626a86fcb93a2b14b90498ed">allocator.h</a> -</li> -<li>ucx_dist_int() -: <a class="el" href="utils_8h.html#a4ab6753739d56c09cdf6079fdcabf7c6">utils.h</a> -</li> -<li>ucx_dist_int16() -: <a class="el" href="utils_8h.html#a81fb8434b70ca11bf2c14abfa21d16a9">utils.h</a> -</li> -<li>ucx_dist_int32() -: <a class="el" href="utils_8h.html#ab4a659cc46096f0490c1dafa57726476">utils.h</a> -</li> -<li>ucx_dist_int64() -: <a class="el" href="utils_8h.html#a54e7d06585bad3a899befc4e9c13853f">utils.h</a> -</li> -<li>ucx_dist_longint() -: <a class="el" href="utils_8h.html#a43e73d288b1553a0078bf4c98dd341f5">utils.h</a> -</li> -<li>ucx_dist_longlong() -: <a class="el" href="utils_8h.html#a306778414a2427951ea263be92368627">utils.h</a> -</li> -<li>ucx_dist_uint() -: <a class="el" href="utils_8h.html#a37b7d471ca1679992afc11a0deda45f4">utils.h</a> -</li> -<li>ucx_dist_uint16() -: <a class="el" href="utils_8h.html#a66e00a0703cbcde050ec922578e2f080">utils.h</a> -</li> -<li>ucx_dist_uint32() -: <a class="el" href="utils_8h.html#add2b5c5507caba59d894b84e056b079b">utils.h</a> -</li> -<li>ucx_dist_uint64() -: <a class="el" href="utils_8h.html#a3ba75e2e0b2479eef2b22fb219b42da7">utils.h</a> -</li> -<li>ucx_dist_ulongint() -: <a class="el" href="utils_8h.html#abb13476228d0c16bfaba08469adbae2d">utils.h</a> -</li> -<li>ucx_dist_ulonglong() -: <a class="el" href="utils_8h.html#a59a5859272cb4b43cbdd58208c41e32b">utils.h</a> -</li> -<li>ucx_fprintf() -: <a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a">utils.h</a> -</li> -<li>ucx_hash() -: <a class="el" href="map_8h.html#aea3be97254c05595d986ef6a9faae87b">map.h</a> -</li> -<li>ucx_key() -: <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">map.h</a> -</li> -<li>ucx_list_append() -: <a class="el" href="list_8h.html#a00c122c8a26d35b60676939df4161621">list.h</a> -</li> -<li>ucx_list_append_a() -: <a class="el" href="list_8h.html#adf3b3e2e0ff977d8928671d6bd82fc60">list.h</a> -</li> -<li>ucx_list_clone() -: <a class="el" href="list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed">list.h</a> -</li> -<li>ucx_list_clone_a() -: <a class="el" href="list_8h.html#a08ca1ba0d2e82258b0408714c1f4c425">list.h</a> -</li> -<li>ucx_list_concat() -: <a class="el" href="list_8h.html#a77163a0cc82fae52bec26c8c0c3674d9">list.h</a> -</li> -<li>ucx_list_contains() -: <a class="el" href="list_8h.html#a8b0fa051fcfe12e1a82cca1087973852">list.h</a> -</li> -<li>ucx_list_difference() -: <a class="el" href="list_8h.html#a6c5db5d1d11ad28b6fe1a80ee1c1e449">list.h</a> -</li> -<li>ucx_list_difference_a() -: <a class="el" href="list_8h.html#a4a2a2fc5cc41073c516db6235bbc51d5">list.h</a> -</li> -<li>ucx_list_equals() -: <a class="el" href="list_8h.html#adc435447cecf885bc63d232191085bbe">list.h</a> -</li> -<li>ucx_list_find() -: <a class="el" href="list_8h.html#a9b3b6842d3be572e06a7f519e198cb83">list.h</a> -</li> -<li>ucx_list_first() -: <a class="el" href="list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5">list.h</a> -</li> -<li>ucx_list_free() -: <a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668">list.h</a> -</li> -<li>ucx_list_free_a() -: <a class="el" href="list_8h.html#a944e11f76c38767cd1100d72a4e3b25b">list.h</a> -</li> -<li>ucx_list_free_content() -: <a class="el" href="list_8h.html#a4ba6c96642f72ea046cc22627c72979c">list.h</a> -</li> -<li>ucx_list_get() -: <a class="el" href="list_8h.html#a2509ffe19bce6a8708c77f89480c75fb">list.h</a> -</li> -<li>ucx_list_indexof() -: <a class="el" href="list_8h.html#ae2ff2974812ca185870f80bc4ed9337e">list.h</a> -</li> -<li>ucx_list_intersection() -: <a class="el" href="list_8h.html#a259f9b754978aeca23dfabba16e20f39">list.h</a> -</li> -<li>ucx_list_intersection_a() -: <a class="el" href="list_8h.html#a1d0b00514dbb81ba6270b58da0c5b9a8">list.h</a> -</li> -<li>ucx_list_last() -: <a class="el" href="list_8h.html#add5ec40c5006e29c629d23c2eb5a6553">list.h</a> -</li> -<li>ucx_list_prepend() -: <a class="el" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4">list.h</a> -</li> -<li>ucx_list_prepend_a() -: <a class="el" href="list_8h.html#a54654e6dc60e1c3de9e886c150e404ec">list.h</a> -</li> -<li>ucx_list_remove() -: <a class="el" href="list_8h.html#a410cb3e8260037ba56c72d14b899b468">list.h</a> -</li> -<li>ucx_list_remove_a() -: <a class="el" href="list_8h.html#aca687b7c4e7170175f447e549125aa52">list.h</a> -</li> -<li>ucx_list_size() -: <a class="el" href="list_8h.html#ae88001cc8ae40b946560f31434abed8f">list.h</a> -</li> -<li>ucx_list_sort() -: <a class="el" href="list_8h.html#ac74962d9bd7cfc9d3e2e09651469377b">list.h</a> -</li> -<li>ucx_list_union() -: <a class="el" href="list_8h.html#a94ecdb0cea1633ad7074f027fa8485fa">list.h</a> -</li> -<li>ucx_list_union_a() -: <a class="el" href="list_8h.html#a65b4355536f4ebc4130211b46469f4c1">list.h</a> -</li> -<li>ucx_logger_free() -: <a class="el" href="logging_8h.html#ac4697b784e01ec990d2acea192e21658">logging.h</a> -</li> -<li>ucx_logger_logf() -: <a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801">logging.h</a> -</li> -<li>ucx_logger_new() -: <a class="el" href="logging_8h.html#ac560f8517d2172794c9d2691735ec48c">logging.h</a> -</li> -<li>ucx_map_clear() -: <a class="el" href="map_8h.html#a285e90e40681c6d9631c935dda0967f2">map.h</a> -</li> -<li>ucx_map_clone() -: <a class="el" href="map_8h.html#a62c6c30cbb0d824ba710f5030ff9a4e4">map.h</a> -</li> -<li>ucx_map_clone_a() -: <a class="el" href="map_8h.html#a9aea9103703d5c168420bb6bf85549ea">map.h</a> -</li> -<li>ucx_map_copy() -: <a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425">map.h</a> -</li> -<li>ucx_map_difference() -: <a class="el" href="map_8h.html#a774fcff87d1e58b6c5af77dd19a8c3dc">map.h</a> -</li> -<li>ucx_map_difference_a() -: <a class="el" href="map_8h.html#ad0ba103494247d798ac3037c50fc8831">map.h</a> -</li> -<li>ucx_map_free() -: <a class="el" href="map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e">map.h</a> -</li> -<li>ucx_map_free_content() -: <a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618">map.h</a> -</li> -<li>ucx_map_get() -: <a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">map.h</a> -</li> -<li>ucx_map_intersection() -: <a class="el" href="map_8h.html#aa594d7a5afebc3bed6bb265348cf6b0d">map.h</a> -</li> -<li>ucx_map_intersection_a() -: <a class="el" href="map_8h.html#a169e0470a20484dd76425fdf77e3651e">map.h</a> -</li> -<li>ucx_map_iter_next() -: <a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">map.h</a> -</li> -<li>ucx_map_iterator() -: <a class="el" href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110">map.h</a> -</li> -<li>ucx_map_new() -: <a class="el" href="map_8h.html#a79f31de8b93814493759dbc8b940cf0c">map.h</a> -</li> -<li>ucx_map_new_a() -: <a class="el" href="map_8h.html#aed508a94c66cc15372503c64b70eb03e">map.h</a> -</li> -<li>ucx_map_put() -: <a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">map.h</a> -</li> -<li>ucx_map_rehash() -: <a class="el" href="map_8h.html#a174bce9fad554dd92b8da354e0d32512">map.h</a> -</li> -<li>ucx_map_remove() -: <a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">map.h</a> -</li> -<li>ucx_map_union() -: <a class="el" href="map_8h.html#a3f65978c481af7f637cad021d93522d5">map.h</a> -</li> -<li>ucx_map_union_a() -: <a class="el" href="map_8h.html#ab6370c3fa8113fdad593ce4b0460c9c6">map.h</a> -</li> -<li>ucx_memcpy() -: <a class="el" href="utils_8h.html#ab2e184e6a744941aab6b8058116baf30">utils.h</a> -</li> -<li>ucx_mempool_calloc() -: <a class="el" href="mempool_8h.html#a4b9142011824ae24f00fabe128417d69">mempool.h</a> -</li> -<li>ucx_mempool_chcap() -: <a class="el" href="mempool_8h.html#aaf75b5016098723a9280531ccc3a6d77">mempool.h</a> -</li> -<li>ucx_mempool_destroy() -: <a class="el" href="mempool_8h.html#af096378da7e9bfbed3088497cf4c15bf">mempool.h</a> -</li> -<li>ucx_mempool_free() -: <a class="el" href="mempool_8h.html#aefa26e3015f5aefadbfc74221bd246ac">mempool.h</a> -</li> -<li>ucx_mempool_malloc() -: <a class="el" href="mempool_8h.html#a2ae492b8f2878ccc9837ac213dced11e">mempool.h</a> -</li> -<li>ucx_mempool_new() -: <a class="el" href="mempool_8h.html#ad71cb8c3b6fdb30360376a8b372ef22a">mempool.h</a> -</li> -<li>ucx_mempool_realloc() -: <a class="el" href="mempool_8h.html#a660ef42520ed6737c2e77aae18e3a7a4">mempool.h</a> -</li> -<li>ucx_mempool_reg_destr() -: <a class="el" href="mempool_8h.html#af47b6b7c40f8f263dc28cc9a4e77b27c">mempool.h</a> -</li> -<li>ucx_mempool_set_destr() -: <a class="el" href="mempool_8h.html#adb788e7ec24cd7dbdea6381539c549f2">mempool.h</a> -</li> -<li>ucx_properties2map() -: <a class="el" href="properties_8h.html#a5c7ff8bc3139960a3f3dc92072b742f3">properties.h</a> -</li> -<li>ucx_properties_fill() -: <a class="el" href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d">properties.h</a> -</li> -<li>ucx_properties_free() -: <a class="el" href="properties_8h.html#a38a2fe7bb2986bd87c7e69356ab05c05">properties.h</a> -</li> -<li>ucx_properties_load() -: <a class="el" href="properties_8h.html#ae1b600f839a6b2278b68fc314981a8a3">properties.h</a> -</li> -<li>ucx_properties_new() -: <a class="el" href="properties_8h.html#a44d9dd12cab3aaa0084f1c8b89405796">properties.h</a> -</li> -<li>ucx_properties_next() -: <a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c">properties.h</a> -</li> -<li>ucx_properties_store() -: <a class="el" href="properties_8h.html#a63c0c1b7648e675b21a1788917ff36fb">properties.h</a> -</li> -<li>ucx_sc2sc() -: <a class="el" href="string_8h.html#a69d5e3eeec783cc43314df71248768f5">string.h</a> -</li> -<li>ucx_ss2c_s() -: <a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">string.h</a> -</li> -<li>ucx_ss2sc() -: <a class="el" href="string_8h.html#a9ce5ad1b2aa2dbeba204d452c2e64359">string.h</a> -</li> -<li>ucx_stack_avail() -: <a class="el" href="stack_8h.html#a53cd2c7743dc8ad9cbd35ade0b4873e7">stack.h</a> -</li> -<li>ucx_stack_calloc() -: <a class="el" href="stack_8h.html#afdc467524b5e19a9a777c6bc03e17174">stack.h</a> -</li> -<li>ucx_stack_free() -: <a class="el" href="stack_8h.html#aabd55c14a3866b3782ba324f4d8b4c41">stack.h</a> -</li> -<li>ucx_stack_init() -: <a class="el" href="stack_8h.html#abaef685df4e7ef95cd7218984a0618fe">stack.h</a> -</li> -<li>ucx_stack_malloc() -: <a class="el" href="stack_8h.html#af865b416802140f6b6e8ab3626d7d1ac">stack.h</a> -</li> -<li>ucx_stack_popn() -: <a class="el" href="stack_8h.html#a07ea48f28eab474dcfefbb86fa66ef81">stack.h</a> -</li> -<li>ucx_stack_push() -: <a class="el" href="stack_8h.html#af85e6f77a8341beb6188f9ae1a8e9f92">stack.h</a> -</li> -<li>ucx_stack_pusharr() -: <a class="el" href="stack_8h.html#a7bb138979191bba138e76ea37488fae2">stack.h</a> -</li> -<li>ucx_stack_realloc() -: <a class="el" href="stack_8h.html#a0c678f96f6fabab49b2b034a1fe91c3a">stack.h</a> -</li> -<li>ucx_strcpy() -: <a class="el" href="utils_8h.html#adeb6e8d0a53a829207cfa0a979d01fff">utils.h</a> -</li> -<li>ucx_stream_bncopy() -: <a class="el" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">utils.h</a> -</li> -<li>ucx_szmul_impl() -: <a class="el" href="ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b">ucx.h</a> -</li> -<li>ucx_test_register() -: <a class="el" href="test_8h.html#a8dfabc42f183d3a4d79379a5d17bf67d">test.h</a> -</li> -<li>ucx_test_run() -: <a class="el" href="test_8h.html#a3721458deeecb43aa322428f007714c3">test.h</a> -</li> -<li>ucx_test_suite_free() -: <a class="el" href="test_8h.html#a4a6ac61a6f72722273f8eaa7a343edde">test.h</a> -</li> -<li>ucx_test_suite_new() -: <a class="el" href="test_8h.html#a531f0df90363e0befbe900878f65f09e">test.h</a> -</li> -<li>ucx_vasprintf() -: <a class="el" href="utils_8h.html#a3ea1dfb856c741f3e8ec6bfdc9ad427e">utils.h</a> -</li> -<li>ucx_vfprintf() -: <a class="el" href="utils_8h.html#a4907967beb92c3ae351dd239abbb6927">utils.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_p.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div> - -<h3><a id="index_p"></a>- p -</h3><ul> -<li>PRIsstr -: <a class="el" href="string_8h.html#a7d5bc48708405a28b23667e32dfcecae">string.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_r.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div> - -<h3><a id="index_r"></a>- r -</h3><ul> -<li>read_func -: <a class="el" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">ucx.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_s.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,246 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div> - -<h3><a id="index_s"></a>- s -</h3><ul> -<li>S -: <a class="el" href="string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e">string.h</a> -</li> -<li>SC -: <a class="el" href="string_8h.html#a7d261dd0bc358c957a368bc058c1ce53">string.h</a> -</li> -<li>scstr() -: <a class="el" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6">string.h</a> -</li> -<li>SCSTR -: <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">string.h</a> -</li> -<li>scstrcasecmp() -: <a class="el" href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">string.h</a> -</li> -<li>scstrcaseprefix() -: <a class="el" href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">string.h</a> -</li> -<li>scstrcasesuffix() -: <a class="el" href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">string.h</a> -</li> -<li>scstrcat() -: <a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">string.h</a> -</li> -<li>scstrcat_a() -: <a class="el" href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">string.h</a> -</li> -<li>scstrchr() -: <a class="el" href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87">string.h</a> -</li> -<li>scstrcmp() -: <a class="el" href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">string.h</a> -</li> -<li>scstrdup() -: <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">string.h</a> -</li> -<li>scstrdup_a() -: <a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014">string.h</a> -</li> -<li>scstrlower() -: <a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">string.h</a> -</li> -<li>scstrlower_a() -: <a class="el" href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">string.h</a> -</li> -<li>scstrn() -: <a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">string.h</a> -</li> -<li>scstrnlen() -: <a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">string.h</a> -</li> -<li>scstrprefix() -: <a class="el" href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">string.h</a> -</li> -<li>scstrrchr() -: <a class="el" href="string_8h.html#ae389835b97cd9382e7d6a6a075323376">string.h</a> -</li> -<li>scstrscstr() -: <a class="el" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">string.h</a> -</li> -<li>scstrsplit() -: <a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">string.h</a> -</li> -<li>scstrsplit_a() -: <a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">string.h</a> -</li> -<li>scstrsstr() -: <a class="el" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">string.h</a> -</li> -<li>scstrsubs() -: <a class="el" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060">string.h</a> -</li> -<li>scstrsubsl() -: <a class="el" href="string_8h.html#ad50f0f67b906fad0744f46bcb51e144b">string.h</a> -</li> -<li>scstrsuffix() -: <a class="el" href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">string.h</a> -</li> -<li>scstrtrim() -: <a class="el" href="string_8h.html#ad374b16eb1be8b48019debad9b9f268c">string.h</a> -</li> -<li>scstrupper() -: <a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">string.h</a> -</li> -<li>scstrupper_a() -: <a class="el" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">string.h</a> -</li> -<li>SFMT -: <a class="el" href="string_8h.html#a23ed51e87385886bb65e8cd19c839362">string.h</a> -</li> -<li>sstr() -: <a class="el" href="string_8h.html#a539eb7059251a051ee5d179526a23e9a">string.h</a> -</li> -<li>sstrcasecmp -: <a class="el" href="string_8h.html#a81b0f6df794152c2038703d4e9d0ad59">string.h</a> -</li> -<li>sstrcaseprefix -: <a class="el" href="string_8h.html#acd3dc64e90db9b4046e14f115a815ff4">string.h</a> -</li> -<li>sstrcasesuffix -: <a class="el" href="string_8h.html#a57eabd4862d531dd685bbf2feb8468bf">string.h</a> -</li> -<li>sstrcat -: <a class="el" href="string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759">string.h</a> -</li> -<li>sstrcat_a -: <a class="el" href="string_8h.html#a6068d460f9bc05962666a917d26568b3">string.h</a> -</li> -<li>sstrchr() -: <a class="el" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481">string.h</a> -</li> -<li>sstrcmp -: <a class="el" href="string_8h.html#a7ae7156c8de57454ca38d306100b8160">string.h</a> -</li> -<li>sstrdup -: <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80">string.h</a> -</li> -<li>sstrdup_a -: <a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007">string.h</a> -</li> -<li>sstrlower -: <a class="el" href="string_8h.html#a89343ea3e719f00ee802b557db57b769">string.h</a> -</li> -<li>sstrlower_a -: <a class="el" href="string_8h.html#a4bb4742fe71115f493991d307cb22b23">string.h</a> -</li> -<li>sstrn() -: <a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">string.h</a> -</li> -<li>sstrnlen -: <a class="el" href="string_8h.html#a33fa945acc5ac2ce962e5ef13cf1638c">string.h</a> -</li> -<li>sstrprefix -: <a class="el" href="string_8h.html#a7d73b66256384b26927e787318fdefa2">string.h</a> -</li> -<li>sstrrchr() -: <a class="el" href="string_8h.html#adae3f59957ca328e1da5285cb8b02a72">string.h</a> -</li> -<li>sstrscstr -: <a class="el" href="string_8h.html#aa696932213265e10f864678686f4ccde">string.h</a> -</li> -<li>sstrsplit -: <a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7">string.h</a> -</li> -<li>sstrsplit_a -: <a class="el" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601">string.h</a> -</li> -<li>sstrstr -: <a class="el" href="string_8h.html#a9d03be026afa9447c52bb34b9e3b895a">string.h</a> -</li> -<li>sstrsubs() -: <a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258">string.h</a> -</li> -<li>sstrsubsl() -: <a class="el" href="string_8h.html#a78925c91af54f23cebd20ff99ef4331a">string.h</a> -</li> -<li>sstrsuffix -: <a class="el" href="string_8h.html#ac6a5246f26be2e8a5f34d8995b7ec14e">string.h</a> -</li> -<li>sstrtrim() -: <a class="el" href="string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56">string.h</a> -</li> -<li>sstrupper -: <a class="el" href="string_8h.html#a084fe5a3a90d6fb6b15ecda03bb30824">string.h</a> -</li> -<li>sstrupper_a -: <a class="el" href="string_8h.html#a5f0dd83c0176b812fb428004b2877a34">string.h</a> -</li> -<li>ST -: <a class="el" href="string_8h.html#a9037956cca97a4e84b642f17f3d10378">string.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_type.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> - <ul> -<li>cmp_func -: <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">ucx.h</a> -</li> -<li>copy_func -: <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">ucx.h</a> -</li> -<li>distance_func -: <a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">ucx.h</a> -</li> -<li>read_func -: <a class="el" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">ucx.h</a> -</li> -<li>ucx_allocator_calloc -: <a class="el" href="allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12">allocator.h</a> -</li> -<li>ucx_allocator_free -: <a class="el" href="allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e">allocator.h</a> -</li> -<li>ucx_allocator_malloc -: <a class="el" href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473">allocator.h</a> -</li> -<li>ucx_allocator_realloc -: <a class="el" href="allocator_8h.html#a6d7cf038a806e327c5da37321d04e426">allocator.h</a> -</li> -<li>ucx_destructor -: <a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx.h</a> -</li> -<li>UcxAVLNode -: <a class="el" href="avl_8h.html#a08ba2496c2316df58548c3cc29712add">avl.h</a> -</li> -<li>UcxKey -: <a class="el" href="map_8h.html#ad63828bb23123fc01a5315a2bac3b142">map.h</a> -</li> -<li>UcxList -: <a class="el" href="list_8h.html#aa6f89f91c1081c9a7c6866c298f497a2">list.h</a> -</li> -<li>UcxMap -: <a class="el" href="map_8h.html#a18e21948725b2da68c35da587a722033">map.h</a> -</li> -<li>UcxMapElement -: <a class="el" href="map_8h.html#ad7d7a910a32113eb93eae11c3dc97b4b">map.h</a> -</li> -<li>UcxMapIterator -: <a class="el" href="map_8h.html#ae36aff5f645948c54f51578b11fd87fb">map.h</a> -</li> -<li>UcxTest -: <a class="el" href="test_8h.html#ae906817354c010b83c2784260cce7a1c">test.h</a> -</li> -<li>UcxTestList -: <a class="el" href="test_8h.html#a8048c50ae73ea690b776edfd63bd6a5d">test.h</a> -</li> -<li>UcxTestSuite -: <a class="el" href="test_8h.html#a52115d1d0f1c4a565ed6ef7c1bfd0363">test.h</a> -</li> -<li>write_func -: <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">ucx.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_u.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,846 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div> - -<h3><a id="index_u"></a>- u -</h3><ul> -<li>ucx_allocator_calloc -: <a class="el" href="allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12">allocator.h</a> -</li> -<li>UCX_ALLOCATOR_DEFAULT -: <a class="el" href="allocator_8h.html#a1283a8f875f90a7af3aba5e031fc2e3f">allocator.h</a> -</li> -<li>ucx_allocator_free -: <a class="el" href="allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e">allocator.h</a> -</li> -<li>ucx_allocator_malloc -: <a class="el" href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473">allocator.h</a> -</li> -<li>ucx_allocator_realloc -: <a class="el" href="allocator_8h.html#a6d7cf038a806e327c5da37321d04e426">allocator.h</a> -</li> -<li>ucx_array_append_from() -: <a class="el" href="array_8h.html#aea01731ad94ea73c0c8fb1d1b7a35fcf">array.h</a> -</li> -<li>ucx_array_at() -: <a class="el" href="array_8h.html#aa698085fd1a8b70d6b709999c51b49e8">array.h</a> -</li> -<li>ucx_array_clone() -: <a class="el" href="array_8h.html#a4a8c273370e4a3a3e2624e364f5ab410">array.h</a> -</li> -<li>ucx_array_concat() -: <a class="el" href="array_8h.html#aa5a0bf3d3f0df6406beb0e569021cc28">array.h</a> -</li> -<li>ucx_array_contains() -: <a class="el" href="array_8h.html#a5241058cd2329147bc5b1593ae7e51dc">array.h</a> -</li> -<li>ucx_array_destroy() -: <a class="el" href="array_8h.html#a8e83681d8d5d8cddbf10f63ce5be4c10">array.h</a> -</li> -<li>ucx_array_equals() -: <a class="el" href="array_8h.html#a43292b448adb1741677aa8c578bcc201">array.h</a> -</li> -<li>ucx_array_find() -: <a class="el" href="array_8h.html#ae7bdbed94afee9b20b38b95e3ab470f0">array.h</a> -</li> -<li>ucx_array_free() -: <a class="el" href="array_8h.html#ac01ee914468a16f470bf3071fffbe438">array.h</a> -</li> -<li>ucx_array_grow() -: <a class="el" href="array_8h.html#ab0cbf243824aaebee48277315e03afce">array.h</a> -</li> -<li>ucx_array_init() -: <a class="el" href="array_8h.html#ad921e85c28ffae32230777a53c5037e5">array.h</a> -</li> -<li>ucx_array_init_a() -: <a class="el" href="array_8h.html#a2451e61ebb15a7ba1c1319267ba75b8c">array.h</a> -</li> -<li>ucx_array_new() -: <a class="el" href="array_8h.html#a994a2fbf1c33a3833e2a70cd9a4352b7">array.h</a> -</li> -<li>ucx_array_new_a() -: <a class="el" href="array_8h.html#a177170258c215eb2e4f5a32e59f0cb1b">array.h</a> -</li> -<li>ucx_array_prepend_from() -: <a class="el" href="array_8h.html#a95b52acc2193b5c33cf0eaa4f2082477">array.h</a> -</li> -<li>ucx_array_remove() -: <a class="el" href="array_8h.html#aa45eac6b697f83adac81c0860cf306b8">array.h</a> -</li> -<li>ucx_array_remove_fast() -: <a class="el" href="array_8h.html#a548d81b07612bae3ba8c4c4b49104b8e">array.h</a> -</li> -<li>ucx_array_reserve() -: <a class="el" href="array_8h.html#a1c3bf8433c1de3c933f3854ab297fe1d">array.h</a> -</li> -<li>ucx_array_resize() -: <a class="el" href="array_8h.html#a27762e7c06a6c781015e3c8ceeee0ce3">array.h</a> -</li> -<li>ucx_array_set_from() -: <a class="el" href="array_8h.html#a1bb545d065358d265d80d815ba382a28">array.h</a> -</li> -<li>ucx_array_shrink() -: <a class="el" href="array_8h.html#a2daf50e80aee9bccebee876a7efd2dfc">array.h</a> -</li> -<li>ucx_array_sort() -: <a class="el" href="array_8h.html#add773514569b872a6624381b4b6af52c">array.h</a> -</li> -<li>ucx_array_util_set -: <a class="el" href="array_8h.html#a1d959c29af3125bdd37cde3a554e729c">array.h</a> -</li> -<li>ucx_array_util_set_a() -: <a class="el" href="array_8h.html#ad0a8d76980cf1c1910e64a245803fb9a">array.h</a> -</li> -<li>ucx_array_util_setptr -: <a class="el" href="array_8h.html#a59a5b342965e790945f9c7a3f86b99f9">array.h</a> -</li> -<li>ucx_array_util_setptr_a() -: <a class="el" href="array_8h.html#ad708b333c0c1b02c998309a58ea65e31">array.h</a> -</li> -<li>ucx_asprintf() -: <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5">utils.h</a> -</li> -<li>ucx_avl_count() -: <a class="el" href="avl_8h.html#a92c1d41c2b22fe4a029a486ab2153e35">avl.h</a> -</li> -<li>ucx_avl_default_new -: <a class="el" href="avl_8h.html#ac2886d4b79b48c9fabf6408873f84cd2">avl.h</a> -</li> -<li>ucx_avl_find() -: <a class="el" href="avl_8h.html#a51770e1614b28d7d22dea096c3704f83">avl.h</a> -</li> -<li>UCX_AVL_FIND_CLOSEST -: <a class="el" href="avl_8h.html#af16f24d74fd6af0154de041566c6603b">avl.h</a> -</li> -<li>UCX_AVL_FIND_EXACT -: <a class="el" href="avl_8h.html#aaaf4a6f6f661cda7791db239212285d9">avl.h</a> -</li> -<li>UCX_AVL_FIND_LOWER_BOUNDED -: <a class="el" href="avl_8h.html#abd2446d544d5412b6997ee8a17bd368c">avl.h</a> -</li> -<li>ucx_avl_find_node() -: <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5">avl.h</a> -</li> -<li>UCX_AVL_FIND_UPPER_BOUNDED -: <a class="el" href="avl_8h.html#ac74ee7649c1e206b08b31f37dd68ca5e">avl.h</a> -</li> -<li>ucx_avl_free() -: <a class="el" href="avl_8h.html#a2f92db538f25fce908d2cb3e5590944c">avl.h</a> -</li> -<li>ucx_avl_free_content() -: <a class="el" href="avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279">avl.h</a> -</li> -<li>ucx_avl_get() -: <a class="el" href="avl_8h.html#adbcf7ceb3f014a30c7214f7304519efe">avl.h</a> -</li> -<li>ucx_avl_get_node() -: <a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e">avl.h</a> -</li> -<li>ucx_avl_new() -: <a class="el" href="avl_8h.html#a11b043d65a11b7092d5d98b298e5ede3">avl.h</a> -</li> -<li>ucx_avl_new_a() -: <a class="el" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2">avl.h</a> -</li> -<li>ucx_avl_pred() -: <a class="el" href="avl_8h.html#a0e739aeb66dda6a6a3f6eb51b50cf346">avl.h</a> -</li> -<li>ucx_avl_put() -: <a class="el" href="avl_8h.html#aec401fab4a24a7edffa734f9baf88577">avl.h</a> -</li> -<li>ucx_avl_put_s() -: <a class="el" href="avl_8h.html#a32cf8955cc0226a82bacfc7b76d6474c">avl.h</a> -</li> -<li>ucx_avl_remove() -: <a class="el" href="avl_8h.html#a1d821119c805d7fbb7e424bc3effeba9">avl.h</a> -</li> -<li>ucx_avl_remove_node() -: <a class="el" href="avl_8h.html#a9a792b7d9e58073deef74a341f8bc720">avl.h</a> -</li> -<li>ucx_avl_remove_s() -: <a class="el" href="avl_8h.html#a01aeeecd6415f0cc2b623486eb28f254">avl.h</a> -</li> -<li>ucx_avl_succ() -: <a class="el" href="avl_8h.html#aab1ad9b027ff5e50671aa0ee84e2d541">avl.h</a> -</li> -<li>ucx_bprintf -: <a class="el" href="utils_8h.html#a9d7d65a420f026fcb6982803d5120519">utils.h</a> -</li> -<li>UCX_BUFFER_AUTOEXTEND -: <a class="el" href="buffer_8h.html#a05f9565f2d04399168c3b1c152a632be">buffer.h</a> -</li> -<li>UCX_BUFFER_AUTOFREE -: <a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535">buffer.h</a> -</li> -<li>ucx_buffer_clear -: <a class="el" href="buffer_8h.html#a374abd5aabfcc3ee0777a79d5fe651ab">buffer.h</a> -</li> -<li>ucx_buffer_clone -: <a class="el" href="buffer_8h.html#a828353846428c2c2f695f9938f059e52">buffer.h</a> -</li> -<li>UCX_BUFFER_DEFAULT -: <a class="el" href="buffer_8h.html#acc77c8ed7b26854f555d4a5d11e49ea2">buffer.h</a> -</li> -<li>ucx_buffer_eof() -: <a class="el" href="buffer_8h.html#abad7fd9ad5061224c780b8d1d4c55f09">buffer.h</a> -</li> -<li>ucx_buffer_extend() -: <a class="el" href="buffer_8h.html#afaf97d2cd7e9faad79a9d35fe33e30c6">buffer.h</a> -</li> -<li>ucx_buffer_extract() -: <a class="el" href="buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef">buffer.h</a> -</li> -<li>ucx_buffer_free() -: <a class="el" href="buffer_8h.html#a2af8646d8905c22c7322e7540b0440af">buffer.h</a> -</li> -<li>ucx_buffer_getc() -: <a class="el" href="buffer_8h.html#a396339022159ce4ca6d069de9f9209b0">buffer.h</a> -</li> -<li>ucx_buffer_new() -: <a class="el" href="buffer_8h.html#aacea876d692193ec6f859ce98da7351c">buffer.h</a> -</li> -<li>ucx_buffer_putc() -: <a class="el" href="buffer_8h.html#a7d6f01b9d631b0123475dfb98fb849ac">buffer.h</a> -</li> -<li>ucx_buffer_puts() -: <a class="el" href="buffer_8h.html#af1d4b478e04b3ae0bf30e7c2ea964ea2">buffer.h</a> -</li> -<li>ucx_buffer_read() -: <a class="el" href="buffer_8h.html#ae5c3430759f0059547b35d5a254d4da5">buffer.h</a> -</li> -<li>ucx_buffer_seek() -: <a class="el" href="buffer_8h.html#a47d98482662073c74f35deb0957d15d1">buffer.h</a> -</li> -<li>ucx_buffer_shift() -: <a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69">buffer.h</a> -</li> -<li>ucx_buffer_shift_left() -: <a class="el" href="buffer_8h.html#a20431dd0ed6a6fe9f15333bd72afe4db">buffer.h</a> -</li> -<li>ucx_buffer_shift_right() -: <a class="el" href="buffer_8h.html#a4fa10b6471495547eb981248fd4f1bc2">buffer.h</a> -</li> -<li>ucx_buffer_to_sstr -: <a class="el" href="buffer_8h.html#a0f4b64f1b3a74c4f6c5d9409d6b6086a">buffer.h</a> -</li> -<li>ucx_buffer_write() -: <a class="el" href="buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05">buffer.h</a> -</li> -<li>ucx_cmp_double() -: <a class="el" href="utils_8h.html#ab804b7c27d0bfcd7bf3a3583140825b6">utils.h</a> -</li> -<li>ucx_cmp_float() -: <a class="el" href="utils_8h.html#ad1196b561bcdad76c393885819769a97">utils.h</a> -</li> -<li>ucx_cmp_int() -: <a class="el" href="utils_8h.html#a8ce7e11e6b3deafe89a32a091fde7f16">utils.h</a> -</li> -<li>ucx_cmp_int16() -: <a class="el" href="utils_8h.html#aa29e6e559946375e34113e34e0b0bd0d">utils.h</a> -</li> -<li>ucx_cmp_int32() -: <a class="el" href="utils_8h.html#a858b2ac443fb202643b71f6a7e9218dd">utils.h</a> -</li> -<li>ucx_cmp_int64() -: <a class="el" href="utils_8h.html#a54701aea6a89fed1402dfb0bf56bc7f6">utils.h</a> -</li> -<li>ucx_cmp_longint() -: <a class="el" href="utils_8h.html#aeb57a2b9a6aaa0460c7a6bec29accf2c">utils.h</a> -</li> -<li>ucx_cmp_longlong() -: <a class="el" href="utils_8h.html#a366b57def20f86a41eaedf575eea5375">utils.h</a> -</li> -<li>ucx_cmp_mem() -: <a class="el" href="utils_8h.html#aff7d2bcded71196831a8c0664333f8e7">utils.h</a> -</li> -<li>ucx_cmp_ptr() -: <a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8">utils.h</a> -</li> -<li>ucx_cmp_sstr() -: <a class="el" href="utils_8h.html#adee0739589166d272f8cb7c23aabf8ba">utils.h</a> -</li> -<li>ucx_cmp_str() -: <a class="el" href="utils_8h.html#aa6a37b9d172b6a5b2803d152f9e1b258">utils.h</a> -</li> -<li>ucx_cmp_strn() -: <a class="el" href="utils_8h.html#ac6b354a878f551a3a5b20a167db3f308">utils.h</a> -</li> -<li>ucx_cmp_uint() -: <a class="el" href="utils_8h.html#abd83a5da91c3dd026a6931bd80c12f1e">utils.h</a> -</li> -<li>ucx_cmp_uint16() -: <a class="el" href="utils_8h.html#acde5366437e886a459b7468f7a9e11f0">utils.h</a> -</li> -<li>ucx_cmp_uint32() -: <a class="el" href="utils_8h.html#a5879d1722330355914d8c9146fa549d3">utils.h</a> -</li> -<li>ucx_cmp_uint64() -: <a class="el" href="utils_8h.html#a1572a78b5b42f7151a5b2a5a7283d62d">utils.h</a> -</li> -<li>ucx_cmp_ulongint() -: <a class="el" href="utils_8h.html#a3f3cbae2594d6f722bae29acb0408a24">utils.h</a> -</li> -<li>ucx_cmp_ulonglong() -: <a class="el" href="utils_8h.html#a6acfc359421f21f9a042a654ff7faac5">utils.h</a> -</li> -<li>ucx_default_allocator() -: <a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">allocator.h</a> -</li> -<li>ucx_default_calloc() -: <a class="el" href="allocator_8h.html#a3a0bfdd13d887012309c459b339f338f">allocator.h</a> -</li> -<li>ucx_default_free() -: <a class="el" href="allocator_8h.html#a646d83aaaadfe33ae414c0fad8bfc52a">allocator.h</a> -</li> -<li>ucx_default_malloc() -: <a class="el" href="allocator_8h.html#a96403ebf3d2312d95f2fe7627a1cdbc0">allocator.h</a> -</li> -<li>ucx_default_realloc() -: <a class="el" href="allocator_8h.html#a47cfc8af626a86fcb93a2b14b90498ed">allocator.h</a> -</li> -<li>ucx_destructor -: <a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx.h</a> -</li> -<li>ucx_dist_int() -: <a class="el" href="utils_8h.html#a4ab6753739d56c09cdf6079fdcabf7c6">utils.h</a> -</li> -<li>ucx_dist_int16() -: <a class="el" href="utils_8h.html#a81fb8434b70ca11bf2c14abfa21d16a9">utils.h</a> -</li> -<li>ucx_dist_int32() -: <a class="el" href="utils_8h.html#ab4a659cc46096f0490c1dafa57726476">utils.h</a> -</li> -<li>ucx_dist_int64() -: <a class="el" href="utils_8h.html#a54e7d06585bad3a899befc4e9c13853f">utils.h</a> -</li> -<li>ucx_dist_longint() -: <a class="el" href="utils_8h.html#a43e73d288b1553a0078bf4c98dd341f5">utils.h</a> -</li> -<li>ucx_dist_longlong() -: <a class="el" href="utils_8h.html#a306778414a2427951ea263be92368627">utils.h</a> -</li> -<li>ucx_dist_uint() -: <a class="el" href="utils_8h.html#a37b7d471ca1679992afc11a0deda45f4">utils.h</a> -</li> -<li>ucx_dist_uint16() -: <a class="el" href="utils_8h.html#a66e00a0703cbcde050ec922578e2f080">utils.h</a> -</li> -<li>ucx_dist_uint32() -: <a class="el" href="utils_8h.html#add2b5c5507caba59d894b84e056b079b">utils.h</a> -</li> -<li>ucx_dist_uint64() -: <a class="el" href="utils_8h.html#a3ba75e2e0b2479eef2b22fb219b42da7">utils.h</a> -</li> -<li>ucx_dist_ulongint() -: <a class="el" href="utils_8h.html#abb13476228d0c16bfaba08469adbae2d">utils.h</a> -</li> -<li>ucx_dist_ulonglong() -: <a class="el" href="utils_8h.html#a59a5859272cb4b43cbdd58208c41e32b">utils.h</a> -</li> -<li>UCX_FOREACH -: <a class="el" href="list_8h.html#a4b143b6526a410aa4d22cb3bb9365d70">list.h</a> -</li> -<li>ucx_fprintf() -: <a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a">utils.h</a> -</li> -<li>ucx_hash() -: <a class="el" href="map_8h.html#aea3be97254c05595d986ef6a9faae87b">map.h</a> -</li> -<li>ucx_key() -: <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">map.h</a> -</li> -<li>ucx_list_append() -: <a class="el" href="list_8h.html#a00c122c8a26d35b60676939df4161621">list.h</a> -</li> -<li>ucx_list_append_a() -: <a class="el" href="list_8h.html#adf3b3e2e0ff977d8928671d6bd82fc60">list.h</a> -</li> -<li>ucx_list_clone() -: <a class="el" href="list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed">list.h</a> -</li> -<li>ucx_list_clone_a() -: <a class="el" href="list_8h.html#a08ca1ba0d2e82258b0408714c1f4c425">list.h</a> -</li> -<li>ucx_list_concat() -: <a class="el" href="list_8h.html#a77163a0cc82fae52bec26c8c0c3674d9">list.h</a> -</li> -<li>ucx_list_contains() -: <a class="el" href="list_8h.html#a8b0fa051fcfe12e1a82cca1087973852">list.h</a> -</li> -<li>ucx_list_difference() -: <a class="el" href="list_8h.html#a6c5db5d1d11ad28b6fe1a80ee1c1e449">list.h</a> -</li> -<li>ucx_list_difference_a() -: <a class="el" href="list_8h.html#a4a2a2fc5cc41073c516db6235bbc51d5">list.h</a> -</li> -<li>ucx_list_equals() -: <a class="el" href="list_8h.html#adc435447cecf885bc63d232191085bbe">list.h</a> -</li> -<li>ucx_list_find() -: <a class="el" href="list_8h.html#a9b3b6842d3be572e06a7f519e198cb83">list.h</a> -</li> -<li>ucx_list_first() -: <a class="el" href="list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5">list.h</a> -</li> -<li>ucx_list_free() -: <a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668">list.h</a> -</li> -<li>ucx_list_free_a() -: <a class="el" href="list_8h.html#a944e11f76c38767cd1100d72a4e3b25b">list.h</a> -</li> -<li>ucx_list_free_content() -: <a class="el" href="list_8h.html#a4ba6c96642f72ea046cc22627c72979c">list.h</a> -</li> -<li>ucx_list_get() -: <a class="el" href="list_8h.html#a2509ffe19bce6a8708c77f89480c75fb">list.h</a> -</li> -<li>ucx_list_indexof() -: <a class="el" href="list_8h.html#ae2ff2974812ca185870f80bc4ed9337e">list.h</a> -</li> -<li>ucx_list_intersection() -: <a class="el" href="list_8h.html#a259f9b754978aeca23dfabba16e20f39">list.h</a> -</li> -<li>ucx_list_intersection_a() -: <a class="el" href="list_8h.html#a1d0b00514dbb81ba6270b58da0c5b9a8">list.h</a> -</li> -<li>ucx_list_last() -: <a class="el" href="list_8h.html#add5ec40c5006e29c629d23c2eb5a6553">list.h</a> -</li> -<li>ucx_list_prepend() -: <a class="el" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4">list.h</a> -</li> -<li>ucx_list_prepend_a() -: <a class="el" href="list_8h.html#a54654e6dc60e1c3de9e886c150e404ec">list.h</a> -</li> -<li>ucx_list_remove() -: <a class="el" href="list_8h.html#a410cb3e8260037ba56c72d14b899b468">list.h</a> -</li> -<li>ucx_list_remove_a() -: <a class="el" href="list_8h.html#aca687b7c4e7170175f447e549125aa52">list.h</a> -</li> -<li>ucx_list_size() -: <a class="el" href="list_8h.html#ae88001cc8ae40b946560f31434abed8f">list.h</a> -</li> -<li>ucx_list_sort() -: <a class="el" href="list_8h.html#ac74962d9bd7cfc9d3e2e09651469377b">list.h</a> -</li> -<li>ucx_list_union() -: <a class="el" href="list_8h.html#a94ecdb0cea1633ad7074f027fa8485fa">list.h</a> -</li> -<li>ucx_list_union_a() -: <a class="el" href="list_8h.html#a65b4355536f4ebc4130211b46469f4c1">list.h</a> -</li> -<li>UCX_LOGGER_DEBUG -: <a class="el" href="logging_8h.html#acff01d1ef919ea997cfce755fc1b83d8">logging.h</a> -</li> -<li>ucx_logger_debug -: <a class="el" href="logging_8h.html#a2936402799892db5138e5f1f8c25db0c">logging.h</a> -</li> -<li>ucx_logger_error -: <a class="el" href="logging_8h.html#a6a9e472e14d6768e59d96d245e065397">logging.h</a> -</li> -<li>UCX_LOGGER_ERROR -: <a class="el" href="logging_8h.html#aa254c07fe3a907613e2256a318d5c9a8">logging.h</a> -</li> -<li>ucx_logger_free() -: <a class="el" href="logging_8h.html#ac4697b784e01ec990d2acea192e21658">logging.h</a> -</li> -<li>UCX_LOGGER_INFO -: <a class="el" href="logging_8h.html#a4b0178bf60a6129373ffc59114ca4c9b">logging.h</a> -</li> -<li>ucx_logger_info -: <a class="el" href="logging_8h.html#a98464d8d51376ce2716dcc4eca00d5da">logging.h</a> -</li> -<li>UCX_LOGGER_LEVEL -: <a class="el" href="logging_8h.html#aee18bc20e58ffb69910121512c350839">logging.h</a> -</li> -<li>ucx_logger_log -: <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">logging.h</a> -</li> -<li>ucx_logger_logf() -: <a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801">logging.h</a> -</li> -<li>ucx_logger_new() -: <a class="el" href="logging_8h.html#ac560f8517d2172794c9d2691735ec48c">logging.h</a> -</li> -<li>ucx_logger_register_level -: <a class="el" href="logging_8h.html#a5cffc19502c4c90bfb3bd3bbcd18170a">logging.h</a> -</li> -<li>UCX_LOGGER_SOURCE -: <a class="el" href="logging_8h.html#a0e0d72b12616c1e49ff8834eaf4cb8a2">logging.h</a> -</li> -<li>UCX_LOGGER_TIMESTAMP -: <a class="el" href="logging_8h.html#a38607008268b4f776ee500fb95d2e823">logging.h</a> -</li> -<li>UCX_LOGGER_TRACE -: <a class="el" href="logging_8h.html#a55b88d1fec7036d841b3ddd6195c5586">logging.h</a> -</li> -<li>ucx_logger_trace -: <a class="el" href="logging_8h.html#a3031b7ff13f4cfae9c2916543be2877c">logging.h</a> -</li> -<li>ucx_logger_warn -: <a class="el" href="logging_8h.html#aca7bd861b646892813fd7310c0aa69af">logging.h</a> -</li> -<li>UCX_LOGGER_WARN -: <a class="el" href="logging_8h.html#abd01ca11486226ba34e8f7028d9fffba">logging.h</a> -</li> -<li>ucx_map_clear() -: <a class="el" href="map_8h.html#a285e90e40681c6d9631c935dda0967f2">map.h</a> -</li> -<li>ucx_map_clone() -: <a class="el" href="map_8h.html#a62c6c30cbb0d824ba710f5030ff9a4e4">map.h</a> -</li> -<li>ucx_map_clone_a() -: <a class="el" href="map_8h.html#a9aea9103703d5c168420bb6bf85549ea">map.h</a> -</li> -<li>ucx_map_copy() -: <a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425">map.h</a> -</li> -<li>ucx_map_cstr_get -: <a class="el" href="map_8h.html#a64e1fb55498fa502dd2ed8ed69062cdd">map.h</a> -</li> -<li>ucx_map_cstr_put -: <a class="el" href="map_8h.html#ad9356b01425b934ab237b52339ac0cc3">map.h</a> -</li> -<li>ucx_map_cstr_remove -: <a class="el" href="map_8h.html#a9c4405a5a75ecf64e2ef3d0c6501a9fe">map.h</a> -</li> -<li>ucx_map_difference() -: <a class="el" href="map_8h.html#a774fcff87d1e58b6c5af77dd19a8c3dc">map.h</a> -</li> -<li>ucx_map_difference_a() -: <a class="el" href="map_8h.html#ad0ba103494247d798ac3037c50fc8831">map.h</a> -</li> -<li>UCX_MAP_FOREACH -: <a class="el" href="map_8h.html#a940896c4aa1b13e54c55c04c3efc186b">map.h</a> -</li> -<li>ucx_map_free() -: <a class="el" href="map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e">map.h</a> -</li> -<li>ucx_map_free_content() -: <a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618">map.h</a> -</li> -<li>ucx_map_get() -: <a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">map.h</a> -</li> -<li>ucx_map_int_get -: <a class="el" href="map_8h.html#aa1681bd2178553cd092fd24c4d681d3c">map.h</a> -</li> -<li>ucx_map_int_put -: <a class="el" href="map_8h.html#aaa30af79b4068c923895619e83f44367">map.h</a> -</li> -<li>ucx_map_int_remove -: <a class="el" href="map_8h.html#aa767958b5468737755c09f7185b1770c">map.h</a> -</li> -<li>ucx_map_intersection() -: <a class="el" href="map_8h.html#aa594d7a5afebc3bed6bb265348cf6b0d">map.h</a> -</li> -<li>ucx_map_intersection_a() -: <a class="el" href="map_8h.html#a169e0470a20484dd76425fdf77e3651e">map.h</a> -</li> -<li>ucx_map_iter_next() -: <a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">map.h</a> -</li> -<li>ucx_map_iterator() -: <a class="el" href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110">map.h</a> -</li> -<li>ucx_map_new() -: <a class="el" href="map_8h.html#a79f31de8b93814493759dbc8b940cf0c">map.h</a> -</li> -<li>ucx_map_new_a() -: <a class="el" href="map_8h.html#aed508a94c66cc15372503c64b70eb03e">map.h</a> -</li> -<li>ucx_map_put() -: <a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">map.h</a> -</li> -<li>ucx_map_rehash() -: <a class="el" href="map_8h.html#a174bce9fad554dd92b8da354e0d32512">map.h</a> -</li> -<li>ucx_map_remove() -: <a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">map.h</a> -</li> -<li>ucx_map_sstr_get -: <a class="el" href="map_8h.html#a14d385f6b7f371f0507861cabd2eab4e">map.h</a> -</li> -<li>ucx_map_sstr_put -: <a class="el" href="map_8h.html#ac26a8615bfc8f47ee9eaceb47645f98e">map.h</a> -</li> -<li>ucx_map_sstr_remove -: <a class="el" href="map_8h.html#a48700ea86fadb9ea54d13010f9124df2">map.h</a> -</li> -<li>ucx_map_union() -: <a class="el" href="map_8h.html#a3f65978c481af7f637cad021d93522d5">map.h</a> -</li> -<li>ucx_map_union_a() -: <a class="el" href="map_8h.html#ab6370c3fa8113fdad593ce4b0460c9c6">map.h</a> -</li> -<li>ucx_memcpy() -: <a class="el" href="utils_8h.html#ab2e184e6a744941aab6b8058116baf30">utils.h</a> -</li> -<li>ucx_mempool_calloc() -: <a class="el" href="mempool_8h.html#a4b9142011824ae24f00fabe128417d69">mempool.h</a> -</li> -<li>ucx_mempool_chcap() -: <a class="el" href="mempool_8h.html#aaf75b5016098723a9280531ccc3a6d77">mempool.h</a> -</li> -<li>ucx_mempool_destroy() -: <a class="el" href="mempool_8h.html#af096378da7e9bfbed3088497cf4c15bf">mempool.h</a> -</li> -<li>ucx_mempool_free() -: <a class="el" href="mempool_8h.html#aefa26e3015f5aefadbfc74221bd246ac">mempool.h</a> -</li> -<li>ucx_mempool_malloc() -: <a class="el" href="mempool_8h.html#a2ae492b8f2878ccc9837ac213dced11e">mempool.h</a> -</li> -<li>ucx_mempool_new() -: <a class="el" href="mempool_8h.html#ad71cb8c3b6fdb30360376a8b372ef22a">mempool.h</a> -</li> -<li>ucx_mempool_new_default -: <a class="el" href="mempool_8h.html#a49f7bd1da5ac201d0cf54dc0f0d82dd2">mempool.h</a> -</li> -<li>ucx_mempool_realloc() -: <a class="el" href="mempool_8h.html#a660ef42520ed6737c2e77aae18e3a7a4">mempool.h</a> -</li> -<li>ucx_mempool_reg_destr() -: <a class="el" href="mempool_8h.html#af47b6b7c40f8f263dc28cc9a4e77b27c">mempool.h</a> -</li> -<li>ucx_mempool_set_destr() -: <a class="el" href="mempool_8h.html#adb788e7ec24cd7dbdea6381539c549f2">mempool.h</a> -</li> -<li>ucx_properties2map() -: <a class="el" href="properties_8h.html#a5c7ff8bc3139960a3f3dc92072b742f3">properties.h</a> -</li> -<li>ucx_properties_fill() -: <a class="el" href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d">properties.h</a> -</li> -<li>ucx_properties_free() -: <a class="el" href="properties_8h.html#a38a2fe7bb2986bd87c7e69356ab05c05">properties.h</a> -</li> -<li>ucx_properties_load() -: <a class="el" href="properties_8h.html#ae1b600f839a6b2278b68fc314981a8a3">properties.h</a> -</li> -<li>ucx_properties_new() -: <a class="el" href="properties_8h.html#a44d9dd12cab3aaa0084f1c8b89405796">properties.h</a> -</li> -<li>ucx_properties_next() -: <a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c">properties.h</a> -</li> -<li>ucx_properties_store() -: <a class="el" href="properties_8h.html#a63c0c1b7648e675b21a1788917ff36fb">properties.h</a> -</li> -<li>ucx_sc2sc() -: <a class="el" href="string_8h.html#a69d5e3eeec783cc43314df71248768f5">string.h</a> -</li> -<li>ucx_sprintf -: <a class="el" href="utils_8h.html#af9f333b66ecd639c347c7235f4992e2e">utils.h</a> -</li> -<li>ucx_ss2c_s() -: <a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">string.h</a> -</li> -<li>ucx_ss2sc() -: <a class="el" href="string_8h.html#a9ce5ad1b2aa2dbeba204d452c2e64359">string.h</a> -</li> -<li>ucx_stack_avail() -: <a class="el" href="stack_8h.html#a53cd2c7743dc8ad9cbd35ade0b4873e7">stack.h</a> -</li> -<li>ucx_stack_calloc() -: <a class="el" href="stack_8h.html#afdc467524b5e19a9a777c6bc03e17174">stack.h</a> -</li> -<li>ucx_stack_dim -: <a class="el" href="stack_8h.html#a3b761343c6491222604341ebfa443226">stack.h</a> -</li> -<li>ucx_stack_empty -: <a class="el" href="stack_8h.html#a4f7239dbd6c032c56812e370b71c1985">stack.h</a> -</li> -<li>ucx_stack_free() -: <a class="el" href="stack_8h.html#aabd55c14a3866b3782ba324f4d8b4c41">stack.h</a> -</li> -<li>ucx_stack_init() -: <a class="el" href="stack_8h.html#abaef685df4e7ef95cd7218984a0618fe">stack.h</a> -</li> -<li>ucx_stack_malloc() -: <a class="el" href="stack_8h.html#af865b416802140f6b6e8ab3626d7d1ac">stack.h</a> -</li> -<li>ucx_stack_pop -: <a class="el" href="stack_8h.html#a506b82374734ec476d086ddfb561174d">stack.h</a> -</li> -<li>ucx_stack_popn() -: <a class="el" href="stack_8h.html#a07ea48f28eab474dcfefbb86fa66ef81">stack.h</a> -</li> -<li>ucx_stack_push() -: <a class="el" href="stack_8h.html#af85e6f77a8341beb6188f9ae1a8e9f92">stack.h</a> -</li> -<li>ucx_stack_pusharr() -: <a class="el" href="stack_8h.html#a7bb138979191bba138e76ea37488fae2">stack.h</a> -</li> -<li>ucx_stack_realloc() -: <a class="el" href="stack_8h.html#a0c678f96f6fabab49b2b034a1fe91c3a">stack.h</a> -</li> -<li>ucx_stack_topsize -: <a class="el" href="stack_8h.html#a030197051a803e87d5eeac5adb80b15a">stack.h</a> -</li> -<li>ucx_strcpy() -: <a class="el" href="utils_8h.html#adeb6e8d0a53a829207cfa0a979d01fff">utils.h</a> -</li> -<li>ucx_stream_bcopy -: <a class="el" href="utils_8h.html#a6003a1750a66234169bd1f8cc84b297b">utils.h</a> -</li> -<li>ucx_stream_bncopy() -: <a class="el" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">utils.h</a> -</li> -<li>ucx_stream_copy -: <a class="el" href="utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392">utils.h</a> -</li> -<li>UCX_STREAM_COPY_BUFSIZE -: <a class="el" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">utils.h</a> -</li> -<li>ucx_stream_ncopy -: <a class="el" href="utils_8h.html#add13f39a8af440b4f7e6f74339eaada2">utils.h</a> -</li> -<li>ucx_szmul -: <a class="el" href="ucx_8h.html#a0b5ed6c1a0b15356f4f948acfd32a4cc">ucx.h</a> -</li> -<li>ucx_szmul_impl() -: <a class="el" href="ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b">ucx.h</a> -</li> -<li>UCX_TEST -: <a class="el" href="test_8h.html#a66cfb29c329fc9eaef071f2449836659">test.h</a> -</li> -<li>UCX_TEST_ASSERT -: <a class="el" href="test_8h.html#a08f477cd12fc3fe741a92493e5df58a9">test.h</a> -</li> -<li>UCX_TEST_BEGIN -: <a class="el" href="test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4">test.h</a> -</li> -<li>UCX_TEST_CALL_SUBROUTINE -: <a class="el" href="test_8h.html#a0efbab91c54f5237a2ab207f48cf0e51">test.h</a> -</li> -<li>UCX_TEST_END -: <a class="el" href="test_8h.html#a86e64857c04f0447f8b16fb9c2b3b639">test.h</a> -</li> -<li>ucx_test_register() -: <a class="el" href="test_8h.html#a8dfabc42f183d3a4d79379a5d17bf67d">test.h</a> -</li> -<li>ucx_test_run() -: <a class="el" href="test_8h.html#a3721458deeecb43aa322428f007714c3">test.h</a> -</li> -<li>UCX_TEST_SUBROUTINE -: <a class="el" href="test_8h.html#ae073cf5ead22cb27d662da048e16f44a">test.h</a> -</li> -<li>ucx_test_suite_free() -: <a class="el" href="test_8h.html#a4a6ac61a6f72722273f8eaa7a343edde">test.h</a> -</li> -<li>ucx_test_suite_new() -: <a class="el" href="test_8h.html#a531f0df90363e0befbe900878f65f09e">test.h</a> -</li> -<li>ucx_vasprintf() -: <a class="el" href="utils_8h.html#a3ea1dfb856c741f3e8ec6bfdc9ad427e">utils.h</a> -</li> -<li>UCX_VERSION -: <a class="el" href="ucx_8h.html#af12001920ca2fc1405615684e4dea284">ucx.h</a> -</li> -<li>UCX_VERSION_MAJOR -: <a class="el" href="ucx_8h.html#aa57e5dd22d42387d748cc16777df1383">ucx.h</a> -</li> -<li>UCX_VERSION_MINOR -: <a class="el" href="ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0">ucx.h</a> -</li> -<li>ucx_vfprintf() -: <a class="el" href="utils_8h.html#a4907967beb92c3ae351dd239abbb6927">utils.h</a> -</li> -<li>UcxAVLNode -: <a class="el" href="avl_8h.html#a08ba2496c2316df58548c3cc29712add">avl.h</a> -</li> -<li>UcxKey -: <a class="el" href="map_8h.html#ad63828bb23123fc01a5315a2bac3b142">map.h</a> -</li> -<li>UcxList -: <a class="el" href="list_8h.html#aa6f89f91c1081c9a7c6866c298f497a2">list.h</a> -</li> -<li>UcxMap -: <a class="el" href="map_8h.html#a18e21948725b2da68c35da587a722033">map.h</a> -</li> -<li>UcxMapElement -: <a class="el" href="map_8h.html#ad7d7a910a32113eb93eae11c3dc97b4b">map.h</a> -</li> -<li>UcxMapIterator -: <a class="el" href="map_8h.html#ae36aff5f645948c54f51578b11fd87fb">map.h</a> -</li> -<li>UcxTest -: <a class="el" href="test_8h.html#ae906817354c010b83c2784260cce7a1c">test.h</a> -</li> -<li>UcxTestList -: <a class="el" href="test_8h.html#a8048c50ae73ea690b776edfd63bd6a5d">test.h</a> -</li> -<li>UcxTestSuite -: <a class="el" href="test_8h.html#a52115d1d0f1c4a565ed6ef7c1bfd0363">test.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/globals_w.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: Globals</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div> - -<h3><a id="index_w"></a>- w -</h3><ul> -<li>write_func -: <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">ucx.h</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/index.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UAP Common Extensions</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="header"> - <div class="headertitle"> -<div class="title">UAP Common Extensions </div> </div> -</div><!--header--> -<div class="contents"> -<div class="textblock"><p>Library with common and useful functions, macros and data structures.</p> -<p>Latest available source:<br /> - <a href="https://sourceforge.net/projects/ucx/files/">https://sourceforge.net/projects/ucx/files/</a> </p> -<p>Repositories:<br /> - <a href="https://sourceforge.net/p/ucx/code">https://sourceforge.net/p/ucx/code</a> - or - <a href="https://develop.uap-core.de/hg/ucx">https://develop.uap-core.de/hg/ucx</a> </p> -<h2>LICENCE</h2> -<p>Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</p> -<p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</p> -<ol type="1"> -<li>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</li> -<li>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.</li> -</ol> -<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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. </p> -</div></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/jquery.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/*! - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! - * jQuery UI 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css("overflow")==="hidden"){return false}var e=(f&&f==="left")?"scrollLeft":"scrollTop",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! - * jQuery UI Widget 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! - * jQuery UI Mouse 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! - * jQuery hashchange event - v1.3 - 7/21/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);/*! - PowerTip - v1.2.0 - 2013-04-03 - http://stevenbenner.github.com/jquery-powertip/ - Copyright (c) 2013 Steven Benner (http://stevenbenner.com/). - Released under MIT license. - https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt -*/ -(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)==="string"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr("title");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr("title")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({"mouseenter.powertip":function J(P){k.powerTip.show(this,P)},"mouseleave.powertip":function L(){k.powerTip.hide(this)},"focus.powertip":function K(){k.powerTip.show(this)},"blur.powertip":function H(){k.powerTip.hide(this,true)},"keydown.powertip":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(".powertip").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr("title",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bottom="auto";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case"n":N.set("left",I.left-(J/2));N.set("bottom",c.windowHeight-I.top+P);break;case"e":N.set("left",I.left+P);N.set("top",I.top-(O/2));break;case"s":N.set("left",I.left-(J/2));N.set("top",I.top+P);break;case"w":N.set("top",I.top-(O/2));N.set("right",c.windowWidth-I.left+P);break;case"nw":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"nw-alt":N.set("left",I.left);N.set("bottom",c.windowHeight-I.top+P);break;case"ne":N.set("left",I.left-20);N.set("bottom",c.windowHeight-I.top+P);break;case"ne-alt":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left);break;case"sw":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"sw-alt":N.set("left",I.left);N.set("top",I.top+P);break;case"se":N.set("left",I.left-20);N.set("top",I.top+P);break;case"se-alt":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case"n":M=O.left+N/2;L=O.top;break;case"e":M=O.left+N;L=O.top+I/2;break;case"s":M=O.left+N/2;L=O.top+I;break;case"w":M=O.left;L=O.top+I/2;break;case"nw":M=O.left;L=O.top;break;case"ne":M=O.left+N;L=O.top;break;case"sw":M=O.left;L=O.top+I;break;case"se":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest("svg")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=["nw","n","ne","e","se","s","sw","w"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<div/>",{id:Q.popupId});if(w.length===0){w=k("body")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on("mousemove",M);s.on("scroll",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger("powerTipPreRender");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger("powerTipRender");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger("powerTipOpen")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set("top",c.currentY+Q.offset);T.set("left",c.currentX+Q.offset);O.css(T);R.trigger("powerTipClose")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set("top",c.currentY+Q.offset);U.set("left",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set("left",c.windowWidth-R)}else{if(S===p.bottom){U.set("top",c.scrollTop+c.windowHeight-V)}}}else{U.set("left",c.currentX-R-Q.offset);U.set("top",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set("top",0);V.set("left",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(":disabled")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(":focus")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on("mousemove",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k("#"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}}));/*! - * jQuery UI Touch Punch 0.2.3 - * - * Copyright 2011–2014, Dave Furfero - * Dual licensed under the MIT or GPL Version 2 licenses. - * - * Depends: - * jquery.ui.widget.js - * jquery.ui.mouse.js - */ -(function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return}var d=b.ui.mouse.prototype,f=d._mouseInit,c=d._mouseDestroy,a;function e(h,i){if(h.originalEvent.touches.length>1){return}h.preventDefault();var j=h.originalEvent.changedTouches[0],g=document.createEvent("MouseEvents");g.initMouseEvent(i,true,true,window,1,j.screenX,j.screenY,j.clientX,j.clientY,false,false,false,false,0,null);h.target.dispatchEvent(g)}d._touchStart=function(h){var g=this;if(a||!g._mouseCapture(h.originalEvent.changedTouches[0])){return}a=true;g._touchMoved=false;e(h,"mouseover");e(h,"mousemove");e(h,"mousedown")};d._touchMove=function(g){if(!a){return}this._touchMoved=true;e(g,"mousemove")};d._touchEnd=function(g){if(!a){return}e(g,"mouseup");e(g,"mouseout");if(!this._touchMoved){e(g,"click")}a=false};d._mouseInit=function(){var g=this;g.element.bind({touchstart:b.proxy(g,"_touchStart"),touchmove:b.proxy(g,"_touchMove"),touchend:b.proxy(g,"_touchEnd")});f.call(g)};d._mouseDestroy=function(){var g=this;g.element.unbind({touchstart:b.proxy(g,"_touchStart"),touchmove:b.proxy(g,"_touchMove"),touchend:b.proxy(g,"_touchEnd")});c.call(g)}})(jQuery);/*! - * SmartMenus jQuery Plugin - v1.0.0 - January 27, 2016 - * http://www.smartmenus.org/ - * - * Copyright Vasil Dinkov, Vadikom Web Ltd. - * http://vadikom.com - * - * Licensed MIT - */ -(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{if(typeof module==="object"&&typeof module.exports==="object"){module.exports=a(require("jquery"))}else{a(jQuery)}}}(function(a){var b=[],e=!!window.createPopup,f=false,d="ontouchstart" in window,h=false,g=window.requestAnimationFrame||function(l){return setTimeout(l,1000/60)},c=window.cancelAnimationFrame||function(l){clearTimeout(l)};function k(m){var n=".smartmenus_mouse";if(!h&&!m){var o=true,l=null;a(document).bind(i([["mousemove",function(s){var t={x:s.pageX,y:s.pageY,timeStamp:new Date().getTime()};if(l){var q=Math.abs(l.x-t.x),p=Math.abs(l.y-t.y);if((q>0||p>0)&&q<=2&&p<=2&&t.timeStamp-l.timeStamp<=300){f=true;if(o){var r=a(s.target).closest("a");if(r.is("a")){a.each(b,function(){if(a.contains(this.$root[0],r[0])){this.itemEnter({currentTarget:r[0]});return false}})}o=false}}}l=t}],[d?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut",function(p){if(j(p.originalEvent)){f=false}}]],n));h=true}else{if(h&&m){a(document).unbind(n);h=false}}}function j(l){return !/^(4|mouse)$/.test(l.pointerType)}function i(l,n){if(!n){n=""}var m={};a.each(l,function(o,p){m[p[0].split(" ").join(n+" ")+n]=p[1]});return m}a.SmartMenus=function(m,l){this.$root=a(m);this.opts=l;this.rootId="";this.accessIdPrefix="";this.$subArrow=null;this.activatedItems=[];this.visibleSubMenus=[];this.showTimeout=0;this.hideTimeout=0;this.scrollTimeout=0;this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.idInc=0;this.$firstLink=null;this.$firstSub=null;this.disabled=false;this.$disableOverlay=null;this.$touchScrollingSub=null;this.cssTransforms3d="perspective" in m.style||"webkitPerspective" in m.style;this.wasCollapsible=false;this.init()};a.extend(a.SmartMenus,{hideAll:function(){a.each(b,function(){this.menuHideAll()})},destroy:function(){while(b.length){b[0].destroy()}k(true)},prototype:{init:function(n){var l=this;if(!n){b.push(this);this.rootId=(new Date().getTime()+Math.random()+"").replace(/\D/g,"");this.accessIdPrefix="sm-"+this.rootId+"-";if(this.$root.hasClass("sm-rtl")){this.opts.rightToLeftSubMenus=true}var r=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).bind(i([["mouseover focusin",a.proxy(this.rootOver,this)],["mouseout focusout",a.proxy(this.rootOut,this)],["keydown",a.proxy(this.rootKeyDown,this)]],r)).delegate("a",i([["mouseenter",a.proxy(this.itemEnter,this)],["mouseleave",a.proxy(this.itemLeave,this)],["mousedown",a.proxy(this.itemDown,this)],["focus",a.proxy(this.itemFocus,this)],["blur",a.proxy(this.itemBlur,this)],["click",a.proxy(this.itemClick,this)]],r));r+=this.rootId;if(this.opts.hideOnClick){a(document).bind(i([["touchstart",a.proxy(this.docTouchStart,this)],["touchmove",a.proxy(this.docTouchMove,this)],["touchend",a.proxy(this.docTouchEnd,this)],["click",a.proxy(this.docClick,this)]],r))}a(window).bind(i([["resize orientationchange",a.proxy(this.winResize,this)]],r));if(this.opts.subIndicators){this.$subArrow=a("<span/>").addClass("sub-arrow");if(this.opts.subIndicatorsText){this.$subArrow.html(this.opts.subIndicatorsText)}}k()}this.$firstSub=this.$root.find("ul").each(function(){l.menuInit(a(this))}).eq(0);this.$firstLink=this.$root.find("a").eq(0);if(this.opts.markCurrentItem){var p=/(index|default)\.[^#\?\/]*/i,m=/#.*/,q=window.location.href.replace(p,""),o=q.replace(m,"");this.$root.find("a").each(function(){var s=this.href.replace(p,""),t=a(this);if(s==q||s==o){t.addClass("current");if(l.opts.markCurrentTree){t.parentsUntil("[data-smartmenus-id]","ul").each(function(){a(this).dataSM("parent-a").addClass("current")})}}})}this.wasCollapsible=this.isCollapsible()},destroy:function(m){if(!m){var n=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").unbind(n).undelegate(n);n+=this.rootId;a(document).unbind(n);a(window).unbind(n);if(this.opts.subIndicators){this.$subArrow=null}}this.menuHideAll();var l=this;this.$root.find("ul").each(function(){var o=a(this);if(o.dataSM("scroll-arrows")){o.dataSM("scroll-arrows").remove()}if(o.dataSM("shown-before")){if(l.opts.subMenusMinWidth||l.opts.subMenusMaxWidth){o.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap")}if(o.dataSM("scroll-arrows")){o.dataSM("scroll-arrows").remove()}o.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})}if((o.attr("id")||"").indexOf(l.accessIdPrefix)==0){o.removeAttr("id")}}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("ie-shim").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded");this.$root.find("a.has-submenu").each(function(){var o=a(this);if(o.attr("id").indexOf(l.accessIdPrefix)==0){o.removeAttr("id")}}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub");if(this.opts.subIndicators){this.$root.find("span.sub-arrow").remove()}if(this.opts.markCurrentItem){this.$root.find("a.current").removeClass("current")}if(!m){this.$root=null;this.$firstLink=null;this.$firstSub=null;if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}b.splice(a.inArray(this,b),1)}},disable:function(l){if(!this.disabled){this.menuHideAll();if(!l&&!this.opts.isPopup&&this.$root.is(":visible")){var m=this.$root.offset();this.$disableOverlay=a('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:m.top,left:m.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(true),opacity:0}).appendTo(document.body)}this.disabled=true}},docClick:function(l){if(this.$touchScrollingSub){this.$touchScrollingSub=null;return}if(this.visibleSubMenus.length&&!a.contains(this.$root[0],l.target)||a(l.target).is("a")){this.menuHideAll()}},docTouchEnd:function(m){if(!this.lastTouch){return}if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!a.contains(this.$root[0],this.lastTouch.target))){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},350)}this.lastTouch=null},docTouchMove:function(m){if(!this.lastTouch){return}var l=m.originalEvent.touches[0];this.lastTouch.x2=l.pageX;this.lastTouch.y2=l.pageY},docTouchStart:function(m){var l=m.originalEvent.touches[0];this.lastTouch={x1:l.pageX,y1:l.pageY,target:l.target}},enable:function(){if(this.disabled){if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}this.disabled=false}},getClosestMenu:function(m){var l=a(m).closest("ul");while(l.dataSM("in-mega")){l=l.parent().closest("ul")}return l[0]||null},getHeight:function(l){return this.getOffset(l,true)},getOffset:function(n,l){var m;if(n.css("display")=="none"){m={position:n[0].style.position,visibility:n[0].style.visibility};n.css({position:"absolute",visibility:"hidden"}).show()}var o=n[0].getBoundingClientRect&&n[0].getBoundingClientRect(),p=o&&(l?o.height||o.bottom-o.top:o.width||o.right-o.left);if(!p&&p!==0){p=l?n[0].offsetHeight:n[0].offsetWidth}if(m){n.hide().css(m)}return p},getStartZIndex:function(l){var m=parseInt(this[l?"$root":"$firstSub"].css("z-index"));if(!l&&isNaN(m)){m=parseInt(this.$root.css("z-index"))}return !isNaN(m)?m:1},getTouchPoint:function(l){return l.touches&&l.touches[0]||l.changedTouches&&l.changedTouches[0]||l},getViewport:function(l){var m=l?"Height":"Width",o=document.documentElement["client"+m],n=window["inner"+m];if(n){o=Math.min(o,n)}return o},getViewportHeight:function(){return this.getViewport(true)},getViewportWidth:function(){return this.getViewport()},getWidth:function(l){return this.getOffset(l)},handleEvents:function(){return !this.disabled&&this.isCSSOn()},handleItemEvents:function(l){return this.handleEvents()&&!this.isLinkInMegaMenu(l)},isCollapsible:function(){return this.$firstSub.css("position")=="static"},isCSSOn:function(){return this.$firstLink.css("display")=="block"},isFixed:function(){var l=this.$root.css("position")=="fixed";if(!l){this.$root.parentsUntil("body").each(function(){if(a(this).css("position")=="fixed"){l=true;return false}})}return l},isLinkInMegaMenu:function(l){return a(this.getClosestMenu(l[0])).hasClass("mega-menu")},isTouchMode:function(){return !f||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(p,l){var n=p.closest("ul"),q=n.dataSM("level");if(q>1&&(!this.activatedItems[q-2]||this.activatedItems[q-2][0]!=n.dataSM("parent-a")[0])){var m=this;a(n.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(n).each(function(){m.itemActivate(a(this).dataSM("parent-a"))})}if(!this.isCollapsible()||l){this.menuHideSubMenus(!this.activatedItems[q-1]||this.activatedItems[q-1][0]!=p[0]?q-1:q)}this.activatedItems[q-1]=p;if(this.$root.triggerHandler("activate.smapi",p[0])===false){return}var o=p.dataSM("sub");if(o&&(this.isTouchMode()||(!this.opts.showOnClick||this.clickActivated))){this.menuShow(o)}},itemBlur:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}this.$root.triggerHandler("blur.smapi",l[0])},itemClick:function(o){var n=a(o.currentTarget);if(!this.handleItemEvents(n)){return}if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==n.closest("ul")[0]){this.$touchScrollingSub=null;o.stopPropagation();return false}if(this.$root.triggerHandler("click.smapi",n[0])===false){return false}var p=a(o.target).is("span.sub-arrow"),m=n.dataSM("sub"),l=m?m.dataSM("level")==2:false;if(m&&!m.is(":visible")){if(this.opts.showOnClick&&l){this.clickActivated=true}this.itemActivate(n);if(m.is(":visible")){this.focusActivated=true;return false}}else{if(this.isCollapsible()&&p){this.itemActivate(n);this.menuHide(m);return false}}if(this.opts.showOnClick&&l||n.hasClass("disabled")||this.$root.triggerHandler("select.smapi",n[0])===false){return false}},itemDown:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}l.dataSM("mousedown",true)},itemEnter:function(n){var m=a(n.currentTarget);if(!this.handleItemEvents(m)){return}if(!this.isTouchMode()){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var l=this;this.showTimeout=setTimeout(function(){l.itemActivate(m)},this.opts.showOnClick&&m.closest("ul").dataSM("level")==1?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",m[0])},itemFocus:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(this.focusActivated&&(!this.isTouchMode()||!l.dataSM("mousedown"))&&(!this.activatedItems.length||this.activatedItems[this.activatedItems.length-1][0]!=l[0])){this.itemActivate(l,true)}this.$root.triggerHandler("focus.smapi",l[0])},itemLeave:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(!this.isTouchMode()){l[0].blur();if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}}l.removeDataSM("mousedown");this.$root.triggerHandler("mouseleave.smapi",l[0])},menuHide:function(m){if(this.$root.triggerHandler("beforehide.smapi",m[0])===false){return}m.stop(true,true);if(m.css("display")!="none"){var l=function(){m.css("z-index","")};if(this.isCollapsible()){if(this.opts.collapsibleHideFunction){this.opts.collapsibleHideFunction.call(this,m,l)}else{m.hide(this.opts.collapsibleHideDuration,l)}}else{if(this.opts.hideFunction){this.opts.hideFunction.call(this,m,l)}else{m.hide(this.opts.hideDuration,l)}}if(m.dataSM("ie-shim")){m.dataSM("ie-shim").remove().css({"-webkit-transform":"",transform:""})}if(m.dataSM("scroll")){this.menuScrollStop(m);m.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).unbind(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()}m.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false");m.attr({"aria-expanded":"false","aria-hidden":"true"});var n=m.dataSM("level");this.activatedItems.splice(n-1,1);this.visibleSubMenus.splice(a.inArray(m,this.visibleSubMenus),1);this.$root.triggerHandler("hide.smapi",m[0])}},menuHideAll:function(){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var m=this.opts.isPopup?1:0;for(var l=this.visibleSubMenus.length-1;l>=m;l--){this.menuHide(this.visibleSubMenus[l])}if(this.opts.isPopup){this.$root.stop(true,true);if(this.$root.is(":visible")){if(this.opts.hideFunction){this.opts.hideFunction.call(this,this.$root)}else{this.$root.hide(this.opts.hideDuration)}if(this.$root.dataSM("ie-shim")){this.$root.dataSM("ie-shim").remove()}}}this.activatedItems=[];this.visibleSubMenus=[];this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(n){for(var l=this.activatedItems.length-1;l>=n;l--){var m=this.activatedItems[l].dataSM("sub");if(m){this.menuHide(m)}}},menuIframeShim:function(l){if(e&&this.opts.overlapControlsInIE&&!l.dataSM("ie-shim")){l.dataSM("ie-shim",a("<iframe/>").attr({src:"javascript:0",tabindex:-9}).css({position:"absolute",top:"auto",left:"0",opacity:0,border:"0"}))}},menuInit:function(l){if(!l.dataSM("in-mega")){if(l.hasClass("mega-menu")){l.find("ul").dataSM("in-mega",true)}var q=2,m=l[0];while((m=m.parentNode.parentNode)!=this.$root[0]){q++}var n=l.prevAll("a").eq(-1);if(!n.length){n=l.prevAll().find("a").eq(-1)}n.addClass("has-submenu").dataSM("sub",l);l.dataSM("parent-a",n).dataSM("level",q).parent().dataSM("sub",l);var o=n.attr("id")||this.accessIdPrefix+(++this.idInc),p=l.attr("id")||this.accessIdPrefix+(++this.idInc);n.attr({id:o,"aria-haspopup":"true","aria-controls":p,"aria-expanded":"false"});l.attr({id:p,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"});if(this.opts.subIndicators){n[this.opts.subIndicatorsPos](this.$subArrow.clone())}}},menuPosition:function(K){var r=K.dataSM("parent-a"),D=r.closest("li"),E=D.parent(),l=K.dataSM("level"),t=this.getWidth(K),J=this.getHeight(K),u=r.offset(),o=u.left,m=u.top,q=this.getWidth(r),F=this.getHeight(r),H=a(window),v=H.scrollLeft(),s=H.scrollTop(),z=this.getViewportWidth(),L=this.getViewportHeight(),w=E.parent().is("[data-sm-horizontal-sub]")||l==2&&!E.hasClass("sm-vertical"),B=this.opts.rightToLeftSubMenus&&!D.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&D.is("[data-sm-reverse]"),p=l==2?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,n=l==2?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY,C,A;if(w){C=B?q-t-p:p;A=this.opts.bottomToTopSubMenus?-J-n:F+n}else{C=B?p-t:q-p;A=this.opts.bottomToTopSubMenus?F-n-J:n}if(this.opts.keepInViewport){var N=o+C,M=m+A;if(B&&N<v){C=w?v-N+C:q-p}else{if(!B&&N+t>v+z){C=w?v+z-t-N+C:p-t}}if(!w){if(J<L&&M+J>s+L){A+=s+L-J-M}else{if(J>=L||M<s){A+=s-M}}}if(w&&(M+J>s+L+0.49||M<s)||!w&&J>L+0.49){var G=this;if(!K.dataSM("scroll-arrows")){K.dataSM("scroll-arrows",a([a('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],a('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).bind({mouseenter:function(){K.dataSM("scroll").up=a(this).hasClass("scroll-up");G.menuScroll(K)},mouseleave:function(x){G.menuScrollStop(K);G.menuScrollOut(K,x)},"mousewheel DOMMouseScroll":function(x){x.preventDefault()}}).insertAfter(K))}var I=".smartmenus_scroll";K.dataSM("scroll",{y:this.cssTransforms3d?0:A-F,step:1,itemH:F,subH:J,arrowDownH:this.getHeight(K.dataSM("scroll-arrows").eq(1))}).bind(i([["mouseover",function(x){G.menuScrollOver(K,x)}],["mouseout",function(x){G.menuScrollOut(K,x)}],["mousewheel DOMMouseScroll",function(x){G.menuScrollMousewheel(K,x)}]],I)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:C+(parseInt(K.css("border-left-width"))||0),width:t-(parseInt(K.css("border-left-width"))||0)-(parseInt(K.css("border-right-width"))||0),zIndex:K.css("z-index")}).eq(w&&this.opts.bottomToTopSubMenus?0:1).show();if(this.isFixed()){K.css({"touch-action":"none","-ms-touch-action":"none"}).bind(i([[d?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp",function(x){G.menuScrollTouch(K,x)}]],I))}}}K.css({top:"auto",left:"0",marginLeft:C,marginTop:A-F});this.menuIframeShim(K);if(K.dataSM("ie-shim")){K.dataSM("ie-shim").css({zIndex:K.css("z-index"),width:t,height:J,marginLeft:C,marginTop:A-F})}},menuScroll:function(r,m,n){var p=r.dataSM("scroll"),q=r.dataSM("scroll-arrows"),o=p.up?p.upEnd:p.downEnd,s;if(!m&&p.momentum){p.momentum*=0.92;s=p.momentum;if(s<0.5){this.menuScrollStop(r);return}}else{s=n||(m||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(p.step))}var l=r.dataSM("level");if(this.activatedItems[l-1]&&this.activatedItems[l-1].dataSM("sub")&&this.activatedItems[l-1].dataSM("sub").is(":visible")){this.menuHideSubMenus(l-1)}p.y=p.up&&o<=p.y||!p.up&&o>=p.y?p.y:(Math.abs(o-p.y)>s?p.y+(p.up?s:-s):o);r.add(r.dataSM("ie-shim")).css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+p.y+"px, 0)",transform:"translate3d(0, "+p.y+"px, 0)"}:{marginTop:p.y});if(f&&(p.up&&p.y>p.downEnd||!p.up&&p.y<p.upEnd)){q.eq(p.up?1:0).show()}if(p.y==o){if(f){q.eq(p.up?0:1).hide()}this.menuScrollStop(r)}else{if(!m){if(this.opts.scrollAccelerate&&p.step<this.opts.scrollStep){p.step+=0.2}var t=this;this.scrollTimeout=g(function(){t.menuScroll(r)})}}},menuScrollMousewheel:function(m,n){if(this.getClosestMenu(n.target)==m[0]){n=n.originalEvent;var l=(n.wheelDelta||-n.detail)>0;if(m.dataSM("scroll-arrows").eq(l?0:1).is(":visible")){m.dataSM("scroll").up=l;this.menuScroll(m,true)}}n.preventDefault()},menuScrollOut:function(l,m){if(f){if(!/^scroll-(up|down)/.test((m.relatedTarget||"").className)&&(l[0]!=m.relatedTarget&&!a.contains(l[0],m.relatedTarget)||this.getClosestMenu(m.relatedTarget)!=l[0])){l.dataSM("scroll-arrows").css("visibility","hidden")}}},menuScrollOver:function(n,o){if(f){if(!/^scroll-(up|down)/.test(o.target.className)&&this.getClosestMenu(o.target)==n[0]){this.menuScrollRefreshData(n);var m=n.dataSM("scroll"),l=a(window).scrollTop()-n.dataSM("parent-a").offset().top-m.itemH;n.dataSM("scroll-arrows").eq(0).css("margin-top",l).end().eq(1).css("margin-top",l+this.getViewportHeight()-m.arrowDownH).end().css("visibility","visible")}}},menuScrollRefreshData:function(n){var m=n.dataSM("scroll"),l=a(window).scrollTop()-n.dataSM("parent-a").offset().top-m.itemH;if(this.cssTransforms3d){l=-(parseFloat(n.css("margin-top"))-l)}a.extend(m,{upEnd:l,downEnd:l+this.getViewportHeight()-m.subH})},menuScrollStop:function(l){if(this.scrollTimeout){c(this.scrollTimeout);this.scrollTimeout=0;l.dataSM("scroll").step=1;return true}},menuScrollTouch:function(p,q){q=q.originalEvent;if(j(q)){var m=this.getTouchPoint(q);if(this.getClosestMenu(m.target)==p[0]){var o=p.dataSM("scroll");if(/(start|down)$/i.test(q.type)){if(this.menuScrollStop(p)){q.preventDefault();this.$touchScrollingSub=p}else{this.$touchScrollingSub=null}this.menuScrollRefreshData(p);a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}else{if(/move$/i.test(q.type)){var n=o.touchY!==undefined?o.touchY:o.touchStartY;if(n!==undefined&&n!=m.pageY){this.$touchScrollingSub=p;var l=n<m.pageY;if(o.up!==undefined&&o.up!=l){a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}a.extend(o,{up:l,touchY:m.pageY});this.menuScroll(p,true,Math.abs(m.pageY-n))}q.preventDefault()}else{if(o.touchY!==undefined){if(o.momentum=Math.pow(Math.abs(m.pageY-o.touchStartY)/(q.timeStamp-o.touchStartTime),2)*15){this.menuScrollStop(p);this.menuScroll(p);q.preventDefault()}delete o.touchY}}}}}},menuShow:function(n){if(!n.dataSM("beforefirstshowfired")){n.dataSM("beforefirstshowfired",true);if(this.$root.triggerHandler("beforefirstshow.smapi",n[0])===false){return}}if(this.$root.triggerHandler("beforeshow.smapi",n[0])===false){return}n.dataSM("shown-before",true).stop(true,true);if(!n.is(":visible")){var m=n.dataSM("parent-a");if(this.opts.keepHighlighted||this.isCollapsible()){m.addClass("highlighted")}if(this.isCollapsible()){n.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""})}else{n.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1);if(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth){n.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap");if(this.opts.subMenusMinWidth){n.css("min-width",this.opts.subMenusMinWidth)}if(this.opts.subMenusMaxWidth){var o=this.getWidth(n);n.css("max-width",this.opts.subMenusMaxWidth);if(o>this.getWidth(n)){n.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}}}this.menuPosition(n);if(n.dataSM("ie-shim")){n.dataSM("ie-shim").insertBefore(n)}}var l=function(){n.css("overflow","")};if(this.isCollapsible()){if(this.opts.collapsibleShowFunction){this.opts.collapsibleShowFunction.call(this,n,l)}else{n.show(this.opts.collapsibleShowDuration,l)}}else{if(this.opts.showFunction){this.opts.showFunction.call(this,n,l)}else{n.show(this.opts.showDuration,l)}}m.attr("aria-expanded","true");n.attr({"aria-expanded":"true","aria-hidden":"false"});this.visibleSubMenus.push(n);this.$root.triggerHandler("show.smapi",n[0])}},popupHide:function(l){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var m=this;this.hideTimeout=setTimeout(function(){m.menuHideAll()},l?1:this.opts.hideTimeout)},popupShow:function(o,n){if(!this.opts.isPopup){alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}this.$root.dataSM("shown-before",true).stop(true,true);if(!this.$root.is(":visible")){this.$root.css({left:o,top:n});this.menuIframeShim(this.$root);if(this.$root.dataSM("ie-shim")){this.$root.dataSM("ie-shim").css({zIndex:this.$root.css("z-index"),width:this.getWidth(this.$root),height:this.getHeight(this.$root),left:o,top:n}).insertBefore(this.$root)}var m=this,l=function(){m.$root.css("overflow","")};if(this.opts.showFunction){this.opts.showFunction.call(this,this.$root,l)}else{this.$root.show(this.opts.showDuration,l)}this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(true);this.init(true)},rootKeyDown:function(o){if(!this.handleEvents()){return}switch(o.keyCode){case 27:var m=this.activatedItems[0];if(m){this.menuHideAll();m[0].focus();var n=m.dataSM("sub");if(n){this.menuHide(n)}}break;case 32:var l=a(o.target);if(l.is("a")&&this.handleItemEvents(l)){var n=l.dataSM("sub");if(n&&!n.is(":visible")){this.itemClick({currentTarget:o.target});o.preventDefault()}}break}},rootOut:function(m){if(!this.handleEvents()||this.isTouchMode()||m.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}if(!this.opts.showOnClick||!this.opts.hideOnClick){var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(l){if(!this.handleEvents()||this.isTouchMode()||l.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}},winResize:function(m){if(!this.handleEvents()){if(this.$disableOverlay){var n=this.$root.offset();this.$disableOverlay.css({top:n.top,left:n.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}return}if(!("onorientationchange" in window)||m.type=="orientationchange"){var l=this.isCollapsible();if(!(this.wasCollapsible&&l)){if(this.activatedItems.length){this.activatedItems[this.activatedItems.length-1][0].blur()}this.menuHideAll()}this.wasCollapsible=l}}}});a.fn.dataSM=function(l,m){if(m){return this.data(l+"_smartmenus",m)}return this.data(l+"_smartmenus")};a.fn.removeDataSM=function(l){return this.removeData(l+"_smartmenus")};a.fn.smartmenus=function(m){if(typeof m=="string"){var l=arguments,o=m;Array.prototype.shift.call(l);return this.each(function(){var p=a(this).data("smartmenus");if(p&&p[o]){p[o].apply(p,l)}})}var n=a.extend({},a.fn.smartmenus.defaults,m);return this.each(function(){new a.SmartMenus(this,n)})};a.fn.smartmenus.defaults={isPopup:false,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:true,subIndicatorsPos:"prepend",subIndicatorsText:"+",scrollStep:30,scrollAccelerate:true,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(m,l){m.fadeOut(200,l)},collapsibleShowDuration:0,collapsibleShowFunction:function(m,l){m.slideDown(200,l)},collapsibleHideDuration:0,collapsibleHideFunction:function(m,l){m.slideUp(200,l)},showOnClick:false,hideOnClick:true,noMouseOver:false,keepInViewport:true,keepHighlighted:true,markCurrentItem:false,markCurrentTree:true,rightToLeftSubMenus:false,bottomToTopSubMenus:false,overlapControlsInIE:true};return a})); \ No newline at end of file
--- a/docs/api-2.1/list_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1556 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/list.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#typedef-members">Typedefs</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">list.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Doubly linked list implementation. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> -</div> -<p><a href="list_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxList.html">UcxList</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">UCX list structure. <a href="structUcxList.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:a4b143b6526a410aa4d22cb3bb9365d70"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a4b143b6526a410aa4d22cb3bb9365d70">UCX_FOREACH</a>(elem, list)   for (<a class="el" href="structUcxList.html">UcxList</a>* elem = (<a class="el" href="structUcxList.html">UcxList</a>*) list ; elem != NULL ; elem = elem->next)</td></tr> -<tr class="memdesc:a4b143b6526a410aa4d22cb3bb9365d70"><td class="mdescLeft"> </td><td class="mdescRight">Loop statement for UCX lists. <a href="#a4b143b6526a410aa4d22cb3bb9365d70">More...</a><br /></td></tr> -<tr class="separator:a4b143b6526a410aa4d22cb3bb9365d70"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> -Typedefs</h2></td></tr> -<tr class="memitem:aa6f89f91c1081c9a7c6866c298f497a2"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxList.html">UcxList</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#aa6f89f91c1081c9a7c6866c298f497a2">UcxList</a></td></tr> -<tr class="memdesc:aa6f89f91c1081c9a7c6866c298f497a2"><td class="mdescLeft"> </td><td class="mdescRight">UCX list type. <a href="#aa6f89f91c1081c9a7c6866c298f497a2">More...</a><br /></td></tr> -<tr class="separator:aa6f89f91c1081c9a7c6866c298f497a2"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:ae7054a41c289b24e6caf5cb07ac850ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed">ucx_list_clone</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpyfnc, void *data)</td></tr> -<tr class="memdesc:ae7054a41c289b24e6caf5cb07ac850ed"><td class="mdescLeft"> </td><td class="mdescRight">Creates an element-wise copy of a list. <a href="#ae7054a41c289b24e6caf5cb07ac850ed">More...</a><br /></td></tr> -<tr class="separator:ae7054a41c289b24e6caf5cb07ac850ed"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a08ca1ba0d2e82258b0408714c1f4c425"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a08ca1ba0d2e82258b0408714c1f4c425">ucx_list_clone_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpyfnc, void *data)</td></tr> -<tr class="memdesc:a08ca1ba0d2e82258b0408714c1f4c425"><td class="mdescLeft"> </td><td class="mdescRight">Creates an element-wise copy of a list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a08ca1ba0d2e82258b0408714c1f4c425">More...</a><br /></td></tr> -<tr class="separator:a08ca1ba0d2e82258b0408714c1f4c425"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:adc435447cecf885bc63d232191085bbe"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#adc435447cecf885bc63d232191085bbe">ucx_list_equals</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list1, const <a class="el" href="structUcxList.html">UcxList</a> *list2, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr> -<tr class="memdesc:adc435447cecf885bc63d232191085bbe"><td class="mdescLeft"> </td><td class="mdescRight">Compares two UCX lists element-wise by using a compare function. <a href="#adc435447cecf885bc63d232191085bbe">More...</a><br /></td></tr> -<tr class="separator:adc435447cecf885bc63d232191085bbe"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a1a0fa2c5b1e478a96da19b0c3f013668"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668">ucx_list_free</a> (<a class="el" href="structUcxList.html">UcxList</a> *list)</td></tr> -<tr class="memdesc:a1a0fa2c5b1e478a96da19b0c3f013668"><td class="mdescLeft"> </td><td class="mdescRight">Destroys the entire list. <a href="#a1a0fa2c5b1e478a96da19b0c3f013668">More...</a><br /></td></tr> -<tr class="separator:a1a0fa2c5b1e478a96da19b0c3f013668"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a944e11f76c38767cd1100d72a4e3b25b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a944e11f76c38767cd1100d72a4e3b25b">ucx_list_free_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structUcxList.html">UcxList</a> *list)</td></tr> -<tr class="memdesc:a944e11f76c38767cd1100d72a4e3b25b"><td class="mdescLeft"> </td><td class="mdescRight">Destroys the entire list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a944e11f76c38767cd1100d72a4e3b25b">More...</a><br /></td></tr> -<tr class="separator:a944e11f76c38767cd1100d72a4e3b25b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4ba6c96642f72ea046cc22627c72979c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a4ba6c96642f72ea046cc22627c72979c">ucx_list_free_content</a> (<a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr)</td></tr> -<tr class="memdesc:a4ba6c96642f72ea046cc22627c72979c"><td class="mdescLeft"> </td><td class="mdescRight">Destroys the contents of the specified list by calling the specified destructor on each of them. <a href="#a4ba6c96642f72ea046cc22627c72979c">More...</a><br /></td></tr> -<tr class="separator:a4ba6c96642f72ea046cc22627c72979c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a00c122c8a26d35b60676939df4161621"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a00c122c8a26d35b60676939df4161621">ucx_list_append</a> (<a class="el" href="structUcxList.html">UcxList</a> *list, void *data)</td></tr> -<tr class="memdesc:a00c122c8a26d35b60676939df4161621"><td class="mdescLeft"> </td><td class="mdescRight">Inserts an element at the end of the list. <a href="#a00c122c8a26d35b60676939df4161621">More...</a><br /></td></tr> -<tr class="separator:a00c122c8a26d35b60676939df4161621"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:adf3b3e2e0ff977d8928671d6bd82fc60"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#adf3b3e2e0ff977d8928671d6bd82fc60">ucx_list_append_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structUcxList.html">UcxList</a> *list, void *data)</td></tr> -<tr class="memdesc:adf3b3e2e0ff977d8928671d6bd82fc60"><td class="mdescLeft"> </td><td class="mdescRight">Inserts an element at the end of the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#adf3b3e2e0ff977d8928671d6bd82fc60">More...</a><br /></td></tr> -<tr class="separator:adf3b3e2e0ff977d8928671d6bd82fc60"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8fcb68e4556395b15180eec2d0b77aa4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4">ucx_list_prepend</a> (<a class="el" href="structUcxList.html">UcxList</a> *list, void *data)</td></tr> -<tr class="memdesc:a8fcb68e4556395b15180eec2d0b77aa4"><td class="mdescLeft"> </td><td class="mdescRight">Inserts an element at the beginning of the list. <a href="#a8fcb68e4556395b15180eec2d0b77aa4">More...</a><br /></td></tr> -<tr class="separator:a8fcb68e4556395b15180eec2d0b77aa4"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a54654e6dc60e1c3de9e886c150e404ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a54654e6dc60e1c3de9e886c150e404ec">ucx_list_prepend_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structUcxList.html">UcxList</a> *list, void *data)</td></tr> -<tr class="memdesc:a54654e6dc60e1c3de9e886c150e404ec"><td class="mdescLeft"> </td><td class="mdescRight">Inserts an element at the beginning of the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a54654e6dc60e1c3de9e886c150e404ec">More...</a><br /></td></tr> -<tr class="separator:a54654e6dc60e1c3de9e886c150e404ec"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a77163a0cc82fae52bec26c8c0c3674d9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a77163a0cc82fae52bec26c8c0c3674d9">ucx_list_concat</a> (<a class="el" href="structUcxList.html">UcxList</a> *list1, <a class="el" href="structUcxList.html">UcxList</a> *list2)</td></tr> -<tr class="memdesc:a77163a0cc82fae52bec26c8c0c3674d9"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates two lists. <a href="#a77163a0cc82fae52bec26c8c0c3674d9">More...</a><br /></td></tr> -<tr class="separator:a77163a0cc82fae52bec26c8c0c3674d9"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a6aa0e34ebc5f0dca6f52d0f7626b4bd5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5">ucx_list_first</a> (const <a class="el" href="structUcxList.html">UcxList</a> *elem)</td></tr> -<tr class="memdesc:a6aa0e34ebc5f0dca6f52d0f7626b4bd5"><td class="mdescLeft"> </td><td class="mdescRight">Returns the first element of a list. <a href="#a6aa0e34ebc5f0dca6f52d0f7626b4bd5">More...</a><br /></td></tr> -<tr class="separator:a6aa0e34ebc5f0dca6f52d0f7626b4bd5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:add5ec40c5006e29c629d23c2eb5a6553"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#add5ec40c5006e29c629d23c2eb5a6553">ucx_list_last</a> (const <a class="el" href="structUcxList.html">UcxList</a> *elem)</td></tr> -<tr class="memdesc:add5ec40c5006e29c629d23c2eb5a6553"><td class="mdescLeft"> </td><td class="mdescRight">Returns the last element of a list. <a href="#add5ec40c5006e29c629d23c2eb5a6553">More...</a><br /></td></tr> -<tr class="separator:add5ec40c5006e29c629d23c2eb5a6553"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2509ffe19bce6a8708c77f89480c75fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a2509ffe19bce6a8708c77f89480c75fb">ucx_list_get</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list, size_t index)</td></tr> -<tr class="memdesc:a2509ffe19bce6a8708c77f89480c75fb"><td class="mdescLeft"> </td><td class="mdescRight">Returns the list element at the specified index. <a href="#a2509ffe19bce6a8708c77f89480c75fb">More...</a><br /></td></tr> -<tr class="separator:a2509ffe19bce6a8708c77f89480c75fb"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae2ff2974812ca185870f80bc4ed9337e"><td class="memItemLeft" align="right" valign="top">ssize_t </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#ae2ff2974812ca185870f80bc4ed9337e">ucx_list_indexof</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list, const <a class="el" href="structUcxList.html">UcxList</a> *elem)</td></tr> -<tr class="memdesc:ae2ff2974812ca185870f80bc4ed9337e"><td class="mdescLeft"> </td><td class="mdescRight">Returns the index of an element. <a href="#ae2ff2974812ca185870f80bc4ed9337e">More...</a><br /></td></tr> -<tr class="separator:ae2ff2974812ca185870f80bc4ed9337e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae88001cc8ae40b946560f31434abed8f"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#ae88001cc8ae40b946560f31434abed8f">ucx_list_size</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list)</td></tr> -<tr class="memdesc:ae88001cc8ae40b946560f31434abed8f"><td class="mdescLeft"> </td><td class="mdescRight">Returns the element count of the list. <a href="#ae88001cc8ae40b946560f31434abed8f">More...</a><br /></td></tr> -<tr class="separator:ae88001cc8ae40b946560f31434abed8f"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9b3b6842d3be572e06a7f519e198cb83"><td class="memItemLeft" align="right" valign="top">ssize_t </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a9b3b6842d3be572e06a7f519e198cb83">ucx_list_find</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list, void *elem, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr> -<tr class="memdesc:a9b3b6842d3be572e06a7f519e198cb83"><td class="mdescLeft"> </td><td class="mdescRight">Returns the index of an element containing the specified data. <a href="#a9b3b6842d3be572e06a7f519e198cb83">More...</a><br /></td></tr> -<tr class="separator:a9b3b6842d3be572e06a7f519e198cb83"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8b0fa051fcfe12e1a82cca1087973852"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a8b0fa051fcfe12e1a82cca1087973852">ucx_list_contains</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list, void *elem, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr> -<tr class="memdesc:a8b0fa051fcfe12e1a82cca1087973852"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a list contains a specific element. <a href="#a8b0fa051fcfe12e1a82cca1087973852">More...</a><br /></td></tr> -<tr class="separator:a8b0fa051fcfe12e1a82cca1087973852"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac74962d9bd7cfc9d3e2e09651469377b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#ac74962d9bd7cfc9d3e2e09651469377b">ucx_list_sort</a> (<a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr> -<tr class="memdesc:ac74962d9bd7cfc9d3e2e09651469377b"><td class="mdescLeft"> </td><td class="mdescRight">Sorts a <a class="el" href="structUcxList.html" title="UCX list structure. ">UcxList</a> with natural merge sort. <a href="#ac74962d9bd7cfc9d3e2e09651469377b">More...</a><br /></td></tr> -<tr class="separator:ac74962d9bd7cfc9d3e2e09651469377b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a410cb3e8260037ba56c72d14b899b468"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a410cb3e8260037ba56c72d14b899b468">ucx_list_remove</a> (<a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="structUcxList.html">UcxList</a> *element)</td></tr> -<tr class="memdesc:a410cb3e8260037ba56c72d14b899b468"><td class="mdescLeft"> </td><td class="mdescRight">Removes an element from the list. <a href="#a410cb3e8260037ba56c72d14b899b468">More...</a><br /></td></tr> -<tr class="separator:a410cb3e8260037ba56c72d14b899b468"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aca687b7c4e7170175f447e549125aa52"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#aca687b7c4e7170175f447e549125aa52">ucx_list_remove_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="structUcxList.html">UcxList</a> *element)</td></tr> -<tr class="memdesc:aca687b7c4e7170175f447e549125aa52"><td class="mdescLeft"> </td><td class="mdescRight">Removes an element from the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#aca687b7c4e7170175f447e549125aa52">More...</a><br /></td></tr> -<tr class="separator:aca687b7c4e7170175f447e549125aa52"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a94ecdb0cea1633ad7074f027fa8485fa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a94ecdb0cea1633ad7074f027fa8485fa">ucx_list_union</a> (const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:a94ecdb0cea1633ad7074f027fa8485fa"><td class="mdescLeft"> </td><td class="mdescRight">Returns the union of two lists. <a href="#a94ecdb0cea1633ad7074f027fa8485fa">More...</a><br /></td></tr> -<tr class="separator:a94ecdb0cea1633ad7074f027fa8485fa"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a65b4355536f4ebc4130211b46469f4c1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a65b4355536f4ebc4130211b46469f4c1">ucx_list_union_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:a65b4355536f4ebc4130211b46469f4c1"><td class="mdescLeft"> </td><td class="mdescRight">Returns the union of two lists. <a href="#a65b4355536f4ebc4130211b46469f4c1">More...</a><br /></td></tr> -<tr class="separator:a65b4355536f4ebc4130211b46469f4c1"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a259f9b754978aeca23dfabba16e20f39"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a259f9b754978aeca23dfabba16e20f39">ucx_list_intersection</a> (const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:a259f9b754978aeca23dfabba16e20f39"><td class="mdescLeft"> </td><td class="mdescRight">Returns the intersection of two lists. <a href="#a259f9b754978aeca23dfabba16e20f39">More...</a><br /></td></tr> -<tr class="separator:a259f9b754978aeca23dfabba16e20f39"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a1d0b00514dbb81ba6270b58da0c5b9a8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a1d0b00514dbb81ba6270b58da0c5b9a8">ucx_list_intersection_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:a1d0b00514dbb81ba6270b58da0c5b9a8"><td class="mdescLeft"> </td><td class="mdescRight">Returns the intersection of two lists. <a href="#a1d0b00514dbb81ba6270b58da0c5b9a8">More...</a><br /></td></tr> -<tr class="separator:a1d0b00514dbb81ba6270b58da0c5b9a8"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a6c5db5d1d11ad28b6fe1a80ee1c1e449"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a6c5db5d1d11ad28b6fe1a80ee1c1e449">ucx_list_difference</a> (const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:a6c5db5d1d11ad28b6fe1a80ee1c1e449"><td class="mdescLeft"> </td><td class="mdescRight">Returns the difference of two lists. <a href="#a6c5db5d1d11ad28b6fe1a80ee1c1e449">More...</a><br /></td></tr> -<tr class="separator:a6c5db5d1d11ad28b6fe1a80ee1c1e449"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4a2a2fc5cc41073c516db6235bbc51d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a4a2a2fc5cc41073c516db6235bbc51d5">ucx_list_difference_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:a4a2a2fc5cc41073c516db6235bbc51d5"><td class="mdescLeft"> </td><td class="mdescRight">Returns the difference of two lists. <a href="#a4a2a2fc5cc41073c516db6235bbc51d5">More...</a><br /></td></tr> -<tr class="separator:a4a2a2fc5cc41073c516db6235bbc51d5"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Doubly linked list implementation. </p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a4b143b6526a410aa4d22cb3bb9365d70"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4b143b6526a410aa4d22cb3bb9365d70">◆ </a></span>UCX_FOREACH</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_FOREACH</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">elem, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">list </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   for (<a class="el" href="structUcxList.html">UcxList</a>* elem = (<a class="el" href="structUcxList.html">UcxList</a>*) list ; elem != NULL ; elem = elem->next)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Loop statement for UCX lists. </p> -<p>The first argument is the name of the iteration variable. The scope of this variable is limited to the <code>UCX_FOREACH</code> statement.</p> -<p>The second argument is a pointer to the list. In most cases this will be the pointer to the first element of the list, but it may also be an arbitrary element of the list. The iteration will then start with that element.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>The first element of the list </td></tr> - <tr><td class="paramname">elem</td><td>The variable name of the element </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<h2 class="groupheader">Typedef Documentation</h2> -<a id="aa6f89f91c1081c9a7c6866c298f497a2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa6f89f91c1081c9a7c6866c298f497a2">◆ </a></span>UcxList</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef struct <a class="el" href="structUcxList.html">UcxList</a> <a class="el" href="structUcxList.html">UcxList</a></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>UCX list type. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxList.html" title="UCX list structure. ">UcxList</a> </dd></dl> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="a00c122c8a26d35b60676939df4161621"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a00c122c8a26d35b60676939df4161621">◆ </a></span>ucx_list_append()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_append </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Inserts an element at the end of the list. </p> -<p>This is generally an O(n) operation, as the end of the list is retrieved with <a class="el" href="list_8h.html#add5ec40c5006e29c629d23c2eb5a6553" title="Returns the last element of a list. ">ucx_list_last()</a>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list where to append the data, or <code>NULL</code> to create a new list </td></tr> - <tr><td class="paramname">data</td><td>the data to insert </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd><code>list</code>, if it is not <code>NULL</code> or a pointer to the newly created list otherwise </dd></dl> - -</div> -</div> -<a id="adf3b3e2e0ff977d8928671d6bd82fc60"></a> -<h2 class="memtitle"><span class="permalink"><a href="#adf3b3e2e0ff977d8928671d6bd82fc60">◆ </a></span>ucx_list_append_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_append_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Inserts an element at the end of the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p>See <a class="el" href="list_8h.html#a00c122c8a26d35b60676939df4161621" title="Inserts an element at the end of the list. ">ucx_list_append()</a> for details.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - <tr><td class="paramname">list</td><td>the list where to append the data, or <code>NULL</code> to create a new list </td></tr> - <tr><td class="paramname">data</td><td>the data to insert </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd><code>list</code>, if it is not <code>NULL</code> or a pointer to the newly created list otherwise </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a00c122c8a26d35b60676939df4161621" title="Inserts an element at the end of the list. ">ucx_list_append()</a> </dd></dl> - -</div> -</div> -<a id="ae7054a41c289b24e6caf5cb07ac850ed"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae7054a41c289b24e6caf5cb07ac850ed">◆ </a></span>ucx_list_clone()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_clone </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpyfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates an element-wise copy of a list. </p> -<p>This function clones the specified list by creating new list elements and copying the data with the specified <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967" title="Function pointer to a copy function. ">copy_func()</a>. If no <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967" title="Function pointer to a copy function. ">copy_func()</a> is specified, a shallow copy is created and the new list will reference the same data as the source list.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list to copy </td></tr> - <tr><td class="paramname">cpyfnc</td><td>a pointer to the function that shall copy an element (may be <code>NULL</code>) </td></tr> - <tr><td class="paramname">data</td><td>additional data for the <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967" title="Function pointer to a copy function. ">copy_func()</a> </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the copy </dd></dl> - -</div> -</div> -<a id="a08ca1ba0d2e82258b0408714c1f4c425"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a08ca1ba0d2e82258b0408714c1f4c425">◆ </a></span>ucx_list_clone_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_clone_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpyfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates an element-wise copy of a list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p>See <a class="el" href="list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed" title="Creates an element-wise copy of a list. ">ucx_list_clone()</a> for details.</p> -<p>You might want to pass the allocator via the <code>data</code> parameter, to access it within the copy function for making deep copies.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - <tr><td class="paramname">list</td><td>the list to copy </td></tr> - <tr><td class="paramname">cpyfnc</td><td>a pointer to the function that shall copy an element (may be <code>NULL</code>) </td></tr> - <tr><td class="paramname">data</td><td>additional data for the <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967" title="Function pointer to a copy function. ">copy_func()</a> </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the copy </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed" title="Creates an element-wise copy of a list. ">ucx_list_clone()</a> </dd></dl> - -</div> -</div> -<a id="a77163a0cc82fae52bec26c8c0c3674d9"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a77163a0cc82fae52bec26c8c0c3674d9">◆ </a></span>ucx_list_concat()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_concat </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list2</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Concatenates two lists. </p> -<p>Either of the two arguments may be <code>NULL</code>.</p> -<p>This function modifies the references to the next/previous element of the last/first element of <code>list1</code>/<code> list2</code>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list1</td><td>first list </td></tr> - <tr><td class="paramname">list2</td><td>second list </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>if <code>list1</code> is <code>NULL</code>, <code>list2</code> is returned, otherwise <code>list1</code> is returned </dd></dl> - -</div> -</div> -<a id="a8b0fa051fcfe12e1a82cca1087973852"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8b0fa051fcfe12e1a82cca1087973852">◆ </a></span>ucx_list_contains()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_list_contains </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>elem</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if a list contains a specific element. </p> -<p>An element is found, if <a class="el" href="list_8h.html#a9b3b6842d3be572e06a7f519e198cb83" title="Returns the index of an element containing the specified data. ">ucx_list_find()</a> returns a value greater than -1.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list where to search for the data </td></tr> - <tr><td class="paramname">elem</td><td>the element data </td></tr> - <tr><td class="paramname">cmpfnc</td><td>the compare function </td></tr> - <tr><td class="paramname">data</td><td>additional data for the compare function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the list contains the specified element data </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a9b3b6842d3be572e06a7f519e198cb83" title="Returns the index of an element containing the specified data. ">ucx_list_find()</a> </dd></dl> - -</div> -</div> -<a id="a6c5db5d1d11ad28b6fe1a80ee1c1e449"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6c5db5d1d11ad28b6fe1a80ee1c1e449">◆ </a></span>ucx_list_difference()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_difference </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>left</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>right</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cmpdata</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the difference of two lists. </p> -<p>The difference contains all elements of the left list (including duplicates) that are not equal to any element of the right list.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">left</td><td>the left source list </td></tr> - <tr><td class="paramname">right</td><td>the right source list </td></tr> - <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr> - <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new list containing the difference </dd></dl> - -</div> -</div> -<a id="a4a2a2fc5cc41073c516db6235bbc51d5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4a2a2fc5cc41073c516db6235bbc51d5">◆ </a></span>ucx_list_difference_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_difference_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>left</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>right</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cmpdata</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the difference of two lists. </p> -<p>The difference contains all elements of the left list (including duplicates) that are not equal to any element of the right list.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>allocates the new list elements </td></tr> - <tr><td class="paramname">left</td><td>the left source list </td></tr> - <tr><td class="paramname">right</td><td>the right source list </td></tr> - <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr> - <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new list containing the difference </dd></dl> - -</div> -</div> -<a id="adc435447cecf885bc63d232191085bbe"></a> -<h2 class="memtitle"><span class="permalink"><a href="#adc435447cecf885bc63d232191085bbe">◆ </a></span>ucx_list_equals()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_list_equals </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two UCX lists element-wise by using a compare function. </p> -<p>Each element of the two specified lists are compared by using the specified compare function and the additional data. The type and content of this additional data depends on the <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791" title="Function pointer to a compare function. ">cmp_func()</a> used.</p> -<p>If the list pointers denote elements within a list, the lists are compared starting with the denoted elements. Thus any previous elements are not taken into account. This might be useful to check, if certain list tails match each other.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list1</td><td>the first list </td></tr> - <tr><td class="paramname">list2</td><td>the second list </td></tr> - <tr><td class="paramname">cmpfnc</td><td>the compare function </td></tr> - <tr><td class="paramname">data</td><td>additional data for the compare function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the two lists equal element-wise, 0 otherwise </dd></dl> - -</div> -</div> -<a id="a9b3b6842d3be572e06a7f519e198cb83"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9b3b6842d3be572e06a7f519e198cb83">◆ </a></span>ucx_list_find()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">ssize_t ucx_list_find </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>elem</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the index of an element containing the specified data. </p> -<p>This function uses a <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791" title="Function pointer to a compare function. ">cmp_func()</a> to compare the data of each list element with the specified data. If no cmp_func is provided, the pointers are compared.</p> -<p>If the list contains the data more than once, the index of the first occurrence is returned.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list where to search for the data </td></tr> - <tr><td class="paramname">elem</td><td>the element data </td></tr> - <tr><td class="paramname">cmpfnc</td><td>the compare function </td></tr> - <tr><td class="paramname">data</td><td>additional data for the compare function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the index of the element containing the specified data or -1 if the data is not found in this list </dd></dl> - -</div> -</div> -<a id="a6aa0e34ebc5f0dca6f52d0f7626b4bd5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6aa0e34ebc5f0dca6f52d0f7626b4bd5">◆ </a></span>ucx_list_first()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_first </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>elem</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the first element of a list. </p> -<p>If the argument is the list pointer, it is directly returned. Otherwise this function traverses to the first element of the list and returns the list pointer.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">elem</td><td>one element of the list </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the first element of the list, the specified element is a member of </dd></dl> - -</div> -</div> -<a id="a1a0fa2c5b1e478a96da19b0c3f013668"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1a0fa2c5b1e478a96da19b0c3f013668">◆ </a></span>ucx_list_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_list_free </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys the entire list. </p> -<p>The members of the list are not automatically freed, so ensure they are otherwise referenced or destroyed by ucx_list_free_contents(). Otherwise, a memory leak is likely to occur.</p> -<p><b>Caution:</b> the argument <b>MUST</b> denote an entire list (i.e. a call to <a class="el" href="list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5" title="Returns the first element of a list. ">ucx_list_first()</a> on the argument must return the argument itself)</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list to free </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd>ucx_list_free_contents() </dd></dl> - -</div> -</div> -<a id="a944e11f76c38767cd1100d72a4e3b25b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a944e11f76c38767cd1100d72a4e3b25b">◆ </a></span>ucx_list_free_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_list_free_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys the entire list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p>See <a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668" title="Destroys the entire list. ">ucx_list_free()</a> for details.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - <tr><td class="paramname">list</td><td>the list to free </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668" title="Destroys the entire list. ">ucx_list_free()</a> </dd></dl> - -</div> -</div> -<a id="a4ba6c96642f72ea046cc22627c72979c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4ba6c96642f72ea046cc22627c72979c">◆ </a></span>ucx_list_free_content()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_list_free_content </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> </td> - <td class="paramname"><em>destr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys the contents of the specified list by calling the specified destructor on each of them. </p> -<p>Note, that the contents are not usable afterwards and the list should be destroyed with <a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668" title="Destroys the entire list. ">ucx_list_free()</a>.</p> -<p>If no destructor is specified (<code>NULL</code>), stdlib's free() is used.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list for which the contents shall be freed </td></tr> - <tr><td class="paramname">destr</td><td>optional destructor function </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668" title="Destroys the entire list. ">ucx_list_free()</a> </dd></dl> - -</div> -</div> -<a id="a2509ffe19bce6a8708c77f89480c75fb"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2509ffe19bce6a8708c77f89480c75fb">◆ </a></span>ucx_list_get()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_get </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>index</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the list element at the specified index. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list to retrieve the element from </td></tr> - <tr><td class="paramname">index</td><td>index of the element to return </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the element at the specified index or <code>NULL</code>, if the index is greater than the list size </dd></dl> - -</div> -</div> -<a id="ae2ff2974812ca185870f80bc4ed9337e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae2ff2974812ca185870f80bc4ed9337e">◆ </a></span>ucx_list_indexof()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">ssize_t ucx_list_indexof </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>elem</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the index of an element. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list where to search for the element </td></tr> - <tr><td class="paramname">elem</td><td>the element to find </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the index of the element or -1 if the list does not contain the element </dd></dl> - -</div> -</div> -<a id="a259f9b754978aeca23dfabba16e20f39"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a259f9b754978aeca23dfabba16e20f39">◆ </a></span>ucx_list_intersection()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_intersection </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>left</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>right</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cmpdata</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the intersection of two lists. </p> -<p>The intersection contains all elements of the left list (including duplicates) that can be found in the right list.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">left</td><td>the left source list </td></tr> - <tr><td class="paramname">right</td><td>the right source list </td></tr> - <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr> - <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new list containing the intersection </dd></dl> - -</div> -</div> -<a id="a1d0b00514dbb81ba6270b58da0c5b9a8"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1d0b00514dbb81ba6270b58da0c5b9a8">◆ </a></span>ucx_list_intersection_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_intersection_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>left</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>right</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cmpdata</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the intersection of two lists. </p> -<p>The intersection contains all elements of the left list (including duplicates) that can be found in the right list.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>allocates the new list elements </td></tr> - <tr><td class="paramname">left</td><td>the left source list </td></tr> - <tr><td class="paramname">right</td><td>the right source list </td></tr> - <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr> - <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new list containing the intersection </dd></dl> - -</div> -</div> -<a id="add5ec40c5006e29c629d23c2eb5a6553"></a> -<h2 class="memtitle"><span class="permalink"><a href="#add5ec40c5006e29c629d23c2eb5a6553">◆ </a></span>ucx_list_last()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_last </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>elem</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the last element of a list. </p> -<p>If the argument has no successor, it is the last element and therefore directly returned. Otherwise this function traverses to the last element of the list and returns it.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">elem</td><td>one element of the list </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the last element of the list, the specified element is a member of </dd></dl> - -</div> -</div> -<a id="a8fcb68e4556395b15180eec2d0b77aa4"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8fcb68e4556395b15180eec2d0b77aa4">◆ </a></span>ucx_list_prepend()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_prepend </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Inserts an element at the beginning of the list. </p> -<p>You <em>should</em> overwrite the old list pointer by calling <code>mylist = ucx_list_prepend(mylist, mydata);</code>. However, you may also perform successive calls of <a class="el" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4" title="Inserts an element at the beginning of the list. ">ucx_list_prepend()</a> on the same list pointer, as this function always searchs for the head of the list with <a class="el" href="list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5" title="Returns the first element of a list. ">ucx_list_first()</a>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list where to insert the data or <code>NULL</code> to create a new list </td></tr> - <tr><td class="paramname">data</td><td>the data to insert </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the new list head </dd></dl> - -</div> -</div> -<a id="a54654e6dc60e1c3de9e886c150e404ec"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a54654e6dc60e1c3de9e886c150e404ec">◆ </a></span>ucx_list_prepend_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_prepend_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Inserts an element at the beginning of the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p>See <a class="el" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4" title="Inserts an element at the beginning of the list. ">ucx_list_prepend()</a> for details.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - <tr><td class="paramname">list</td><td>the list where to insert the data or <code>NULL</code> to create a new list </td></tr> - <tr><td class="paramname">data</td><td>the data to insert </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the new list head </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4" title="Inserts an element at the beginning of the list. ">ucx_list_prepend()</a> </dd></dl> - -</div> -</div> -<a id="a410cb3e8260037ba56c72d14b899b468"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a410cb3e8260037ba56c72d14b899b468">◆ </a></span>ucx_list_remove()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_remove </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>element</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Removes an element from the list. </p> -<p>If the first element is removed, the list pointer changes. So it is <em>highly recommended</em> to <em>always</em> update the pointer by calling <code>mylist = ucx_list_remove(mylist, myelem);</code>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list from which the element shall be removed </td></tr> - <tr><td class="paramname">element</td><td>the element to remove </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>returns the updated list pointer or <code>NULL</code>, if the list is now empty </dd></dl> - -</div> -</div> -<a id="aca687b7c4e7170175f447e549125aa52"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aca687b7c4e7170175f447e549125aa52">◆ </a></span>ucx_list_remove_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_remove_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>element</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Removes an element from the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p>See <a class="el" href="list_8h.html#a410cb3e8260037ba56c72d14b899b468" title="Removes an element from the list. ">ucx_list_remove()</a> for details.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - <tr><td class="paramname">list</td><td>the list from which the element shall be removed </td></tr> - <tr><td class="paramname">element</td><td>the element to remove </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>returns the updated list pointer or <code>NULL</code>, if the list </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a410cb3e8260037ba56c72d14b899b468" title="Removes an element from the list. ">ucx_list_remove()</a> </dd></dl> - -</div> -</div> -<a id="ae88001cc8ae40b946560f31434abed8f"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae88001cc8ae40b946560f31434abed8f">◆ </a></span>ucx_list_size()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t ucx_list_size </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the element count of the list. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list whose elements are counted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the element count </dd></dl> - -</div> -</div> -<a id="ac74962d9bd7cfc9d3e2e09651469377b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac74962d9bd7cfc9d3e2e09651469377b">◆ </a></span>ucx_list_sort()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_sort </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>list</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Sorts a <a class="el" href="structUcxList.html" title="UCX list structure. ">UcxList</a> with natural merge sort. </p> -<p>This function uses O(n) additional temporary memory for merge operations that is automatically freed after each merge.</p> -<p>As the head of the list might change, you <b>MUST</b> call this function as follows: <code>mylist = ucx_list_sort(mylist, mycmpfnc, mydata);</code>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">list</td><td>the list to sort </td></tr> - <tr><td class="paramname">cmpfnc</td><td>the function that shall be used to compare the element data </td></tr> - <tr><td class="paramname">data</td><td>additional data for the <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791" title="Function pointer to a compare function. ">cmp_func()</a> </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the sorted list </dd></dl> - -</div> -</div> -<a id="a94ecdb0cea1633ad7074f027fa8485fa"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a94ecdb0cea1633ad7074f027fa8485fa">◆ </a></span>ucx_list_union()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_union </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>left</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>right</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cmpdata</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the union of two lists. </p> -<p>The union is a list of unique elements regarding cmpfnc obtained from both source lists.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">left</td><td>the left source list </td></tr> - <tr><td class="paramname">right</td><td>the right source list </td></tr> - <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr> - <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new list containing the union </dd></dl> - -</div> -</div> -<a id="a65b4355536f4ebc4130211b46469f4c1"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a65b4355536f4ebc4130211b46469f4c1">◆ </a></span>ucx_list_union_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_union_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>left</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> * </td> - <td class="paramname"><em>right</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td> - <td class="paramname"><em>cmpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cmpdata</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the union of two lists. </p> -<p>The union is a list of unique elements regarding cmpfnc obtained from both source lists.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>allocates the new list elements </td></tr> - <tr><td class="paramname">left</td><td>the left source list </td></tr> - <tr><td class="paramname">right</td><td>the right source list </td></tr> - <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr> - <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new list containing the union </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/list_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,116 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/list.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">list.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="list_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef UCX_LIST_H</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define UCX_LIST_H</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="allocator_8h.html">allocator.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="list_8h.html#a4b143b6526a410aa4d22cb3bb9365d70"> 59</a></span> <span class="preprocessor">#define UCX_FOREACH(elem,list) \</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"> for (UcxList* elem = (UcxList*) list ; elem != NULL ; elem = elem->next)</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="list_8h.html#aa6f89f91c1081c9a7c6866c298f497a2"> 66</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxList.html">UcxList</a> <a class="code" href="structUcxList.html">UcxList</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="structUcxList.html"> 71</a></span> <span class="keyword">struct </span><a class="code" href="structUcxList.html">UcxList</a> {</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2"> 75</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="structUcxList.html#a82a1818f1abf765b026fa91478569a8f"> 80</a></span>  <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="structUcxList.html#a82a1818f1abf765b026fa91478569a8f">next</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="structUcxList.html#a0f1fddce9088b9c1414745d0b1b5c08b"> 85</a></span>  <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="structUcxList.html#a0f1fddce9088b9c1414745d0b1b5c08b">prev</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> };</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed">ucx_list_clone</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *list, <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpyfnc, <span class="keywordtype">void</span>* <a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#a08ca1ba0d2e82258b0408714c1f4c425">ucx_list_clone_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *list,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpyfnc, <span class="keywordtype">void</span>* <a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keywordtype">int</span> <a class="code" href="list_8h.html#adc435447cecf885bc63d232191085bbe">ucx_list_equals</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *list1, <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *list2,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span>* <a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="keywordtype">void</span> <a class="code" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668">ucx_list_free</a>(<a class="code" href="structUcxList.html">UcxList</a> *list);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keywordtype">void</span> <a class="code" href="list_8h.html#a944e11f76c38767cd1100d72a4e3b25b">ucx_list_free_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structUcxList.html">UcxList</a> *list);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keywordtype">void</span> <a class="code" href="list_8h.html#a4ba6c96642f72ea046cc22627c72979c">ucx_list_free_content</a>(<a class="code" href="structUcxList.html">UcxList</a>* list, <a class="code" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#a00c122c8a26d35b60676939df4161621">ucx_list_append</a>(<a class="code" href="structUcxList.html">UcxList</a> *list, <span class="keywordtype">void</span> *<a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#adf3b3e2e0ff977d8928671d6bd82fc60">ucx_list_append_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structUcxList.html">UcxList</a> *list, <span class="keywordtype">void</span> *<a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4">ucx_list_prepend</a>(<a class="code" href="structUcxList.html">UcxList</a> *list, <span class="keywordtype">void</span> *<a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#a54654e6dc60e1c3de9e886c150e404ec">ucx_list_prepend_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structUcxList.html">UcxList</a> *list, <span class="keywordtype">void</span> *<a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#a77163a0cc82fae52bec26c8c0c3674d9">ucx_list_concat</a>(<a class="code" href="structUcxList.html">UcxList</a> *list1, <a class="code" href="structUcxList.html">UcxList</a> *list2);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5">ucx_list_first</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *elem);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#add5ec40c5006e29c629d23c2eb5a6553">ucx_list_last</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *elem);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#a2509ffe19bce6a8708c77f89480c75fb">ucx_list_get</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *list, <span class="keywordtype">size_t</span> index);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> ssize_t <a class="code" href="list_8h.html#ae2ff2974812ca185870f80bc4ed9337e">ucx_list_indexof</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *list, <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *elem);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="keywordtype">size_t</span> <a class="code" href="list_8h.html#ae88001cc8ae40b946560f31434abed8f">ucx_list_size</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *list);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> ssize_t <a class="code" href="list_8h.html#a9b3b6842d3be572e06a7f519e198cb83">ucx_list_find</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *list, <span class="keywordtype">void</span> *elem,</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span> *<a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="keywordtype">int</span> <a class="code" href="list_8h.html#a8b0fa051fcfe12e1a82cca1087973852">ucx_list_contains</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *list, <span class="keywordtype">void</span> *elem,</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span> *<a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#ac74962d9bd7cfc9d3e2e09651469377b">ucx_list_sort</a>(<a class="code" href="structUcxList.html">UcxList</a> *list, <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span> *<a class="code" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a>);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#a410cb3e8260037ba56c72d14b899b468">ucx_list_remove</a>(<a class="code" href="structUcxList.html">UcxList</a> *list, <a class="code" href="structUcxList.html">UcxList</a> *element);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <a class="code" href="structUcxList.html">UcxList</a> *<a class="code" href="list_8h.html#aca687b7c4e7170175f447e549125aa52">ucx_list_remove_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structUcxList.html">UcxList</a> *list,</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="structUcxList.html">UcxList</a> *element);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <a class="code" href="structUcxList.html">UcxList</a>* <a class="code" href="list_8h.html#a94ecdb0cea1633ad7074f027fa8485fa">ucx_list_union</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *left, <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *right,</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span>* cmpdata,</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <a class="code" href="structUcxList.html">UcxList</a>* <a class="code" href="list_8h.html#a65b4355536f4ebc4130211b46469f4c1">ucx_list_union_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator,</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *left, <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *right,</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span>* cmpdata,</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <a class="code" href="structUcxList.html">UcxList</a>* <a class="code" href="list_8h.html#a259f9b754978aeca23dfabba16e20f39">ucx_list_intersection</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *left, <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *right,</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span>* cmpdata,</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <a class="code" href="structUcxList.html">UcxList</a>* <a class="code" href="list_8h.html#a1d0b00514dbb81ba6270b58da0c5b9a8">ucx_list_intersection_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator,</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *left, <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *right,</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span>* cmpdata,</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <a class="code" href="structUcxList.html">UcxList</a>* <a class="code" href="list_8h.html#a6c5db5d1d11ad28b6fe1a80ee1c1e449">ucx_list_difference</a>(<span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *left, <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *right,</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span>* cmpdata,</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <a class="code" href="structUcxList.html">UcxList</a>* <a class="code" href="list_8h.html#a4a2a2fc5cc41073c516db6235bbc51d5">ucx_list_difference_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator,</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *left, <span class="keyword">const</span> <a class="code" href="structUcxList.html">UcxList</a> *right,</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, <span class="keywordtype">void</span>* cmpdata,</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> </div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_LIST_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="ttc" id="ucx_8h_html_aab917a5fe0965673c73e8ebd0a1fc967"><div class="ttname"><a href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a></div><div class="ttdeci">void *(* copy_func)(const void *, void *)</div><div class="ttdoc">Function pointer to a copy function. </div><div class="ttdef"><b>Definition:</b> ucx.h:106</div></div> -<div class="ttc" id="list_8h_html_adf3b3e2e0ff977d8928671d6bd82fc60"><div class="ttname"><a href="list_8h.html#adf3b3e2e0ff977d8928671d6bd82fc60">ucx_list_append_a</a></div><div class="ttdeci">UcxList * ucx_list_append_a(UcxAllocator *allocator, UcxList *list, void *data)</div><div class="ttdoc">Inserts an element at the end of the list using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> list.c:91</div></div> -<div class="ttc" id="list_8h_html_a2509ffe19bce6a8708c77f89480c75fb"><div class="ttname"><a href="list_8h.html#a2509ffe19bce6a8708c77f89480c75fb">ucx_list_get</a></div><div class="ttdeci">UcxList * ucx_list_get(const UcxList *list, size_t index)</div><div class="ttdoc">Returns the list element at the specified index. </div><div class="ttdef"><b>Definition:</b> list.c:163</div></div> -<div class="ttc" id="list_8h_html_a00c122c8a26d35b60676939df4161621"><div class="ttname"><a href="list_8h.html#a00c122c8a26d35b60676939df4161621">ucx_list_append</a></div><div class="ttdeci">UcxList * ucx_list_append(UcxList *list, void *data)</div><div class="ttdoc">Inserts an element at the end of the list. </div><div class="ttdef"><b>Definition:</b> list.c:87</div></div> -<div class="ttc" id="ucx_8h_html_afe5e2d5dbf34778e0e97852051570791"><div class="ttname"><a href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a></div><div class="ttdeci">int(* cmp_func)(const void *, const void *, void *)</div><div class="ttdoc">Function pointer to a compare function. </div><div class="ttdef"><b>Definition:</b> ucx.h:84</div></div> -<div class="ttc" id="list_8h_html_a8fcb68e4556395b15180eec2d0b77aa4"><div class="ttname"><a href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4">ucx_list_prepend</a></div><div class="ttdeci">UcxList * ucx_list_prepend(UcxList *list, void *data)</div><div class="ttdoc">Inserts an element at the beginning of the list. </div><div class="ttdef"><b>Definition:</b> list.c:110</div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="list_8h_html_a6aa0e34ebc5f0dca6f52d0f7626b4bd5"><div class="ttname"><a href="list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5">ucx_list_first</a></div><div class="ttdeci">UcxList * ucx_list_first(const UcxList *elem)</div><div class="ttdoc">Returns the first element of a list. </div><div class="ttdef"><b>Definition:</b> list.c:307</div></div> -<div class="ttc" id="list_8h_html_a944e11f76c38767cd1100d72a4e3b25b"><div class="ttname"><a href="list_8h.html#a944e11f76c38767cd1100d72a4e3b25b">ucx_list_free_a</a></div><div class="ttdeci">void ucx_list_free_a(UcxAllocator *allocator, UcxList *list)</div><div class="ttdoc">Destroys the entire list using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> list.c:70</div></div> -<div class="ttc" id="structUcxList_html"><div class="ttname"><a href="structUcxList.html">UcxList</a></div><div class="ttdoc">UCX list structure. </div><div class="ttdef"><b>Definition:</b> list.h:71</div></div> -<div class="ttc" id="list_8h_html_a9b3b6842d3be572e06a7f519e198cb83"><div class="ttname"><a href="list_8h.html#a9b3b6842d3be572e06a7f519e198cb83">ucx_list_find</a></div><div class="ttdeci">ssize_t ucx_list_find(const UcxList *list, void *elem, cmp_func cmpfnc, void *data)</div><div class="ttdoc">Returns the index of an element containing the specified data. </div><div class="ttdef"><b>Definition:</b> list.c:175</div></div> -<div class="ttc" id="list_8h_html_a4a2a2fc5cc41073c516db6235bbc51d5"><div class="ttname"><a href="list_8h.html#a4a2a2fc5cc41073c516db6235bbc51d5">ucx_list_difference_a</a></div><div class="ttdeci">UcxList * ucx_list_difference_a(UcxAllocator *allocator, const UcxList *left, const UcxList *right, cmp_func cmpfnc, void *cmpdata, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the difference of two lists. </div><div class="ttdef"><b>Definition:</b> list.c:421</div></div> -<div class="ttc" id="list_8h_html_a08ca1ba0d2e82258b0408714c1f4c425"><div class="ttname"><a href="list_8h.html#a08ca1ba0d2e82258b0408714c1f4c425">ucx_list_clone_a</a></div><div class="ttdeci">UcxList * ucx_list_clone_a(UcxAllocator *allocator, const UcxList *list, copy_func cpyfnc, void *data)</div><div class="ttdoc">Creates an element-wise copy of a list using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> list.c:35</div></div> -<div class="ttc" id="list_8h_html_a94ecdb0cea1633ad7074f027fa8485fa"><div class="ttname"><a href="list_8h.html#a94ecdb0cea1633ad7074f027fa8485fa">ucx_list_union</a></div><div class="ttdeci">UcxList * ucx_list_union(const UcxList *left, const UcxList *right, cmp_func cmpfnc, void *cmpdata, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the union of two lists. </div><div class="ttdef"><b>Definition:</b> list.c:382</div></div> -<div class="ttc" id="list_8h_html_a77163a0cc82fae52bec26c8c0c3674d9"><div class="ttname"><a href="list_8h.html#a77163a0cc82fae52bec26c8c0c3674d9">ucx_list_concat</a></div><div class="ttdeci">UcxList * ucx_list_concat(UcxList *list1, UcxList *list2)</div><div class="ttdoc">Concatenates two lists. </div><div class="ttdef"><b>Definition:</b> list.c:128</div></div> -<div class="ttc" id="list_8h_html_add5ec40c5006e29c629d23c2eb5a6553"><div class="ttname"><a href="list_8h.html#add5ec40c5006e29c629d23c2eb5a6553">ucx_list_last</a></div><div class="ttdeci">UcxList * ucx_list_last(const UcxList *elem)</div><div class="ttdoc">Returns the last element of a list. </div><div class="ttdef"><b>Definition:</b> list.c:141</div></div> -<div class="ttc" id="list_8h_html_a410cb3e8260037ba56c72d14b899b468"><div class="ttname"><a href="list_8h.html#a410cb3e8260037ba56c72d14b899b468">ucx_list_remove</a></div><div class="ttdeci">UcxList * ucx_list_remove(UcxList *list, UcxList *element)</div><div class="ttdoc">Removes an element from the list. </div><div class="ttdef"><b>Definition:</b> list.c:319</div></div> -<div class="ttc" id="structUcxList_html_a4a44905121b6fc2a088084ce578a9ea2"><div class="ttname"><a href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">UcxList::data</a></div><div class="ttdeci">void * data</div><div class="ttdoc">List element payload. </div><div class="ttdef"><b>Definition:</b> list.h:75</div></div> -<div class="ttc" id="list_8h_html_ae2ff2974812ca185870f80bc4ed9337e"><div class="ttname"><a href="list_8h.html#ae2ff2974812ca185870f80bc4ed9337e">ucx_list_indexof</a></div><div class="ttdeci">ssize_t ucx_list_indexof(const UcxList *list, const UcxList *elem)</div><div class="ttdoc">Returns the index of an element. </div><div class="ttdef"><b>Definition:</b> list.c:151</div></div> -<div class="ttc" id="list_8h_html_aca687b7c4e7170175f447e549125aa52"><div class="ttname"><a href="list_8h.html#aca687b7c4e7170175f447e549125aa52">ucx_list_remove_a</a></div><div class="ttdeci">UcxList * ucx_list_remove_a(UcxAllocator *allocator, UcxList *list, UcxList *element)</div><div class="ttdoc">Removes an element from the list using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> list.c:323</div></div> -<div class="ttc" id="list_8h_html_a6c5db5d1d11ad28b6fe1a80ee1c1e449"><div class="ttname"><a href="list_8h.html#a6c5db5d1d11ad28b6fe1a80ee1c1e449">ucx_list_difference</a></div><div class="ttdeci">UcxList * ucx_list_difference(const UcxList *left, const UcxList *right, cmp_func cmpfnc, void *cmpdata, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the difference of two lists. </div><div class="ttdef"><b>Definition:</b> list.c:414</div></div> -<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div> -<div class="ttc" id="list_8h_html_a4ba6c96642f72ea046cc22627c72979c"><div class="ttname"><a href="list_8h.html#a4ba6c96642f72ea046cc22627c72979c">ucx_list_free_content</a></div><div class="ttdeci">void ucx_list_free_content(UcxList *list, ucx_destructor destr)</div><div class="ttdoc">Destroys the contents of the specified list by calling the specified destructor on each of them...</div><div class="ttdef"><b>Definition:</b> list.c:79</div></div> -<div class="ttc" id="structUcxList_html_a82a1818f1abf765b026fa91478569a8f"><div class="ttname"><a href="structUcxList.html#a82a1818f1abf765b026fa91478569a8f">UcxList::next</a></div><div class="ttdeci">UcxList * next</div><div class="ttdoc">Pointer to the next list element or NULL, if this is the last element. </div><div class="ttdef"><b>Definition:</b> list.h:80</div></div> -<div class="ttc" id="list_8h_html_a1d0b00514dbb81ba6270b58da0c5b9a8"><div class="ttname"><a href="list_8h.html#a1d0b00514dbb81ba6270b58da0c5b9a8">ucx_list_intersection_a</a></div><div class="ttdeci">UcxList * ucx_list_intersection_a(UcxAllocator *allocator, const UcxList *left, const UcxList *right, cmp_func cmpfnc, void *cmpdata, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the intersection of two lists. </div><div class="ttdef"><b>Definition:</b> list.c:405</div></div> -<div class="ttc" id="list_8h_html_a259f9b754978aeca23dfabba16e20f39"><div class="ttname"><a href="list_8h.html#a259f9b754978aeca23dfabba16e20f39">ucx_list_intersection</a></div><div class="ttdeci">UcxList * ucx_list_intersection(const UcxList *left, const UcxList *right, cmp_func cmpfnc, void *cmpdata, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the intersection of two lists. </div><div class="ttdef"><b>Definition:</b> list.c:398</div></div> -<div class="ttc" id="list_8h_html_ac74962d9bd7cfc9d3e2e09651469377b"><div class="ttname"><a href="list_8h.html#ac74962d9bd7cfc9d3e2e09651469377b">ucx_list_sort</a></div><div class="ttdeci">UcxList * ucx_list_sort(UcxList *list, cmp_func cmpfnc, void *data)</div><div class="ttdoc">Sorts a UcxList with natural merge sort. </div><div class="ttdef"><b>Definition:</b> list.c:254</div></div> -<div class="ttc" id="list_8h_html_ae7054a41c289b24e6caf5cb07ac850ed"><div class="ttname"><a href="list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed">ucx_list_clone</a></div><div class="ttdeci">UcxList * ucx_list_clone(const UcxList *list, copy_func cpyfnc, void *data)</div><div class="ttdoc">Creates an element-wise copy of a list. </div><div class="ttdef"><b>Definition:</b> list.c:31</div></div> -<div class="ttc" id="allocator_8h_html"><div class="ttname"><a href="allocator_8h.html">allocator.h</a></div><div class="ttdoc">Allocator for custom memory management. </div></div> -<div class="ttc" id="list_8h_html_a54654e6dc60e1c3de9e886c150e404ec"><div class="ttname"><a href="list_8h.html#a54654e6dc60e1c3de9e886c150e404ec">ucx_list_prepend_a</a></div><div class="ttdeci">UcxList * ucx_list_prepend_a(UcxAllocator *allocator, UcxList *list, void *data)</div><div class="ttdoc">Inserts an element at the beginning of the list using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> list.c:114</div></div> -<div class="ttc" id="list_8h_html_a1a0fa2c5b1e478a96da19b0c3f013668"><div class="ttname"><a href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668">ucx_list_free</a></div><div class="ttdeci">void ucx_list_free(UcxList *list)</div><div class="ttdoc">Destroys the entire list. </div><div class="ttdef"><b>Definition:</b> list.c:66</div></div> -<div class="ttc" id="structUcxList_html_a0f1fddce9088b9c1414745d0b1b5c08b"><div class="ttname"><a href="structUcxList.html#a0f1fddce9088b9c1414745d0b1b5c08b">UcxList::prev</a></div><div class="ttdeci">UcxList * prev</div><div class="ttdoc">Pointer to the previous list element or NULL, if this is the first element. </div><div class="ttdef"><b>Definition:</b> list.h:85</div></div> -<div class="ttc" id="list_8h_html_a65b4355536f4ebc4130211b46469f4c1"><div class="ttname"><a href="list_8h.html#a65b4355536f4ebc4130211b46469f4c1">ucx_list_union_a</a></div><div class="ttdeci">UcxList * ucx_list_union_a(UcxAllocator *allocator, const UcxList *left, const UcxList *right, cmp_func cmpfnc, void *cmpdata, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the union of two lists. </div><div class="ttdef"><b>Definition:</b> list.c:389</div></div> -<div class="ttc" id="list_8h_html_adc435447cecf885bc63d232191085bbe"><div class="ttname"><a href="list_8h.html#adc435447cecf885bc63d232191085bbe">ucx_list_equals</a></div><div class="ttdeci">int ucx_list_equals(const UcxList *list1, const UcxList *list2, cmp_func cmpfnc, void *data)</div><div class="ttdoc">Compares two UCX lists element-wise by using a compare function. </div><div class="ttdef"><b>Definition:</b> list.c:49</div></div> -<div class="ttc" id="list_8h_html_a8b0fa051fcfe12e1a82cca1087973852"><div class="ttname"><a href="list_8h.html#a8b0fa051fcfe12e1a82cca1087973852">ucx_list_contains</a></div><div class="ttdeci">int ucx_list_contains(const UcxList *list, void *elem, cmp_func cmpfnc, void *data)</div><div class="ttdoc">Checks, if a list contains a specific element. </div><div class="ttdef"><b>Definition:</b> list.c:193</div></div> -<div class="ttc" id="list_8h_html_ae88001cc8ae40b946560f31434abed8f"><div class="ttname"><a href="list_8h.html#ae88001cc8ae40b946560f31434abed8f">ucx_list_size</a></div><div class="ttdeci">size_t ucx_list_size(const UcxList *list)</div><div class="ttdoc">Returns the element count of the list. </div><div class="ttdef"><b>Definition:</b> list.c:198</div></div> -<div class="ttc" id="ucx_8h_html_ad2b370c2809914c8b7fedab163c266b3"><div class="ttname"><a href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a></div><div class="ttdeci">void(* ucx_destructor)(void *)</div><div class="ttdoc">A function pointer to a destructor function. </div><div class="ttdef"><b>Definition:</b> ucx.h:72</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/logging_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,716 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/logging.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">logging.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Logging API. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include "<a class="el" href="map_8h_source.html">map.h</a>"</code><br /> -<code>#include "<a class="el" href="string_8h_source.html">string.h</a>"</code><br /> -<code>#include <stdio.h></code><br /> -</div> -<p><a href="logging_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxLogger.html">UcxLogger</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The UCX Logger object. <a href="structUcxLogger.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:aa254c07fe3a907613e2256a318d5c9a8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#aa254c07fe3a907613e2256a318d5c9a8">UCX_LOGGER_ERROR</a>   0x00</td></tr> -<tr class="memdesc:aa254c07fe3a907613e2256a318d5c9a8"><td class="mdescLeft"> </td><td class="mdescRight">Log level for error messages. <a href="#aa254c07fe3a907613e2256a318d5c9a8">More...</a><br /></td></tr> -<tr class="separator:aa254c07fe3a907613e2256a318d5c9a8"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:abd01ca11486226ba34e8f7028d9fffba"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#abd01ca11486226ba34e8f7028d9fffba">UCX_LOGGER_WARN</a>   0x10</td></tr> -<tr class="memdesc:abd01ca11486226ba34e8f7028d9fffba"><td class="mdescLeft"> </td><td class="mdescRight">Log level for warning messages. <a href="#abd01ca11486226ba34e8f7028d9fffba">More...</a><br /></td></tr> -<tr class="separator:abd01ca11486226ba34e8f7028d9fffba"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4b0178bf60a6129373ffc59114ca4c9b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#a4b0178bf60a6129373ffc59114ca4c9b">UCX_LOGGER_INFO</a>   0x20</td></tr> -<tr class="memdesc:a4b0178bf60a6129373ffc59114ca4c9b"><td class="mdescLeft"> </td><td class="mdescRight">Log level for information messages. <a href="#a4b0178bf60a6129373ffc59114ca4c9b">More...</a><br /></td></tr> -<tr class="separator:a4b0178bf60a6129373ffc59114ca4c9b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:acff01d1ef919ea997cfce755fc1b83d8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#acff01d1ef919ea997cfce755fc1b83d8">UCX_LOGGER_DEBUG</a>   0x30</td></tr> -<tr class="memdesc:acff01d1ef919ea997cfce755fc1b83d8"><td class="mdescLeft"> </td><td class="mdescRight">Log level for debug messages. <a href="#acff01d1ef919ea997cfce755fc1b83d8">More...</a><br /></td></tr> -<tr class="separator:acff01d1ef919ea997cfce755fc1b83d8"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a55b88d1fec7036d841b3ddd6195c5586"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#a55b88d1fec7036d841b3ddd6195c5586">UCX_LOGGER_TRACE</a>   0x40</td></tr> -<tr class="memdesc:a55b88d1fec7036d841b3ddd6195c5586"><td class="mdescLeft"> </td><td class="mdescRight">Log level for trace messages. <a href="#a55b88d1fec7036d841b3ddd6195c5586">More...</a><br /></td></tr> -<tr class="separator:a55b88d1fec7036d841b3ddd6195c5586"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aee18bc20e58ffb69910121512c350839"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#aee18bc20e58ffb69910121512c350839">UCX_LOGGER_LEVEL</a>   0x01</td></tr> -<tr class="memdesc:aee18bc20e58ffb69910121512c350839"><td class="mdescLeft"> </td><td class="mdescRight">Output flag for the log level. <a href="#aee18bc20e58ffb69910121512c350839">More...</a><br /></td></tr> -<tr class="separator:aee18bc20e58ffb69910121512c350839"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a38607008268b4f776ee500fb95d2e823"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#a38607008268b4f776ee500fb95d2e823">UCX_LOGGER_TIMESTAMP</a>   0x02</td></tr> -<tr class="memdesc:a38607008268b4f776ee500fb95d2e823"><td class="mdescLeft"> </td><td class="mdescRight">Output flag for the timestmap. <a href="#a38607008268b4f776ee500fb95d2e823">More...</a><br /></td></tr> -<tr class="separator:a38607008268b4f776ee500fb95d2e823"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a0e0d72b12616c1e49ff8834eaf4cb8a2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#a0e0d72b12616c1e49ff8834eaf4cb8a2">UCX_LOGGER_SOURCE</a>   0x04</td></tr> -<tr class="memdesc:a0e0d72b12616c1e49ff8834eaf4cb8a2"><td class="mdescLeft"> </td><td class="mdescRight">Output flag for the source. <a href="#a0e0d72b12616c1e49ff8834eaf4cb8a2">More...</a><br /></td></tr> -<tr class="separator:a0e0d72b12616c1e49ff8834eaf4cb8a2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5cffc19502c4c90bfb3bd3bbcd18170a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#a5cffc19502c4c90bfb3bd3bbcd18170a">ucx_logger_register_level</a>(logger, level, name)</td></tr> -<tr class="memdesc:a5cffc19502c4c90bfb3bd3bbcd18170a"><td class="mdescLeft"> </td><td class="mdescRight">Registers a custom log level. <a href="#a5cffc19502c4c90bfb3bd3bbcd18170a">More...</a><br /></td></tr> -<tr class="separator:a5cffc19502c4c90bfb3bd3bbcd18170a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa0245325031d95799b28def177fd14ec"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, level, ...)   <a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801">ucx_logger_logf</a>(logger, level, __FILE__, __LINE__, __VA_ARGS__)</td></tr> -<tr class="memdesc:aa0245325031d95799b28def177fd14ec"><td class="mdescLeft"> </td><td class="mdescRight">Logs a message at the specified level. <a href="#aa0245325031d95799b28def177fd14ec">More...</a><br /></td></tr> -<tr class="separator:aa0245325031d95799b28def177fd14ec"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a6a9e472e14d6768e59d96d245e065397"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#a6a9e472e14d6768e59d96d245e065397">ucx_logger_error</a>(logger, ...)   <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, <a class="el" href="logging_8h.html#aa254c07fe3a907613e2256a318d5c9a8">UCX_LOGGER_ERROR</a>, __VA_ARGS__)</td></tr> -<tr class="memdesc:a6a9e472e14d6768e59d96d245e065397"><td class="mdescLeft"> </td><td class="mdescRight">Shortcut for logging an error message. <a href="#a6a9e472e14d6768e59d96d245e065397">More...</a><br /></td></tr> -<tr class="separator:a6a9e472e14d6768e59d96d245e065397"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a98464d8d51376ce2716dcc4eca00d5da"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#a98464d8d51376ce2716dcc4eca00d5da">ucx_logger_info</a>(logger, ...)   <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, <a class="el" href="logging_8h.html#a4b0178bf60a6129373ffc59114ca4c9b">UCX_LOGGER_INFO</a>, __VA_ARGS__)</td></tr> -<tr class="memdesc:a98464d8d51376ce2716dcc4eca00d5da"><td class="mdescLeft"> </td><td class="mdescRight">Shortcut for logging an information message. <a href="#a98464d8d51376ce2716dcc4eca00d5da">More...</a><br /></td></tr> -<tr class="separator:a98464d8d51376ce2716dcc4eca00d5da"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aca7bd861b646892813fd7310c0aa69af"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#aca7bd861b646892813fd7310c0aa69af">ucx_logger_warn</a>(logger, ...)   <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, <a class="el" href="logging_8h.html#abd01ca11486226ba34e8f7028d9fffba">UCX_LOGGER_WARN</a>, __VA_ARGS__)</td></tr> -<tr class="memdesc:aca7bd861b646892813fd7310c0aa69af"><td class="mdescLeft"> </td><td class="mdescRight">Shortcut for logging a warning message. <a href="#aca7bd861b646892813fd7310c0aa69af">More...</a><br /></td></tr> -<tr class="separator:aca7bd861b646892813fd7310c0aa69af"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2936402799892db5138e5f1f8c25db0c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#a2936402799892db5138e5f1f8c25db0c">ucx_logger_debug</a>(logger, ...)   <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, <a class="el" href="logging_8h.html#acff01d1ef919ea997cfce755fc1b83d8">UCX_LOGGER_DEBUG</a>, __VA_ARGS__)</td></tr> -<tr class="memdesc:a2936402799892db5138e5f1f8c25db0c"><td class="mdescLeft"> </td><td class="mdescRight">Shortcut for logging a debug message. <a href="#a2936402799892db5138e5f1f8c25db0c">More...</a><br /></td></tr> -<tr class="separator:a2936402799892db5138e5f1f8c25db0c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3031b7ff13f4cfae9c2916543be2877c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#a3031b7ff13f4cfae9c2916543be2877c">ucx_logger_trace</a>(logger, ...)   <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, <a class="el" href="logging_8h.html#a55b88d1fec7036d841b3ddd6195c5586">UCX_LOGGER_TRACE</a>, __VA_ARGS__)</td></tr> -<tr class="memdesc:a3031b7ff13f4cfae9c2916543be2877c"><td class="mdescLeft"> </td><td class="mdescRight">Shortcut for logging a trace message. <a href="#a3031b7ff13f4cfae9c2916543be2877c">More...</a><br /></td></tr> -<tr class="separator:a3031b7ff13f4cfae9c2916543be2877c"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:ac560f8517d2172794c9d2691735ec48c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxLogger.html">UcxLogger</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#ac560f8517d2172794c9d2691735ec48c">ucx_logger_new</a> (void *stream, unsigned int level, unsigned int mask)</td></tr> -<tr class="memdesc:ac560f8517d2172794c9d2691735ec48c"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new logger. <a href="#ac560f8517d2172794c9d2691735ec48c">More...</a><br /></td></tr> -<tr class="separator:ac560f8517d2172794c9d2691735ec48c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac4697b784e01ec990d2acea192e21658"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#ac4697b784e01ec990d2acea192e21658">ucx_logger_free</a> (<a class="el" href="structUcxLogger.html">UcxLogger</a> *logger)</td></tr> -<tr class="memdesc:ac4697b784e01ec990d2acea192e21658"><td class="mdescLeft"> </td><td class="mdescRight">Destroys the logger. <a href="#ac4697b784e01ec990d2acea192e21658">More...</a><br /></td></tr> -<tr class="separator:ac4697b784e01ec990d2acea192e21658"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac337e5d02ebea565012d4c11bd643801"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801">ucx_logger_logf</a> (<a class="el" href="structUcxLogger.html">UcxLogger</a> *logger, unsigned int level, const char *file, const unsigned int line, const char *format,...)</td></tr> -<tr class="memdesc:ac337e5d02ebea565012d4c11bd643801"><td class="mdescLeft"> </td><td class="mdescRight">Internal log function - use macros instead. <a href="#ac337e5d02ebea565012d4c11bd643801">More...</a><br /></td></tr> -<tr class="separator:ac337e5d02ebea565012d4c11bd643801"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Logging API. </p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker, Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="acff01d1ef919ea997cfce755fc1b83d8"></a> -<h2 class="memtitle"><span class="permalink"><a href="#acff01d1ef919ea997cfce755fc1b83d8">◆ </a></span>UCX_LOGGER_DEBUG</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_LOGGER_DEBUG   0x30</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Log level for debug messages. </p> - -</div> -</div> -<a id="a2936402799892db5138e5f1f8c25db0c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2936402799892db5138e5f1f8c25db0c">◆ </a></span>ucx_logger_debug</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_logger_debug</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">logger, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, <a class="el" href="logging_8h.html#acff01d1ef919ea997cfce755fc1b83d8">UCX_LOGGER_DEBUG</a>, __VA_ARGS__)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shortcut for logging a debug message. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">logger</td><td>the logger to use </td></tr> - <tr><td class="paramname">...</td><td>format string and arguments </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801" title="Internal log function - use macros instead. ">ucx_logger_logf()</a> </dd></dl> - -</div> -</div> -<a id="aa254c07fe3a907613e2256a318d5c9a8"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa254c07fe3a907613e2256a318d5c9a8">◆ </a></span>UCX_LOGGER_ERROR</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_LOGGER_ERROR   0x00</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Log level for error messages. </p> - -</div> -</div> -<a id="a6a9e472e14d6768e59d96d245e065397"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6a9e472e14d6768e59d96d245e065397">◆ </a></span>ucx_logger_error</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_logger_error</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">logger, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, <a class="el" href="logging_8h.html#aa254c07fe3a907613e2256a318d5c9a8">UCX_LOGGER_ERROR</a>, __VA_ARGS__)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shortcut for logging an error message. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">logger</td><td>the logger to use </td></tr> - <tr><td class="paramname">...</td><td>format string and arguments </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801" title="Internal log function - use macros instead. ">ucx_logger_logf()</a> </dd></dl> - -</div> -</div> -<a id="a4b0178bf60a6129373ffc59114ca4c9b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4b0178bf60a6129373ffc59114ca4c9b">◆ </a></span>UCX_LOGGER_INFO</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_LOGGER_INFO   0x20</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Log level for information messages. </p> - -</div> -</div> -<a id="a98464d8d51376ce2716dcc4eca00d5da"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a98464d8d51376ce2716dcc4eca00d5da">◆ </a></span>ucx_logger_info</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_logger_info</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">logger, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, <a class="el" href="logging_8h.html#a4b0178bf60a6129373ffc59114ca4c9b">UCX_LOGGER_INFO</a>, __VA_ARGS__)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shortcut for logging an information message. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">logger</td><td>the logger to use </td></tr> - <tr><td class="paramname">...</td><td>format string and arguments </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801" title="Internal log function - use macros instead. ">ucx_logger_logf()</a> </dd></dl> - -</div> -</div> -<a id="aee18bc20e58ffb69910121512c350839"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aee18bc20e58ffb69910121512c350839">◆ </a></span>UCX_LOGGER_LEVEL</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_LOGGER_LEVEL   0x01</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Output flag for the log level. </p> -<p>If this flag is set, the log message will contain the log level. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c" title="A configuration mask for automatic output. ">UcxLogger.mask</a> </dd></dl> - -</div> -</div> -<a id="aa0245325031d95799b28def177fd14ec"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa0245325031d95799b28def177fd14ec">◆ </a></span>ucx_logger_log</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_logger_log</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">logger, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">level, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801">ucx_logger_logf</a>(logger, level, __FILE__, __LINE__, __VA_ARGS__)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Logs a message at the specified level. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">logger</td><td>the logger to use </td></tr> - <tr><td class="paramname">level</td><td>the level to log the message on </td></tr> - <tr><td class="paramname">...</td><td>format string and arguments </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801" title="Internal log function - use macros instead. ">ucx_logger_logf()</a> </dd></dl> - -</div> -</div> -<a id="a5cffc19502c4c90bfb3bd3bbcd18170a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a5cffc19502c4c90bfb3bd3bbcd18170a">◆ </a></span>ucx_logger_register_level</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_logger_register_level</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">logger, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">level, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">name </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line">{\</div><div class="line"> unsigned <span class="keywordtype">int</span> l; \</div><div class="line"> l = level; \</div><div class="line"> ucx_map_int_put(logger->levels, l, (<span class="keywordtype">void</span>*) <span class="stringliteral">"["</span> name <span class="stringliteral">"]"</span>); \</div><div class="line"> } <span class="keywordflow">while</span> (0);</div></div><!-- fragment --> -<p>Registers a custom log level. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">logger</td><td>the logger </td></tr> - <tr><td class="paramname">level</td><td>the log level as unsigned integer </td></tr> - <tr><td class="paramname">name</td><td>a string literal describing the level </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a0e0d72b12616c1e49ff8834eaf4cb8a2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a0e0d72b12616c1e49ff8834eaf4cb8a2">◆ </a></span>UCX_LOGGER_SOURCE</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_LOGGER_SOURCE   0x04</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Output flag for the source. </p> -<p>If this flag is set, the log message will contain the source file and line number. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c" title="A configuration mask for automatic output. ">UcxLogger.mask</a> </dd></dl> - -</div> -</div> -<a id="a38607008268b4f776ee500fb95d2e823"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a38607008268b4f776ee500fb95d2e823">◆ </a></span>UCX_LOGGER_TIMESTAMP</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_LOGGER_TIMESTAMP   0x02</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Output flag for the timestmap. </p> -<p>If this flag is set, the log message will contain the timestmap. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c" title="A configuration mask for automatic output. ">UcxLogger.mask</a> </dd></dl> - -</div> -</div> -<a id="a55b88d1fec7036d841b3ddd6195c5586"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a55b88d1fec7036d841b3ddd6195c5586">◆ </a></span>UCX_LOGGER_TRACE</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_LOGGER_TRACE   0x40</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Log level for trace messages. </p> - -</div> -</div> -<a id="a3031b7ff13f4cfae9c2916543be2877c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3031b7ff13f4cfae9c2916543be2877c">◆ </a></span>ucx_logger_trace</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_logger_trace</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">logger, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, <a class="el" href="logging_8h.html#a55b88d1fec7036d841b3ddd6195c5586">UCX_LOGGER_TRACE</a>, __VA_ARGS__)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shortcut for logging a trace message. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">logger</td><td>the logger to use </td></tr> - <tr><td class="paramname">...</td><td>format string and arguments </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801" title="Internal log function - use macros instead. ">ucx_logger_logf()</a> </dd></dl> - -</div> -</div> -<a id="abd01ca11486226ba34e8f7028d9fffba"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abd01ca11486226ba34e8f7028d9fffba">◆ </a></span>UCX_LOGGER_WARN</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_LOGGER_WARN   0x10</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Log level for warning messages. </p> - -</div> -</div> -<a id="aca7bd861b646892813fd7310c0aa69af"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aca7bd861b646892813fd7310c0aa69af">◆ </a></span>ucx_logger_warn</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_logger_warn</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">logger, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec">ucx_logger_log</a>(logger, <a class="el" href="logging_8h.html#abd01ca11486226ba34e8f7028d9fffba">UCX_LOGGER_WARN</a>, __VA_ARGS__)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shortcut for logging a warning message. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">logger</td><td>the logger to use </td></tr> - <tr><td class="paramname">...</td><td>format string and arguments </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801" title="Internal log function - use macros instead. ">ucx_logger_logf()</a> </dd></dl> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="ac4697b784e01ec990d2acea192e21658"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac4697b784e01ec990d2acea192e21658">◆ </a></span>ucx_logger_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_logger_free </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxLogger.html">UcxLogger</a> * </td> - <td class="paramname"><em>logger</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys the logger. </p> -<p>The map containing the valid log levels is also automatically destroyed.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">logger</td><td>the logger to destroy </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="ac337e5d02ebea565012d4c11bd643801"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac337e5d02ebea565012d4c11bd643801">◆ </a></span>ucx_logger_logf()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_logger_logf </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxLogger.html">UcxLogger</a> * </td> - <td class="paramname"><em>logger</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">unsigned int </td> - <td class="paramname"><em>level</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const char * </td> - <td class="paramname"><em>file</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const unsigned int </td> - <td class="paramname"><em>line</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const char * </td> - <td class="paramname"><em>format</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Internal log function - use macros instead. </p> -<p>This function uses the <code>format</code> and variadic arguments for a printf()-style output of the log message.</p> -<p>Dependent on the <a class="el" href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c" title="A configuration mask for automatic output. ">UcxLogger.mask</a> some information is prepended. The complete format is:</p> -<p><code>[LEVEL] [TIMESTAMP] [SOURCEFILE]:[LINENO] message</code></p> -<p><b>Attention:</b> the message (including automatically generated information) is limited to 4096 characters. The level description is limited to 256 characters and the timestamp string is limited to 128 characters.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">logger</td><td>the logger to use </td></tr> - <tr><td class="paramname">level</td><td>the level to log on </td></tr> - <tr><td class="paramname">file</td><td>information about the source file </td></tr> - <tr><td class="paramname">line</td><td>information about the source line number </td></tr> - <tr><td class="paramname">format</td><td>format string </td></tr> - <tr><td class="paramname">...</td><td>arguments </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="logging_8h.html#aa0245325031d95799b28def177fd14ec" title="Logs a message at the specified level. ">ucx_logger_log()</a> </dd></dl> - -</div> -</div> -<a id="ac560f8517d2172794c9d2691735ec48c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac560f8517d2172794c9d2691735ec48c">◆ </a></span>ucx_logger_new()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxLogger.html">UcxLogger</a>* ucx_logger_new </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>stream</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">unsigned int </td> - <td class="paramname"><em>level</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">unsigned int </td> - <td class="paramname"><em>mask</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new logger. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stream</td><td>the stream, which the logger shall write to </td></tr> - <tr><td class="paramname">level</td><td>the level on which the logger shall operate </td></tr> - <tr><td class="paramname">mask</td><td>configuration mask (cf. <a class="el" href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c" title="A configuration mask for automatic output. ">UcxLogger.mask</a>) </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new logger object </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/logging_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/logging.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">logging.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="logging_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#ifndef UCX_LOGGING_H</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define UCX_LOGGING_H</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "<a class="code" href="map_8h.html">map.h</a>"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="string_8h.html">string.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">/* leave enough space for custom log levels */</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="logging_8h.html#aa254c07fe3a907613e2256a318d5c9a8"> 49</a></span> <span class="preprocessor">#define UCX_LOGGER_ERROR 0x00</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="logging_8h.html#abd01ca11486226ba34e8f7028d9fffba"> 52</a></span> <span class="preprocessor">#define UCX_LOGGER_WARN 0x10</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="logging_8h.html#a4b0178bf60a6129373ffc59114ca4c9b"> 55</a></span> <span class="preprocessor">#define UCX_LOGGER_INFO 0x20</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="logging_8h.html#acff01d1ef919ea997cfce755fc1b83d8"> 58</a></span> <span class="preprocessor">#define UCX_LOGGER_DEBUG 0x30</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="logging_8h.html#a55b88d1fec7036d841b3ddd6195c5586"> 61</a></span> <span class="preprocessor">#define UCX_LOGGER_TRACE 0x40</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="logging_8h.html#aee18bc20e58ffb69910121512c350839"> 68</a></span> <span class="preprocessor">#define UCX_LOGGER_LEVEL 0x01</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="logging_8h.html#a38607008268b4f776ee500fb95d2e823"> 75</a></span> <span class="preprocessor">#define UCX_LOGGER_TIMESTAMP 0x02</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="logging_8h.html#a0e0d72b12616c1e49ff8834eaf4cb8a2"> 83</a></span> <span class="preprocessor">#define UCX_LOGGER_SOURCE 0x04</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="structUcxLogger.html"> 88</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="structUcxLogger.html#a33fddf4791e8d49e479ecc78bf5d1b9e"> 90</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structUcxLogger.html#a33fddf4791e8d49e479ecc78bf5d1b9e">stream</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="structUcxLogger.html#ada13bba090a9dc4f8d6cd9be73c60930"> 97</a></span>  <a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> <a class="code" href="structUcxLogger.html#ada13bba090a9dc4f8d6cd9be73c60930">writer</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structUcxLogger.html#a086f75df0f6c81ec491f25c0a4d9262b"> 104</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structUcxLogger.html#a086f75df0f6c81ec491f25c0a4d9262b">dateformat</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="structUcxLogger.html#a2e0ee94c25b2307096c7970280d189cd"> 111</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structUcxLogger.html#a2e0ee94c25b2307096c7970280d189cd">level</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c"> 119</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c">mask</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="structUcxLogger.html#a187129f7bc6e5064b3d92a5f1217f396"> 132</a></span>  <a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="structUcxLogger.html#a187129f7bc6e5064b3d92a5f1217f396">levels</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> } <a class="code" href="structUcxLogger.html">UcxLogger</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <a class="code" href="structUcxLogger.html">UcxLogger</a> *<a class="code" href="logging_8h.html#ac560f8517d2172794c9d2691735ec48c">ucx_logger_new</a>(<span class="keywordtype">void</span> *stream, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> level, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mask);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keywordtype">void</span> <a class="code" href="logging_8h.html#ac4697b784e01ec990d2acea192e21658">ucx_logger_free</a>(<a class="code" href="structUcxLogger.html">UcxLogger</a>* logger);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keywordtype">void</span> <a class="code" href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801">ucx_logger_logf</a>(<a class="code" href="structUcxLogger.html">UcxLogger</a> *logger, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* file,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="logging_8h.html#a5cffc19502c4c90bfb3bd3bbcd18170a"> 185</a></span> <span class="preprocessor">#define ucx_logger_register_level(logger, level, name) {\</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor"> unsigned int l; \</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor"> l = level; \</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor"> ucx_map_int_put(logger->levels, l, (void*) "[" name "]"); \</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="preprocessor"> } while (0);</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="logging_8h.html#aa0245325031d95799b28def177fd14ec"> 198</a></span> <span class="preprocessor">#define ucx_logger_log(logger, level, ...) \</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor"> ucx_logger_logf(logger, level, __FILE__, __LINE__, __VA_ARGS__)</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="logging_8h.html#a6a9e472e14d6768e59d96d245e065397"> 207</a></span> <span class="preprocessor">#define ucx_logger_error(logger, ...) \</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor"> ucx_logger_log(logger, UCX_LOGGER_ERROR, __VA_ARGS__)</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="logging_8h.html#a98464d8d51376ce2716dcc4eca00d5da"> 216</a></span> <span class="preprocessor">#define ucx_logger_info(logger, ...) \</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor"> ucx_logger_log(logger, UCX_LOGGER_INFO, __VA_ARGS__)</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="logging_8h.html#aca7bd861b646892813fd7310c0aa69af"> 225</a></span> <span class="preprocessor">#define ucx_logger_warn(logger, ...) \</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor"> ucx_logger_log(logger, UCX_LOGGER_WARN, __VA_ARGS__)</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="logging_8h.html#a2936402799892db5138e5f1f8c25db0c"> 234</a></span> <span class="preprocessor">#define ucx_logger_debug(logger, ...) \</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="preprocessor"> ucx_logger_log(logger, UCX_LOGGER_DEBUG, __VA_ARGS__)</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="logging_8h.html#a3031b7ff13f4cfae9c2916543be2877c"> 243</a></span> <span class="preprocessor">#define ucx_logger_trace(logger, ...) \</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor"> ucx_logger_log(logger, UCX_LOGGER_TRACE, __VA_ARGS__)</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_LOGGING_H */</span><span class="preprocessor"></span></div><div class="ttc" id="structUcxLogger_html_ada13bba090a9dc4f8d6cd9be73c60930"><div class="ttname"><a href="structUcxLogger.html#ada13bba090a9dc4f8d6cd9be73c60930">UcxLogger::writer</a></div><div class="ttdeci">write_func writer</div><div class="ttdoc">The write function that shall be used. </div><div class="ttdef"><b>Definition:</b> logging.h:97</div></div> -<div class="ttc" id="string_8h_html"><div class="ttname"><a href="string_8h.html">string.h</a></div><div class="ttdoc">Bounded string implementation. </div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="structUcxLogger_html"><div class="ttname"><a href="structUcxLogger.html">UcxLogger</a></div><div class="ttdoc">The UCX Logger object. </div><div class="ttdef"><b>Definition:</b> logging.h:88</div></div> -<div class="ttc" id="structUcxLogger_html_a086f75df0f6c81ec491f25c0a4d9262b"><div class="ttname"><a href="structUcxLogger.html#a086f75df0f6c81ec491f25c0a4d9262b">UcxLogger::dateformat</a></div><div class="ttdeci">char * dateformat</div><div class="ttdoc">The date format for timestamp outputs including the delimiter (default: "%F %T %z ")...</div><div class="ttdef"><b>Definition:</b> logging.h:104</div></div> -<div class="ttc" id="structUcxLogger_html_a1de0db2e02dcf03366268f6943f8b97c"><div class="ttname"><a href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c">UcxLogger::mask</a></div><div class="ttdeci">unsigned int mask</div><div class="ttdoc">A configuration mask for automatic output. </div><div class="ttdef"><b>Definition:</b> logging.h:119</div></div> -<div class="ttc" id="logging_8h_html_ac560f8517d2172794c9d2691735ec48c"><div class="ttname"><a href="logging_8h.html#ac560f8517d2172794c9d2691735ec48c">ucx_logger_new</a></div><div class="ttdeci">UcxLogger * ucx_logger_new(void *stream, unsigned int level, unsigned int mask)</div><div class="ttdoc">Creates a new logger. </div><div class="ttdef"><b>Definition:</b> logging.c:36</div></div> -<div class="ttc" id="structUcxLogger_html_a33fddf4791e8d49e479ecc78bf5d1b9e"><div class="ttname"><a href="structUcxLogger.html#a33fddf4791e8d49e479ecc78bf5d1b9e">UcxLogger::stream</a></div><div class="ttdeci">void * stream</div><div class="ttdoc">The stream this logger writes its messages to. </div><div class="ttdef"><b>Definition:</b> logging.h:90</div></div> -<div class="ttc" id="structUcxMap_html"><div class="ttname"><a href="structUcxMap.html">UcxMap</a></div><div class="ttdoc">Structure for the UCX map. </div><div class="ttdef"><b>Definition:</b> map.h:81</div></div> -<div class="ttc" id="map_8h_html"><div class="ttname"><a href="map_8h.html">map.h</a></div><div class="ttdoc">Hash map implementation. </div></div> -<div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> -<div class="ttc" id="structUcxLogger_html_a187129f7bc6e5064b3d92a5f1217f396"><div class="ttname"><a href="structUcxLogger.html#a187129f7bc6e5064b3d92a5f1217f396">UcxLogger::levels</a></div><div class="ttdeci">UcxMap * levels</div><div class="ttdoc">A map of valid log levels for this logger. </div><div class="ttdef"><b>Definition:</b> logging.h:132</div></div> -<div class="ttc" id="structUcxLogger_html_a2e0ee94c25b2307096c7970280d189cd"><div class="ttname"><a href="structUcxLogger.html#a2e0ee94c25b2307096c7970280d189cd">UcxLogger::level</a></div><div class="ttdeci">unsigned int level</div><div class="ttdoc">The level, this logger operates on. </div><div class="ttdef"><b>Definition:</b> logging.h:111</div></div> -<div class="ttc" id="logging_8h_html_ac337e5d02ebea565012d4c11bd643801"><div class="ttname"><a href="logging_8h.html#ac337e5d02ebea565012d4c11bd643801">ucx_logger_logf</a></div><div class="ttdeci">void ucx_logger_logf(UcxLogger *logger, unsigned int level, const char *file, const unsigned int line, const char *format,...)</div><div class="ttdoc">Internal log function - use macros instead. </div><div class="ttdef"><b>Definition:</b> logging.c:70</div></div> -<div class="ttc" id="logging_8h_html_ac4697b784e01ec990d2acea192e21658"><div class="ttname"><a href="logging_8h.html#ac4697b784e01ec990d2acea192e21658">ucx_logger_free</a></div><div class="ttdeci">void ucx_logger_free(UcxLogger *logger)</div><div class="ttdoc">Destroys the logger. </div><div class="ttdef"><b>Definition:</b> logging.c:62</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/map_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1689 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/map.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#typedef-members">Typedefs</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">map.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Hash map implementation. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include "<a class="el" href="string_8h_source.html">string.h</a>"</code><br /> -<code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> -<code>#include <stdio.h></code><br /> -</div> -<p><a href="map_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMap.html">UcxMap</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Structure for the UCX map. <a href="structUcxMap.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxKey.html">UcxKey</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Structure to publicly denote a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. <a href="structUcxKey.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapKey.html">UcxMapKey</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Internal structure for a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. <a href="structUcxMapKey.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapElement.html">UcxMapElement</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Structure for an element of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. <a href="structUcxMapElement.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Structure for an iterator over a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. <a href="structUcxMapIterator.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:a940896c4aa1b13e54c55c04c3efc186b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a940896c4aa1b13e54c55c04c3efc186b">UCX_MAP_FOREACH</a>(key, value, iter)   for(<a class="el" href="structUcxKey.html">UcxKey</a> key;<a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a>(&iter,&key, (void**)&value);)</td></tr> -<tr class="memdesc:a940896c4aa1b13e54c55c04c3efc186b"><td class="mdescLeft"> </td><td class="mdescRight">Loop statement for UCX maps. <a href="#a940896c4aa1b13e54c55c04c3efc186b">More...</a><br /></td></tr> -<tr class="separator:a940896c4aa1b13e54c55c04c3efc186b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac26a8615bfc8f47ee9eaceb47645f98e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ac26a8615bfc8f47ee9eaceb47645f98e">ucx_map_sstr_put</a>(map, key, value)   <a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length), (void*)value)</td></tr> -<tr class="memdesc:ac26a8615bfc8f47ee9eaceb47645f98e"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for putting data with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key into the map. <a href="#ac26a8615bfc8f47ee9eaceb47645f98e">More...</a><br /></td></tr> -<tr class="separator:ac26a8615bfc8f47ee9eaceb47645f98e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad9356b01425b934ab237b52339ac0cc3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad9356b01425b934ab237b52339ac0cc3">ucx_map_cstr_put</a>(map, key, value)   <a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)), (void*)value)</td></tr> -<tr class="memdesc:ad9356b01425b934ab237b52339ac0cc3"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for putting data with a C string key into the map. <a href="#ad9356b01425b934ab237b52339ac0cc3">More...</a><br /></td></tr> -<tr class="separator:ad9356b01425b934ab237b52339ac0cc3"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aaa30af79b4068c923895619e83f44367"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aaa30af79b4068c923895619e83f44367">ucx_map_int_put</a>(map, key, value)   <a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&key, sizeof(key)), (void*)value)</td></tr> -<tr class="memdesc:aaa30af79b4068c923895619e83f44367"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for putting data with an integer key into the map. <a href="#aaa30af79b4068c923895619e83f44367">More...</a><br /></td></tr> -<tr class="separator:aaa30af79b4068c923895619e83f44367"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a14d385f6b7f371f0507861cabd2eab4e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a14d385f6b7f371f0507861cabd2eab4e">ucx_map_sstr_get</a>(map, key)   <a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length))</td></tr> -<tr class="memdesc:a14d385f6b7f371f0507861cabd2eab4e"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for getting data from the map with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key. <a href="#a14d385f6b7f371f0507861cabd2eab4e">More...</a><br /></td></tr> -<tr class="separator:a14d385f6b7f371f0507861cabd2eab4e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a64e1fb55498fa502dd2ed8ed69062cdd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a64e1fb55498fa502dd2ed8ed69062cdd">ucx_map_cstr_get</a>(map, key)   <a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)))</td></tr> -<tr class="memdesc:a64e1fb55498fa502dd2ed8ed69062cdd"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for getting data from the map with a C string key. <a href="#a64e1fb55498fa502dd2ed8ed69062cdd">More...</a><br /></td></tr> -<tr class="separator:a64e1fb55498fa502dd2ed8ed69062cdd"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa1681bd2178553cd092fd24c4d681d3c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aa1681bd2178553cd092fd24c4d681d3c">ucx_map_int_get</a>(map, key)   <a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&key, sizeof(int)))</td></tr> -<tr class="memdesc:aa1681bd2178553cd092fd24c4d681d3c"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for getting data from the map with an integer key. <a href="#aa1681bd2178553cd092fd24c4d681d3c">More...</a><br /></td></tr> -<tr class="separator:aa1681bd2178553cd092fd24c4d681d3c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a48700ea86fadb9ea54d13010f9124df2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a48700ea86fadb9ea54d13010f9124df2">ucx_map_sstr_remove</a>(map, key)   <a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length))</td></tr> -<tr class="memdesc:a48700ea86fadb9ea54d13010f9124df2"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for removing data from the map with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key. <a href="#a48700ea86fadb9ea54d13010f9124df2">More...</a><br /></td></tr> -<tr class="separator:a48700ea86fadb9ea54d13010f9124df2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9c4405a5a75ecf64e2ef3d0c6501a9fe"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a9c4405a5a75ecf64e2ef3d0c6501a9fe">ucx_map_cstr_remove</a>(map, key)   <a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)))</td></tr> -<tr class="memdesc:a9c4405a5a75ecf64e2ef3d0c6501a9fe"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for removing data from the map with a C string key. <a href="#a9c4405a5a75ecf64e2ef3d0c6501a9fe">More...</a><br /></td></tr> -<tr class="separator:a9c4405a5a75ecf64e2ef3d0c6501a9fe"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa767958b5468737755c09f7185b1770c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aa767958b5468737755c09f7185b1770c">ucx_map_int_remove</a>(map, key)   <a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&key, sizeof(key)))</td></tr> -<tr class="memdesc:aa767958b5468737755c09f7185b1770c"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for removing data from the map with an integer key. <a href="#aa767958b5468737755c09f7185b1770c">More...</a><br /></td></tr> -<tr class="separator:aa767958b5468737755c09f7185b1770c"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> -Typedefs</h2></td></tr> -<tr class="memitem:a18e21948725b2da68c35da587a722033"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxMap.html">UcxMap</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a18e21948725b2da68c35da587a722033">UcxMap</a></td></tr> -<tr class="memdesc:a18e21948725b2da68c35da587a722033"><td class="mdescLeft"> </td><td class="mdescRight">Type for the UCX map. <a href="#a18e21948725b2da68c35da587a722033">More...</a><br /></td></tr> -<tr class="separator:a18e21948725b2da68c35da587a722033"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad63828bb23123fc01a5315a2bac3b142"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxKey.html">UcxKey</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad63828bb23123fc01a5315a2bac3b142">UcxKey</a></td></tr> -<tr class="memdesc:ad63828bb23123fc01a5315a2bac3b142"><td class="mdescLeft"> </td><td class="mdescRight">Type for a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. <a href="#ad63828bb23123fc01a5315a2bac3b142">More...</a><br /></td></tr> -<tr class="separator:ad63828bb23123fc01a5315a2bac3b142"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad7d7a910a32113eb93eae11c3dc97b4b"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxMapElement.html">UcxMapElement</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad7d7a910a32113eb93eae11c3dc97b4b">UcxMapElement</a></td></tr> -<tr class="memdesc:ad7d7a910a32113eb93eae11c3dc97b4b"><td class="mdescLeft"> </td><td class="mdescRight">Type for an element of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. <a href="#ad7d7a910a32113eb93eae11c3dc97b4b">More...</a><br /></td></tr> -<tr class="separator:ad7d7a910a32113eb93eae11c3dc97b4b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae36aff5f645948c54f51578b11fd87fb"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ae36aff5f645948c54f51578b11fd87fb">UcxMapIterator</a></td></tr> -<tr class="memdesc:ae36aff5f645948c54f51578b11fd87fb"><td class="mdescLeft"> </td><td class="mdescRight">Type for an iterator over a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. <a href="#ae36aff5f645948c54f51578b11fd87fb">More...</a><br /></td></tr> -<tr class="separator:ae36aff5f645948c54f51578b11fd87fb"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:a79f31de8b93814493759dbc8b940cf0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a79f31de8b93814493759dbc8b940cf0c">ucx_map_new</a> (size_t size)</td></tr> -<tr class="memdesc:a79f31de8b93814493759dbc8b940cf0c"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new hash map with the specified size. <a href="#a79f31de8b93814493759dbc8b940cf0c">More...</a><br /></td></tr> -<tr class="separator:a79f31de8b93814493759dbc8b940cf0c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aed508a94c66cc15372503c64b70eb03e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aed508a94c66cc15372503c64b70eb03e">ucx_map_new_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, size_t size)</td></tr> -<tr class="memdesc:aed508a94c66cc15372503c64b70eb03e"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new hash map with the specified size using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#aed508a94c66cc15372503c64b70eb03e">More...</a><br /></td></tr> -<tr class="separator:aed508a94c66cc15372503c64b70eb03e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:abe3d9688e4224bf7bb962abf25ff8c2e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e">ucx_map_free</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map)</td></tr> -<tr class="memdesc:abe3d9688e4224bf7bb962abf25ff8c2e"><td class="mdescLeft"> </td><td class="mdescRight">Frees a hash map. <a href="#abe3d9688e4224bf7bb962abf25ff8c2e">More...</a><br /></td></tr> -<tr class="separator:abe3d9688e4224bf7bb962abf25ff8c2e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a750f3d9d83e2f3788a14c17a9d160618"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618">ucx_map_free_content</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map, <a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr)</td></tr> -<tr class="memdesc:a750f3d9d83e2f3788a14c17a9d160618"><td class="mdescLeft"> </td><td class="mdescRight">Frees the contents of a hash map. <a href="#a750f3d9d83e2f3788a14c17a9d160618">More...</a><br /></td></tr> -<tr class="separator:a750f3d9d83e2f3788a14c17a9d160618"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a285e90e40681c6d9631c935dda0967f2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a285e90e40681c6d9631c935dda0967f2">ucx_map_clear</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map)</td></tr> -<tr class="memdesc:a285e90e40681c6d9631c935dda0967f2"><td class="mdescLeft"> </td><td class="mdescRight">Clears a hash map. <a href="#a285e90e40681c6d9631c935dda0967f2">More...</a><br /></td></tr> -<tr class="separator:a285e90e40681c6d9631c935dda0967f2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:adfeb2d61003fd2896bcfdc9a57f36425"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425">ucx_map_copy</a> (<a class="el" href="structUcxMap.html">UcxMap</a> const *from, <a class="el" href="structUcxMap.html">UcxMap</a> *to, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, void *data)</td></tr> -<tr class="memdesc:adfeb2d61003fd2896bcfdc9a57f36425"><td class="mdescLeft"> </td><td class="mdescRight">Copies contents from a map to another map using a copy function. <a href="#adfeb2d61003fd2896bcfdc9a57f36425">More...</a><br /></td></tr> -<tr class="separator:adfeb2d61003fd2896bcfdc9a57f36425"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a62c6c30cbb0d824ba710f5030ff9a4e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a62c6c30cbb0d824ba710f5030ff9a4e4">ucx_map_clone</a> (<a class="el" href="structUcxMap.html">UcxMap</a> const *map, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, void *data)</td></tr> -<tr class="memdesc:a62c6c30cbb0d824ba710f5030ff9a4e4"><td class="mdescLeft"> </td><td class="mdescRight">Clones the map and rehashes if necessary. <a href="#a62c6c30cbb0d824ba710f5030ff9a4e4">More...</a><br /></td></tr> -<tr class="separator:a62c6c30cbb0d824ba710f5030ff9a4e4"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9aea9103703d5c168420bb6bf85549ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a9aea9103703d5c168420bb6bf85549ea">ucx_map_clone_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structUcxMap.html">UcxMap</a> const *map, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, void *data)</td></tr> -<tr class="memdesc:a9aea9103703d5c168420bb6bf85549ea"><td class="mdescLeft"> </td><td class="mdescRight">Clones the map and rehashes if necessary. <a href="#a9aea9103703d5c168420bb6bf85549ea">More...</a><br /></td></tr> -<tr class="separator:a9aea9103703d5c168420bb6bf85549ea"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a174bce9fad554dd92b8da354e0d32512"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a174bce9fad554dd92b8da354e0d32512">ucx_map_rehash</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map)</td></tr> -<tr class="memdesc:a174bce9fad554dd92b8da354e0d32512"><td class="mdescLeft"> </td><td class="mdescRight">Increases size of the hash map, if necessary. <a href="#a174bce9fad554dd92b8da354e0d32512">More...</a><br /></td></tr> -<tr class="separator:a174bce9fad554dd92b8da354e0d32512"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac04a08b604217070254d4c58f0e82498"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map, <a class="el" href="structUcxKey.html">UcxKey</a> key, void *value)</td></tr> -<tr class="memdesc:ac04a08b604217070254d4c58f0e82498"><td class="mdescLeft"> </td><td class="mdescRight">Puts a key/value-pair into the map. <a href="#ac04a08b604217070254d4c58f0e82498">More...</a><br /></td></tr> -<tr class="separator:ac04a08b604217070254d4c58f0e82498"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ab61192c5af2e06ecb9ad73880d1c95a6"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a> (<a class="el" href="structUcxMap.html">UcxMap</a> const *map, <a class="el" href="structUcxKey.html">UcxKey</a> key)</td></tr> -<tr class="memdesc:ab61192c5af2e06ecb9ad73880d1c95a6"><td class="mdescLeft"> </td><td class="mdescRight">Retrieves a value by using a key. <a href="#ab61192c5af2e06ecb9ad73880d1c95a6">More...</a><br /></td></tr> -<tr class="separator:ab61192c5af2e06ecb9ad73880d1c95a6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a17248a4888eb8f9ae18be522d64632aa"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map, <a class="el" href="structUcxKey.html">UcxKey</a> key)</td></tr> -<tr class="memdesc:a17248a4888eb8f9ae18be522d64632aa"><td class="mdescLeft"> </td><td class="mdescRight">Removes a key/value-pair from the map by using the key. <a href="#a17248a4888eb8f9ae18be522d64632aa">More...</a><br /></td></tr> -<tr class="separator:a17248a4888eb8f9ae18be522d64632aa"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3e540bb46b8ee19789aed63fd8919200"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxKey.html">UcxKey</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a> (const void *data, size_t len)</td></tr> -<tr class="memdesc:a3e540bb46b8ee19789aed63fd8919200"><td class="mdescLeft"> </td><td class="mdescRight">Creates a <a class="el" href="structUcxKey.html" title="Structure to publicly denote a key of a UcxMap. ">UcxKey</a> based on the given data. <a href="#a3e540bb46b8ee19789aed63fd8919200">More...</a><br /></td></tr> -<tr class="separator:a3e540bb46b8ee19789aed63fd8919200"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aea3be97254c05595d986ef6a9faae87b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aea3be97254c05595d986ef6a9faae87b">ucx_hash</a> (const char *data, size_t len)</td></tr> -<tr class="memdesc:aea3be97254c05595d986ef6a9faae87b"><td class="mdescLeft"> </td><td class="mdescRight">Computes a murmur hash-2. <a href="#aea3be97254c05595d986ef6a9faae87b">More...</a><br /></td></tr> -<tr class="separator:aea3be97254c05595d986ef6a9faae87b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9150e9c64fdf4dfcc2cad106b91aa110"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110">ucx_map_iterator</a> (<a class="el" href="structUcxMap.html">UcxMap</a> const *map)</td></tr> -<tr class="memdesc:a9150e9c64fdf4dfcc2cad106b91aa110"><td class="mdescLeft"> </td><td class="mdescRight">Creates an iterator for a map. <a href="#a9150e9c64fdf4dfcc2cad106b91aa110">More...</a><br /></td></tr> -<tr class="separator:a9150e9c64fdf4dfcc2cad106b91aa110"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aceb8675abf44860b4bbc301bbada5b91"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a> (<a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> *iterator, <a class="el" href="structUcxKey.html">UcxKey</a> *key, void **value)</td></tr> -<tr class="memdesc:aceb8675abf44860b4bbc301bbada5b91"><td class="mdescLeft"> </td><td class="mdescRight">Proceeds to the next element of the map (if any). <a href="#aceb8675abf44860b4bbc301bbada5b91">More...</a><br /></td></tr> -<tr class="separator:aceb8675abf44860b4bbc301bbada5b91"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3f65978c481af7f637cad021d93522d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a3f65978c481af7f637cad021d93522d5">ucx_map_union</a> (const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:a3f65978c481af7f637cad021d93522d5"><td class="mdescLeft"> </td><td class="mdescRight">Returns the union of two maps. <a href="#a3f65978c481af7f637cad021d93522d5">More...</a><br /></td></tr> -<tr class="separator:a3f65978c481af7f637cad021d93522d5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ab6370c3fa8113fdad593ce4b0460c9c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ab6370c3fa8113fdad593ce4b0460c9c6">ucx_map_union_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:ab6370c3fa8113fdad593ce4b0460c9c6"><td class="mdescLeft"> </td><td class="mdescRight">Returns the union of two maps. <a href="#ab6370c3fa8113fdad593ce4b0460c9c6">More...</a><br /></td></tr> -<tr class="separator:ab6370c3fa8113fdad593ce4b0460c9c6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa594d7a5afebc3bed6bb265348cf6b0d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#aa594d7a5afebc3bed6bb265348cf6b0d">ucx_map_intersection</a> (const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:aa594d7a5afebc3bed6bb265348cf6b0d"><td class="mdescLeft"> </td><td class="mdescRight">Returns the intersection of two maps. <a href="#aa594d7a5afebc3bed6bb265348cf6b0d">More...</a><br /></td></tr> -<tr class="separator:aa594d7a5afebc3bed6bb265348cf6b0d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a169e0470a20484dd76425fdf77e3651e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a169e0470a20484dd76425fdf77e3651e">ucx_map_intersection_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:a169e0470a20484dd76425fdf77e3651e"><td class="mdescLeft"> </td><td class="mdescRight">Returns the intersection of two maps. <a href="#a169e0470a20484dd76425fdf77e3651e">More...</a><br /></td></tr> -<tr class="separator:a169e0470a20484dd76425fdf77e3651e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a774fcff87d1e58b6c5af77dd19a8c3dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#a774fcff87d1e58b6c5af77dd19a8c3dc">ucx_map_difference</a> (const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:a774fcff87d1e58b6c5af77dd19a8c3dc"><td class="mdescLeft"> </td><td class="mdescRight">Returns the difference of two maps. <a href="#a774fcff87d1e58b6c5af77dd19a8c3dc">More...</a><br /></td></tr> -<tr class="separator:a774fcff87d1e58b6c5af77dd19a8c3dc"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad0ba103494247d798ac3037c50fc8831"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="map_8h.html#ad0ba103494247d798ac3037c50fc8831">ucx_map_difference_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxMap.html">UcxMap</a> *first, const <a class="el" href="structUcxMap.html">UcxMap</a> *second, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr> -<tr class="memdesc:ad0ba103494247d798ac3037c50fc8831"><td class="mdescLeft"> </td><td class="mdescRight">Returns the difference of two maps. <a href="#ad0ba103494247d798ac3037c50fc8831">More...</a><br /></td></tr> -<tr class="separator:ad0ba103494247d798ac3037c50fc8831"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Hash map implementation. </p> -<p>This implementation uses murmur hash 2 and separate chaining with linked lists.</p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a64e1fb55498fa502dd2ed8ed69062cdd"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a64e1fb55498fa502dd2ed8ed69062cdd">◆ </a></span>ucx_map_cstr_get</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_map_cstr_get</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">map, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">key </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for getting data from the map with a C string key. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the value </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6" title="Retrieves a value by using a key. ">ucx_map_get()</a> </dd></dl> - -</div> -</div> -<a id="ad9356b01425b934ab237b52339ac0cc3"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad9356b01425b934ab237b52339ac0cc3">◆ </a></span>ucx_map_cstr_put</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_map_cstr_put</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">map, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">key, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">value </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)), (void*)value)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for putting data with a C string key into the map. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - <tr><td class="paramname">value</td><td>the value </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498" title="Puts a key/value-pair into the map. ">ucx_map_put()</a> </dd></dl> - -</div> -</div> -<a id="a9c4405a5a75ecf64e2ef3d0c6501a9fe"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9c4405a5a75ecf64e2ef3d0c6501a9fe">◆ </a></span>ucx_map_cstr_remove</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_map_cstr_remove</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">map, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">key </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key, strlen(key)))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for removing data from the map with a C string key. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa" title="Removes a key/value-pair from the map by using the key. ">ucx_map_remove()</a> </dd></dl> - -</div> -</div> -<a id="a940896c4aa1b13e54c55c04c3efc186b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a940896c4aa1b13e54c55c04c3efc186b">◆ </a></span>UCX_MAP_FOREACH</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_MAP_FOREACH</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">key, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">value, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">iter </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   for(<a class="el" href="structUcxKey.html">UcxKey</a> key;<a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a>(&iter,&key, (void**)&value);)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Loop statement for UCX maps. </p> -<p>The <code>key</code> variable is implicitly defined, but the <code>value</code> variable must be already declared as type information cannot be inferred.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">key</td><td>the variable name for the key </td></tr> - <tr><td class="paramname">value</td><td>the variable name for the value </td></tr> - <tr><td class="paramname">iter</td><td>a <a class="el" href="structUcxMapIterator.html" title="Structure for an iterator over a UcxMap. ">UcxMapIterator</a> </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110" title="Creates an iterator for a map. ">ucx_map_iterator()</a> </dd></dl> - -</div> -</div> -<a id="aa1681bd2178553cd092fd24c4d681d3c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa1681bd2178553cd092fd24c4d681d3c">◆ </a></span>ucx_map_int_get</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_map_int_get</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">map, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">key </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&key, sizeof(int)))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for getting data from the map with an integer key. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the value </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6" title="Retrieves a value by using a key. ">ucx_map_get()</a> </dd></dl> - -</div> -</div> -<a id="aaa30af79b4068c923895619e83f44367"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aaa30af79b4068c923895619e83f44367">◆ </a></span>ucx_map_int_put</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_map_int_put</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">map, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">key, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">value </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&key, sizeof(key)), (void*)value)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for putting data with an integer key into the map. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - <tr><td class="paramname">value</td><td>the value </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498" title="Puts a key/value-pair into the map. ">ucx_map_put()</a> </dd></dl> - -</div> -</div> -<a id="aa767958b5468737755c09f7185b1770c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa767958b5468737755c09f7185b1770c">◆ </a></span>ucx_map_int_remove</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_map_int_remove</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">map, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">key </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(&key, sizeof(key)))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for removing data from the map with an integer key. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa" title="Removes a key/value-pair from the map by using the key. ">ucx_map_remove()</a> </dd></dl> - -</div> -</div> -<a id="a14d385f6b7f371f0507861cabd2eab4e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a14d385f6b7f371f0507861cabd2eab4e">◆ </a></span>ucx_map_sstr_get</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_map_sstr_get</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">map, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">key </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for getting data from the map with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the value </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6" title="Retrieves a value by using a key. ">ucx_map_get()</a> </dd></dl> - -</div> -</div> -<a id="ac26a8615bfc8f47ee9eaceb47645f98e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac26a8615bfc8f47ee9eaceb47645f98e">◆ </a></span>ucx_map_sstr_put</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_map_sstr_put</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">map, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">key, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">value </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length), (void*)value)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for putting data with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key into the map. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - <tr><td class="paramname">value</td><td>the value </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#ac04a08b604217070254d4c58f0e82498" title="Puts a key/value-pair into the map. ">ucx_map_put()</a> </dd></dl> - -</div> -</div> -<a id="a48700ea86fadb9ea54d13010f9124df2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a48700ea86fadb9ea54d13010f9124df2">◆ </a></span>ucx_map_sstr_remove</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_map_sstr_remove</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">map, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">key </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(map, <a class="el" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(key.ptr, key.length))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for removing data from the map with a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> key. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa" title="Removes a key/value-pair from the map by using the key. ">ucx_map_remove()</a> </dd></dl> - -</div> -</div> -<h2 class="groupheader">Typedef Documentation</h2> -<a id="ad63828bb23123fc01a5315a2bac3b142"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad63828bb23123fc01a5315a2bac3b142">◆ </a></span>UcxKey</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef struct <a class="el" href="structUcxKey.html">UcxKey</a> <a class="el" href="structUcxKey.html">UcxKey</a></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Type for a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxKey.html" title="Structure to publicly denote a key of a UcxMap. ">UcxKey</a> </dd></dl> - -</div> -</div> -<a id="a18e21948725b2da68c35da587a722033"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a18e21948725b2da68c35da587a722033">◆ </a></span>UcxMap</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef struct <a class="el" href="structUcxMap.html">UcxMap</a> <a class="el" href="structUcxMap.html">UcxMap</a></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Type for the UCX map. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a> </dd></dl> - -</div> -</div> -<a id="ad7d7a910a32113eb93eae11c3dc97b4b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad7d7a910a32113eb93eae11c3dc97b4b">◆ </a></span>UcxMapElement</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef struct <a class="el" href="structUcxMapElement.html">UcxMapElement</a> <a class="el" href="structUcxMapElement.html">UcxMapElement</a></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Type for an element of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxMapElement.html" title="Structure for an element of a UcxMap. ">UcxMapElement</a> </dd></dl> - -</div> -</div> -<a id="ae36aff5f645948c54f51578b11fd87fb"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae36aff5f645948c54f51578b11fd87fb">◆ </a></span>UcxMapIterator</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef struct <a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> <a class="el" href="structUcxMapIterator.html">UcxMapIterator</a></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Type for an iterator over a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxMapIterator.html" title="Structure for an iterator over a UcxMap. ">UcxMapIterator</a> </dd></dl> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="aea3be97254c05595d986ef6a9faae87b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aea3be97254c05595d986ef6a9faae87b">◆ </a></span>ucx_hash()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_hash </td> - <td>(</td> - <td class="paramtype">const char * </td> - <td class="paramname"><em>data</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>len</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Computes a murmur hash-2. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">data</td><td>the data to hash </td></tr> - <tr><td class="paramname">len</td><td>the length of the data </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the murmur hash-2 of the data </dd></dl> - -</div> -</div> -<a id="a3e540bb46b8ee19789aed63fd8919200"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3e540bb46b8ee19789aed63fd8919200">◆ </a></span>ucx_key()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxKey.html">UcxKey</a> ucx_key </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>data</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>len</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a <a class="el" href="structUcxKey.html" title="Structure to publicly denote a key of a UcxMap. ">UcxKey</a> based on the given data. </p> -<p>This function implicitly computes the hash.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">data</td><td>the data for the key </td></tr> - <tr><td class="paramname">len</td><td>the length of the data </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structUcxKey.html" title="Structure to publicly denote a key of a UcxMap. ">UcxKey</a> with implicitly computed hash </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#aea3be97254c05595d986ef6a9faae87b" title="Computes a murmur hash-2. ">ucx_hash()</a> </dd></dl> - -</div> -</div> -<a id="a285e90e40681c6d9631c935dda0967f2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a285e90e40681c6d9631c935dda0967f2">◆ </a></span>ucx_map_clear()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_map_clear </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>map</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Clears a hash map. </p> -<p><b>Note:</b> the contents are <b>not</b> freed, use <a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618" title="Frees the contents of a hash map. ">ucx_map_free_content()</a> before calling this function to achieve that.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map to be cleared </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618" title="Frees the contents of a hash map. ">ucx_map_free_content()</a> </dd></dl> - -</div> -</div> -<a id="a62c6c30cbb0d824ba710f5030ff9a4e4"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a62c6c30cbb0d824ba710f5030ff9a4e4">◆ </a></span>ucx_map_clone()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_clone </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td> - <td class="paramname"><em>map</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>fnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Clones the map and rehashes if necessary. </p> -<p><b>Note:</b> In contrast to <a class="el" href="map_8h.html#a174bce9fad554dd92b8da354e0d32512" title="Increases size of the hash map, if necessary. ">ucx_map_rehash()</a> the load factor is irrelevant. This function <em>always</em> ensures a new <a class="el" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838" title="The size of the map is the length of the element list array. ">UcxMap.size</a> of at least 2.5*UcxMap.count.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map to clone </td></tr> - <tr><td class="paramname">fnc</td><td>the copy function to use or <code>NULL</code> if the new and the old map shall share the data pointers </td></tr> - <tr><td class="paramname">data</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the cloned map </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425" title="Copies contents from a map to another map using a copy function. ">ucx_map_copy()</a> </dd></dl> - -</div> -</div> -<a id="a9aea9103703d5c168420bb6bf85549ea"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9aea9103703d5c168420bb6bf85549ea">◆ </a></span>ucx_map_clone_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_clone_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td> - <td class="paramname"><em>map</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>fnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Clones the map and rehashes if necessary. </p> -<p><b>Note:</b> In contrast to <a class="el" href="map_8h.html#a174bce9fad554dd92b8da354e0d32512" title="Increases size of the hash map, if necessary. ">ucx_map_rehash()</a> the load factor is irrelevant. This function <em>always</em> ensures a new <a class="el" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838" title="The size of the map is the length of the element list array. ">UcxMap.size</a> of at least 2.5*UcxMap.count.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use for the cloned map </td></tr> - <tr><td class="paramname">map</td><td>the map to clone </td></tr> - <tr><td class="paramname">fnc</td><td>the copy function to use or <code>NULL</code> if the new and the old map shall share the data pointers </td></tr> - <tr><td class="paramname">data</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the cloned map </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425" title="Copies contents from a map to another map using a copy function. ">ucx_map_copy()</a> </dd></dl> - -</div> -</div> -<a id="adfeb2d61003fd2896bcfdc9a57f36425"></a> -<h2 class="memtitle"><span class="permalink"><a href="#adfeb2d61003fd2896bcfdc9a57f36425">◆ </a></span>ucx_map_copy()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_map_copy </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td> - <td class="paramname"><em>from</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>to</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>fnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Copies contents from a map to another map using a copy function. </p> -<p><b>Note:</b> The destination map does not need to be empty. However, if it contains data with keys that are also present in the source map, the contents are overwritten.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">from</td><td>the source map </td></tr> - <tr><td class="paramname">to</td><td>the destination map </td></tr> - <tr><td class="paramname">fnc</td><td>the copy function or <code>NULL</code> if the pointer address shall be copied </td></tr> - <tr><td class="paramname">data</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success or a non-zero value on memory allocation errors </dd></dl> - -</div> -</div> -<a id="a774fcff87d1e58b6c5af77dd19a8c3dc"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a774fcff87d1e58b6c5af77dd19a8c3dc">◆ </a></span>ucx_map_difference()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_difference </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>first</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>second</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the difference of two maps. </p> -<p>The difference contains a copy of all elements of the first map for which the corresponding keys cannot be found in the second map.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">first</td><td>the first source map </td></tr> - <tr><td class="paramname">second</td><td>the second source map </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new list containing the difference </dd></dl> - -</div> -</div> -<a id="ad0ba103494247d798ac3037c50fc8831"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad0ba103494247d798ac3037c50fc8831">◆ </a></span>ucx_map_difference_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_difference_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>first</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>second</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the difference of two maps. </p> -<p>The difference contains a copy of all elements of the first map for which the corresponding keys cannot be found in the second map.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator that shall be used by the new map </td></tr> - <tr><td class="paramname">first</td><td>the first source map </td></tr> - <tr><td class="paramname">second</td><td>the second source map </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new list containing the difference </dd></dl> - -</div> -</div> -<a id="abe3d9688e4224bf7bb962abf25ff8c2e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abe3d9688e4224bf7bb962abf25ff8c2e">◆ </a></span>ucx_map_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_map_free </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>map</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Frees a hash map. </p> -<p><b>Note:</b> the contents are <b>not</b> freed, use <a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618" title="Frees the contents of a hash map. ">ucx_map_free_content()</a> before calling this function to achieve that.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map to be freed </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618" title="Frees the contents of a hash map. ">ucx_map_free_content()</a> </dd></dl> - -</div> -</div> -<a id="a750f3d9d83e2f3788a14c17a9d160618"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a750f3d9d83e2f3788a14c17a9d160618">◆ </a></span>ucx_map_free_content()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_map_free_content </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>map</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> </td> - <td class="paramname"><em>destr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Frees the contents of a hash map. </p> -<p>This is a convenience function that iterates over the map and passes all values to the specified destructor function.</p> -<p>If no destructor is specified (<code>NULL</code>), the free() function of the map's own allocator is used.</p> -<p>You must ensure, that it is valid to pass each value in the map to the same destructor function.</p> -<p>You should free or clear the map afterwards, as the contents will be invalid.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>for which the contents shall be freed </td></tr> - <tr><td class="paramname">destr</td><td>optional pointer to a destructor function </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e" title="Frees a hash map. ">ucx_map_free()</a> </dd> -<dd> -<a class="el" href="map_8h.html#a285e90e40681c6d9631c935dda0967f2" title="Clears a hash map. ">ucx_map_clear()</a> </dd></dl> - -</div> -</div> -<a id="ab61192c5af2e06ecb9ad73880d1c95a6"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ab61192c5af2e06ecb9ad73880d1c95a6">◆ </a></span>ucx_map_get()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_map_get </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td> - <td class="paramname"><em>map</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a> </td> - <td class="paramname"><em>key</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Retrieves a value by using a key. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the value </dd></dl> - -</div> -</div> -<a id="aa594d7a5afebc3bed6bb265348cf6b0d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa594d7a5afebc3bed6bb265348cf6b0d">◆ </a></span>ucx_map_intersection()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_intersection </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>first</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>second</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the intersection of two maps. </p> -<p>The intersection is defined as a copy of the first map with every element removed that has no valid key in the second map.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">first</td><td>the first source map </td></tr> - <tr><td class="paramname">second</td><td>the second source map </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new map containing the intersection </dd></dl> - -</div> -</div> -<a id="a169e0470a20484dd76425fdf77e3651e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a169e0470a20484dd76425fdf77e3651e">◆ </a></span>ucx_map_intersection_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_intersection_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>first</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>second</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the intersection of two maps. </p> -<p>The intersection is defined as a copy of the first map with every element removed that has no valid key in the second map.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator that shall be used by the new map </td></tr> - <tr><td class="paramname">first</td><td>the first source map </td></tr> - <tr><td class="paramname">second</td><td>the second source map </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new map containing the intersection </dd></dl> - -</div> -</div> -<a id="aceb8675abf44860b4bbc301bbada5b91"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aceb8675abf44860b4bbc301bbada5b91">◆ </a></span>ucx_map_iter_next()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_map_iter_next </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> * </td> - <td class="paramname"><em>iterator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a> * </td> - <td class="paramname"><em>key</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void ** </td> - <td class="paramname"><em>value</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Proceeds to the next element of the map (if any). </p> -<p>Subsequent calls on the same iterator proceed to the next element and store the key/value-pair into the memory specified as arguments of this function.</p> -<p>If no further elements are found, this function returns zero and leaves the last found key/value-pair in memory.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">iterator</td><td>the iterator to use </td></tr> - <tr><td class="paramname">key</td><td>a pointer to the memory where to store the key </td></tr> - <tr><td class="paramname">value</td><td>a pointer to the memory where to store the value </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if another element was found, 0 if all elements has been processed </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110" title="Creates an iterator for a map. ">ucx_map_iterator()</a> </dd></dl> - -</div> -</div> -<a id="a9150e9c64fdf4dfcc2cad106b91aa110"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9150e9c64fdf4dfcc2cad106b91aa110">◆ </a></span>ucx_map_iterator()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMapIterator.html">UcxMapIterator</a> ucx_map_iterator </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td> - <td class="paramname"><em>map</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates an iterator for a map. </p> -<p><b>Note:</b> A <a class="el" href="structUcxMapIterator.html" title="Structure for an iterator over a UcxMap. ">UcxMapIterator</a> iterates over all elements in all element lists successively. Therefore the order highly depends on the key hashes and may vary under different map sizes. So generally you may <b>NOT</b> rely on the iteration order.</p> -<p><b>Note:</b> The iterator is <b>NOT</b> initialized. You need to call <a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91" title="Proceeds to the next element of the map (if any). ">ucx_map_iter_next()</a> at least once before accessing any information. However, it is not recommended to access the fields of a <a class="el" href="structUcxMapIterator.html" title="Structure for an iterator over a UcxMap. ">UcxMapIterator</a> directly.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map to create the iterator for </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>an iterator initialized on the first element of the first element list </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91" title="Proceeds to the next element of the map (if any). ">ucx_map_iter_next()</a> </dd></dl> - -</div> -</div> -<a id="a79f31de8b93814493759dbc8b940cf0c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a79f31de8b93814493759dbc8b940cf0c">◆ </a></span>ucx_map_new()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_new </td> - <td>(</td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>size</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new hash map with the specified size. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">size</td><td>the size of the hash map </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the new hash map </dd></dl> - -</div> -</div> -<a id="aed508a94c66cc15372503c64b70eb03e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aed508a94c66cc15372503c64b70eb03e">◆ </a></span>ucx_map_new_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_new_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>size</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new hash map with the specified size using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr> - <tr><td class="paramname">size</td><td>the size of the hash map </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the new hash map </dd></dl> - -</div> -</div> -<a id="ac04a08b604217070254d4c58f0e82498"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac04a08b604217070254d4c58f0e82498">◆ </a></span>ucx_map_put()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_map_put </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>map</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a> </td> - <td class="paramname"><em>key</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>value</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Puts a key/value-pair into the map. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - <tr><td class="paramname">value</td><td>the value </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero value on failure </dd></dl> - -</div> -</div> -<a id="a174bce9fad554dd92b8da354e0d32512"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a174bce9fad554dd92b8da354e0d32512">◆ </a></span>ucx_map_rehash()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_map_rehash </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>map</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Increases size of the hash map, if necessary. </p> -<p>The load value is 0.75*UcxMap.size. If the element count exceeds the load value, the map needs to be rehashed. Otherwise no action is performed and this function simply returns 0.</p> -<p>The rehashing process ensures, that the <a class="el" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838" title="The size of the map is the length of the element list array. ">UcxMap.size</a> is at least 2.5*UcxMap.count. So there is enough room for additional elements without the need of another soon rehashing.</p> -<p>You can use this function to dramatically increase access performance.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map to rehash </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if a memory allocation error occurred, 0 otherwise </dd></dl> - -</div> -</div> -<a id="a17248a4888eb8f9ae18be522d64632aa"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a17248a4888eb8f9ae18be522d64632aa">◆ </a></span>ucx_map_remove()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_map_remove </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>map</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxKey.html">UcxKey</a> </td> - <td class="paramname"><em>key</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Removes a key/value-pair from the map by using the key. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map </td></tr> - <tr><td class="paramname">key</td><td>the key </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the removed value </dd></dl> - -</div> -</div> -<a id="a3f65978c481af7f637cad021d93522d5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3f65978c481af7f637cad021d93522d5">◆ </a></span>ucx_map_union()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_union </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>first</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>second</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the union of two maps. </p> -<p>The union is a fresh map which is filled by two successive calls of <a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425" title="Copies contents from a map to another map using a copy function. ">ucx_map_copy()</a> on the two input maps.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">first</td><td>the first source map </td></tr> - <tr><td class="paramname">second</td><td>the second source map </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new map containing the union </dd></dl> - -</div> -</div> -<a id="ab6370c3fa8113fdad593ce4b0460c9c6"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ab6370c3fa8113fdad593ce4b0460c9c6">◆ </a></span>ucx_map_union_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* ucx_map_union_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>first</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const <a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>second</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> </td> - <td class="paramname"><em>cpfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>cpdata</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the union of two maps. </p> -<p>The union is a fresh map which is filled by two successive calls of <a class="el" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425" title="Copies contents from a map to another map using a copy function. ">ucx_map_copy()</a> on the two input maps.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator that shall be used by the new map </td></tr> - <tr><td class="paramname">first</td><td>the first source map </td></tr> - <tr><td class="paramname">second</td><td>the second source map </td></tr> - <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr> - <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new map containing the union </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/map_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,127 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/map.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">map.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="map_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#ifndef UCX_MAP_H</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define UCX_MAP_H</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="string_8h.html">string.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "<a class="code" href="allocator_8h.html">allocator.h</a>"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="map_8h.html#a940896c4aa1b13e54c55c04c3efc186b"> 65</a></span> <span class="preprocessor">#define UCX_MAP_FOREACH(key,value,iter) \</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"> for(UcxKey key;ucx_map_iter_next(&iter,&key, (void**)&value);)</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="map_8h.html#a18e21948725b2da68c35da587a722033"> 69</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxMap.html">UcxMap</a> <a class="code" href="structUcxMap.html">UcxMap</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="map_8h.html#ad63828bb23123fc01a5315a2bac3b142"> 72</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxKey.html">UcxKey</a> <a class="code" href="structUcxKey.html">UcxKey</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="map_8h.html#ad7d7a910a32113eb93eae11c3dc97b4b"> 75</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxMapElement.html">UcxMapElement</a> <a class="code" href="structUcxMapElement.html">UcxMapElement</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="map_8h.html#ae36aff5f645948c54f51578b11fd87fb"> 78</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxMapIterator.html">UcxMapIterator</a> <a class="code" href="structUcxMapIterator.html">UcxMapIterator</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="structUcxMap.html"> 81</a></span> <span class="keyword">struct </span><a class="code" href="structUcxMap.html">UcxMap</a> {</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d"> 83</a></span>  <a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790"> 85</a></span>  <a class="code" href="structUcxMapElement.html">UcxMapElement</a> **<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838"> 87</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">size</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd"> 89</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd">count</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> };</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="structUcxKey.html"> 93</a></span> <span class="keyword">struct </span><a class="code" href="structUcxKey.html">UcxKey</a> {</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c"> 95</a></span>  <span class="keyword">const</span> <span class="keywordtype">void</span> *<a class="code" href="structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c">data</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="structUcxKey.html#abef01de37f355688f2ac797d2c280683"> 97</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxKey.html#abef01de37f355688f2ac797d2c280683">len</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752"> 99</a></span>  <span class="keywordtype">int</span> <a class="code" href="structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752">hash</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> };</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structUcxMapKey.html"> 103</a></span> <span class="keyword">struct </span><a class="code" href="structUcxMapKey.html">UcxMapKey</a> {</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5"> 105</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5">data</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270"> 107</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270">len</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913"> 109</a></span>  <span class="keywordtype">int</span> <a class="code" href="structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913">hash</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> };</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="structUcxMapElement.html"> 113</a></span> <span class="keyword">struct </span><a class="code" href="structUcxMapElement.html">UcxMapElement</a> {</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c"> 115</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c">data</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51"> 118</a></span>  <a class="code" href="structUcxMapElement.html">UcxMapElement</a> *<a class="code" href="structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51">next</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="structUcxMapElement.html#aa446141b708e106e2c8de1303318187c"> 121</a></span>  <span class="keyword">struct </span><a class="code" href="structUcxMapKey.html">UcxMapKey</a> key;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> };</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="structUcxMapIterator.html"> 125</a></span> <span class="keyword">struct </span><a class="code" href="structUcxMapIterator.html">UcxMapIterator</a> {</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95"> 127</a></span>  <a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *<a class="code" href="structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95">map</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f"> 130</a></span>  <a class="code" href="structUcxMapElement.html">UcxMapElement</a> *<a class="code" href="structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f">cur</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65"> 138</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65">index</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> };</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="map_8h.html#a79f31de8b93814493759dbc8b940cf0c">ucx_map_new</a>(<span class="keywordtype">size_t</span> <a class="code" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">size</a>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="map_8h.html#aed508a94c66cc15372503c64b70eb03e">ucx_map_new_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>, <span class="keywordtype">size_t</span> <a class="code" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">size</a>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keywordtype">void</span> <a class="code" href="map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e">ucx_map_free</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keywordtype">void</span> <a class="code" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618">ucx_map_free_content</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keywordtype">void</span> <a class="code" href="map_8h.html#a285e90e40681c6d9631c935dda0967f2">ucx_map_clear</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keywordtype">int</span> <a class="code" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425">ucx_map_copy</a>(<a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *from, <a class="code" href="structUcxMap.html">UcxMap</a> *to, <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="map_8h.html#a62c6c30cbb0d824ba710f5030ff9a4e4">ucx_map_clone</a>(<a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="map_8h.html#a9aea9103703d5c168420bb6bf85549ea">ucx_map_clone_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>,</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="keywordtype">int</span> <a class="code" href="map_8h.html#a174bce9fad554dd92b8da354e0d32512">ucx_map_rehash</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="keywordtype">int</span> <a class="code" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="structUcxKey.html">UcxKey</a> key, <span class="keywordtype">void</span> *value);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="keywordtype">void</span>* <a class="code" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(<a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="structUcxKey.html">UcxKey</a> key);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="keywordtype">void</span>* <a class="code" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="structUcxKey.html">UcxKey</a> key);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="map_8h.html#ac26a8615bfc8f47ee9eaceb47645f98e"> 304</a></span> <span class="preprocessor">#define ucx_map_sstr_put(map, key, value) \</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="preprocessor"> ucx_map_put(map, ucx_key(key.ptr, key.length), (void*)value)</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="map_8h.html#ad9356b01425b934ab237b52339ac0cc3"> 315</a></span> <span class="preprocessor">#define ucx_map_cstr_put(map, key, value) \</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor"> ucx_map_put(map, ucx_key(key, strlen(key)), (void*)value)</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="map_8h.html#aaa30af79b4068c923895619e83f44367"> 326</a></span> <span class="preprocessor">#define ucx_map_int_put(map, key, value) \</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor"> ucx_map_put(map, ucx_key(&key, sizeof(key)), (void*)value)</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="map_8h.html#a14d385f6b7f371f0507861cabd2eab4e"> 336</a></span> <span class="preprocessor">#define ucx_map_sstr_get(map, key) \</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="preprocessor"> ucx_map_get(map, ucx_key(key.ptr, key.length))</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="map_8h.html#a64e1fb55498fa502dd2ed8ed69062cdd"> 346</a></span> <span class="preprocessor">#define ucx_map_cstr_get(map, key) \</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor"> ucx_map_get(map, ucx_key(key, strlen(key)))</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="map_8h.html#aa1681bd2178553cd092fd24c4d681d3c"> 356</a></span> <span class="preprocessor">#define ucx_map_int_get(map, key) \</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="preprocessor"> ucx_map_get(map, ucx_key(&key, sizeof(int)))</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="map_8h.html#a48700ea86fadb9ea54d13010f9124df2"> 366</a></span> <span class="preprocessor">#define ucx_map_sstr_remove(map, key) \</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor"> ucx_map_remove(map, ucx_key(key.ptr, key.length))</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="map_8h.html#a9c4405a5a75ecf64e2ef3d0c6501a9fe"> 376</a></span> <span class="preprocessor">#define ucx_map_cstr_remove(map, key) \</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="preprocessor"> ucx_map_remove(map, ucx_key(key, strlen(key)))</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="map_8h.html#aa767958b5468737755c09f7185b1770c"> 386</a></span> <span class="preprocessor">#define ucx_map_int_remove(map, key) \</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor"> ucx_map_remove(map, ucx_key(&key, sizeof(key)))</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <a class="code" href="structUcxKey.html">UcxKey</a> <a class="code" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="keywordtype">int</span> <a class="code" href="map_8h.html#aea3be97254c05595d986ef6a9faae87b">ucx_hash</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *data, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <a class="code" href="structUcxMapIterator.html">UcxMapIterator</a> <a class="code" href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110">ucx_map_iterator</a>(<a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="keywordtype">int</span> <a class="code" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a>(<a class="code" href="structUcxMapIterator.html">UcxMapIterator</a> *iterator, <a class="code" href="structUcxKey.html">UcxKey</a> *key, <span class="keywordtype">void</span> **value);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#a3f65978c481af7f637cad021d93522d5">ucx_map_union</a>(<span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#ab6370c3fa8113fdad593ce4b0460c9c6">ucx_map_union_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>,</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#aa594d7a5afebc3bed6bb265348cf6b0d">ucx_map_intersection</a>(<span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#a169e0470a20484dd76425fdf77e3651e">ucx_map_intersection_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>,</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#a774fcff87d1e58b6c5af77dd19a8c3dc">ucx_map_difference</a>(<span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#ad0ba103494247d798ac3037c50fc8831">ucx_map_difference_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>,</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> }</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_MAP_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="ttc" id="ucx_8h_html_aab917a5fe0965673c73e8ebd0a1fc967"><div class="ttname"><a href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a></div><div class="ttdeci">void *(* copy_func)(const void *, void *)</div><div class="ttdoc">Function pointer to a copy function. </div><div class="ttdef"><b>Definition:</b> ucx.h:106</div></div> -<div class="ttc" id="structUcxMapIterator_html_ac2376545c8816dd6895de4995e558c65"><div class="ttname"><a href="structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65">UcxMapIterator::index</a></div><div class="ttdeci">size_t index</div><div class="ttdoc">The current index of the element list array. </div><div class="ttdef"><b>Definition:</b> map.h:138</div></div> -<div class="ttc" id="structUcxMapKey_html_a504d46caa45c79cd87ff8cd835654270"><div class="ttname"><a href="structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270">UcxMapKey::len</a></div><div class="ttdeci">size_t len</div><div class="ttdoc">The length of the key data. </div><div class="ttdef"><b>Definition:</b> map.h:107</div></div> -<div class="ttc" id="map_8h_html_ad0ba103494247d798ac3037c50fc8831"><div class="ttname"><a href="map_8h.html#ad0ba103494247d798ac3037c50fc8831">ucx_map_difference_a</a></div><div class="ttdeci">UcxMap * ucx_map_difference_a(UcxAllocator *allocator, const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the difference of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:386</div></div> -<div class="ttc" id="string_8h_html"><div class="ttname"><a href="string_8h.html">string.h</a></div><div class="ttdoc">Bounded string implementation. </div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="map_8h_html_aea3be97254c05595d986ef6a9faae87b"><div class="ttname"><a href="map_8h.html#aea3be97254c05595d986ef6a9faae87b">ucx_hash</a></div><div class="ttdeci">int ucx_hash(const char *data, size_t len)</div><div class="ttdoc">Computes a murmur hash-2. </div><div class="ttdef"><b>Definition:</b> map.c:260</div></div> -<div class="ttc" id="structUcxMapKey_html_a34c1f8fec98174583944fffd30e7c913"><div class="ttname"><a href="structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913">UcxMapKey::hash</a></div><div class="ttdeci">int hash</div><div class="ttdoc">The hash value of the key data. </div><div class="ttdef"><b>Definition:</b> map.h:109</div></div> -<div class="ttc" id="map_8h_html_a750f3d9d83e2f3788a14c17a9d160618"><div class="ttname"><a href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618">ucx_map_free_content</a></div><div class="ttdeci">void ucx_map_free_content(UcxMap *map, ucx_destructor destr)</div><div class="ttdoc">Frees the contents of a hash map. </div><div class="ttdef"><b>Definition:</b> map.c:85</div></div> -<div class="ttc" id="map_8h_html_ab61192c5af2e06ecb9ad73880d1c95a6"><div class="ttname"><a href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a></div><div class="ttdeci">void * ucx_map_get(UcxMap const *map, UcxKey key)</div><div class="ttdoc">Retrieves a value by using a key. </div><div class="ttdef"><b>Definition:</b> map.c:243</div></div> -<div class="ttc" id="map_8h_html_a9150e9c64fdf4dfcc2cad106b91aa110"><div class="ttname"><a href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110">ucx_map_iterator</a></div><div class="ttdeci">UcxMapIterator ucx_map_iterator(UcxMap const *map)</div><div class="ttdoc">Creates an iterator for a map. </div><div class="ttdef"><b>Definition:</b> map.c:302</div></div> -<div class="ttc" id="map_8h_html_a3f65978c481af7f637cad021d93522d5"><div class="ttname"><a href="map_8h.html#a3f65978c481af7f637cad021d93522d5">ucx_map_union</a></div><div class="ttdeci">UcxMap * ucx_map_union(const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the union of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:343</div></div> -<div class="ttc" id="structUcxKey_html_aac9d372ac34a4cbd8459e2b04e505752"><div class="ttname"><a href="structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752">UcxKey::hash</a></div><div class="ttdeci">int hash</div><div class="ttdoc">A cache for the hash value of the key data. </div><div class="ttdef"><b>Definition:</b> map.h:99</div></div> -<div class="ttc" id="map_8h_html_a285e90e40681c6d9631c935dda0967f2"><div class="ttname"><a href="map_8h.html#a285e90e40681c6d9631c935dda0967f2">ucx_map_clear</a></div><div class="ttdeci">void ucx_map_clear(UcxMap *map)</div><div class="ttdoc">Clears a hash map. </div><div class="ttdef"><b>Definition:</b> map.c:97</div></div> -<div class="ttc" id="map_8h_html_a774fcff87d1e58b6c5af77dd19a8c3dc"><div class="ttname"><a href="map_8h.html#a774fcff87d1e58b6c5af77dd19a8c3dc">ucx_map_difference</a></div><div class="ttdeci">UcxMap * ucx_map_difference(const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the difference of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:380</div></div> -<div class="ttc" id="structUcxMapElement_html"><div class="ttname"><a href="structUcxMapElement.html">UcxMapElement</a></div><div class="ttdoc">Structure for an element of a UcxMap. </div><div class="ttdef"><b>Definition:</b> map.h:113</div></div> -<div class="ttc" id="structUcxKey_html"><div class="ttname"><a href="structUcxKey.html">UcxKey</a></div><div class="ttdoc">Structure to publicly denote a key of a UcxMap. </div><div class="ttdef"><b>Definition:</b> map.h:93</div></div> -<div class="ttc" id="structUcxMap_html_a14e9163f71f6c014dfa2103de70ae9cd"><div class="ttname"><a href="structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd">UcxMap::count</a></div><div class="ttdeci">size_t count</div><div class="ttdoc">The count of elements currently stored in this map. </div><div class="ttdef"><b>Definition:</b> map.h:89</div></div> -<div class="ttc" id="structUcxMapElement_html_a99fe8188b0889201d70ff5f922deef51"><div class="ttname"><a href="structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51">UcxMapElement::next</a></div><div class="ttdeci">UcxMapElement * next</div><div class="ttdoc">A pointer to the next element in the current list. </div><div class="ttdef"><b>Definition:</b> map.h:118</div></div> -<div class="ttc" id="map_8h_html_ab6370c3fa8113fdad593ce4b0460c9c6"><div class="ttname"><a href="map_8h.html#ab6370c3fa8113fdad593ce4b0460c9c6">ucx_map_union_a</a></div><div class="ttdeci">UcxMap * ucx_map_union_a(UcxAllocator *allocator, const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the union of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:349</div></div> -<div class="ttc" id="structUcxMapIterator_html_af88d6e22547d09fe1d665dd650dcdb95"><div class="ttname"><a href="structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95">UcxMapIterator::map</a></div><div class="ttdeci">UcxMap const * map</div><div class="ttdoc">The map to iterate over. </div><div class="ttdef"><b>Definition:</b> map.h:127</div></div> -<div class="ttc" id="structUcxMapIterator_html"><div class="ttname"><a href="structUcxMapIterator.html">UcxMapIterator</a></div><div class="ttdoc">Structure for an iterator over a UcxMap. </div><div class="ttdef"><b>Definition:</b> map.h:125</div></div> -<div class="ttc" id="structUcxMapElement_html_abbd7f3bf5beef370f702d2d5bb07733c"><div class="ttname"><a href="structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c">UcxMapElement::data</a></div><div class="ttdeci">void * data</div><div class="ttdoc">The value data. </div><div class="ttdef"><b>Definition:</b> map.h:115</div></div> -<div class="ttc" id="map_8h_html_adfeb2d61003fd2896bcfdc9a57f36425"><div class="ttname"><a href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425">ucx_map_copy</a></div><div class="ttdeci">int ucx_map_copy(UcxMap const *from, UcxMap *to, copy_func fnc, void *data)</div><div class="ttdoc">Copies contents from a map to another map using a copy function. </div><div class="ttdef"><b>Definition:</b> map.c:106</div></div> -<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div> -<div class="ttc" id="map_8h_html_a3e540bb46b8ee19789aed63fd8919200"><div class="ttname"><a href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a></div><div class="ttdeci">UcxKey ucx_key(const void *data, size_t len)</div><div class="ttdoc">Creates a UcxKey based on the given data. </div><div class="ttdef"><b>Definition:</b> map.c:251</div></div> -<div class="ttc" id="map_8h_html_a79f31de8b93814493759dbc8b940cf0c"><div class="ttname"><a href="map_8h.html#a79f31de8b93814493759dbc8b940cf0c">ucx_map_new</a></div><div class="ttdeci">UcxMap * ucx_map_new(size_t size)</div><div class="ttdoc">Creates a new hash map with the specified size. </div><div class="ttdef"><b>Definition:</b> map.c:34</div></div> -<div class="ttc" id="structUcxMapIterator_html_af1fc40f899f37280adb5b85acf6e742f"><div class="ttname"><a href="structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f">UcxMapIterator::cur</a></div><div class="ttdeci">UcxMapElement * cur</div><div class="ttdoc">The current map element. </div><div class="ttdef"><b>Definition:</b> map.h:130</div></div> -<div class="ttc" id="map_8h_html_aed508a94c66cc15372503c64b70eb03e"><div class="ttname"><a href="map_8h.html#aed508a94c66cc15372503c64b70eb03e">ucx_map_new_a</a></div><div class="ttdeci">UcxMap * ucx_map_new_a(UcxAllocator *allocator, size_t size)</div><div class="ttdoc">Creates a new hash map with the specified size using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> map.c:38</div></div> -<div class="ttc" id="structUcxMap_html_a531f3e481c1c331cf037b916192e974d"><div class="ttname"><a href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">UcxMap::allocator</a></div><div class="ttdeci">UcxAllocator * allocator</div><div class="ttdoc">An allocator that is used for the map elements. </div><div class="ttdef"><b>Definition:</b> map.h:83</div></div> -<div class="ttc" id="structUcxMapKey_html"><div class="ttname"><a href="structUcxMapKey.html">UcxMapKey</a></div><div class="ttdoc">Internal structure for a key of a UcxMap. </div><div class="ttdef"><b>Definition:</b> map.h:103</div></div> -<div class="ttc" id="map_8h_html_ac04a08b604217070254d4c58f0e82498"><div class="ttname"><a href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a></div><div class="ttdeci">int ucx_map_put(UcxMap *map, UcxKey key, void *value)</div><div class="ttdoc">Puts a key/value-pair into the map. </div><div class="ttdef"><b>Definition:</b> map.c:158</div></div> -<div class="ttc" id="map_8h_html_a9aea9103703d5c168420bb6bf85549ea"><div class="ttname"><a href="map_8h.html#a9aea9103703d5c168420bb6bf85549ea">ucx_map_clone_a</a></div><div class="ttdeci">UcxMap * ucx_map_clone_a(UcxAllocator *allocator, UcxMap const *map, copy_func fnc, void *data)</div><div class="ttdoc">Clones the map and rehashes if necessary. </div><div class="ttdef"><b>Definition:</b> map.c:121</div></div> -<div class="ttc" id="structUcxMap_html_afe120846b26d99580a7ff1276464e838"><div class="ttname"><a href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">UcxMap::size</a></div><div class="ttdeci">size_t size</div><div class="ttdoc">The size of the map is the length of the element list array. </div><div class="ttdef"><b>Definition:</b> map.h:87</div></div> -<div class="ttc" id="map_8h_html_aceb8675abf44860b4bbc301bbada5b91"><div class="ttname"><a href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a></div><div class="ttdeci">int ucx_map_iter_next(UcxMapIterator *iterator, UcxKey *key, void **value)</div><div class="ttdoc">Proceeds to the next element of the map (if any). </div><div class="ttdef"><b>Definition:</b> map.c:310</div></div> -<div class="ttc" id="structUcxKey_html_a6176109f25b34f3fa92bcfbc8ae7a88c"><div class="ttname"><a href="structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c">UcxKey::data</a></div><div class="ttdeci">const void * data</div><div class="ttdoc">The key data. </div><div class="ttdef"><b>Definition:</b> map.h:95</div></div> -<div class="ttc" id="allocator_8h_html"><div class="ttname"><a href="allocator_8h.html">allocator.h</a></div><div class="ttdoc">Allocator for custom memory management. </div></div> -<div class="ttc" id="structUcxMap_html"><div class="ttname"><a href="structUcxMap.html">UcxMap</a></div><div class="ttdoc">Structure for the UCX map. </div><div class="ttdef"><b>Definition:</b> map.h:81</div></div> -<div class="ttc" id="map_8h_html_a17248a4888eb8f9ae18be522d64632aa"><div class="ttname"><a href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a></div><div class="ttdeci">void * ucx_map_remove(UcxMap *map, UcxKey key)</div><div class="ttdoc">Removes a key/value-pair from the map by using the key. </div><div class="ttdef"><b>Definition:</b> map.c:247</div></div> -<div class="ttc" id="structUcxKey_html_abef01de37f355688f2ac797d2c280683"><div class="ttname"><a href="structUcxKey.html#abef01de37f355688f2ac797d2c280683">UcxKey::len</a></div><div class="ttdeci">size_t len</div><div class="ttdoc">The length of the key data. </div><div class="ttdef"><b>Definition:</b> map.h:97</div></div> -<div class="ttc" id="map_8h_html_aa594d7a5afebc3bed6bb265348cf6b0d"><div class="ttname"><a href="map_8h.html#aa594d7a5afebc3bed6bb265348cf6b0d">ucx_map_intersection</a></div><div class="ttdeci">UcxMap * ucx_map_intersection(const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the intersection of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:357</div></div> -<div class="ttc" id="map_8h_html_a174bce9fad554dd92b8da354e0d32512"><div class="ttname"><a href="map_8h.html#a174bce9fad554dd92b8da354e0d32512">ucx_map_rehash</a></div><div class="ttdeci">int ucx_map_rehash(UcxMap *map)</div><div class="ttdoc">Increases size of the hash map, if necessary. </div><div class="ttdef"><b>Definition:</b> map.c:132</div></div> -<div class="ttc" id="map_8h_html_abe3d9688e4224bf7bb962abf25ff8c2e"><div class="ttname"><a href="map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e">ucx_map_free</a></div><div class="ttdeci">void ucx_map_free(UcxMap *map)</div><div class="ttdoc">Frees a hash map. </div><div class="ttdef"><b>Definition:</b> map.c:79</div></div> -<div class="ttc" id="map_8h_html_a62c6c30cbb0d824ba710f5030ff9a4e4"><div class="ttname"><a href="map_8h.html#a62c6c30cbb0d824ba710f5030ff9a4e4">ucx_map_clone</a></div><div class="ttdeci">UcxMap * ucx_map_clone(UcxMap const *map, copy_func fnc, void *data)</div><div class="ttdoc">Clones the map and rehashes if necessary. </div><div class="ttdef"><b>Definition:</b> map.c:117</div></div> -<div class="ttc" id="structUcxMap_html_a5792b5037c4f77ea3cb144b66c9b8790"><div class="ttname"><a href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">UcxMap::map</a></div><div class="ttdeci">UcxMapElement ** map</div><div class="ttdoc">The array of map element lists. </div><div class="ttdef"><b>Definition:</b> map.h:85</div></div> -<div class="ttc" id="map_8h_html_a169e0470a20484dd76425fdf77e3651e"><div class="ttname"><a href="map_8h.html#a169e0470a20484dd76425fdf77e3651e">ucx_map_intersection_a</a></div><div class="ttdeci">UcxMap * ucx_map_intersection_a(UcxAllocator *allocator, const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the intersection of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:363</div></div> -<div class="ttc" id="structUcxMapKey_html_ab71d1841e4f538628c00f782267fb6d5"><div class="ttname"><a href="structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5">UcxMapKey::data</a></div><div class="ttdeci">void * data</div><div class="ttdoc">The key data. </div><div class="ttdef"><b>Definition:</b> map.h:105</div></div> -<div class="ttc" id="ucx_8h_html_ad2b370c2809914c8b7fedab163c266b3"><div class="ttname"><a href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a></div><div class="ttdeci">void(* ucx_destructor)(void *)</div><div class="ttdoc">A function pointer to a destructor function. </div><div class="ttdef"><b>Definition:</b> ucx.h:72</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/mempool_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,517 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/mempool.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">mempool.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Memory pool implementation. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> -<code>#include <stddef.h></code><br /> -</div> -<p><a href="mempool_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMempool.html">UcxMempool</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">UCX mempool structure. <a href="structUcxMempool.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:a49f7bd1da5ac201d0cf54dc0f0d82dd2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html#a49f7bd1da5ac201d0cf54dc0f0d82dd2">ucx_mempool_new_default</a>()   <a class="el" href="mempool_8h.html#ad71cb8c3b6fdb30360376a8b372ef22a">ucx_mempool_new</a>(16)</td></tr> -<tr class="memdesc:a49f7bd1da5ac201d0cf54dc0f0d82dd2"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for a new default memory pool with a capacity of 16 elements. <a href="#a49f7bd1da5ac201d0cf54dc0f0d82dd2">More...</a><br /></td></tr> -<tr class="separator:a49f7bd1da5ac201d0cf54dc0f0d82dd2"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:ad71cb8c3b6fdb30360376a8b372ef22a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMempool.html">UcxMempool</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html#ad71cb8c3b6fdb30360376a8b372ef22a">ucx_mempool_new</a> (size_t n)</td></tr> -<tr class="memdesc:ad71cb8c3b6fdb30360376a8b372ef22a"><td class="mdescLeft"> </td><td class="mdescRight">Creates a memory pool with the specified initial size. <a href="#ad71cb8c3b6fdb30360376a8b372ef22a">More...</a><br /></td></tr> -<tr class="separator:ad71cb8c3b6fdb30360376a8b372ef22a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aaf75b5016098723a9280531ccc3a6d77"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html#aaf75b5016098723a9280531ccc3a6d77">ucx_mempool_chcap</a> (<a class="el" href="structUcxMempool.html">UcxMempool</a> *pool, size_t newcap)</td></tr> -<tr class="memdesc:aaf75b5016098723a9280531ccc3a6d77"><td class="mdescLeft"> </td><td class="mdescRight">Resizes a memory pool. <a href="#aaf75b5016098723a9280531ccc3a6d77">More...</a><br /></td></tr> -<tr class="separator:aaf75b5016098723a9280531ccc3a6d77"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2ae492b8f2878ccc9837ac213dced11e"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html#a2ae492b8f2878ccc9837ac213dced11e">ucx_mempool_malloc</a> (<a class="el" href="structUcxMempool.html">UcxMempool</a> *pool, size_t n)</td></tr> -<tr class="memdesc:a2ae492b8f2878ccc9837ac213dced11e"><td class="mdescLeft"> </td><td class="mdescRight">Allocates pooled memory. <a href="#a2ae492b8f2878ccc9837ac213dced11e">More...</a><br /></td></tr> -<tr class="separator:a2ae492b8f2878ccc9837ac213dced11e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4b9142011824ae24f00fabe128417d69"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html#a4b9142011824ae24f00fabe128417d69">ucx_mempool_calloc</a> (<a class="el" href="structUcxMempool.html">UcxMempool</a> *pool, size_t nelem, size_t elsize)</td></tr> -<tr class="memdesc:a4b9142011824ae24f00fabe128417d69"><td class="mdescLeft"> </td><td class="mdescRight">Allocates a pooled memory array. <a href="#a4b9142011824ae24f00fabe128417d69">More...</a><br /></td></tr> -<tr class="separator:a4b9142011824ae24f00fabe128417d69"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a660ef42520ed6737c2e77aae18e3a7a4"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html#a660ef42520ed6737c2e77aae18e3a7a4">ucx_mempool_realloc</a> (<a class="el" href="structUcxMempool.html">UcxMempool</a> *pool, void *ptr, size_t n)</td></tr> -<tr class="memdesc:a660ef42520ed6737c2e77aae18e3a7a4"><td class="mdescLeft"> </td><td class="mdescRight">Reallocates pooled memory. <a href="#a660ef42520ed6737c2e77aae18e3a7a4">More...</a><br /></td></tr> -<tr class="separator:a660ef42520ed6737c2e77aae18e3a7a4"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aefa26e3015f5aefadbfc74221bd246ac"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html#aefa26e3015f5aefadbfc74221bd246ac">ucx_mempool_free</a> (<a class="el" href="structUcxMempool.html">UcxMempool</a> *pool, void *ptr)</td></tr> -<tr class="memdesc:aefa26e3015f5aefadbfc74221bd246ac"><td class="mdescLeft"> </td><td class="mdescRight">Frees pooled memory. <a href="#aefa26e3015f5aefadbfc74221bd246ac">More...</a><br /></td></tr> -<tr class="separator:aefa26e3015f5aefadbfc74221bd246ac"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af096378da7e9bfbed3088497cf4c15bf"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html#af096378da7e9bfbed3088497cf4c15bf">ucx_mempool_destroy</a> (<a class="el" href="structUcxMempool.html">UcxMempool</a> *pool)</td></tr> -<tr class="memdesc:af096378da7e9bfbed3088497cf4c15bf"><td class="mdescLeft"> </td><td class="mdescRight">Destroys a memory pool. <a href="#af096378da7e9bfbed3088497cf4c15bf">More...</a><br /></td></tr> -<tr class="separator:af096378da7e9bfbed3088497cf4c15bf"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:adb788e7ec24cd7dbdea6381539c549f2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html#adb788e7ec24cd7dbdea6381539c549f2">ucx_mempool_set_destr</a> (void *ptr, <a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> func)</td></tr> -<tr class="memdesc:adb788e7ec24cd7dbdea6381539c549f2"><td class="mdescLeft"> </td><td class="mdescRight">Sets a destructor function for the specified memory. <a href="#adb788e7ec24cd7dbdea6381539c549f2">More...</a><br /></td></tr> -<tr class="separator:adb788e7ec24cd7dbdea6381539c549f2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af47b6b7c40f8f263dc28cc9a4e77b27c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mempool_8h.html#af47b6b7c40f8f263dc28cc9a4e77b27c">ucx_mempool_reg_destr</a> (<a class="el" href="structUcxMempool.html">UcxMempool</a> *pool, void *ptr, <a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr)</td></tr> -<tr class="memdesc:af47b6b7c40f8f263dc28cc9a4e77b27c"><td class="mdescLeft"> </td><td class="mdescRight">Registers a destructor function for the specified (non-pooled) memory. <a href="#af47b6b7c40f8f263dc28cc9a4e77b27c">More...</a><br /></td></tr> -<tr class="separator:af47b6b7c40f8f263dc28cc9a4e77b27c"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Memory pool implementation. </p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a49f7bd1da5ac201d0cf54dc0f0d82dd2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a49f7bd1da5ac201d0cf54dc0f0d82dd2">◆ </a></span>ucx_mempool_new_default</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_mempool_new_default</td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td>   <a class="el" href="mempool_8h.html#ad71cb8c3b6fdb30360376a8b372ef22a">ucx_mempool_new</a>(16)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shorthand for a new default memory pool with a capacity of 16 elements. </p> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="a4b9142011824ae24f00fabe128417d69"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4b9142011824ae24f00fabe128417d69">◆ </a></span>ucx_mempool_calloc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_mempool_calloc </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMempool.html">UcxMempool</a> * </td> - <td class="paramname"><em>pool</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>nelem</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>elsize</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Allocates a pooled memory array. </p> -<p>The content of the allocated memory is set to zero.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">pool</td><td>the memory pool </td></tr> - <tr><td class="paramname">nelem</td><td>amount of elements to allocate </td></tr> - <tr><td class="paramname">elsize</td><td>amount of memory per element </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the allocated memory </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12" title="A function pointer to the allocators calloc() function. ">ucx_allocator_calloc()</a> </dd></dl> - -</div> -</div> -<a id="aaf75b5016098723a9280531ccc3a6d77"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aaf75b5016098723a9280531ccc3a6d77">◆ </a></span>ucx_mempool_chcap()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_mempool_chcap </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMempool.html">UcxMempool</a> * </td> - <td class="paramname"><em>pool</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>newcap</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Resizes a memory pool. </p> -<p>This function will fail if the new capacity is not sufficient for the present data.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">pool</td><td>the pool to resize </td></tr> - <tr><td class="paramname">newcap</td><td>the new capacity </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero on success or non-zero on failure </dd></dl> - -</div> -</div> -<a id="af096378da7e9bfbed3088497cf4c15bf"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af096378da7e9bfbed3088497cf4c15bf">◆ </a></span>ucx_mempool_destroy()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_mempool_destroy </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMempool.html">UcxMempool</a> * </td> - <td class="paramname"><em>pool</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys a memory pool. </p> -<p>For each element the destructor function (if any) is called and the element is freed.</p> -<p>Each of the registered destructor function that has no corresponding element within the pool (namely those registered by ucx_mempool_reg_destr) is called interleaving with the element destruction, but with guarantee to the order in which they were registered (FIFO order).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">pool</td><td>the mempool to destroy </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="aefa26e3015f5aefadbfc74221bd246ac"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aefa26e3015f5aefadbfc74221bd246ac">◆ </a></span>ucx_mempool_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_mempool_free </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMempool.html">UcxMempool</a> * </td> - <td class="paramname"><em>pool</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ptr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Frees pooled memory. </p> -<p>Before freeing the memory, the specified destructor function (if any) is called.</p> -<p>If you specify memory, that is not pooled by the specified memory pool, the program will terminate with a call to <code>abort()</code>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">pool</td><td>the memory pool </td></tr> - <tr><td class="paramname">ptr</td><td>a pointer to the memory that shall be freed </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="mempool_8h.html#adb788e7ec24cd7dbdea6381539c549f2" title="Sets a destructor function for the specified memory. ">ucx_mempool_set_destr()</a> </dd></dl> - -</div> -</div> -<a id="a2ae492b8f2878ccc9837ac213dced11e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2ae492b8f2878ccc9837ac213dced11e">◆ </a></span>ucx_mempool_malloc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_mempool_malloc </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMempool.html">UcxMempool</a> * </td> - <td class="paramname"><em>pool</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Allocates pooled memory. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">pool</td><td>the memory pool </td></tr> - <tr><td class="paramname">n</td><td>amount of memory to allocate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the allocated memory </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473" title="A function pointer to the allocators malloc() function. ">ucx_allocator_malloc()</a> </dd></dl> - -</div> -</div> -<a id="ad71cb8c3b6fdb30360376a8b372ef22a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad71cb8c3b6fdb30360376a8b372ef22a">◆ </a></span>ucx_mempool_new()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMempool.html">UcxMempool</a>* ucx_mempool_new </td> - <td>(</td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a memory pool with the specified initial size. </p> -<p>As the created memory pool automatically grows in size by factor two when trying to allocate memory on a full pool, it is recommended that you use a power of two for the initial size.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">n</td><td>initial pool size (should be a power of two, e.g. 16) </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the new memory pool </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="mempool_8h.html#a49f7bd1da5ac201d0cf54dc0f0d82dd2" title="Shorthand for a new default memory pool with a capacity of 16 elements. ">ucx_mempool_new_default()</a> </dd></dl> - -</div> -</div> -<a id="a660ef42520ed6737c2e77aae18e3a7a4"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a660ef42520ed6737c2e77aae18e3a7a4">◆ </a></span>ucx_mempool_realloc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_mempool_realloc </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMempool.html">UcxMempool</a> * </td> - <td class="paramname"><em>pool</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ptr</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Reallocates pooled memory. </p> -<p>If the memory to be reallocated is not contained by the specified pool, the behavior is undefined.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">pool</td><td>the memory pool </td></tr> - <tr><td class="paramname">ptr</td><td>a pointer to the memory that shall be reallocated </td></tr> - <tr><td class="paramname">n</td><td>the new size of the memory </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the new location of the memory </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="allocator_8h.html#a6d7cf038a806e327c5da37321d04e426" title="A function pointer to the allocators realloc() function. ">ucx_allocator_realloc()</a> </dd></dl> - -</div> -</div> -<a id="af47b6b7c40f8f263dc28cc9a4e77b27c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af47b6b7c40f8f263dc28cc9a4e77b27c">◆ </a></span>ucx_mempool_reg_destr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_mempool_reg_destr </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMempool.html">UcxMempool</a> * </td> - <td class="paramname"><em>pool</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ptr</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> </td> - <td class="paramname"><em>destr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Registers a destructor function for the specified (non-pooled) memory. </p> -<p>This is useful, if you have memory that has not been allocated by a mempool, but shall be managed by a mempool.</p> -<p>This function creates an entry in the specified mempool and the memory will therefore (logically) convert to pooled memory. <b>However, this does not cause the memory to be freed automatically!</b>. If you want to use this function, make the memory pool free non-pooled memory, the specified destructor function must call <code>free()</code> by itself. But keep in mind, that you then MUST NOT use this destructor function with pooled memory (e.g. in <a class="el" href="mempool_8h.html#adb788e7ec24cd7dbdea6381539c549f2" title="Sets a destructor function for the specified memory. ">ucx_mempool_set_destr()</a>), as it would cause a double-free.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">pool</td><td>the memory pool </td></tr> - <tr><td class="paramname">ptr</td><td>data the destructor is registered for </td></tr> - <tr><td class="paramname">destr</td><td>a pointer to the destructor function </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="adb788e7ec24cd7dbdea6381539c549f2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#adb788e7ec24cd7dbdea6381539c549f2">◆ </a></span>ucx_mempool_set_destr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_mempool_set_destr </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ptr</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> </td> - <td class="paramname"><em>func</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Sets a destructor function for the specified memory. </p> -<p>The destructor is automatically called when the memory is freed or the pool is destroyed. A destructor for pooled memory <b>MUST NOT</b> free the memory itself, as this is done by the pool. Use a destructor to free any resources managed by the pooled object.</p> -<p>The only requirement for the specified memory is, that it <b>MUST</b> be pooled memory by a <a class="el" href="structUcxMempool.html" title="UCX mempool structure. ">UcxMempool</a> or an element-compatible mempool. The pointer to the destructor function is saved in a reserved area before the actual memory.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">ptr</td><td>pooled memory </td></tr> - <tr><td class="paramname">func</td><td>a pointer to the destructor function </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="mempool_8h.html#aefa26e3015f5aefadbfc74221bd246ac" title="Frees pooled memory. ">ucx_mempool_free()</a> </dd> -<dd> -<a class="el" href="mempool_8h.html#af096378da7e9bfbed3088497cf4c15bf" title="Destroys a memory pool. ">ucx_mempool_destroy()</a> </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/mempool_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/mempool.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">mempool.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="mempool_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#ifndef UCX_MEMPOOL_H</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#define UCX_MEMPOOL_H</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "<a class="code" href="allocator_8h.html">allocator.h</a>"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <stddef.h></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structUcxMempool.html"> 52</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structUcxMempool.html#ac45fd1e9269399e4c434d6bdaa770d92"> 54</a></span>  <a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMempool.html#ac45fd1e9269399e4c434d6bdaa770d92">allocator</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structUcxMempool.html#ae98c1b0150bb119ee0a8506a6f310d6e"> 57</a></span>  <span class="keywordtype">void</span> **<a class="code" href="structUcxMempool.html#ae98c1b0150bb119ee0a8506a6f310d6e">data</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structUcxMempool.html#aa3a73ab231e1bc207d526f46f1c1e23a"> 60</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxMempool.html#aa3a73ab231e1bc207d526f46f1c1e23a">ndata</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="structUcxMempool.html#a304729986f2894971d0469e71e196bf0"> 63</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxMempool.html#a304729986f2894971d0469e71e196bf0">size</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> } <a class="code" href="structUcxMempool.html">UcxMempool</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="mempool_8h.html#a49f7bd1da5ac201d0cf54dc0f0d82dd2"> 67</a></span> <span class="preprocessor">#define ucx_mempool_new_default() ucx_mempool_new(16)</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <a class="code" href="structUcxMempool.html">UcxMempool</a> *<a class="code" href="mempool_8h.html#ad71cb8c3b6fdb30360376a8b372ef22a">ucx_mempool_new</a>(<span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">int</span> <a class="code" href="mempool_8h.html#aaf75b5016098723a9280531ccc3a6d77">ucx_mempool_chcap</a>(<a class="code" href="structUcxMempool.html">UcxMempool</a> *pool, <span class="keywordtype">size_t</span> newcap);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">void</span> *<a class="code" href="mempool_8h.html#a2ae492b8f2878ccc9837ac213dced11e">ucx_mempool_malloc</a>(<a class="code" href="structUcxMempool.html">UcxMempool</a> *pool, <span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keywordtype">void</span> *<a class="code" href="mempool_8h.html#a4b9142011824ae24f00fabe128417d69">ucx_mempool_calloc</a>(<a class="code" href="structUcxMempool.html">UcxMempool</a> *pool, <span class="keywordtype">size_t</span> nelem, <span class="keywordtype">size_t</span> elsize);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keywordtype">void</span> *<a class="code" href="mempool_8h.html#a660ef42520ed6737c2e77aae18e3a7a4">ucx_mempool_realloc</a>(<a class="code" href="structUcxMempool.html">UcxMempool</a> *pool, <span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keywordtype">void</span> <a class="code" href="mempool_8h.html#aefa26e3015f5aefadbfc74221bd246ac">ucx_mempool_free</a>(<a class="code" href="structUcxMempool.html">UcxMempool</a> *pool, <span class="keywordtype">void</span> *ptr);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="keywordtype">void</span> <a class="code" href="mempool_8h.html#af096378da7e9bfbed3088497cf4c15bf">ucx_mempool_destroy</a>(<a class="code" href="structUcxMempool.html">UcxMempool</a> *pool);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keywordtype">void</span> <a class="code" href="mempool_8h.html#adb788e7ec24cd7dbdea6381539c549f2">ucx_mempool_set_destr</a>(<span class="keywordtype">void</span> *ptr, <a class="code" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> func);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keywordtype">void</span> <a class="code" href="mempool_8h.html#af47b6b7c40f8f263dc28cc9a4e77b27c">ucx_mempool_reg_destr</a>(<a class="code" href="structUcxMempool.html">UcxMempool</a> *pool, <span class="keywordtype">void</span> *ptr, <a class="code" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_MEMPOOL_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="ttc" id="mempool_8h_html_aefa26e3015f5aefadbfc74221bd246ac"><div class="ttname"><a href="mempool_8h.html#aefa26e3015f5aefadbfc74221bd246ac">ucx_mempool_free</a></div><div class="ttdeci">void ucx_mempool_free(UcxMempool *pool, void *ptr)</div><div class="ttdoc">Frees pooled memory. </div><div class="ttdef"><b>Definition:</b> mempool.c:187</div></div> -<div class="ttc" id="structUcxMempool_html"><div class="ttname"><a href="structUcxMempool.html">UcxMempool</a></div><div class="ttdoc">UCX mempool structure. </div><div class="ttdef"><b>Definition:</b> mempool.h:52</div></div> -<div class="ttc" id="mempool_8h_html_af096378da7e9bfbed3088497cf4c15bf"><div class="ttname"><a href="mempool_8h.html#af096378da7e9bfbed3088497cf4c15bf">ucx_mempool_destroy</a></div><div class="ttdeci">void ucx_mempool_destroy(UcxMempool *pool)</div><div class="ttdoc">Destroys a memory pool. </div><div class="ttdef"><b>Definition:</b> mempool.c:209</div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="mempool_8h_html_aaf75b5016098723a9280531ccc3a6d77"><div class="ttname"><a href="mempool_8h.html#aaf75b5016098723a9280531ccc3a6d77">ucx_mempool_chcap</a></div><div class="ttdeci">int ucx_mempool_chcap(UcxMempool *pool, size_t newcap)</div><div class="ttdoc">Resizes a memory pool. </div><div class="ttdef"><b>Definition:</b> mempool.c:103</div></div> -<div class="ttc" id="mempool_8h_html_af47b6b7c40f8f263dc28cc9a4e77b27c"><div class="ttname"><a href="mempool_8h.html#af47b6b7c40f8f263dc28cc9a4e77b27c">ucx_mempool_reg_destr</a></div><div class="ttdeci">void ucx_mempool_reg_destr(UcxMempool *pool, void *ptr, ucx_destructor destr)</div><div class="ttdoc">Registers a destructor function for the specified (non-pooled) memory. </div><div class="ttdef"><b>Definition:</b> mempool.c:229</div></div> -<div class="ttc" id="mempool_8h_html_a2ae492b8f2878ccc9837ac213dced11e"><div class="ttname"><a href="mempool_8h.html#a2ae492b8f2878ccc9837ac213dced11e">ucx_mempool_malloc</a></div><div class="ttdeci">void * ucx_mempool_malloc(UcxMempool *pool, size_t n)</div><div class="ttdoc">Allocates pooled memory. </div><div class="ttdef"><b>Definition:</b> mempool.c:123</div></div> -<div class="ttc" id="structUcxMempool_html_a304729986f2894971d0469e71e196bf0"><div class="ttname"><a href="structUcxMempool.html#a304729986f2894971d0469e71e196bf0">UcxMempool::size</a></div><div class="ttdeci">size_t size</div><div class="ttdoc">Memory pool size. </div><div class="ttdef"><b>Definition:</b> mempool.h:63</div></div> -<div class="ttc" id="structUcxMempool_html_aa3a73ab231e1bc207d526f46f1c1e23a"><div class="ttname"><a href="structUcxMempool.html#aa3a73ab231e1bc207d526f46f1c1e23a">UcxMempool::ndata</a></div><div class="ttdeci">size_t ndata</div><div class="ttdoc">Count of pooled memory items. </div><div class="ttdef"><b>Definition:</b> mempool.h:60</div></div> -<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div> -<div class="ttc" id="mempool_8h_html_a4b9142011824ae24f00fabe128417d69"><div class="ttname"><a href="mempool_8h.html#a4b9142011824ae24f00fabe128417d69">ucx_mempool_calloc</a></div><div class="ttdeci">void * ucx_mempool_calloc(UcxMempool *pool, size_t nelem, size_t elsize)</div><div class="ttdoc">Allocates a pooled memory array. </div><div class="ttdef"><b>Definition:</b> mempool.c:148</div></div> -<div class="ttc" id="structUcxMempool_html_ae98c1b0150bb119ee0a8506a6f310d6e"><div class="ttname"><a href="structUcxMempool.html#ae98c1b0150bb119ee0a8506a6f310d6e">UcxMempool::data</a></div><div class="ttdeci">void ** data</div><div class="ttdoc">List of pointers to pooled memory. </div><div class="ttdef"><b>Definition:</b> mempool.h:57</div></div> -<div class="ttc" id="mempool_8h_html_ad71cb8c3b6fdb30360376a8b372ef22a"><div class="ttname"><a href="mempool_8h.html#ad71cb8c3b6fdb30360376a8b372ef22a">ucx_mempool_new</a></div><div class="ttdeci">UcxMempool * ucx_mempool_new(size_t n)</div><div class="ttdoc">Creates a memory pool with the specified initial size. </div><div class="ttdef"><b>Definition:</b> mempool.c:67</div></div> -<div class="ttc" id="mempool_8h_html_a660ef42520ed6737c2e77aae18e3a7a4"><div class="ttname"><a href="mempool_8h.html#a660ef42520ed6737c2e77aae18e3a7a4">ucx_mempool_realloc</a></div><div class="ttdeci">void * ucx_mempool_realloc(UcxMempool *pool, void *ptr, size_t n)</div><div class="ttdoc">Reallocates pooled memory. </div><div class="ttdef"><b>Definition:</b> mempool.c:162</div></div> -<div class="ttc" id="allocator_8h_html"><div class="ttname"><a href="allocator_8h.html">allocator.h</a></div><div class="ttdoc">Allocator for custom memory management. </div></div> -<div class="ttc" id="structUcxMempool_html_ac45fd1e9269399e4c434d6bdaa770d92"><div class="ttname"><a href="structUcxMempool.html#ac45fd1e9269399e4c434d6bdaa770d92">UcxMempool::allocator</a></div><div class="ttdeci">UcxAllocator * allocator</div><div class="ttdoc">UcxAllocator based on this pool. </div><div class="ttdef"><b>Definition:</b> mempool.h:54</div></div> -<div class="ttc" id="mempool_8h_html_adb788e7ec24cd7dbdea6381539c549f2"><div class="ttname"><a href="mempool_8h.html#adb788e7ec24cd7dbdea6381539c549f2">ucx_mempool_set_destr</a></div><div class="ttdeci">void ucx_mempool_set_destr(void *ptr, ucx_destructor func)</div><div class="ttdoc">Sets a destructor function for the specified memory. </div><div class="ttdef"><b>Definition:</b> mempool.c:225</div></div> -<div class="ttc" id="ucx_8h_html_ad2b370c2809914c8b7fedab163c266b3"><div class="ttname"><a href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a></div><div class="ttdeci">void(* ucx_destructor)(void *)</div><div class="ttdoc">A function pointer to a destructor function. </div><div class="ttdef"><b>Definition:</b> ucx.h:72</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/menu.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+='<ul>'; - for (var i in data.children) { - result+='<li><a href="'+relPath+data.children[i].url+'">'+ - data.children[i].text+'</a>'+ - makeTree(data.children[i],relPath)+'</li>'; - } - result+='</ul>'; - } - return result; - } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchEnabled) { - if (serverSide) { - $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.png" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>'); - } else { - $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.png" alt=""/></a></span></div></li>'); - } - } - $('#main-menu').smartmenus(); -}
--- a/docs/api-2.1/menudata.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Data Structures",url:"annotated.html",children:[ -{text:"Data Structures",url:"annotated.html"}, -{text:"Data Structure Index",url:"classes.html"}, -{text:"Data Fields",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"a",url:"functions.html#index_a"}, -{text:"b",url:"functions.html#index_b"}, -{text:"c",url:"functions.html#index_c"}, -{text:"d",url:"functions.html#index_d"}, -{text:"e",url:"functions.html#index_e"}, -{text:"f",url:"functions.html#index_f"}, -{text:"h",url:"functions.html#index_h"}, -{text:"i",url:"functions.html#index_i"}, -{text:"k",url:"functions.html#index_k"}, -{text:"l",url:"functions.html#index_l"}, -{text:"m",url:"functions.html#index_m"}, -{text:"n",url:"functions.html#index_n"}, -{text:"p",url:"functions.html#index_p"}, -{text:"r",url:"functions.html#index_r"}, -{text:"s",url:"functions.html#index_s"}, -{text:"t",url:"functions.html#index_t"}, -{text:"u",url:"functions.html#index_u"}, -{text:"v",url:"functions.html#index_v"}, -{text:"w",url:"functions.html#index_w"}]}, -{text:"Variables",url:"functions_vars.html",children:[ -{text:"a",url:"functions_vars.html#index_a"}, -{text:"b",url:"functions_vars.html#index_b"}, -{text:"c",url:"functions_vars.html#index_c"}, -{text:"d",url:"functions_vars.html#index_d"}, -{text:"e",url:"functions_vars.html#index_e"}, -{text:"f",url:"functions_vars.html#index_f"}, -{text:"h",url:"functions_vars.html#index_h"}, -{text:"i",url:"functions_vars.html#index_i"}, -{text:"k",url:"functions_vars.html#index_k"}, -{text:"l",url:"functions_vars.html#index_l"}, -{text:"m",url:"functions_vars.html#index_m"}, -{text:"n",url:"functions_vars.html#index_n"}, -{text:"p",url:"functions_vars.html#index_p"}, -{text:"r",url:"functions_vars.html#index_r"}, -{text:"s",url:"functions_vars.html#index_s"}, -{text:"t",url:"functions_vars.html#index_t"}, -{text:"u",url:"functions_vars.html#index_u"}, -{text:"v",url:"functions_vars.html#index_v"}, -{text:"w",url:"functions_vars.html#index_w"}]}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"Globals",url:"globals.html",children:[ -{text:"All",url:"globals.html",children:[ -{text:"_",url:"globals.html#index__"}, -{text:"a",url:"globals_a.html#index_a"}, -{text:"c",url:"globals_c.html#index_c"}, -{text:"d",url:"globals_d.html#index_d"}, -{text:"p",url:"globals_p.html#index_p"}, -{text:"r",url:"globals_r.html#index_r"}, -{text:"s",url:"globals_s.html#index_s"}, -{text:"u",url:"globals_u.html#index_u"}, -{text:"w",url:"globals_w.html#index_w"}]}, -{text:"Functions",url:"globals_func.html",children:[ -{text:"s",url:"globals_func.html#index_s"}, -{text:"u",url:"globals_func_u.html#index_u"}]}, -{text:"Typedefs",url:"globals_type.html"}, -{text:"Macros",url:"globals_defs.html",children:[ -{text:"_",url:"globals_defs.html#index__"}, -{text:"a",url:"globals_defs.html#index_a"}, -{text:"p",url:"globals_defs.html#index_p"}, -{text:"s",url:"globals_defs.html#index_s"}, -{text:"u",url:"globals_defs.html#index_u"}]}]}]}]}
--- a/docs/api-2.1/properties_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,393 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/properties.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">properties.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Load / store utilities for properties files. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include "<a class="el" href="map_8h_source.html">map.h</a>"</code><br /> -</div> -<p><a href="properties_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html">UcxProperties</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object for parsing properties data. <a href="structUcxProperties.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:a44d9dd12cab3aaa0084f1c8b89405796"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxProperties.html">UcxProperties</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="properties_8h.html#a44d9dd12cab3aaa0084f1c8b89405796">ucx_properties_new</a> ()</td></tr> -<tr class="memdesc:a44d9dd12cab3aaa0084f1c8b89405796"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a new <a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object. <a href="#a44d9dd12cab3aaa0084f1c8b89405796">More...</a><br /></td></tr> -<tr class="separator:a44d9dd12cab3aaa0084f1c8b89405796"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a38a2fe7bb2986bd87c7e69356ab05c05"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="properties_8h.html#a38a2fe7bb2986bd87c7e69356ab05c05">ucx_properties_free</a> (<a class="el" href="structUcxProperties.html">UcxProperties</a> *prop)</td></tr> -<tr class="memdesc:a38a2fe7bb2986bd87c7e69356ab05c05"><td class="mdescLeft"> </td><td class="mdescRight">Destroys a <a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object. <a href="#a38a2fe7bb2986bd87c7e69356ab05c05">More...</a><br /></td></tr> -<tr class="separator:a38a2fe7bb2986bd87c7e69356ab05c05"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aaf8de121764a4d22c763ff2ab41f3a4d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d">ucx_properties_fill</a> (<a class="el" href="structUcxProperties.html">UcxProperties</a> *prop, char *buf, size_t len)</td></tr> -<tr class="memdesc:aaf8de121764a4d22c763ff2ab41f3a4d"><td class="mdescLeft"> </td><td class="mdescRight">Sets the input buffer for the properties parser. <a href="#aaf8de121764a4d22c763ff2ab41f3a4d">More...</a><br /></td></tr> -<tr class="separator:aaf8de121764a4d22c763ff2ab41f3a4d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7e03bc573d45d48c538cd721e810d33c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c">ucx_properties_next</a> (<a class="el" href="structUcxProperties.html">UcxProperties</a> *prop, <a class="el" href="structsstr__t.html">sstr_t</a> *name, <a class="el" href="structsstr__t.html">sstr_t</a> *value)</td></tr> -<tr class="memdesc:a7e03bc573d45d48c538cd721e810d33c"><td class="mdescLeft"> </td><td class="mdescRight">Retrieves the next key/value-pair. <a href="#a7e03bc573d45d48c538cd721e810d33c">More...</a><br /></td></tr> -<tr class="separator:a7e03bc573d45d48c538cd721e810d33c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5c7ff8bc3139960a3f3dc92072b742f3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="properties_8h.html#a5c7ff8bc3139960a3f3dc92072b742f3">ucx_properties2map</a> (<a class="el" href="structUcxProperties.html">UcxProperties</a> *prop, <a class="el" href="structUcxMap.html">UcxMap</a> *map)</td></tr> -<tr class="memdesc:a5c7ff8bc3139960a3f3dc92072b742f3"><td class="mdescLeft"> </td><td class="mdescRight">Retrieves all available key/value-pairs and puts them into a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. <a href="#a5c7ff8bc3139960a3f3dc92072b742f3">More...</a><br /></td></tr> -<tr class="separator:a5c7ff8bc3139960a3f3dc92072b742f3"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae1b600f839a6b2278b68fc314981a8a3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="properties_8h.html#ae1b600f839a6b2278b68fc314981a8a3">ucx_properties_load</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map, FILE *file)</td></tr> -<tr class="memdesc:ae1b600f839a6b2278b68fc314981a8a3"><td class="mdescLeft"> </td><td class="mdescRight">Loads a properties file to a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. <a href="#ae1b600f839a6b2278b68fc314981a8a3">More...</a><br /></td></tr> -<tr class="separator:ae1b600f839a6b2278b68fc314981a8a3"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a63c0c1b7648e675b21a1788917ff36fb"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="properties_8h.html#a63c0c1b7648e675b21a1788917ff36fb">ucx_properties_store</a> (<a class="el" href="structUcxMap.html">UcxMap</a> *map, FILE *file)</td></tr> -<tr class="memdesc:a63c0c1b7648e675b21a1788917ff36fb"><td class="mdescLeft"> </td><td class="mdescRight">Stores a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a> to a file. <a href="#a63c0c1b7648e675b21a1788917ff36fb">More...</a><br /></td></tr> -<tr class="separator:a63c0c1b7648e675b21a1788917ff36fb"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Load / store utilities for properties files. </p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Function Documentation</h2> -<a id="a5c7ff8bc3139960a3f3dc92072b742f3"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a5c7ff8bc3139960a3f3dc92072b742f3">◆ </a></span>ucx_properties2map()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_properties2map </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxProperties.html">UcxProperties</a> * </td> - <td class="paramname"><em>prop</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>map</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Retrieves all available key/value-pairs and puts them into a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> -<p>This is done by successive calls to <a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c" title="Retrieves the next key/value-pair. ">ucx_properties_next()</a> until no more key/value-pairs can be retrieved.</p> -<p>The memory for the map values is allocated by the map's own allocator.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">prop</td><td>the <a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object </td></tr> - <tr><td class="paramname">map</td><td>the target map </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="structUcxProperties.html#a34f71a6ab6dcb6892e3b4eb802e75bff" title="Parser error code. ">UcxProperties.error</a> code (i.e. 0 on success). </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d" title="Sets the input buffer for the properties parser. ">ucx_properties_fill()</a> </dd> -<dd> -<a class="el" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d" title="An allocator that is used for the map elements. ">UcxMap.allocator</a> </dd></dl> - -</div> -</div> -<a id="aaf8de121764a4d22c763ff2ab41f3a4d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aaf8de121764a4d22c763ff2ab41f3a4d">◆ </a></span>ucx_properties_fill()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_properties_fill </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxProperties.html">UcxProperties</a> * </td> - <td class="paramname"><em>prop</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">char * </td> - <td class="paramname"><em>buf</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>len</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Sets the input buffer for the properties parser. </p> -<p>After calling this function, you may parse the data by calling <a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c" title="Retrieves the next key/value-pair. ">ucx_properties_next()</a> until it returns 0. The function <a class="el" href="properties_8h.html#a5c7ff8bc3139960a3f3dc92072b742f3" title="Retrieves all available key/value-pairs and puts them into a UcxMap. ">ucx_properties2map()</a> is a convenience function that reads as much data as possible by using this function.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">prop</td><td>the <a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object </td></tr> - <tr><td class="paramname">buf</td><td>a pointer to the new buffer </td></tr> - <tr><td class="paramname">len</td><td>the payload length of the buffer </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c" title="Retrieves the next key/value-pair. ">ucx_properties_next()</a> </dd> -<dd> -<a class="el" href="properties_8h.html#a5c7ff8bc3139960a3f3dc92072b742f3" title="Retrieves all available key/value-pairs and puts them into a UcxMap. ">ucx_properties2map()</a> </dd></dl> - -</div> -</div> -<a id="a38a2fe7bb2986bd87c7e69356ab05c05"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a38a2fe7bb2986bd87c7e69356ab05c05">◆ </a></span>ucx_properties_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_properties_free </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxProperties.html">UcxProperties</a> * </td> - <td class="paramname"><em>prop</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys a <a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">prop</td><td>the <a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object to destroy </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="ae1b600f839a6b2278b68fc314981a8a3"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae1b600f839a6b2278b68fc314981a8a3">◆ </a></span>ucx_properties_load()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_properties_load </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>map</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">FILE * </td> - <td class="paramname"><em>file</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Loads a properties file to a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> -<p>This is a convenience function that reads data from an input stream until the end of the stream is reached.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map object to write the key/value-pairs to </td></tr> - <tr><td class="paramname">file</td><td>the <code>FILE*</code> stream to read from </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success, or a non-zero value on error</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d" title="Sets the input buffer for the properties parser. ">ucx_properties_fill()</a> </dd> -<dd> -<a class="el" href="properties_8h.html#a5c7ff8bc3139960a3f3dc92072b742f3" title="Retrieves all available key/value-pairs and puts them into a UcxMap. ">ucx_properties2map()</a> </dd></dl> - -</div> -</div> -<a id="a44d9dd12cab3aaa0084f1c8b89405796"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a44d9dd12cab3aaa0084f1c8b89405796">◆ </a></span>ucx_properties_new()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxProperties.html">UcxProperties</a>* ucx_properties_new </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Constructs a new <a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object. </p> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the new <a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object </dd></dl> - -</div> -</div> -<a id="a7e03bc573d45d48c538cd721e810d33c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a7e03bc573d45d48c538cd721e810d33c">◆ </a></span>ucx_properties_next()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_properties_next </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxProperties.html">UcxProperties</a> * </td> - <td class="paramname"><em>prop</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> * </td> - <td class="paramname"><em>name</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> * </td> - <td class="paramname"><em>value</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Retrieves the next key/value-pair. </p> -<p>This function returns a nonzero value as long as there are key/value-pairs found. If no more key/value-pairs are found, you may refill the input buffer with <a class="el" href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d" title="Sets the input buffer for the properties parser. ">ucx_properties_fill()</a>.</p> -<p><b>Attention:</b> the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> pointers of the output parameters point to memory within the input buffer of the parser and will get invalid some time. If you want long term copies of the key/value-pairs, use <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a> after calling this function.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">prop</td><td>the <a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object </td></tr> - <tr><td class="paramname">name</td><td>a pointer to the <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> that shall contain the property name </td></tr> - <tr><td class="paramname">value</td><td>a pointer to the <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> that shall contain the property value </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>Nonzero, if a key/value-pair was successfully retrieved </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d" title="Sets the input buffer for the properties parser. ">ucx_properties_fill()</a> </dd></dl> - -</div> -</div> -<a id="a63c0c1b7648e675b21a1788917ff36fb"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a63c0c1b7648e675b21a1788917ff36fb">◆ </a></span>ucx_properties_store()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_properties_store </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxMap.html">UcxMap</a> * </td> - <td class="paramname"><em>map</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">FILE * </td> - <td class="paramname"><em>file</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Stores a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a> to a file. </p> -<p>The key/value-pairs are written by using the following format:</p> -<p><code>[key] = [value]\n</code></p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">map</td><td>the map to store </td></tr> - <tr><td class="paramname">file</td><td>the <code>FILE*</code> stream to write to </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>0 on success, or a non-zero value on error </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/properties_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/properties.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">properties.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="properties_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#ifndef UCX_PROPERTIES_H</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#define UCX_PROPERTIES_H</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="map_8h.html">map.h</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structUcxProperties.html"> 53</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="structUcxProperties.html#a6bb4d29686df41a0f42641ee15232bfd"> 58</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structUcxProperties.html#a6bb4d29686df41a0f42641ee15232bfd">buffer</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="structUcxProperties.html#a4e7524434525267e29f493a25dcca6b5"> 64</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxProperties.html#a4e7524434525267e29f493a25dcca6b5">buflen</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="structUcxProperties.html#addd36ac8e5e42241c0a57453633970db"> 70</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxProperties.html#addd36ac8e5e42241c0a57453633970db">pos</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structUcxProperties.html#a68556d4260153f58dde44e4c365edce6"> 76</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structUcxProperties.html#a68556d4260153f58dde44e4c365edce6">tmp</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="structUcxProperties.html#a8a81853d5903bee2f4e1fa53fdffae6e"> 82</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxProperties.html#a8a81853d5903bee2f4e1fa53fdffae6e">tmplen</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="structUcxProperties.html#a5af10131ea9f679b4ee174499f92e210"> 88</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxProperties.html#a5af10131ea9f679b4ee174499f92e210">tmpcap</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="structUcxProperties.html#a34f71a6ab6dcb6892e3b4eb802e75bff"> 95</a></span>  <span class="keywordtype">int</span> <a class="code" href="structUcxProperties.html#a34f71a6ab6dcb6892e3b4eb802e75bff">error</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structUcxProperties.html#af6adb3f69616cf9d2bb5ea7b4d837ca5"> 101</a></span>  <span class="keywordtype">char</span> <a class="code" href="structUcxProperties.html#af6adb3f69616cf9d2bb5ea7b4d837ca5">delimiter</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="structUcxProperties.html#afaa2e6a289fa6949b7b01df35fa5def8"> 107</a></span>  <span class="keywordtype">char</span> <a class="code" href="structUcxProperties.html#afaa2e6a289fa6949b7b01df35fa5def8">comment1</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="structUcxProperties.html#a9ea7ecb414ca8bc7bef62cdd19cc6363"> 113</a></span>  <span class="keywordtype">char</span> <a class="code" href="structUcxProperties.html#a9ea7ecb414ca8bc7bef62cdd19cc6363">comment2</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="structUcxProperties.html#a5f3e561e32bac03e36a191a6940cca92"> 119</a></span>  <span class="keywordtype">char</span> <a class="code" href="structUcxProperties.html#a5f3e561e32bac03e36a191a6940cca92">comment3</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> } <a class="code" href="structUcxProperties.html">UcxProperties</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <a class="code" href="structUcxProperties.html">UcxProperties</a> *<a class="code" href="properties_8h.html#a44d9dd12cab3aaa0084f1c8b89405796">ucx_properties_new</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keywordtype">void</span> <a class="code" href="properties_8h.html#a38a2fe7bb2986bd87c7e69356ab05c05">ucx_properties_free</a>(<a class="code" href="structUcxProperties.html">UcxProperties</a> *prop);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keywordtype">void</span> <a class="code" href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d">ucx_properties_fill</a>(<a class="code" href="structUcxProperties.html">UcxProperties</a> *prop, <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keywordtype">int</span> <a class="code" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c">ucx_properties_next</a>(<a class="code" href="structUcxProperties.html">UcxProperties</a> *prop, <a class="code" href="structsstr__t.html">sstr_t</a> *name, <a class="code" href="structsstr__t.html">sstr_t</a> *value);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keywordtype">int</span> <a class="code" href="properties_8h.html#a5c7ff8bc3139960a3f3dc92072b742f3">ucx_properties2map</a>(<a class="code" href="structUcxProperties.html">UcxProperties</a> *prop, <a class="code" href="structUcxMap.html">UcxMap</a> *map);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="keywordtype">int</span> <a class="code" href="properties_8h.html#ae1b600f839a6b2278b68fc314981a8a3">ucx_properties_load</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *map, FILE *file);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keywordtype">int</span> <a class="code" href="properties_8h.html#a63c0c1b7648e675b21a1788917ff36fb">ucx_properties_store</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *map, FILE *file);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_PROPERTIES_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="ttc" id="structsstr__t_html"><div class="ttname"><a href="structsstr__t.html">sstr_t</a></div><div class="ttdoc">The UCX string structure. </div><div class="ttdef"><b>Definition:</b> string.h:90</div></div> -<div class="ttc" id="properties_8h_html_a44d9dd12cab3aaa0084f1c8b89405796"><div class="ttname"><a href="properties_8h.html#a44d9dd12cab3aaa0084f1c8b89405796">ucx_properties_new</a></div><div class="ttdeci">UcxProperties * ucx_properties_new()</div><div class="ttdoc">Constructs a new UcxProperties object. </div><div class="ttdef"><b>Definition:</b> properties.c:35</div></div> -<div class="ttc" id="structUcxProperties_html_a5f3e561e32bac03e36a191a6940cca92"><div class="ttname"><a href="structUcxProperties.html#a5f3e561e32bac03e36a191a6940cca92">UcxProperties::comment3</a></div><div class="ttdeci">char comment3</div><div class="ttdoc">The third comment character. </div><div class="ttdef"><b>Definition:</b> properties.h:119</div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="structUcxProperties_html_addd36ac8e5e42241c0a57453633970db"><div class="ttname"><a href="structUcxProperties.html#addd36ac8e5e42241c0a57453633970db">UcxProperties::pos</a></div><div class="ttdeci">size_t pos</div><div class="ttdoc">Current buffer position (don&#39;t set manually). </div><div class="ttdef"><b>Definition:</b> properties.h:70</div></div> -<div class="ttc" id="structUcxProperties_html_a9ea7ecb414ca8bc7bef62cdd19cc6363"><div class="ttname"><a href="structUcxProperties.html#a9ea7ecb414ca8bc7bef62cdd19cc6363">UcxProperties::comment2</a></div><div class="ttdeci">char comment2</div><div class="ttdoc">The second comment character. </div><div class="ttdef"><b>Definition:</b> properties.h:113</div></div> -<div class="ttc" id="properties_8h_html_ae1b600f839a6b2278b68fc314981a8a3"><div class="ttname"><a href="properties_8h.html#ae1b600f839a6b2278b68fc314981a8a3">ucx_properties_load</a></div><div class="ttdeci">int ucx_properties_load(UcxMap *map, FILE *file)</div><div class="ttdoc">Loads a properties file to a UcxMap. </div><div class="ttdef"><b>Definition:</b> properties.c:222</div></div> -<div class="ttc" id="structUcxProperties_html"><div class="ttname"><a href="structUcxProperties.html">UcxProperties</a></div><div class="ttdoc">UcxProperties object for parsing properties data. </div><div class="ttdef"><b>Definition:</b> properties.h:53</div></div> -<div class="ttc" id="structUcxProperties_html_a4e7524434525267e29f493a25dcca6b5"><div class="ttname"><a href="structUcxProperties.html#a4e7524434525267e29f493a25dcca6b5">UcxProperties::buflen</a></div><div class="ttdeci">size_t buflen</div><div class="ttdoc">Length of the input buffer (don&#39;t set manually). </div><div class="ttdef"><b>Definition:</b> properties.h:64</div></div> -<div class="ttc" id="structUcxProperties_html_a6bb4d29686df41a0f42641ee15232bfd"><div class="ttname"><a href="structUcxProperties.html#a6bb4d29686df41a0f42641ee15232bfd">UcxProperties::buffer</a></div><div class="ttdeci">char * buffer</div><div class="ttdoc">Input buffer (don&#39;t set manually). </div><div class="ttdef"><b>Definition:</b> properties.h:58</div></div> -<div class="ttc" id="structUcxProperties_html_a34f71a6ab6dcb6892e3b4eb802e75bff"><div class="ttname"><a href="structUcxProperties.html#a34f71a6ab6dcb6892e3b4eb802e75bff">UcxProperties::error</a></div><div class="ttdeci">int error</div><div class="ttdoc">Parser error code. </div><div class="ttdef"><b>Definition:</b> properties.h:95</div></div> -<div class="ttc" id="structUcxProperties_html_a8a81853d5903bee2f4e1fa53fdffae6e"><div class="ttname"><a href="structUcxProperties.html#a8a81853d5903bee2f4e1fa53fdffae6e">UcxProperties::tmplen</a></div><div class="ttdeci">size_t tmplen</div><div class="ttdoc">Internal temporary buffer length (don&#39;t set manually). </div><div class="ttdef"><b>Definition:</b> properties.h:82</div></div> -<div class="ttc" id="structUcxProperties_html_afaa2e6a289fa6949b7b01df35fa5def8"><div class="ttname"><a href="structUcxProperties.html#afaa2e6a289fa6949b7b01df35fa5def8">UcxProperties::comment1</a></div><div class="ttdeci">char comment1</div><div class="ttdoc">The first comment character. </div><div class="ttdef"><b>Definition:</b> properties.h:107</div></div> -<div class="ttc" id="properties_8h_html_a7e03bc573d45d48c538cd721e810d33c"><div class="ttname"><a href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c">ucx_properties_next</a></div><div class="ttdeci">int ucx_properties_next(UcxProperties *prop, sstr_t *name, sstr_t *value)</div><div class="ttdoc">Retrieves the next key/value-pair. </div><div class="ttdef"><b>Definition:</b> properties.c:80</div></div> -<div class="ttc" id="properties_8h_html_a5c7ff8bc3139960a3f3dc92072b742f3"><div class="ttname"><a href="properties_8h.html#a5c7ff8bc3139960a3f3dc92072b742f3">ucx_properties2map</a></div><div class="ttdeci">int ucx_properties2map(UcxProperties *prop, UcxMap *map)</div><div class="ttdoc">Retrieves all available key/value-pairs and puts them into a UcxMap. </div><div class="ttdef"><b>Definition:</b> properties.c:200</div></div> -<div class="ttc" id="structUcxProperties_html_af6adb3f69616cf9d2bb5ea7b4d837ca5"><div class="ttname"><a href="structUcxProperties.html#af6adb3f69616cf9d2bb5ea7b4d837ca5">UcxProperties::delimiter</a></div><div class="ttdeci">char delimiter</div><div class="ttdoc">The delimiter that shall be used. </div><div class="ttdef"><b>Definition:</b> properties.h:101</div></div> -<div class="ttc" id="structUcxProperties_html_a68556d4260153f58dde44e4c365edce6"><div class="ttname"><a href="structUcxProperties.html#a68556d4260153f58dde44e4c365edce6">UcxProperties::tmp</a></div><div class="ttdeci">char * tmp</div><div class="ttdoc">Internal temporary buffer (don&#39;t set manually). </div><div class="ttdef"><b>Definition:</b> properties.h:76</div></div> -<div class="ttc" id="structUcxMap_html"><div class="ttname"><a href="structUcxMap.html">UcxMap</a></div><div class="ttdoc">Structure for the UCX map. </div><div class="ttdef"><b>Definition:</b> map.h:81</div></div> -<div class="ttc" id="structUcxProperties_html_a5af10131ea9f679b4ee174499f92e210"><div class="ttname"><a href="structUcxProperties.html#a5af10131ea9f679b4ee174499f92e210">UcxProperties::tmpcap</a></div><div class="ttdeci">size_t tmpcap</div><div class="ttdoc">Internal temporary buffer capacity (don&#39;t set manually). </div><div class="ttdef"><b>Definition:</b> properties.h:88</div></div> -<div class="ttc" id="map_8h_html"><div class="ttname"><a href="map_8h.html">map.h</a></div><div class="ttdoc">Hash map implementation. </div></div> -<div class="ttc" id="properties_8h_html_aaf8de121764a4d22c763ff2ab41f3a4d"><div class="ttname"><a href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d">ucx_properties_fill</a></div><div class="ttdeci">void ucx_properties_fill(UcxProperties *prop, char *buf, size_t len)</div><div class="ttdoc">Sets the input buffer for the properties parser. </div><div class="ttdef"><b>Definition:</b> properties.c:64</div></div> -<div class="ttc" id="properties_8h_html_a63c0c1b7648e675b21a1788917ff36fb"><div class="ttname"><a href="properties_8h.html#a63c0c1b7648e675b21a1788917ff36fb">ucx_properties_store</a></div><div class="ttdeci">int ucx_properties_store(UcxMap *map, FILE *file)</div><div class="ttdoc">Stores a UcxMap to a file. </div><div class="ttdef"><b>Definition:</b> properties.c:242</div></div> -<div class="ttc" id="properties_8h_html_a38a2fe7bb2986bd87c7e69356ab05c05"><div class="ttname"><a href="properties_8h.html#a38a2fe7bb2986bd87c7e69356ab05c05">ucx_properties_free</a></div><div class="ttdeci">void ucx_properties_free(UcxProperties *prop)</div><div class="ttdoc">Destroys a UcxProperties object. </div><div class="ttdef"><b>Definition:</b> properties.c:57</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/search/all_0.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_0.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_0.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['_5f_5ffunction_5f_5f',['__FUNCTION__',['../test_8h.html#a828bb1dfda1afd67ca795075903d227d',1,'test.h']]] -];
--- a/docs/api-2.1/search/all_1.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_1.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_1.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -var searchData= -[ - ['alcalloc',['alcalloc',['../allocator_8h.html#a8d71470816f88f78cb9a9686c57e1b10',1,'allocator.h']]], - ['alfree',['alfree',['../allocator_8h.html#acd775785b54e97dc2b33a432c12c8fb2',1,'allocator.h']]], - ['allocator',['allocator',['../structUcxArray.html#a2ef31303b7548b9aa8e2b9187e295212',1,'UcxArray::allocator()'],['../structUcxAVLTree.html#a30652776b540156ad54c7d52833e4e28',1,'UcxAVLTree::allocator()'],['../structUcxMap.html#a531f3e481c1c331cf037b916192e974d',1,'UcxMap::allocator()'],['../structUcxMempool.html#ac45fd1e9269399e4c434d6bdaa770d92',1,'UcxMempool::allocator()'],['../structUcxStack.html#a33cda4f6890ac56ab31701598bc1ae10',1,'UcxStack::allocator()']]], - ['allocator_2eh',['allocator.h',['../allocator_8h.html',1,'']]], - ['almalloc',['almalloc',['../allocator_8h.html#ae1bc218fea8a35f4a3706f0beefcfb19',1,'allocator.h']]], - ['alrealloc',['alrealloc',['../allocator_8h.html#a029ee5c9bcbb3f873571553f788c5820',1,'allocator.h']]], - ['array_2eh',['array.h',['../array_8h.html',1,'']]], - ['avl_2eh',['avl.h',['../avl_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/all_10.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_10.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_10.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -var searchData= -[ - ['test',['test',['../structUcxTestList.html#a6022faa52e772b073141ca0a2f5a56c9',1,'UcxTestList']]], - ['test_2eh',['test.h',['../test_8h.html',1,'']]], - ['tests',['tests',['../structUcxTestSuite.html#a630677a70ebc2c3296704cda3196492b',1,'UcxTestSuite']]], - ['tmp',['tmp',['../structUcxProperties.html#a68556d4260153f58dde44e4c365edce6',1,'UcxProperties']]], - ['tmpcap',['tmpcap',['../structUcxProperties.html#a5af10131ea9f679b4ee174499f92e210',1,'UcxProperties']]], - ['tmplen',['tmplen',['../structUcxProperties.html#a8a81853d5903bee2f4e1fa53fdffae6e',1,'UcxProperties']]], - ['top',['top',['../structUcxStack.html#af0ff6f58edce469f17683013b86ade27',1,'UcxStack']]] -];
--- a/docs/api-2.1/search/all_11.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_11.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_11.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,271 +0,0 @@ -var searchData= -[ - ['uap_20common_20extensions',['UAP Common Extensions',['../index.html',1,'']]], - ['ucx_2eh',['ucx.h',['../ucx_8h.html',1,'']]], - ['ucx_5fallocator_5fcalloc',['ucx_allocator_calloc',['../allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12',1,'allocator.h']]], - ['ucx_5fallocator_5fdefault',['UCX_ALLOCATOR_DEFAULT',['../allocator_8h.html#a1283a8f875f90a7af3aba5e031fc2e3f',1,'allocator.h']]], - ['ucx_5fallocator_5ffree',['ucx_allocator_free',['../allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e',1,'allocator.h']]], - ['ucx_5fallocator_5fmalloc',['ucx_allocator_malloc',['../allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473',1,'allocator.h']]], - ['ucx_5fallocator_5frealloc',['ucx_allocator_realloc',['../allocator_8h.html#a6d7cf038a806e327c5da37321d04e426',1,'allocator.h']]], - ['ucx_5farray_5fappend_5ffrom',['ucx_array_append_from',['../array_8h.html#aea01731ad94ea73c0c8fb1d1b7a35fcf',1,'array.c']]], - ['ucx_5farray_5fat',['ucx_array_at',['../array_8h.html#aa698085fd1a8b70d6b709999c51b49e8',1,'array.c']]], - ['ucx_5farray_5fclone',['ucx_array_clone',['../array_8h.html#a4a8c273370e4a3a3e2624e364f5ab410',1,'array.c']]], - ['ucx_5farray_5fconcat',['ucx_array_concat',['../array_8h.html#aa5a0bf3d3f0df6406beb0e569021cc28',1,'array.c']]], - ['ucx_5farray_5fcontains',['ucx_array_contains',['../array_8h.html#a5241058cd2329147bc5b1593ae7e51dc',1,'array.c']]], - ['ucx_5farray_5fdestroy',['ucx_array_destroy',['../array_8h.html#a8e83681d8d5d8cddbf10f63ce5be4c10',1,'array.c']]], - ['ucx_5farray_5fequals',['ucx_array_equals',['../array_8h.html#a43292b448adb1741677aa8c578bcc201',1,'array.c']]], - ['ucx_5farray_5ffind',['ucx_array_find',['../array_8h.html#ae7bdbed94afee9b20b38b95e3ab470f0',1,'array.c']]], - ['ucx_5farray_5ffree',['ucx_array_free',['../array_8h.html#ac01ee914468a16f470bf3071fffbe438',1,'array.c']]], - ['ucx_5farray_5fgrow',['ucx_array_grow',['../array_8h.html#ab0cbf243824aaebee48277315e03afce',1,'array.c']]], - ['ucx_5farray_5finit',['ucx_array_init',['../array_8h.html#ad921e85c28ffae32230777a53c5037e5',1,'array.c']]], - ['ucx_5farray_5finit_5fa',['ucx_array_init_a',['../array_8h.html#a2451e61ebb15a7ba1c1319267ba75b8c',1,'array.c']]], - ['ucx_5farray_5fnew',['ucx_array_new',['../array_8h.html#a994a2fbf1c33a3833e2a70cd9a4352b7',1,'array.c']]], - ['ucx_5farray_5fnew_5fa',['ucx_array_new_a',['../array_8h.html#a177170258c215eb2e4f5a32e59f0cb1b',1,'array.c']]], - ['ucx_5farray_5fprepend_5ffrom',['ucx_array_prepend_from',['../array_8h.html#a95b52acc2193b5c33cf0eaa4f2082477',1,'array.c']]], - ['ucx_5farray_5fremove',['ucx_array_remove',['../array_8h.html#aa45eac6b697f83adac81c0860cf306b8',1,'array.c']]], - ['ucx_5farray_5fremove_5ffast',['ucx_array_remove_fast',['../array_8h.html#a548d81b07612bae3ba8c4c4b49104b8e',1,'array.c']]], - ['ucx_5farray_5freserve',['ucx_array_reserve',['../array_8h.html#a1c3bf8433c1de3c933f3854ab297fe1d',1,'array.c']]], - ['ucx_5farray_5fresize',['ucx_array_resize',['../array_8h.html#a27762e7c06a6c781015e3c8ceeee0ce3',1,'array.c']]], - ['ucx_5farray_5fset_5ffrom',['ucx_array_set_from',['../array_8h.html#a1bb545d065358d265d80d815ba382a28',1,'array.c']]], - ['ucx_5farray_5fshrink',['ucx_array_shrink',['../array_8h.html#a2daf50e80aee9bccebee876a7efd2dfc',1,'array.c']]], - ['ucx_5farray_5fsort',['ucx_array_sort',['../array_8h.html#add773514569b872a6624381b4b6af52c',1,'array.c']]], - ['ucx_5farray_5futil_5fset',['ucx_array_util_set',['../array_8h.html#a1d959c29af3125bdd37cde3a554e729c',1,'array.h']]], - ['ucx_5farray_5futil_5fset_5fa',['ucx_array_util_set_a',['../array_8h.html#ad0a8d76980cf1c1910e64a245803fb9a',1,'array.c']]], - ['ucx_5farray_5futil_5fsetptr',['ucx_array_util_setptr',['../array_8h.html#a59a5b342965e790945f9c7a3f86b99f9',1,'array.h']]], - ['ucx_5farray_5futil_5fsetptr_5fa',['ucx_array_util_setptr_a',['../array_8h.html#ad708b333c0c1b02c998309a58ea65e31',1,'array.c']]], - ['ucx_5fasprintf',['ucx_asprintf',['../utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5',1,'utils.c']]], - ['ucx_5favl_5fcount',['ucx_avl_count',['../avl_8h.html#a92c1d41c2b22fe4a029a486ab2153e35',1,'avl.c']]], - ['ucx_5favl_5fdefault_5fnew',['ucx_avl_default_new',['../avl_8h.html#ac2886d4b79b48c9fabf6408873f84cd2',1,'avl.h']]], - ['ucx_5favl_5ffind',['ucx_avl_find',['../avl_8h.html#a51770e1614b28d7d22dea096c3704f83',1,'avl.c']]], - ['ucx_5favl_5ffind_5fclosest',['UCX_AVL_FIND_CLOSEST',['../avl_8h.html#af16f24d74fd6af0154de041566c6603b',1,'avl.h']]], - ['ucx_5favl_5ffind_5fexact',['UCX_AVL_FIND_EXACT',['../avl_8h.html#aaaf4a6f6f661cda7791db239212285d9',1,'avl.h']]], - ['ucx_5favl_5ffind_5flower_5fbounded',['UCX_AVL_FIND_LOWER_BOUNDED',['../avl_8h.html#abd2446d544d5412b6997ee8a17bd368c',1,'avl.h']]], - ['ucx_5favl_5ffind_5fnode',['ucx_avl_find_node',['../avl_8h.html#a664986f64d6865605199fbff06e19cd5',1,'avl.c']]], - ['ucx_5favl_5ffind_5fupper_5fbounded',['UCX_AVL_FIND_UPPER_BOUNDED',['../avl_8h.html#ac74ee7649c1e206b08b31f37dd68ca5e',1,'avl.h']]], - ['ucx_5favl_5ffree',['ucx_avl_free',['../avl_8h.html#a2f92db538f25fce908d2cb3e5590944c',1,'avl.c']]], - ['ucx_5favl_5ffree_5fcontent',['ucx_avl_free_content',['../avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279',1,'avl.c']]], - ['ucx_5favl_5fget',['ucx_avl_get',['../avl_8h.html#adbcf7ceb3f014a30c7214f7304519efe',1,'avl.c']]], - ['ucx_5favl_5fget_5fnode',['ucx_avl_get_node',['../avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e',1,'avl.c']]], - ['ucx_5favl_5fnew',['ucx_avl_new',['../avl_8h.html#a11b043d65a11b7092d5d98b298e5ede3',1,'avl.c']]], - ['ucx_5favl_5fnew_5fa',['ucx_avl_new_a',['../avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2',1,'avl.c']]], - ['ucx_5favl_5fpred',['ucx_avl_pred',['../avl_8h.html#a0e739aeb66dda6a6a3f6eb51b50cf346',1,'avl.c']]], - ['ucx_5favl_5fput',['ucx_avl_put',['../avl_8h.html#aec401fab4a24a7edffa734f9baf88577',1,'avl.c']]], - ['ucx_5favl_5fput_5fs',['ucx_avl_put_s',['../avl_8h.html#a32cf8955cc0226a82bacfc7b76d6474c',1,'avl.c']]], - ['ucx_5favl_5fremove',['ucx_avl_remove',['../avl_8h.html#a1d821119c805d7fbb7e424bc3effeba9',1,'avl.c']]], - ['ucx_5favl_5fremove_5fnode',['ucx_avl_remove_node',['../avl_8h.html#a9a792b7d9e58073deef74a341f8bc720',1,'avl.c']]], - ['ucx_5favl_5fremove_5fs',['ucx_avl_remove_s',['../avl_8h.html#a01aeeecd6415f0cc2b623486eb28f254',1,'avl.c']]], - ['ucx_5favl_5fsucc',['ucx_avl_succ',['../avl_8h.html#aab1ad9b027ff5e50671aa0ee84e2d541',1,'avl.c']]], - ['ucx_5fbprintf',['ucx_bprintf',['../utils_8h.html#a9d7d65a420f026fcb6982803d5120519',1,'utils.h']]], - ['ucx_5fbuffer_5fautoextend',['UCX_BUFFER_AUTOEXTEND',['../buffer_8h.html#a05f9565f2d04399168c3b1c152a632be',1,'buffer.h']]], - ['ucx_5fbuffer_5fautofree',['UCX_BUFFER_AUTOFREE',['../buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535',1,'buffer.h']]], - ['ucx_5fbuffer_5fclear',['ucx_buffer_clear',['../buffer_8h.html#a374abd5aabfcc3ee0777a79d5fe651ab',1,'buffer.h']]], - ['ucx_5fbuffer_5fclone',['ucx_buffer_clone',['../buffer_8h.html#a828353846428c2c2f695f9938f059e52',1,'buffer.h']]], - ['ucx_5fbuffer_5fdefault',['UCX_BUFFER_DEFAULT',['../buffer_8h.html#acc77c8ed7b26854f555d4a5d11e49ea2',1,'buffer.h']]], - ['ucx_5fbuffer_5feof',['ucx_buffer_eof',['../buffer_8h.html#abad7fd9ad5061224c780b8d1d4c55f09',1,'buffer.c']]], - ['ucx_5fbuffer_5fextend',['ucx_buffer_extend',['../buffer_8h.html#afaf97d2cd7e9faad79a9d35fe33e30c6',1,'buffer.c']]], - ['ucx_5fbuffer_5fextract',['ucx_buffer_extract',['../buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef',1,'buffer.c']]], - ['ucx_5fbuffer_5ffree',['ucx_buffer_free',['../buffer_8h.html#a2af8646d8905c22c7322e7540b0440af',1,'buffer.c']]], - ['ucx_5fbuffer_5fgetc',['ucx_buffer_getc',['../buffer_8h.html#a396339022159ce4ca6d069de9f9209b0',1,'buffer.c']]], - ['ucx_5fbuffer_5fnew',['ucx_buffer_new',['../buffer_8h.html#aacea876d692193ec6f859ce98da7351c',1,'buffer.c']]], - ['ucx_5fbuffer_5fputc',['ucx_buffer_putc',['../buffer_8h.html#a7d6f01b9d631b0123475dfb98fb849ac',1,'buffer.c']]], - ['ucx_5fbuffer_5fputs',['ucx_buffer_puts',['../buffer_8h.html#af1d4b478e04b3ae0bf30e7c2ea964ea2',1,'buffer.c']]], - ['ucx_5fbuffer_5fread',['ucx_buffer_read',['../buffer_8h.html#ae5c3430759f0059547b35d5a254d4da5',1,'buffer.c']]], - ['ucx_5fbuffer_5fseek',['ucx_buffer_seek',['../buffer_8h.html#a47d98482662073c74f35deb0957d15d1',1,'buffer.c']]], - ['ucx_5fbuffer_5fshift',['ucx_buffer_shift',['../buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69',1,'buffer.c']]], - ['ucx_5fbuffer_5fshift_5fleft',['ucx_buffer_shift_left',['../buffer_8h.html#a20431dd0ed6a6fe9f15333bd72afe4db',1,'buffer.c']]], - ['ucx_5fbuffer_5fshift_5fright',['ucx_buffer_shift_right',['../buffer_8h.html#a4fa10b6471495547eb981248fd4f1bc2',1,'buffer.c']]], - ['ucx_5fbuffer_5fto_5fsstr',['ucx_buffer_to_sstr',['../buffer_8h.html#a0f4b64f1b3a74c4f6c5d9409d6b6086a',1,'buffer.h']]], - ['ucx_5fbuffer_5fwrite',['ucx_buffer_write',['../buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05',1,'buffer.c']]], - ['ucx_5fcmp_5fdouble',['ucx_cmp_double',['../utils_8h.html#ab804b7c27d0bfcd7bf3a3583140825b6',1,'utils.c']]], - ['ucx_5fcmp_5ffloat',['ucx_cmp_float',['../utils_8h.html#ad1196b561bcdad76c393885819769a97',1,'utils.c']]], - ['ucx_5fcmp_5fint',['ucx_cmp_int',['../utils_8h.html#a8ce7e11e6b3deafe89a32a091fde7f16',1,'utils.c']]], - ['ucx_5fcmp_5fint16',['ucx_cmp_int16',['../utils_8h.html#aa29e6e559946375e34113e34e0b0bd0d',1,'utils.c']]], - ['ucx_5fcmp_5fint32',['ucx_cmp_int32',['../utils_8h.html#a858b2ac443fb202643b71f6a7e9218dd',1,'utils.c']]], - ['ucx_5fcmp_5fint64',['ucx_cmp_int64',['../utils_8h.html#a54701aea6a89fed1402dfb0bf56bc7f6',1,'utils.c']]], - ['ucx_5fcmp_5flongint',['ucx_cmp_longint',['../utils_8h.html#aeb57a2b9a6aaa0460c7a6bec29accf2c',1,'utils.c']]], - ['ucx_5fcmp_5flonglong',['ucx_cmp_longlong',['../utils_8h.html#a366b57def20f86a41eaedf575eea5375',1,'utils.c']]], - ['ucx_5fcmp_5fmem',['ucx_cmp_mem',['../utils_8h.html#aff7d2bcded71196831a8c0664333f8e7',1,'utils.c']]], - ['ucx_5fcmp_5fptr',['ucx_cmp_ptr',['../utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8',1,'utils.c']]], - ['ucx_5fcmp_5fsstr',['ucx_cmp_sstr',['../utils_8h.html#adee0739589166d272f8cb7c23aabf8ba',1,'utils.c']]], - ['ucx_5fcmp_5fstr',['ucx_cmp_str',['../utils_8h.html#aa6a37b9d172b6a5b2803d152f9e1b258',1,'utils.c']]], - ['ucx_5fcmp_5fstrn',['ucx_cmp_strn',['../utils_8h.html#ac6b354a878f551a3a5b20a167db3f308',1,'utils.c']]], - ['ucx_5fcmp_5fuint',['ucx_cmp_uint',['../utils_8h.html#abd83a5da91c3dd026a6931bd80c12f1e',1,'utils.c']]], - ['ucx_5fcmp_5fuint16',['ucx_cmp_uint16',['../utils_8h.html#acde5366437e886a459b7468f7a9e11f0',1,'utils.c']]], - ['ucx_5fcmp_5fuint32',['ucx_cmp_uint32',['../utils_8h.html#a5879d1722330355914d8c9146fa549d3',1,'utils.c']]], - ['ucx_5fcmp_5fuint64',['ucx_cmp_uint64',['../utils_8h.html#a1572a78b5b42f7151a5b2a5a7283d62d',1,'utils.c']]], - ['ucx_5fcmp_5fulongint',['ucx_cmp_ulongint',['../utils_8h.html#a3f3cbae2594d6f722bae29acb0408a24',1,'utils.c']]], - ['ucx_5fcmp_5fulonglong',['ucx_cmp_ulonglong',['../utils_8h.html#a6acfc359421f21f9a042a654ff7faac5',1,'utils.c']]], - ['ucx_5fdefault_5fallocator',['ucx_default_allocator',['../allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf',1,'allocator.c']]], - ['ucx_5fdefault_5fcalloc',['ucx_default_calloc',['../allocator_8h.html#a3a0bfdd13d887012309c459b339f338f',1,'allocator.c']]], - ['ucx_5fdefault_5ffree',['ucx_default_free',['../allocator_8h.html#a646d83aaaadfe33ae414c0fad8bfc52a',1,'allocator.c']]], - ['ucx_5fdefault_5fmalloc',['ucx_default_malloc',['../allocator_8h.html#a96403ebf3d2312d95f2fe7627a1cdbc0',1,'allocator.c']]], - ['ucx_5fdefault_5frealloc',['ucx_default_realloc',['../allocator_8h.html#a47cfc8af626a86fcb93a2b14b90498ed',1,'allocator.c']]], - ['ucx_5fdestructor',['ucx_destructor',['../ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3',1,'ucx.h']]], - ['ucx_5fdist_5fint',['ucx_dist_int',['../utils_8h.html#a4ab6753739d56c09cdf6079fdcabf7c6',1,'utils.c']]], - ['ucx_5fdist_5fint16',['ucx_dist_int16',['../utils_8h.html#a81fb8434b70ca11bf2c14abfa21d16a9',1,'utils.c']]], - ['ucx_5fdist_5fint32',['ucx_dist_int32',['../utils_8h.html#ab4a659cc46096f0490c1dafa57726476',1,'utils.c']]], - ['ucx_5fdist_5fint64',['ucx_dist_int64',['../utils_8h.html#a54e7d06585bad3a899befc4e9c13853f',1,'utils.c']]], - ['ucx_5fdist_5flongint',['ucx_dist_longint',['../utils_8h.html#a43e73d288b1553a0078bf4c98dd341f5',1,'utils.c']]], - ['ucx_5fdist_5flonglong',['ucx_dist_longlong',['../utils_8h.html#a306778414a2427951ea263be92368627',1,'utils.c']]], - ['ucx_5fdist_5fuint',['ucx_dist_uint',['../utils_8h.html#a37b7d471ca1679992afc11a0deda45f4',1,'utils.c']]], - ['ucx_5fdist_5fuint16',['ucx_dist_uint16',['../utils_8h.html#a66e00a0703cbcde050ec922578e2f080',1,'utils.c']]], - ['ucx_5fdist_5fuint32',['ucx_dist_uint32',['../utils_8h.html#add2b5c5507caba59d894b84e056b079b',1,'utils.c']]], - ['ucx_5fdist_5fuint64',['ucx_dist_uint64',['../utils_8h.html#a3ba75e2e0b2479eef2b22fb219b42da7',1,'utils.c']]], - ['ucx_5fdist_5fulongint',['ucx_dist_ulongint',['../utils_8h.html#abb13476228d0c16bfaba08469adbae2d',1,'utils.c']]], - ['ucx_5fdist_5fulonglong',['ucx_dist_ulonglong',['../utils_8h.html#a59a5859272cb4b43cbdd58208c41e32b',1,'utils.c']]], - ['ucx_5fforeach',['UCX_FOREACH',['../list_8h.html#a4b143b6526a410aa4d22cb3bb9365d70',1,'list.h']]], - ['ucx_5ffprintf',['ucx_fprintf',['../utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a',1,'utils.c']]], - ['ucx_5fhash',['ucx_hash',['../map_8h.html#aea3be97254c05595d986ef6a9faae87b',1,'map.c']]], - ['ucx_5fkey',['ucx_key',['../map_8h.html#a3e540bb46b8ee19789aed63fd8919200',1,'map.c']]], - ['ucx_5flist_5fappend',['ucx_list_append',['../list_8h.html#a00c122c8a26d35b60676939df4161621',1,'list.c']]], - ['ucx_5flist_5fappend_5fa',['ucx_list_append_a',['../list_8h.html#adf3b3e2e0ff977d8928671d6bd82fc60',1,'list.c']]], - ['ucx_5flist_5fclone',['ucx_list_clone',['../list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed',1,'list.c']]], - ['ucx_5flist_5fclone_5fa',['ucx_list_clone_a',['../list_8h.html#a08ca1ba0d2e82258b0408714c1f4c425',1,'list.c']]], - ['ucx_5flist_5fconcat',['ucx_list_concat',['../list_8h.html#a77163a0cc82fae52bec26c8c0c3674d9',1,'list.c']]], - ['ucx_5flist_5fcontains',['ucx_list_contains',['../list_8h.html#a8b0fa051fcfe12e1a82cca1087973852',1,'list.c']]], - ['ucx_5flist_5fdifference',['ucx_list_difference',['../list_8h.html#a6c5db5d1d11ad28b6fe1a80ee1c1e449',1,'list.c']]], - ['ucx_5flist_5fdifference_5fa',['ucx_list_difference_a',['../list_8h.html#a4a2a2fc5cc41073c516db6235bbc51d5',1,'list.c']]], - ['ucx_5flist_5fequals',['ucx_list_equals',['../list_8h.html#adc435447cecf885bc63d232191085bbe',1,'list.c']]], - ['ucx_5flist_5ffind',['ucx_list_find',['../list_8h.html#a9b3b6842d3be572e06a7f519e198cb83',1,'list.c']]], - ['ucx_5flist_5ffirst',['ucx_list_first',['../list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5',1,'list.c']]], - ['ucx_5flist_5ffree',['ucx_list_free',['../list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668',1,'list.c']]], - ['ucx_5flist_5ffree_5fa',['ucx_list_free_a',['../list_8h.html#a944e11f76c38767cd1100d72a4e3b25b',1,'list.c']]], - ['ucx_5flist_5ffree_5fcontent',['ucx_list_free_content',['../list_8h.html#a4ba6c96642f72ea046cc22627c72979c',1,'list.c']]], - ['ucx_5flist_5fget',['ucx_list_get',['../list_8h.html#a2509ffe19bce6a8708c77f89480c75fb',1,'list.c']]], - ['ucx_5flist_5findexof',['ucx_list_indexof',['../list_8h.html#ae2ff2974812ca185870f80bc4ed9337e',1,'list.c']]], - ['ucx_5flist_5fintersection',['ucx_list_intersection',['../list_8h.html#a259f9b754978aeca23dfabba16e20f39',1,'list.c']]], - ['ucx_5flist_5fintersection_5fa',['ucx_list_intersection_a',['../list_8h.html#a1d0b00514dbb81ba6270b58da0c5b9a8',1,'list.c']]], - ['ucx_5flist_5flast',['ucx_list_last',['../list_8h.html#add5ec40c5006e29c629d23c2eb5a6553',1,'list.c']]], - ['ucx_5flist_5fprepend',['ucx_list_prepend',['../list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4',1,'list.c']]], - ['ucx_5flist_5fprepend_5fa',['ucx_list_prepend_a',['../list_8h.html#a54654e6dc60e1c3de9e886c150e404ec',1,'list.c']]], - ['ucx_5flist_5fremove',['ucx_list_remove',['../list_8h.html#a410cb3e8260037ba56c72d14b899b468',1,'list.c']]], - ['ucx_5flist_5fremove_5fa',['ucx_list_remove_a',['../list_8h.html#aca687b7c4e7170175f447e549125aa52',1,'list.c']]], - ['ucx_5flist_5fsize',['ucx_list_size',['../list_8h.html#ae88001cc8ae40b946560f31434abed8f',1,'list.c']]], - ['ucx_5flist_5fsort',['ucx_list_sort',['../list_8h.html#ac74962d9bd7cfc9d3e2e09651469377b',1,'list.c']]], - ['ucx_5flist_5funion',['ucx_list_union',['../list_8h.html#a94ecdb0cea1633ad7074f027fa8485fa',1,'list.c']]], - ['ucx_5flist_5funion_5fa',['ucx_list_union_a',['../list_8h.html#a65b4355536f4ebc4130211b46469f4c1',1,'list.c']]], - ['ucx_5flogger_5fdebug',['ucx_logger_debug',['../logging_8h.html#a2936402799892db5138e5f1f8c25db0c',1,'ucx_logger_debug(): logging.h'],['../logging_8h.html#acff01d1ef919ea997cfce755fc1b83d8',1,'UCX_LOGGER_DEBUG(): logging.h']]], - ['ucx_5flogger_5ferror',['ucx_logger_error',['../logging_8h.html#a6a9e472e14d6768e59d96d245e065397',1,'ucx_logger_error(): logging.h'],['../logging_8h.html#aa254c07fe3a907613e2256a318d5c9a8',1,'UCX_LOGGER_ERROR(): logging.h']]], - ['ucx_5flogger_5ffree',['ucx_logger_free',['../logging_8h.html#ac4697b784e01ec990d2acea192e21658',1,'logging.c']]], - ['ucx_5flogger_5finfo',['UCX_LOGGER_INFO',['../logging_8h.html#a4b0178bf60a6129373ffc59114ca4c9b',1,'UCX_LOGGER_INFO(): logging.h'],['../logging_8h.html#a98464d8d51376ce2716dcc4eca00d5da',1,'ucx_logger_info(): logging.h']]], - ['ucx_5flogger_5flevel',['UCX_LOGGER_LEVEL',['../logging_8h.html#aee18bc20e58ffb69910121512c350839',1,'logging.h']]], - ['ucx_5flogger_5flog',['ucx_logger_log',['../logging_8h.html#aa0245325031d95799b28def177fd14ec',1,'logging.h']]], - ['ucx_5flogger_5flogf',['ucx_logger_logf',['../logging_8h.html#ac337e5d02ebea565012d4c11bd643801',1,'logging.c']]], - ['ucx_5flogger_5fnew',['ucx_logger_new',['../logging_8h.html#ac560f8517d2172794c9d2691735ec48c',1,'logging.c']]], - ['ucx_5flogger_5fregister_5flevel',['ucx_logger_register_level',['../logging_8h.html#a5cffc19502c4c90bfb3bd3bbcd18170a',1,'logging.h']]], - ['ucx_5flogger_5fsource',['UCX_LOGGER_SOURCE',['../logging_8h.html#a0e0d72b12616c1e49ff8834eaf4cb8a2',1,'logging.h']]], - ['ucx_5flogger_5ftimestamp',['UCX_LOGGER_TIMESTAMP',['../logging_8h.html#a38607008268b4f776ee500fb95d2e823',1,'logging.h']]], - ['ucx_5flogger_5ftrace',['UCX_LOGGER_TRACE',['../logging_8h.html#a55b88d1fec7036d841b3ddd6195c5586',1,'UCX_LOGGER_TRACE(): logging.h'],['../logging_8h.html#a3031b7ff13f4cfae9c2916543be2877c',1,'ucx_logger_trace(): logging.h']]], - ['ucx_5flogger_5fwarn',['UCX_LOGGER_WARN',['../logging_8h.html#abd01ca11486226ba34e8f7028d9fffba',1,'UCX_LOGGER_WARN(): logging.h'],['../logging_8h.html#aca7bd861b646892813fd7310c0aa69af',1,'ucx_logger_warn(): logging.h']]], - ['ucx_5fmap_5fclear',['ucx_map_clear',['../map_8h.html#a285e90e40681c6d9631c935dda0967f2',1,'map.c']]], - ['ucx_5fmap_5fclone',['ucx_map_clone',['../map_8h.html#a62c6c30cbb0d824ba710f5030ff9a4e4',1,'map.c']]], - ['ucx_5fmap_5fclone_5fa',['ucx_map_clone_a',['../map_8h.html#a9aea9103703d5c168420bb6bf85549ea',1,'map.c']]], - ['ucx_5fmap_5fcopy',['ucx_map_copy',['../map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425',1,'map.c']]], - ['ucx_5fmap_5fcstr_5fget',['ucx_map_cstr_get',['../map_8h.html#a64e1fb55498fa502dd2ed8ed69062cdd',1,'map.h']]], - ['ucx_5fmap_5fcstr_5fput',['ucx_map_cstr_put',['../map_8h.html#ad9356b01425b934ab237b52339ac0cc3',1,'map.h']]], - ['ucx_5fmap_5fcstr_5fremove',['ucx_map_cstr_remove',['../map_8h.html#a9c4405a5a75ecf64e2ef3d0c6501a9fe',1,'map.h']]], - ['ucx_5fmap_5fdifference',['ucx_map_difference',['../map_8h.html#a774fcff87d1e58b6c5af77dd19a8c3dc',1,'map.c']]], - ['ucx_5fmap_5fdifference_5fa',['ucx_map_difference_a',['../map_8h.html#ad0ba103494247d798ac3037c50fc8831',1,'map.c']]], - ['ucx_5fmap_5fforeach',['UCX_MAP_FOREACH',['../map_8h.html#a940896c4aa1b13e54c55c04c3efc186b',1,'map.h']]], - ['ucx_5fmap_5ffree',['ucx_map_free',['../map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e',1,'map.c']]], - ['ucx_5fmap_5ffree_5fcontent',['ucx_map_free_content',['../map_8h.html#a750f3d9d83e2f3788a14c17a9d160618',1,'map.c']]], - ['ucx_5fmap_5fget',['ucx_map_get',['../map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6',1,'map.c']]], - ['ucx_5fmap_5fint_5fget',['ucx_map_int_get',['../map_8h.html#aa1681bd2178553cd092fd24c4d681d3c',1,'map.h']]], - ['ucx_5fmap_5fint_5fput',['ucx_map_int_put',['../map_8h.html#aaa30af79b4068c923895619e83f44367',1,'map.h']]], - ['ucx_5fmap_5fint_5fremove',['ucx_map_int_remove',['../map_8h.html#aa767958b5468737755c09f7185b1770c',1,'map.h']]], - ['ucx_5fmap_5fintersection',['ucx_map_intersection',['../map_8h.html#aa594d7a5afebc3bed6bb265348cf6b0d',1,'map.c']]], - ['ucx_5fmap_5fintersection_5fa',['ucx_map_intersection_a',['../map_8h.html#a169e0470a20484dd76425fdf77e3651e',1,'map.c']]], - ['ucx_5fmap_5fiter_5fnext',['ucx_map_iter_next',['../map_8h.html#aceb8675abf44860b4bbc301bbada5b91',1,'map.c']]], - ['ucx_5fmap_5fiterator',['ucx_map_iterator',['../map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110',1,'map.c']]], - ['ucx_5fmap_5fnew',['ucx_map_new',['../map_8h.html#a79f31de8b93814493759dbc8b940cf0c',1,'map.c']]], - ['ucx_5fmap_5fnew_5fa',['ucx_map_new_a',['../map_8h.html#aed508a94c66cc15372503c64b70eb03e',1,'map.c']]], - ['ucx_5fmap_5fput',['ucx_map_put',['../map_8h.html#ac04a08b604217070254d4c58f0e82498',1,'map.c']]], - ['ucx_5fmap_5frehash',['ucx_map_rehash',['../map_8h.html#a174bce9fad554dd92b8da354e0d32512',1,'map.c']]], - ['ucx_5fmap_5fremove',['ucx_map_remove',['../map_8h.html#a17248a4888eb8f9ae18be522d64632aa',1,'map.c']]], - ['ucx_5fmap_5fsstr_5fget',['ucx_map_sstr_get',['../map_8h.html#a14d385f6b7f371f0507861cabd2eab4e',1,'map.h']]], - ['ucx_5fmap_5fsstr_5fput',['ucx_map_sstr_put',['../map_8h.html#ac26a8615bfc8f47ee9eaceb47645f98e',1,'map.h']]], - ['ucx_5fmap_5fsstr_5fremove',['ucx_map_sstr_remove',['../map_8h.html#a48700ea86fadb9ea54d13010f9124df2',1,'map.h']]], - ['ucx_5fmap_5funion',['ucx_map_union',['../map_8h.html#a3f65978c481af7f637cad021d93522d5',1,'map.c']]], - ['ucx_5fmap_5funion_5fa',['ucx_map_union_a',['../map_8h.html#ab6370c3fa8113fdad593ce4b0460c9c6',1,'map.c']]], - ['ucx_5fmemchunk',['ucx_memchunk',['../structucx__memchunk.html',1,'']]], - ['ucx_5fmemcpy',['ucx_memcpy',['../utils_8h.html#ab2e184e6a744941aab6b8058116baf30',1,'utils.c']]], - ['ucx_5fmempool_5fcalloc',['ucx_mempool_calloc',['../mempool_8h.html#a4b9142011824ae24f00fabe128417d69',1,'mempool.c']]], - ['ucx_5fmempool_5fchcap',['ucx_mempool_chcap',['../mempool_8h.html#aaf75b5016098723a9280531ccc3a6d77',1,'mempool.c']]], - ['ucx_5fmempool_5fdestroy',['ucx_mempool_destroy',['../mempool_8h.html#af096378da7e9bfbed3088497cf4c15bf',1,'mempool.c']]], - ['ucx_5fmempool_5ffree',['ucx_mempool_free',['../mempool_8h.html#aefa26e3015f5aefadbfc74221bd246ac',1,'mempool.c']]], - ['ucx_5fmempool_5fmalloc',['ucx_mempool_malloc',['../mempool_8h.html#a2ae492b8f2878ccc9837ac213dced11e',1,'mempool.c']]], - ['ucx_5fmempool_5fnew',['ucx_mempool_new',['../mempool_8h.html#ad71cb8c3b6fdb30360376a8b372ef22a',1,'mempool.c']]], - ['ucx_5fmempool_5fnew_5fdefault',['ucx_mempool_new_default',['../mempool_8h.html#a49f7bd1da5ac201d0cf54dc0f0d82dd2',1,'mempool.h']]], - ['ucx_5fmempool_5frealloc',['ucx_mempool_realloc',['../mempool_8h.html#a660ef42520ed6737c2e77aae18e3a7a4',1,'mempool.c']]], - ['ucx_5fmempool_5freg_5fdestr',['ucx_mempool_reg_destr',['../mempool_8h.html#af47b6b7c40f8f263dc28cc9a4e77b27c',1,'mempool.c']]], - ['ucx_5fmempool_5fset_5fdestr',['ucx_mempool_set_destr',['../mempool_8h.html#adb788e7ec24cd7dbdea6381539c549f2',1,'mempool.c']]], - ['ucx_5fproperties2map',['ucx_properties2map',['../properties_8h.html#a5c7ff8bc3139960a3f3dc92072b742f3',1,'properties.c']]], - ['ucx_5fproperties_5ffill',['ucx_properties_fill',['../properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d',1,'properties.c']]], - ['ucx_5fproperties_5ffree',['ucx_properties_free',['../properties_8h.html#a38a2fe7bb2986bd87c7e69356ab05c05',1,'properties.c']]], - ['ucx_5fproperties_5fload',['ucx_properties_load',['../properties_8h.html#ae1b600f839a6b2278b68fc314981a8a3',1,'properties.c']]], - ['ucx_5fproperties_5fnew',['ucx_properties_new',['../properties_8h.html#a44d9dd12cab3aaa0084f1c8b89405796',1,'properties.c']]], - ['ucx_5fproperties_5fnext',['ucx_properties_next',['../properties_8h.html#a7e03bc573d45d48c538cd721e810d33c',1,'properties.c']]], - ['ucx_5fproperties_5fstore',['ucx_properties_store',['../properties_8h.html#a63c0c1b7648e675b21a1788917ff36fb',1,'properties.c']]], - ['ucx_5fregdestr',['ucx_regdestr',['../structucx__regdestr.html',1,'']]], - ['ucx_5fsc2sc',['ucx_sc2sc',['../string_8h.html#a69d5e3eeec783cc43314df71248768f5',1,'string.c']]], - ['ucx_5fsprintf',['ucx_sprintf',['../utils_8h.html#af9f333b66ecd639c347c7235f4992e2e',1,'utils.h']]], - ['ucx_5fss2c_5fs',['ucx_ss2c_s',['../string_8h.html#aedeb5d7bddda54116101a8d68af8c56d',1,'string.h']]], - ['ucx_5fss2sc',['ucx_ss2sc',['../string_8h.html#a9ce5ad1b2aa2dbeba204d452c2e64359',1,'string.c']]], - ['ucx_5fstack_5favail',['ucx_stack_avail',['../stack_8h.html#a53cd2c7743dc8ad9cbd35ade0b4873e7',1,'stack.c']]], - ['ucx_5fstack_5fcalloc',['ucx_stack_calloc',['../stack_8h.html#afdc467524b5e19a9a777c6bc03e17174',1,'stack.c']]], - ['ucx_5fstack_5fdim',['ucx_stack_dim',['../stack_8h.html#a3b761343c6491222604341ebfa443226',1,'stack.h']]], - ['ucx_5fstack_5fempty',['ucx_stack_empty',['../stack_8h.html#a4f7239dbd6c032c56812e370b71c1985',1,'stack.h']]], - ['ucx_5fstack_5ffree',['ucx_stack_free',['../stack_8h.html#aabd55c14a3866b3782ba324f4d8b4c41',1,'stack.c']]], - ['ucx_5fstack_5finit',['ucx_stack_init',['../stack_8h.html#abaef685df4e7ef95cd7218984a0618fe',1,'stack.c']]], - ['ucx_5fstack_5fmalloc',['ucx_stack_malloc',['../stack_8h.html#af865b416802140f6b6e8ab3626d7d1ac',1,'stack.c']]], - ['ucx_5fstack_5fmetadata',['ucx_stack_metadata',['../structucx__stack__metadata.html',1,'']]], - ['ucx_5fstack_5fpop',['ucx_stack_pop',['../stack_8h.html#a506b82374734ec476d086ddfb561174d',1,'stack.h']]], - ['ucx_5fstack_5fpopn',['ucx_stack_popn',['../stack_8h.html#a07ea48f28eab474dcfefbb86fa66ef81',1,'stack.c']]], - ['ucx_5fstack_5fpush',['ucx_stack_push',['../stack_8h.html#af85e6f77a8341beb6188f9ae1a8e9f92',1,'stack.c']]], - ['ucx_5fstack_5fpusharr',['ucx_stack_pusharr',['../stack_8h.html#a7bb138979191bba138e76ea37488fae2',1,'stack.c']]], - ['ucx_5fstack_5frealloc',['ucx_stack_realloc',['../stack_8h.html#a0c678f96f6fabab49b2b034a1fe91c3a',1,'stack.c']]], - ['ucx_5fstack_5ftopsize',['ucx_stack_topsize',['../stack_8h.html#a030197051a803e87d5eeac5adb80b15a',1,'stack.h']]], - ['ucx_5fstrcpy',['ucx_strcpy',['../utils_8h.html#adeb6e8d0a53a829207cfa0a979d01fff',1,'utils.c']]], - ['ucx_5fstream_5fbcopy',['ucx_stream_bcopy',['../utils_8h.html#a6003a1750a66234169bd1f8cc84b297b',1,'utils.h']]], - ['ucx_5fstream_5fbncopy',['ucx_stream_bncopy',['../utils_8h.html#a114ee7f7da62656ffd35e2dc23394201',1,'utils.c']]], - ['ucx_5fstream_5fcopy',['ucx_stream_copy',['../utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392',1,'utils.h']]], - ['ucx_5fstream_5fcopy_5fbufsize',['UCX_STREAM_COPY_BUFSIZE',['../utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439',1,'utils.h']]], - ['ucx_5fstream_5fncopy',['ucx_stream_ncopy',['../utils_8h.html#add13f39a8af440b4f7e6f74339eaada2',1,'utils.h']]], - ['ucx_5fszmul',['ucx_szmul',['../ucx_8h.html#a0b5ed6c1a0b15356f4f948acfd32a4cc',1,'ucx.h']]], - ['ucx_5fszmul_5fimpl',['ucx_szmul_impl',['../ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b',1,'ucx.c']]], - ['ucx_5ftest',['UCX_TEST',['../test_8h.html#a66cfb29c329fc9eaef071f2449836659',1,'test.h']]], - ['ucx_5ftest_5fassert',['UCX_TEST_ASSERT',['../test_8h.html#a08f477cd12fc3fe741a92493e5df58a9',1,'test.h']]], - ['ucx_5ftest_5fbegin',['UCX_TEST_BEGIN',['../test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4',1,'test.h']]], - ['ucx_5ftest_5fcall_5fsubroutine',['UCX_TEST_CALL_SUBROUTINE',['../test_8h.html#a0efbab91c54f5237a2ab207f48cf0e51',1,'test.h']]], - ['ucx_5ftest_5fend',['UCX_TEST_END',['../test_8h.html#a86e64857c04f0447f8b16fb9c2b3b639',1,'test.h']]], - ['ucx_5ftest_5fregister',['ucx_test_register',['../test_8h.html#a8dfabc42f183d3a4d79379a5d17bf67d',1,'test.c']]], - ['ucx_5ftest_5frun',['ucx_test_run',['../test_8h.html#a3721458deeecb43aa322428f007714c3',1,'test.c']]], - ['ucx_5ftest_5fsubroutine',['UCX_TEST_SUBROUTINE',['../test_8h.html#ae073cf5ead22cb27d662da048e16f44a',1,'test.h']]], - ['ucx_5ftest_5fsuite_5ffree',['ucx_test_suite_free',['../test_8h.html#a4a6ac61a6f72722273f8eaa7a343edde',1,'test.c']]], - ['ucx_5ftest_5fsuite_5fnew',['ucx_test_suite_new',['../test_8h.html#a531f0df90363e0befbe900878f65f09e',1,'test.c']]], - ['ucx_5fvasprintf',['ucx_vasprintf',['../utils_8h.html#a3ea1dfb856c741f3e8ec6bfdc9ad427e',1,'utils.c']]], - ['ucx_5fversion',['UCX_VERSION',['../ucx_8h.html#af12001920ca2fc1405615684e4dea284',1,'ucx.h']]], - ['ucx_5fversion_5fmajor',['UCX_VERSION_MAJOR',['../ucx_8h.html#aa57e5dd22d42387d748cc16777df1383',1,'ucx.h']]], - ['ucx_5fversion_5fminor',['UCX_VERSION_MINOR',['../ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0',1,'ucx.h']]], - ['ucx_5fvfprintf',['ucx_vfprintf',['../utils_8h.html#a4907967beb92c3ae351dd239abbb6927',1,'utils.c']]], - ['ucxallocator',['UcxAllocator',['../structUcxAllocator.html',1,'']]], - ['ucxarray',['UcxArray',['../structUcxArray.html',1,'']]], - ['ucxavlnode',['UcxAVLNode',['../structUcxAVLNode.html',1,'UcxAVLNode'],['../avl_8h.html#a08ba2496c2316df58548c3cc29712add',1,'UcxAVLNode(): avl.h']]], - ['ucxavltree',['UcxAVLTree',['../structUcxAVLTree.html',1,'']]], - ['ucxbuffer',['UcxBuffer',['../structUcxBuffer.html',1,'']]], - ['ucxkey',['UcxKey',['../structUcxKey.html',1,'UcxKey'],['../map_8h.html#ad63828bb23123fc01a5315a2bac3b142',1,'UcxKey(): map.h']]], - ['ucxlist',['UcxList',['../structUcxList.html',1,'UcxList'],['../list_8h.html#aa6f89f91c1081c9a7c6866c298f497a2',1,'UcxList(): list.h']]], - ['ucxlogger',['UcxLogger',['../structUcxLogger.html',1,'']]], - ['ucxmap',['UcxMap',['../structUcxMap.html',1,'UcxMap'],['../map_8h.html#a18e21948725b2da68c35da587a722033',1,'UcxMap(): map.h']]], - ['ucxmapelement',['UcxMapElement',['../structUcxMapElement.html',1,'UcxMapElement'],['../map_8h.html#ad7d7a910a32113eb93eae11c3dc97b4b',1,'UcxMapElement(): map.h']]], - ['ucxmapiterator',['UcxMapIterator',['../structUcxMapIterator.html',1,'UcxMapIterator'],['../map_8h.html#ae36aff5f645948c54f51578b11fd87fb',1,'UcxMapIterator(): map.h']]], - ['ucxmapkey',['UcxMapKey',['../structUcxMapKey.html',1,'']]], - ['ucxmempool',['UcxMempool',['../structUcxMempool.html',1,'']]], - ['ucxproperties',['UcxProperties',['../structUcxProperties.html',1,'']]], - ['ucxstack',['UcxStack',['../structUcxStack.html',1,'']]], - ['ucxtest',['UcxTest',['../test_8h.html#ae906817354c010b83c2784260cce7a1c',1,'test.h']]], - ['ucxtestlist',['UcxTestList',['../structUcxTestList.html',1,'UcxTestList'],['../test_8h.html#a8048c50ae73ea690b776edfd63bd6a5d',1,'UcxTestList(): test.h']]], - ['ucxtestsuite',['UcxTestSuite',['../structUcxTestSuite.html',1,'UcxTestSuite'],['../test_8h.html#a52115d1d0f1c4a565ed6ef7c1bfd0363',1,'UcxTestSuite(): test.h']]], - ['userdata',['userdata',['../structUcxAVLTree.html#ae92a3bfad3fe33c8dcbdad85112f83fd',1,'UcxAVLTree']]], - ['utils_2eh',['utils.h',['../utils_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/all_12.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_12.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_12.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['value',['value',['../structUcxAVLNode.html#a302501b8c04c3fde668fe72249871258',1,'UcxAVLNode']]] -];
--- a/docs/api-2.1/search/all_13.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_13.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_13.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['write_5ffunc',['write_func',['../ucx_8h.html#a989b3f0fa4d307d278378fde435641ed',1,'ucx.h']]], - ['writer',['writer',['../structUcxLogger.html#ada13bba090a9dc4f8d6cd9be73c60930',1,'UcxLogger']]] -];
--- a/docs/api-2.1/search/all_2.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_2.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_2.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -var searchData= -[ - ['buffer',['buffer',['../structUcxProperties.html#a6bb4d29686df41a0f42641ee15232bfd',1,'UcxProperties']]], - ['buffer_2eh',['buffer.h',['../buffer_8h.html',1,'']]], - ['buflen',['buflen',['../structUcxProperties.html#a4e7524434525267e29f493a25dcca6b5',1,'UcxProperties']]] -];
--- a/docs/api-2.1/search/all_3.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_3.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_3.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -var searchData= -[ - ['c',['c',['../structucx__memchunk.html#ab86550503e5f019bfa61a1e91f1c40da',1,'ucx_memchunk']]], - ['calloc',['calloc',['../structUcxAllocator.html#ab94ec1cba45cc4e7d81e1588a11cbb62',1,'UcxAllocator']]], - ['capacity',['capacity',['../structUcxArray.html#a7ed074887908e45bde7e1fbc67b31c18',1,'UcxArray::capacity()'],['../structUcxBuffer.html#a385661894f3cee9c549bfe07a8b316bf',1,'UcxBuffer::capacity()']]], - ['cmp_5ffunc',['cmp_func',['../ucx_8h.html#afe5e2d5dbf34778e0e97852051570791',1,'ucx.h']]], - ['cmpfunc',['cmpfunc',['../structUcxAVLTree.html#a87aff25cb726cb9eb88eb815a10d1004',1,'UcxAVLTree']]], - ['comment1',['comment1',['../structUcxProperties.html#afaa2e6a289fa6949b7b01df35fa5def8',1,'UcxProperties']]], - ['comment2',['comment2',['../structUcxProperties.html#a9ea7ecb414ca8bc7bef62cdd19cc6363',1,'UcxProperties']]], - ['comment3',['comment3',['../structUcxProperties.html#a5f3e561e32bac03e36a191a6940cca92',1,'UcxProperties']]], - ['copy_5ffunc',['copy_func',['../ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967',1,'ucx.h']]], - ['count',['count',['../structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd',1,'UcxMap']]], - ['cur',['cur',['../structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f',1,'UcxMapIterator']]] -];
--- a/docs/api-2.1/search/all_4.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_4.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_4.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -var searchData= -[ - ['data',['data',['../structUcxArray.html#a04d2b03d0a45af1fab19b4216602075a',1,'UcxArray::data()'],['../structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2',1,'UcxList::data()'],['../structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c',1,'UcxKey::data()'],['../structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5',1,'UcxMapKey::data()'],['../structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c',1,'UcxMapElement::data()'],['../structUcxMempool.html#ae98c1b0150bb119ee0a8506a6f310d6e',1,'UcxMempool::data()']]], - ['dateformat',['dateformat',['../structUcxLogger.html#a086f75df0f6c81ec491f25c0a4d9262b',1,'UcxLogger']]], - ['delimiter',['delimiter',['../structUcxProperties.html#af6adb3f69616cf9d2bb5ea7b4d837ca5',1,'UcxProperties']]], - ['destructor',['destructor',['../structucx__memchunk.html#ac7b5e3fda47b917d6fb2a1d7ea28447b',1,'ucx_memchunk::destructor()'],['../structucx__regdestr.html#acea2a3bb66909aa800a931ac8b0cce56',1,'ucx_regdestr::destructor()']]], - ['distance_5ffunc',['distance_func',['../ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9',1,'ucx.h']]] -];
--- a/docs/api-2.1/search/all_5.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_5.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_5.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['elemsize',['elemsize',['../structUcxArray.html#ac4e9ecdf8a8d010644f6e44dfef8190f',1,'UcxArray']]], - ['error',['error',['../structUcxProperties.html#a34f71a6ab6dcb6892e3b4eb802e75bff',1,'UcxProperties']]] -];
--- a/docs/api-2.1/search/all_6.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_6.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_6.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -var searchData= -[ - ['failure',['failure',['../structUcxTestSuite.html#abfd240541d1e956e49cde0ac36286951',1,'UcxTestSuite']]], - ['flags',['flags',['../structUcxBuffer.html#ac642e07b0a03be5aac48eb4aa5bec2f7',1,'UcxBuffer']]], - ['free',['free',['../structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f',1,'UcxAllocator']]] -];
--- a/docs/api-2.1/search/all_7.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_7.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_7.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['hash',['hash',['../structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752',1,'UcxKey::hash()'],['../structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913',1,'UcxMapKey::hash()']]], - ['height',['height',['../structUcxAVLNode.html#af129fd32863a7c35e82c5cd9d11dc95a',1,'UcxAVLNode']]] -];
--- a/docs/api-2.1/search/all_8.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_8.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_8.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['index',['index',['../structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65',1,'UcxMapIterator']]] -];
--- a/docs/api-2.1/search/all_9.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_9.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_9.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['key',['key',['../structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6',1,'UcxAVLNode::key()'],['../structUcxMapElement.html#aa446141b708e106e2c8de1303318187c',1,'UcxMapElement::key()']]] -];
--- a/docs/api-2.1/search/all_a.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_a.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_a.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -var searchData= -[ - ['left',['left',['../structUcxAVLNode.html#ad3a1c733f2c1cc81ac527f846fc24b9c',1,'UcxAVLNode']]], - ['len',['len',['../structUcxKey.html#abef01de37f355688f2ac797d2c280683',1,'UcxKey::len()'],['../structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270',1,'UcxMapKey::len()']]], - ['length',['length',['../structsstr__t.html#a5cf571708cdff92e45f08458f2b98229',1,'sstr_t::length()'],['../structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172',1,'scstr_t::length()']]], - ['level',['level',['../structUcxLogger.html#a2e0ee94c25b2307096c7970280d189cd',1,'UcxLogger']]], - ['levels',['levels',['../structUcxLogger.html#a187129f7bc6e5064b3d92a5f1217f396',1,'UcxLogger']]], - ['list_2eh',['list.h',['../list_8h.html',1,'']]], - ['logging_2eh',['logging.h',['../logging_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/all_b.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_b.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_b.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -var searchData= -[ - ['malloc',['malloc',['../structUcxAllocator.html#a013376172be39ed54f77c4be6898845a',1,'UcxAllocator']]], - ['map',['map',['../structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790',1,'UcxMap::map()'],['../structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95',1,'UcxMapIterator::map()']]], - ['map_2eh',['map.h',['../map_8h.html',1,'']]], - ['mask',['mask',['../structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c',1,'UcxLogger']]], - ['mempool_2eh',['mempool.h',['../mempool_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/all_c.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_c.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_c.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['ndata',['ndata',['../structUcxMempool.html#aa3a73ab231e1bc207d526f46f1c1e23a',1,'UcxMempool']]], - ['next',['next',['../structUcxList.html#a82a1818f1abf765b026fa91478569a8f',1,'UcxList::next()'],['../structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51',1,'UcxMapElement::next()'],['../structUcxTestList.html#aeebb80ff75d9f6f82ab6dc2641a3c74e',1,'UcxTestList::next()']]] -];
--- a/docs/api-2.1/search/all_d.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_d.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_d.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -var searchData= -[ - ['parent',['parent',['../structUcxAVLNode.html#afc4e3b4f452aa2d91cabb2135b9d42f7',1,'UcxAVLNode']]], - ['pool',['pool',['../structUcxAllocator.html#a1b78012998d1c28be86dc595f8f0aac9',1,'UcxAllocator']]], - ['pos',['pos',['../structUcxBuffer.html#a7a64288f002cf62b492e2ea49c79615c',1,'UcxBuffer::pos()'],['../structUcxProperties.html#addd36ac8e5e42241c0a57453633970db',1,'UcxProperties::pos()']]], - ['prev',['prev',['../structUcxList.html#a0f1fddce9088b9c1414745d0b1b5c08b',1,'UcxList::prev()'],['../structucx__stack__metadata.html#ad46d2e8e5b0acf05f2def41d451c5579',1,'ucx_stack_metadata::prev()']]], - ['prisstr',['PRIsstr',['../string_8h.html#a7d5bc48708405a28b23667e32dfcecae',1,'string.h']]], - ['properties_2eh',['properties.h',['../properties_8h.html',1,'']]], - ['ptr',['ptr',['../structucx__regdestr.html#aac0e9ec8df4aab08728b4f8292b5f5e7',1,'ucx_regdestr::ptr()'],['../structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0',1,'sstr_t::ptr()'],['../structscstr__t.html#a305fd48934b474a9bf4a40869030e391',1,'scstr_t::ptr()']]] -];
--- a/docs/api-2.1/search/all_e.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_e.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_e.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -var searchData= -[ - ['read_5ffunc',['read_func',['../ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5',1,'ucx.h']]], - ['realloc',['realloc',['../structUcxAllocator.html#a3550e3847f31d9e9ce3ffcb0d3440c15',1,'UcxAllocator']]], - ['right',['right',['../structUcxAVLNode.html#a7cbaa31dba8c7a89f4f8f7905f6fd238',1,'UcxAVLNode']]], - ['root',['root',['../structUcxAVLTree.html#a393a8fc99eb2c290d3cb67170081d742',1,'UcxAVLTree']]] -];
--- a/docs/api-2.1/search/all_f.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="all_f.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/all_f.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -var searchData= -[ - ['s',['S',['../string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e',1,'string.h']]], - ['sc',['SC',['../string_8h.html#a7d261dd0bc358c957a368bc058c1ce53',1,'string.h']]], - ['scstr',['SCSTR',['../string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed',1,'SCSTR(): string.h'],['../string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6',1,'scstr(const char *cstring): string.c']]], - ['scstr_5ft',['scstr_t',['../structscstr__t.html',1,'']]], - ['scstrcasecmp',['scstrcasecmp',['../string_8h.html#aca8142fb823d253054e17c17cfca05e0',1,'string.c']]], - ['scstrcaseprefix',['scstrcaseprefix',['../string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df',1,'string.c']]], - ['scstrcasesuffix',['scstrcasesuffix',['../string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3',1,'string.c']]], - ['scstrcat',['scstrcat',['../string_8h.html#a7376842c19e954b49215da81ef76ac0c',1,'string.c']]], - ['scstrcat_5fa',['scstrcat_a',['../string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9',1,'string.c']]], - ['scstrchr',['scstrchr',['../string_8h.html#a5836d6a7a744791c35e5c17bdc394a87',1,'string.c']]], - ['scstrcmp',['scstrcmp',['../string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82',1,'string.c']]], - ['scstrdup',['scstrdup',['../string_8h.html#a97dccce03af419596dbdd592ca46a164',1,'string.c']]], - ['scstrdup_5fa',['scstrdup_a',['../string_8h.html#a8fe58921f51eb1fde038472377e63014',1,'string.c']]], - ['scstrlower',['scstrlower',['../string_8h.html#abccf198bea3186ff2abb080cc88dcae6',1,'string.c']]], - ['scstrlower_5fa',['scstrlower_a',['../string_8h.html#a3cf1e557df7ab58d03c78832c4060276',1,'string.c']]], - ['scstrn',['scstrn',['../string_8h.html#ae594f6e222ea394cef6a26c0dfad000d',1,'string.c']]], - ['scstrnlen',['scstrnlen',['../string_8h.html#ac1b000030d6d197eec48c15a182055d5',1,'string.c']]], - ['scstrprefix',['scstrprefix',['../string_8h.html#a599ddc2f88dd1df68b72eefd91347393',1,'string.c']]], - ['scstrrchr',['scstrrchr',['../string_8h.html#ae389835b97cd9382e7d6a6a075323376',1,'string.c']]], - ['scstrscstr',['scstrscstr',['../string_8h.html#a54f256c3abe811c52d58b4ff1b23f051',1,'string.c']]], - ['scstrsplit',['scstrsplit',['../string_8h.html#ae71cac352b00230848bde358f0fb05ea',1,'string.c']]], - ['scstrsplit_5fa',['scstrsplit_a',['../string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef',1,'string.c']]], - ['scstrsstr',['scstrsstr',['../string_8h.html#aa4362cb36c6629f9d8484739fd827748',1,'string.c']]], - ['scstrsubs',['scstrsubs',['../string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060',1,'string.c']]], - ['scstrsubsl',['scstrsubsl',['../string_8h.html#ad50f0f67b906fad0744f46bcb51e144b',1,'string.c']]], - ['scstrsuffix',['scstrsuffix',['../string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a',1,'string.c']]], - ['scstrtrim',['scstrtrim',['../string_8h.html#ad374b16eb1be8b48019debad9b9f268c',1,'string.c']]], - ['scstrupper',['scstrupper',['../string_8h.html#af3dd09ec9d11162fe0075f4e60f41240',1,'string.c']]], - ['scstrupper_5fa',['scstrupper_a',['../string_8h.html#aea94613eb74668cc05d365803d32bfad',1,'string.c']]], - ['sfmt',['SFMT',['../string_8h.html#a23ed51e87385886bb65e8cd19c839362',1,'string.h']]], - ['size',['size',['../structUcxArray.html#a20c11f2c9048cda80062842b7c094e20',1,'UcxArray::size()'],['../structUcxBuffer.html#aec0aea8325394951d5ad4a9fbb8e1ac7',1,'UcxBuffer::size()'],['../structUcxMap.html#afe120846b26d99580a7ff1276464e838',1,'UcxMap::size()'],['../structUcxMempool.html#a304729986f2894971d0469e71e196bf0',1,'UcxMempool::size()'],['../structUcxStack.html#a4df86b1917bfc3bbf760220870638143',1,'UcxStack::size()'],['../structucx__stack__metadata.html#ae2a2848b721cfa44a7e963484c5e4b28',1,'ucx_stack_metadata::size()']]], - ['space',['space',['../structUcxBuffer.html#a1a5076e85acb84b715a53bc0f37fb721',1,'UcxBuffer::space()'],['../structUcxStack.html#af64d528744bf3a47fec87d2e45d2992f',1,'UcxStack::space()']]], - ['sstr',['sstr',['../string_8h.html#a539eb7059251a051ee5d179526a23e9a',1,'string.c']]], - ['sstr_5ft',['sstr_t',['../structsstr__t.html',1,'']]], - ['sstrcasecmp',['sstrcasecmp',['../string_8h.html#a81b0f6df794152c2038703d4e9d0ad59',1,'string.h']]], - ['sstrcaseprefix',['sstrcaseprefix',['../string_8h.html#acd3dc64e90db9b4046e14f115a815ff4',1,'string.h']]], - ['sstrcasesuffix',['sstrcasesuffix',['../string_8h.html#a57eabd4862d531dd685bbf2feb8468bf',1,'string.h']]], - ['sstrcat',['sstrcat',['../string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759',1,'string.h']]], - ['sstrcat_5fa',['sstrcat_a',['../string_8h.html#a6068d460f9bc05962666a917d26568b3',1,'string.h']]], - ['sstrchr',['sstrchr',['../string_8h.html#af80898a0b75955eb2579298c3ae2c481',1,'string.c']]], - ['sstrcmp',['sstrcmp',['../string_8h.html#a7ae7156c8de57454ca38d306100b8160',1,'string.h']]], - ['sstrdup',['sstrdup',['../string_8h.html#accbfd2b459a028d7af9fb7df6f977d80',1,'string.h']]], - ['sstrdup_5fa',['sstrdup_a',['../string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007',1,'string.h']]], - ['sstrlower',['sstrlower',['../string_8h.html#a89343ea3e719f00ee802b557db57b769',1,'string.h']]], - ['sstrlower_5fa',['sstrlower_a',['../string_8h.html#a4bb4742fe71115f493991d307cb22b23',1,'string.h']]], - ['sstrn',['sstrn',['../string_8h.html#a2744c38ac44abf3e01fa059056dcf36c',1,'string.c']]], - ['sstrnlen',['sstrnlen',['../string_8h.html#a33fa945acc5ac2ce962e5ef13cf1638c',1,'string.h']]], - ['sstrprefix',['sstrprefix',['../string_8h.html#a7d73b66256384b26927e787318fdefa2',1,'string.h']]], - ['sstrrchr',['sstrrchr',['../string_8h.html#adae3f59957ca328e1da5285cb8b02a72',1,'string.c']]], - ['sstrscstr',['sstrscstr',['../string_8h.html#aa696932213265e10f864678686f4ccde',1,'string.h']]], - ['sstrsplit',['sstrsplit',['../string_8h.html#aa929984004c3576bfafb95031aca8eb7',1,'string.h']]], - ['sstrsplit_5fa',['sstrsplit_a',['../string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601',1,'string.h']]], - ['sstrstr',['sstrstr',['../string_8h.html#a9d03be026afa9447c52bb34b9e3b895a',1,'string.h']]], - ['sstrsubs',['sstrsubs',['../string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258',1,'string.c']]], - ['sstrsubsl',['sstrsubsl',['../string_8h.html#a78925c91af54f23cebd20ff99ef4331a',1,'string.c']]], - ['sstrsuffix',['sstrsuffix',['../string_8h.html#ac6a5246f26be2e8a5f34d8995b7ec14e',1,'string.h']]], - ['sstrtrim',['sstrtrim',['../string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56',1,'string.c']]], - ['sstrupper',['sstrupper',['../string_8h.html#a084fe5a3a90d6fb6b15ecda03bb30824',1,'string.h']]], - ['sstrupper_5fa',['sstrupper_a',['../string_8h.html#a5f0dd83c0176b812fb428004b2877a34',1,'string.h']]], - ['st',['ST',['../string_8h.html#a9037956cca97a4e84b642f17f3d10378',1,'string.h']]], - ['stack_2eh',['stack.h',['../stack_8h.html',1,'']]], - ['stream',['stream',['../structUcxLogger.html#a33fddf4791e8d49e479ecc78bf5d1b9e',1,'UcxLogger']]], - ['string_2eh',['string.h',['../string_8h.html',1,'']]], - ['success',['success',['../structUcxTestSuite.html#a6cefa870a3c2e38d6ee682e38643dbbb',1,'UcxTestSuite']]] -];
--- a/docs/api-2.1/search/classes_0.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="classes_0.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/classes_0.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['scstr_5ft',['scstr_t',['../structscstr__t.html',1,'']]], - ['sstr_5ft',['sstr_t',['../structsstr__t.html',1,'']]] -];
--- a/docs/api-2.1/search/classes_1.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="classes_1.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/classes_1.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -var searchData= -[ - ['ucx_5fmemchunk',['ucx_memchunk',['../structucx__memchunk.html',1,'']]], - ['ucx_5fregdestr',['ucx_regdestr',['../structucx__regdestr.html',1,'']]], - ['ucx_5fstack_5fmetadata',['ucx_stack_metadata',['../structucx__stack__metadata.html',1,'']]], - ['ucxallocator',['UcxAllocator',['../structUcxAllocator.html',1,'']]], - ['ucxarray',['UcxArray',['../structUcxArray.html',1,'']]], - ['ucxavlnode',['UcxAVLNode',['../structUcxAVLNode.html',1,'']]], - ['ucxavltree',['UcxAVLTree',['../structUcxAVLTree.html',1,'']]], - ['ucxbuffer',['UcxBuffer',['../structUcxBuffer.html',1,'']]], - ['ucxkey',['UcxKey',['../structUcxKey.html',1,'']]], - ['ucxlist',['UcxList',['../structUcxList.html',1,'']]], - ['ucxlogger',['UcxLogger',['../structUcxLogger.html',1,'']]], - ['ucxmap',['UcxMap',['../structUcxMap.html',1,'']]], - ['ucxmapelement',['UcxMapElement',['../structUcxMapElement.html',1,'']]], - ['ucxmapiterator',['UcxMapIterator',['../structUcxMapIterator.html',1,'']]], - ['ucxmapkey',['UcxMapKey',['../structUcxMapKey.html',1,'']]], - ['ucxmempool',['UcxMempool',['../structUcxMempool.html',1,'']]], - ['ucxproperties',['UcxProperties',['../structUcxProperties.html',1,'']]], - ['ucxstack',['UcxStack',['../structUcxStack.html',1,'']]], - ['ucxtestlist',['UcxTestList',['../structUcxTestList.html',1,'']]], - ['ucxtestsuite',['UcxTestSuite',['../structUcxTestSuite.html',1,'']]] -];
--- a/docs/api-2.1/search/defines_0.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="defines_0.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/defines_0.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['_5f_5ffunction_5f_5f',['__FUNCTION__',['../test_8h.html#a828bb1dfda1afd67ca795075903d227d',1,'test.h']]] -];
--- a/docs/api-2.1/search/defines_1.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="defines_1.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/defines_1.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -var searchData= -[ - ['alcalloc',['alcalloc',['../allocator_8h.html#a8d71470816f88f78cb9a9686c57e1b10',1,'allocator.h']]], - ['alfree',['alfree',['../allocator_8h.html#acd775785b54e97dc2b33a432c12c8fb2',1,'allocator.h']]], - ['almalloc',['almalloc',['../allocator_8h.html#ae1bc218fea8a35f4a3706f0beefcfb19',1,'allocator.h']]], - ['alrealloc',['alrealloc',['../allocator_8h.html#a029ee5c9bcbb3f873571553f788c5820',1,'allocator.h']]] -];
--- a/docs/api-2.1/search/defines_2.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="defines_2.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/defines_2.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['prisstr',['PRIsstr',['../string_8h.html#a7d5bc48708405a28b23667e32dfcecae',1,'string.h']]] -];
--- a/docs/api-2.1/search/defines_3.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="defines_3.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/defines_3.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -var searchData= -[ - ['s',['S',['../string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e',1,'string.h']]], - ['sc',['SC',['../string_8h.html#a7d261dd0bc358c957a368bc058c1ce53',1,'string.h']]], - ['scstr',['SCSTR',['../string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed',1,'string.h']]], - ['sfmt',['SFMT',['../string_8h.html#a23ed51e87385886bb65e8cd19c839362',1,'string.h']]], - ['sstrcasecmp',['sstrcasecmp',['../string_8h.html#a81b0f6df794152c2038703d4e9d0ad59',1,'string.h']]], - ['sstrcaseprefix',['sstrcaseprefix',['../string_8h.html#acd3dc64e90db9b4046e14f115a815ff4',1,'string.h']]], - ['sstrcasesuffix',['sstrcasesuffix',['../string_8h.html#a57eabd4862d531dd685bbf2feb8468bf',1,'string.h']]], - ['sstrcat',['sstrcat',['../string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759',1,'string.h']]], - ['sstrcat_5fa',['sstrcat_a',['../string_8h.html#a6068d460f9bc05962666a917d26568b3',1,'string.h']]], - ['sstrcmp',['sstrcmp',['../string_8h.html#a7ae7156c8de57454ca38d306100b8160',1,'string.h']]], - ['sstrdup',['sstrdup',['../string_8h.html#accbfd2b459a028d7af9fb7df6f977d80',1,'string.h']]], - ['sstrdup_5fa',['sstrdup_a',['../string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007',1,'string.h']]], - ['sstrlower',['sstrlower',['../string_8h.html#a89343ea3e719f00ee802b557db57b769',1,'string.h']]], - ['sstrlower_5fa',['sstrlower_a',['../string_8h.html#a4bb4742fe71115f493991d307cb22b23',1,'string.h']]], - ['sstrnlen',['sstrnlen',['../string_8h.html#a33fa945acc5ac2ce962e5ef13cf1638c',1,'string.h']]], - ['sstrprefix',['sstrprefix',['../string_8h.html#a7d73b66256384b26927e787318fdefa2',1,'string.h']]], - ['sstrscstr',['sstrscstr',['../string_8h.html#aa696932213265e10f864678686f4ccde',1,'string.h']]], - ['sstrsplit',['sstrsplit',['../string_8h.html#aa929984004c3576bfafb95031aca8eb7',1,'string.h']]], - ['sstrsplit_5fa',['sstrsplit_a',['../string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601',1,'string.h']]], - ['sstrstr',['sstrstr',['../string_8h.html#a9d03be026afa9447c52bb34b9e3b895a',1,'string.h']]], - ['sstrsuffix',['sstrsuffix',['../string_8h.html#ac6a5246f26be2e8a5f34d8995b7ec14e',1,'string.h']]], - ['sstrupper',['sstrupper',['../string_8h.html#a084fe5a3a90d6fb6b15ecda03bb30824',1,'string.h']]], - ['sstrupper_5fa',['sstrupper_a',['../string_8h.html#a5f0dd83c0176b812fb428004b2877a34',1,'string.h']]], - ['st',['ST',['../string_8h.html#a9037956cca97a4e84b642f17f3d10378',1,'string.h']]] -];
--- a/docs/api-2.1/search/defines_4.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="defines_4.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/defines_4.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -var searchData= -[ - ['ucx_5fallocator_5fdefault',['UCX_ALLOCATOR_DEFAULT',['../allocator_8h.html#a1283a8f875f90a7af3aba5e031fc2e3f',1,'allocator.h']]], - ['ucx_5farray_5futil_5fset',['ucx_array_util_set',['../array_8h.html#a1d959c29af3125bdd37cde3a554e729c',1,'array.h']]], - ['ucx_5farray_5futil_5fsetptr',['ucx_array_util_setptr',['../array_8h.html#a59a5b342965e790945f9c7a3f86b99f9',1,'array.h']]], - ['ucx_5favl_5fdefault_5fnew',['ucx_avl_default_new',['../avl_8h.html#ac2886d4b79b48c9fabf6408873f84cd2',1,'avl.h']]], - ['ucx_5favl_5ffind_5fclosest',['UCX_AVL_FIND_CLOSEST',['../avl_8h.html#af16f24d74fd6af0154de041566c6603b',1,'avl.h']]], - ['ucx_5favl_5ffind_5fexact',['UCX_AVL_FIND_EXACT',['../avl_8h.html#aaaf4a6f6f661cda7791db239212285d9',1,'avl.h']]], - ['ucx_5favl_5ffind_5flower_5fbounded',['UCX_AVL_FIND_LOWER_BOUNDED',['../avl_8h.html#abd2446d544d5412b6997ee8a17bd368c',1,'avl.h']]], - ['ucx_5favl_5ffind_5fupper_5fbounded',['UCX_AVL_FIND_UPPER_BOUNDED',['../avl_8h.html#ac74ee7649c1e206b08b31f37dd68ca5e',1,'avl.h']]], - ['ucx_5fbprintf',['ucx_bprintf',['../utils_8h.html#a9d7d65a420f026fcb6982803d5120519',1,'utils.h']]], - ['ucx_5fbuffer_5fautoextend',['UCX_BUFFER_AUTOEXTEND',['../buffer_8h.html#a05f9565f2d04399168c3b1c152a632be',1,'buffer.h']]], - ['ucx_5fbuffer_5fautofree',['UCX_BUFFER_AUTOFREE',['../buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535',1,'buffer.h']]], - ['ucx_5fbuffer_5fclear',['ucx_buffer_clear',['../buffer_8h.html#a374abd5aabfcc3ee0777a79d5fe651ab',1,'buffer.h']]], - ['ucx_5fbuffer_5fclone',['ucx_buffer_clone',['../buffer_8h.html#a828353846428c2c2f695f9938f059e52',1,'buffer.h']]], - ['ucx_5fbuffer_5fdefault',['UCX_BUFFER_DEFAULT',['../buffer_8h.html#acc77c8ed7b26854f555d4a5d11e49ea2',1,'buffer.h']]], - ['ucx_5fbuffer_5fto_5fsstr',['ucx_buffer_to_sstr',['../buffer_8h.html#a0f4b64f1b3a74c4f6c5d9409d6b6086a',1,'buffer.h']]], - ['ucx_5fforeach',['UCX_FOREACH',['../list_8h.html#a4b143b6526a410aa4d22cb3bb9365d70',1,'list.h']]], - ['ucx_5flogger_5fdebug',['ucx_logger_debug',['../logging_8h.html#a2936402799892db5138e5f1f8c25db0c',1,'ucx_logger_debug(): logging.h'],['../logging_8h.html#acff01d1ef919ea997cfce755fc1b83d8',1,'UCX_LOGGER_DEBUG(): logging.h']]], - ['ucx_5flogger_5ferror',['ucx_logger_error',['../logging_8h.html#a6a9e472e14d6768e59d96d245e065397',1,'ucx_logger_error(): logging.h'],['../logging_8h.html#aa254c07fe3a907613e2256a318d5c9a8',1,'UCX_LOGGER_ERROR(): logging.h']]], - ['ucx_5flogger_5finfo',['UCX_LOGGER_INFO',['../logging_8h.html#a4b0178bf60a6129373ffc59114ca4c9b',1,'UCX_LOGGER_INFO(): logging.h'],['../logging_8h.html#a98464d8d51376ce2716dcc4eca00d5da',1,'ucx_logger_info(): logging.h']]], - ['ucx_5flogger_5flevel',['UCX_LOGGER_LEVEL',['../logging_8h.html#aee18bc20e58ffb69910121512c350839',1,'logging.h']]], - ['ucx_5flogger_5flog',['ucx_logger_log',['../logging_8h.html#aa0245325031d95799b28def177fd14ec',1,'logging.h']]], - ['ucx_5flogger_5fregister_5flevel',['ucx_logger_register_level',['../logging_8h.html#a5cffc19502c4c90bfb3bd3bbcd18170a',1,'logging.h']]], - ['ucx_5flogger_5fsource',['UCX_LOGGER_SOURCE',['../logging_8h.html#a0e0d72b12616c1e49ff8834eaf4cb8a2',1,'logging.h']]], - ['ucx_5flogger_5ftimestamp',['UCX_LOGGER_TIMESTAMP',['../logging_8h.html#a38607008268b4f776ee500fb95d2e823',1,'logging.h']]], - ['ucx_5flogger_5ftrace',['UCX_LOGGER_TRACE',['../logging_8h.html#a55b88d1fec7036d841b3ddd6195c5586',1,'UCX_LOGGER_TRACE(): logging.h'],['../logging_8h.html#a3031b7ff13f4cfae9c2916543be2877c',1,'ucx_logger_trace(): logging.h']]], - ['ucx_5flogger_5fwarn',['UCX_LOGGER_WARN',['../logging_8h.html#abd01ca11486226ba34e8f7028d9fffba',1,'UCX_LOGGER_WARN(): logging.h'],['../logging_8h.html#aca7bd861b646892813fd7310c0aa69af',1,'ucx_logger_warn(): logging.h']]], - ['ucx_5fmap_5fcstr_5fget',['ucx_map_cstr_get',['../map_8h.html#a64e1fb55498fa502dd2ed8ed69062cdd',1,'map.h']]], - ['ucx_5fmap_5fcstr_5fput',['ucx_map_cstr_put',['../map_8h.html#ad9356b01425b934ab237b52339ac0cc3',1,'map.h']]], - ['ucx_5fmap_5fcstr_5fremove',['ucx_map_cstr_remove',['../map_8h.html#a9c4405a5a75ecf64e2ef3d0c6501a9fe',1,'map.h']]], - ['ucx_5fmap_5fforeach',['UCX_MAP_FOREACH',['../map_8h.html#a940896c4aa1b13e54c55c04c3efc186b',1,'map.h']]], - ['ucx_5fmap_5fint_5fget',['ucx_map_int_get',['../map_8h.html#aa1681bd2178553cd092fd24c4d681d3c',1,'map.h']]], - ['ucx_5fmap_5fint_5fput',['ucx_map_int_put',['../map_8h.html#aaa30af79b4068c923895619e83f44367',1,'map.h']]], - ['ucx_5fmap_5fint_5fremove',['ucx_map_int_remove',['../map_8h.html#aa767958b5468737755c09f7185b1770c',1,'map.h']]], - ['ucx_5fmap_5fsstr_5fget',['ucx_map_sstr_get',['../map_8h.html#a14d385f6b7f371f0507861cabd2eab4e',1,'map.h']]], - ['ucx_5fmap_5fsstr_5fput',['ucx_map_sstr_put',['../map_8h.html#ac26a8615bfc8f47ee9eaceb47645f98e',1,'map.h']]], - ['ucx_5fmap_5fsstr_5fremove',['ucx_map_sstr_remove',['../map_8h.html#a48700ea86fadb9ea54d13010f9124df2',1,'map.h']]], - ['ucx_5fmempool_5fnew_5fdefault',['ucx_mempool_new_default',['../mempool_8h.html#a49f7bd1da5ac201d0cf54dc0f0d82dd2',1,'mempool.h']]], - ['ucx_5fsprintf',['ucx_sprintf',['../utils_8h.html#af9f333b66ecd639c347c7235f4992e2e',1,'utils.h']]], - ['ucx_5fstack_5fdim',['ucx_stack_dim',['../stack_8h.html#a3b761343c6491222604341ebfa443226',1,'stack.h']]], - ['ucx_5fstack_5fempty',['ucx_stack_empty',['../stack_8h.html#a4f7239dbd6c032c56812e370b71c1985',1,'stack.h']]], - ['ucx_5fstack_5fpop',['ucx_stack_pop',['../stack_8h.html#a506b82374734ec476d086ddfb561174d',1,'stack.h']]], - ['ucx_5fstack_5ftopsize',['ucx_stack_topsize',['../stack_8h.html#a030197051a803e87d5eeac5adb80b15a',1,'stack.h']]], - ['ucx_5fstream_5fbcopy',['ucx_stream_bcopy',['../utils_8h.html#a6003a1750a66234169bd1f8cc84b297b',1,'utils.h']]], - ['ucx_5fstream_5fcopy',['ucx_stream_copy',['../utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392',1,'utils.h']]], - ['ucx_5fstream_5fcopy_5fbufsize',['UCX_STREAM_COPY_BUFSIZE',['../utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439',1,'utils.h']]], - ['ucx_5fstream_5fncopy',['ucx_stream_ncopy',['../utils_8h.html#add13f39a8af440b4f7e6f74339eaada2',1,'utils.h']]], - ['ucx_5fszmul',['ucx_szmul',['../ucx_8h.html#a0b5ed6c1a0b15356f4f948acfd32a4cc',1,'ucx.h']]], - ['ucx_5ftest',['UCX_TEST',['../test_8h.html#a66cfb29c329fc9eaef071f2449836659',1,'test.h']]], - ['ucx_5ftest_5fassert',['UCX_TEST_ASSERT',['../test_8h.html#a08f477cd12fc3fe741a92493e5df58a9',1,'test.h']]], - ['ucx_5ftest_5fbegin',['UCX_TEST_BEGIN',['../test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4',1,'test.h']]], - ['ucx_5ftest_5fcall_5fsubroutine',['UCX_TEST_CALL_SUBROUTINE',['../test_8h.html#a0efbab91c54f5237a2ab207f48cf0e51',1,'test.h']]], - ['ucx_5ftest_5fend',['UCX_TEST_END',['../test_8h.html#a86e64857c04f0447f8b16fb9c2b3b639',1,'test.h']]], - ['ucx_5ftest_5fsubroutine',['UCX_TEST_SUBROUTINE',['../test_8h.html#ae073cf5ead22cb27d662da048e16f44a',1,'test.h']]], - ['ucx_5fversion',['UCX_VERSION',['../ucx_8h.html#af12001920ca2fc1405615684e4dea284',1,'ucx.h']]], - ['ucx_5fversion_5fmajor',['UCX_VERSION_MAJOR',['../ucx_8h.html#aa57e5dd22d42387d748cc16777df1383',1,'ucx.h']]], - ['ucx_5fversion_5fminor',['UCX_VERSION_MINOR',['../ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0',1,'ucx.h']]] -];
--- a/docs/api-2.1/search/files_0.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="files_0.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/files_0.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -var searchData= -[ - ['allocator_2eh',['allocator.h',['../allocator_8h.html',1,'']]], - ['array_2eh',['array.h',['../array_8h.html',1,'']]], - ['avl_2eh',['avl.h',['../avl_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/files_1.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="files_1.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/files_1.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['buffer_2eh',['buffer.h',['../buffer_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/files_2.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="files_2.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/files_2.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['list_2eh',['list.h',['../list_8h.html',1,'']]], - ['logging_2eh',['logging.h',['../logging_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/files_3.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="files_3.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/files_3.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['map_2eh',['map.h',['../map_8h.html',1,'']]], - ['mempool_2eh',['mempool.h',['../mempool_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/files_4.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="files_4.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/files_4.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['properties_2eh',['properties.h',['../properties_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/files_5.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="files_5.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/files_5.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['stack_2eh',['stack.h',['../stack_8h.html',1,'']]], - ['string_2eh',['string.h',['../string_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/files_6.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="files_6.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/files_6.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['test_2eh',['test.h',['../test_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/files_7.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="files_7.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/files_7.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['ucx_2eh',['ucx.h',['../ucx_8h.html',1,'']]], - ['utils_2eh',['utils.h',['../utils_8h.html',1,'']]] -];
--- a/docs/api-2.1/search/functions_0.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="functions_0.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/functions_0.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -var searchData= -[ - ['scstr',['scstr',['../string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6',1,'string.c']]], - ['scstrcasecmp',['scstrcasecmp',['../string_8h.html#aca8142fb823d253054e17c17cfca05e0',1,'string.c']]], - ['scstrcaseprefix',['scstrcaseprefix',['../string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df',1,'string.c']]], - ['scstrcasesuffix',['scstrcasesuffix',['../string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3',1,'string.c']]], - ['scstrcat',['scstrcat',['../string_8h.html#a7376842c19e954b49215da81ef76ac0c',1,'string.c']]], - ['scstrcat_5fa',['scstrcat_a',['../string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9',1,'string.c']]], - ['scstrchr',['scstrchr',['../string_8h.html#a5836d6a7a744791c35e5c17bdc394a87',1,'string.c']]], - ['scstrcmp',['scstrcmp',['../string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82',1,'string.c']]], - ['scstrdup',['scstrdup',['../string_8h.html#a97dccce03af419596dbdd592ca46a164',1,'string.c']]], - ['scstrdup_5fa',['scstrdup_a',['../string_8h.html#a8fe58921f51eb1fde038472377e63014',1,'string.c']]], - ['scstrlower',['scstrlower',['../string_8h.html#abccf198bea3186ff2abb080cc88dcae6',1,'string.c']]], - ['scstrlower_5fa',['scstrlower_a',['../string_8h.html#a3cf1e557df7ab58d03c78832c4060276',1,'string.c']]], - ['scstrn',['scstrn',['../string_8h.html#ae594f6e222ea394cef6a26c0dfad000d',1,'string.c']]], - ['scstrnlen',['scstrnlen',['../string_8h.html#ac1b000030d6d197eec48c15a182055d5',1,'string.c']]], - ['scstrprefix',['scstrprefix',['../string_8h.html#a599ddc2f88dd1df68b72eefd91347393',1,'string.c']]], - ['scstrrchr',['scstrrchr',['../string_8h.html#ae389835b97cd9382e7d6a6a075323376',1,'string.c']]], - ['scstrscstr',['scstrscstr',['../string_8h.html#a54f256c3abe811c52d58b4ff1b23f051',1,'string.c']]], - ['scstrsplit',['scstrsplit',['../string_8h.html#ae71cac352b00230848bde358f0fb05ea',1,'string.c']]], - ['scstrsplit_5fa',['scstrsplit_a',['../string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef',1,'string.c']]], - ['scstrsstr',['scstrsstr',['../string_8h.html#aa4362cb36c6629f9d8484739fd827748',1,'string.c']]], - ['scstrsubs',['scstrsubs',['../string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060',1,'string.c']]], - ['scstrsubsl',['scstrsubsl',['../string_8h.html#ad50f0f67b906fad0744f46bcb51e144b',1,'string.c']]], - ['scstrsuffix',['scstrsuffix',['../string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a',1,'string.c']]], - ['scstrtrim',['scstrtrim',['../string_8h.html#ad374b16eb1be8b48019debad9b9f268c',1,'string.c']]], - ['scstrupper',['scstrupper',['../string_8h.html#af3dd09ec9d11162fe0075f4e60f41240',1,'string.c']]], - ['scstrupper_5fa',['scstrupper_a',['../string_8h.html#aea94613eb74668cc05d365803d32bfad',1,'string.c']]], - ['sstr',['sstr',['../string_8h.html#a539eb7059251a051ee5d179526a23e9a',1,'string.c']]], - ['sstrchr',['sstrchr',['../string_8h.html#af80898a0b75955eb2579298c3ae2c481',1,'string.c']]], - ['sstrn',['sstrn',['../string_8h.html#a2744c38ac44abf3e01fa059056dcf36c',1,'string.c']]], - ['sstrrchr',['sstrrchr',['../string_8h.html#adae3f59957ca328e1da5285cb8b02a72',1,'string.c']]], - ['sstrsubs',['sstrsubs',['../string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258',1,'string.c']]], - ['sstrsubsl',['sstrsubsl',['../string_8h.html#a78925c91af54f23cebd20ff99ef4331a',1,'string.c']]], - ['sstrtrim',['sstrtrim',['../string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56',1,'string.c']]] -];
--- a/docs/api-2.1/search/functions_1.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="functions_1.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/functions_1.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,185 +0,0 @@ -var searchData= -[ - ['ucx_5farray_5fappend_5ffrom',['ucx_array_append_from',['../array_8h.html#aea01731ad94ea73c0c8fb1d1b7a35fcf',1,'array.c']]], - ['ucx_5farray_5fat',['ucx_array_at',['../array_8h.html#aa698085fd1a8b70d6b709999c51b49e8',1,'array.c']]], - ['ucx_5farray_5fclone',['ucx_array_clone',['../array_8h.html#a4a8c273370e4a3a3e2624e364f5ab410',1,'array.c']]], - ['ucx_5farray_5fconcat',['ucx_array_concat',['../array_8h.html#aa5a0bf3d3f0df6406beb0e569021cc28',1,'array.c']]], - ['ucx_5farray_5fcontains',['ucx_array_contains',['../array_8h.html#a5241058cd2329147bc5b1593ae7e51dc',1,'array.c']]], - ['ucx_5farray_5fdestroy',['ucx_array_destroy',['../array_8h.html#a8e83681d8d5d8cddbf10f63ce5be4c10',1,'array.c']]], - ['ucx_5farray_5fequals',['ucx_array_equals',['../array_8h.html#a43292b448adb1741677aa8c578bcc201',1,'array.c']]], - ['ucx_5farray_5ffind',['ucx_array_find',['../array_8h.html#ae7bdbed94afee9b20b38b95e3ab470f0',1,'array.c']]], - ['ucx_5farray_5ffree',['ucx_array_free',['../array_8h.html#ac01ee914468a16f470bf3071fffbe438',1,'array.c']]], - ['ucx_5farray_5fgrow',['ucx_array_grow',['../array_8h.html#ab0cbf243824aaebee48277315e03afce',1,'array.c']]], - ['ucx_5farray_5finit',['ucx_array_init',['../array_8h.html#ad921e85c28ffae32230777a53c5037e5',1,'array.c']]], - ['ucx_5farray_5finit_5fa',['ucx_array_init_a',['../array_8h.html#a2451e61ebb15a7ba1c1319267ba75b8c',1,'array.c']]], - ['ucx_5farray_5fnew',['ucx_array_new',['../array_8h.html#a994a2fbf1c33a3833e2a70cd9a4352b7',1,'array.c']]], - ['ucx_5farray_5fnew_5fa',['ucx_array_new_a',['../array_8h.html#a177170258c215eb2e4f5a32e59f0cb1b',1,'array.c']]], - ['ucx_5farray_5fprepend_5ffrom',['ucx_array_prepend_from',['../array_8h.html#a95b52acc2193b5c33cf0eaa4f2082477',1,'array.c']]], - ['ucx_5farray_5fremove',['ucx_array_remove',['../array_8h.html#aa45eac6b697f83adac81c0860cf306b8',1,'array.c']]], - ['ucx_5farray_5fremove_5ffast',['ucx_array_remove_fast',['../array_8h.html#a548d81b07612bae3ba8c4c4b49104b8e',1,'array.c']]], - ['ucx_5farray_5freserve',['ucx_array_reserve',['../array_8h.html#a1c3bf8433c1de3c933f3854ab297fe1d',1,'array.c']]], - ['ucx_5farray_5fresize',['ucx_array_resize',['../array_8h.html#a27762e7c06a6c781015e3c8ceeee0ce3',1,'array.c']]], - ['ucx_5farray_5fset_5ffrom',['ucx_array_set_from',['../array_8h.html#a1bb545d065358d265d80d815ba382a28',1,'array.c']]], - ['ucx_5farray_5fshrink',['ucx_array_shrink',['../array_8h.html#a2daf50e80aee9bccebee876a7efd2dfc',1,'array.c']]], - ['ucx_5farray_5fsort',['ucx_array_sort',['../array_8h.html#add773514569b872a6624381b4b6af52c',1,'array.c']]], - ['ucx_5farray_5futil_5fset_5fa',['ucx_array_util_set_a',['../array_8h.html#ad0a8d76980cf1c1910e64a245803fb9a',1,'array.c']]], - ['ucx_5farray_5futil_5fsetptr_5fa',['ucx_array_util_setptr_a',['../array_8h.html#ad708b333c0c1b02c998309a58ea65e31',1,'array.c']]], - ['ucx_5fasprintf',['ucx_asprintf',['../utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5',1,'utils.c']]], - ['ucx_5favl_5fcount',['ucx_avl_count',['../avl_8h.html#a92c1d41c2b22fe4a029a486ab2153e35',1,'avl.c']]], - ['ucx_5favl_5ffind',['ucx_avl_find',['../avl_8h.html#a51770e1614b28d7d22dea096c3704f83',1,'avl.c']]], - ['ucx_5favl_5ffind_5fnode',['ucx_avl_find_node',['../avl_8h.html#a664986f64d6865605199fbff06e19cd5',1,'avl.c']]], - ['ucx_5favl_5ffree',['ucx_avl_free',['../avl_8h.html#a2f92db538f25fce908d2cb3e5590944c',1,'avl.c']]], - ['ucx_5favl_5ffree_5fcontent',['ucx_avl_free_content',['../avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279',1,'avl.c']]], - ['ucx_5favl_5fget',['ucx_avl_get',['../avl_8h.html#adbcf7ceb3f014a30c7214f7304519efe',1,'avl.c']]], - ['ucx_5favl_5fget_5fnode',['ucx_avl_get_node',['../avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e',1,'avl.c']]], - ['ucx_5favl_5fnew',['ucx_avl_new',['../avl_8h.html#a11b043d65a11b7092d5d98b298e5ede3',1,'avl.c']]], - ['ucx_5favl_5fnew_5fa',['ucx_avl_new_a',['../avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2',1,'avl.c']]], - ['ucx_5favl_5fpred',['ucx_avl_pred',['../avl_8h.html#a0e739aeb66dda6a6a3f6eb51b50cf346',1,'avl.c']]], - ['ucx_5favl_5fput',['ucx_avl_put',['../avl_8h.html#aec401fab4a24a7edffa734f9baf88577',1,'avl.c']]], - ['ucx_5favl_5fput_5fs',['ucx_avl_put_s',['../avl_8h.html#a32cf8955cc0226a82bacfc7b76d6474c',1,'avl.c']]], - ['ucx_5favl_5fremove',['ucx_avl_remove',['../avl_8h.html#a1d821119c805d7fbb7e424bc3effeba9',1,'avl.c']]], - ['ucx_5favl_5fremove_5fnode',['ucx_avl_remove_node',['../avl_8h.html#a9a792b7d9e58073deef74a341f8bc720',1,'avl.c']]], - ['ucx_5favl_5fremove_5fs',['ucx_avl_remove_s',['../avl_8h.html#a01aeeecd6415f0cc2b623486eb28f254',1,'avl.c']]], - ['ucx_5favl_5fsucc',['ucx_avl_succ',['../avl_8h.html#aab1ad9b027ff5e50671aa0ee84e2d541',1,'avl.c']]], - ['ucx_5fbuffer_5feof',['ucx_buffer_eof',['../buffer_8h.html#abad7fd9ad5061224c780b8d1d4c55f09',1,'buffer.c']]], - ['ucx_5fbuffer_5fextend',['ucx_buffer_extend',['../buffer_8h.html#afaf97d2cd7e9faad79a9d35fe33e30c6',1,'buffer.c']]], - ['ucx_5fbuffer_5fextract',['ucx_buffer_extract',['../buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef',1,'buffer.c']]], - ['ucx_5fbuffer_5ffree',['ucx_buffer_free',['../buffer_8h.html#a2af8646d8905c22c7322e7540b0440af',1,'buffer.c']]], - ['ucx_5fbuffer_5fgetc',['ucx_buffer_getc',['../buffer_8h.html#a396339022159ce4ca6d069de9f9209b0',1,'buffer.c']]], - ['ucx_5fbuffer_5fnew',['ucx_buffer_new',['../buffer_8h.html#aacea876d692193ec6f859ce98da7351c',1,'buffer.c']]], - ['ucx_5fbuffer_5fputc',['ucx_buffer_putc',['../buffer_8h.html#a7d6f01b9d631b0123475dfb98fb849ac',1,'buffer.c']]], - ['ucx_5fbuffer_5fputs',['ucx_buffer_puts',['../buffer_8h.html#af1d4b478e04b3ae0bf30e7c2ea964ea2',1,'buffer.c']]], - ['ucx_5fbuffer_5fread',['ucx_buffer_read',['../buffer_8h.html#ae5c3430759f0059547b35d5a254d4da5',1,'buffer.c']]], - ['ucx_5fbuffer_5fseek',['ucx_buffer_seek',['../buffer_8h.html#a47d98482662073c74f35deb0957d15d1',1,'buffer.c']]], - ['ucx_5fbuffer_5fshift',['ucx_buffer_shift',['../buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69',1,'buffer.c']]], - ['ucx_5fbuffer_5fshift_5fleft',['ucx_buffer_shift_left',['../buffer_8h.html#a20431dd0ed6a6fe9f15333bd72afe4db',1,'buffer.c']]], - ['ucx_5fbuffer_5fshift_5fright',['ucx_buffer_shift_right',['../buffer_8h.html#a4fa10b6471495547eb981248fd4f1bc2',1,'buffer.c']]], - ['ucx_5fbuffer_5fwrite',['ucx_buffer_write',['../buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05',1,'buffer.c']]], - ['ucx_5fcmp_5fdouble',['ucx_cmp_double',['../utils_8h.html#ab804b7c27d0bfcd7bf3a3583140825b6',1,'utils.c']]], - ['ucx_5fcmp_5ffloat',['ucx_cmp_float',['../utils_8h.html#ad1196b561bcdad76c393885819769a97',1,'utils.c']]], - ['ucx_5fcmp_5fint',['ucx_cmp_int',['../utils_8h.html#a8ce7e11e6b3deafe89a32a091fde7f16',1,'utils.c']]], - ['ucx_5fcmp_5fint16',['ucx_cmp_int16',['../utils_8h.html#aa29e6e559946375e34113e34e0b0bd0d',1,'utils.c']]], - ['ucx_5fcmp_5fint32',['ucx_cmp_int32',['../utils_8h.html#a858b2ac443fb202643b71f6a7e9218dd',1,'utils.c']]], - ['ucx_5fcmp_5fint64',['ucx_cmp_int64',['../utils_8h.html#a54701aea6a89fed1402dfb0bf56bc7f6',1,'utils.c']]], - ['ucx_5fcmp_5flongint',['ucx_cmp_longint',['../utils_8h.html#aeb57a2b9a6aaa0460c7a6bec29accf2c',1,'utils.c']]], - ['ucx_5fcmp_5flonglong',['ucx_cmp_longlong',['../utils_8h.html#a366b57def20f86a41eaedf575eea5375',1,'utils.c']]], - ['ucx_5fcmp_5fmem',['ucx_cmp_mem',['../utils_8h.html#aff7d2bcded71196831a8c0664333f8e7',1,'utils.c']]], - ['ucx_5fcmp_5fptr',['ucx_cmp_ptr',['../utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8',1,'utils.c']]], - ['ucx_5fcmp_5fsstr',['ucx_cmp_sstr',['../utils_8h.html#adee0739589166d272f8cb7c23aabf8ba',1,'utils.c']]], - ['ucx_5fcmp_5fstr',['ucx_cmp_str',['../utils_8h.html#aa6a37b9d172b6a5b2803d152f9e1b258',1,'utils.c']]], - ['ucx_5fcmp_5fstrn',['ucx_cmp_strn',['../utils_8h.html#ac6b354a878f551a3a5b20a167db3f308',1,'utils.c']]], - ['ucx_5fcmp_5fuint',['ucx_cmp_uint',['../utils_8h.html#abd83a5da91c3dd026a6931bd80c12f1e',1,'utils.c']]], - ['ucx_5fcmp_5fuint16',['ucx_cmp_uint16',['../utils_8h.html#acde5366437e886a459b7468f7a9e11f0',1,'utils.c']]], - ['ucx_5fcmp_5fuint32',['ucx_cmp_uint32',['../utils_8h.html#a5879d1722330355914d8c9146fa549d3',1,'utils.c']]], - ['ucx_5fcmp_5fuint64',['ucx_cmp_uint64',['../utils_8h.html#a1572a78b5b42f7151a5b2a5a7283d62d',1,'utils.c']]], - ['ucx_5fcmp_5fulongint',['ucx_cmp_ulongint',['../utils_8h.html#a3f3cbae2594d6f722bae29acb0408a24',1,'utils.c']]], - ['ucx_5fcmp_5fulonglong',['ucx_cmp_ulonglong',['../utils_8h.html#a6acfc359421f21f9a042a654ff7faac5',1,'utils.c']]], - ['ucx_5fdefault_5fallocator',['ucx_default_allocator',['../allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf',1,'allocator.c']]], - ['ucx_5fdefault_5fcalloc',['ucx_default_calloc',['../allocator_8h.html#a3a0bfdd13d887012309c459b339f338f',1,'allocator.c']]], - ['ucx_5fdefault_5ffree',['ucx_default_free',['../allocator_8h.html#a646d83aaaadfe33ae414c0fad8bfc52a',1,'allocator.c']]], - ['ucx_5fdefault_5fmalloc',['ucx_default_malloc',['../allocator_8h.html#a96403ebf3d2312d95f2fe7627a1cdbc0',1,'allocator.c']]], - ['ucx_5fdefault_5frealloc',['ucx_default_realloc',['../allocator_8h.html#a47cfc8af626a86fcb93a2b14b90498ed',1,'allocator.c']]], - ['ucx_5fdist_5fint',['ucx_dist_int',['../utils_8h.html#a4ab6753739d56c09cdf6079fdcabf7c6',1,'utils.c']]], - ['ucx_5fdist_5fint16',['ucx_dist_int16',['../utils_8h.html#a81fb8434b70ca11bf2c14abfa21d16a9',1,'utils.c']]], - ['ucx_5fdist_5fint32',['ucx_dist_int32',['../utils_8h.html#ab4a659cc46096f0490c1dafa57726476',1,'utils.c']]], - ['ucx_5fdist_5fint64',['ucx_dist_int64',['../utils_8h.html#a54e7d06585bad3a899befc4e9c13853f',1,'utils.c']]], - ['ucx_5fdist_5flongint',['ucx_dist_longint',['../utils_8h.html#a43e73d288b1553a0078bf4c98dd341f5',1,'utils.c']]], - ['ucx_5fdist_5flonglong',['ucx_dist_longlong',['../utils_8h.html#a306778414a2427951ea263be92368627',1,'utils.c']]], - ['ucx_5fdist_5fuint',['ucx_dist_uint',['../utils_8h.html#a37b7d471ca1679992afc11a0deda45f4',1,'utils.c']]], - ['ucx_5fdist_5fuint16',['ucx_dist_uint16',['../utils_8h.html#a66e00a0703cbcde050ec922578e2f080',1,'utils.c']]], - ['ucx_5fdist_5fuint32',['ucx_dist_uint32',['../utils_8h.html#add2b5c5507caba59d894b84e056b079b',1,'utils.c']]], - ['ucx_5fdist_5fuint64',['ucx_dist_uint64',['../utils_8h.html#a3ba75e2e0b2479eef2b22fb219b42da7',1,'utils.c']]], - ['ucx_5fdist_5fulongint',['ucx_dist_ulongint',['../utils_8h.html#abb13476228d0c16bfaba08469adbae2d',1,'utils.c']]], - ['ucx_5fdist_5fulonglong',['ucx_dist_ulonglong',['../utils_8h.html#a59a5859272cb4b43cbdd58208c41e32b',1,'utils.c']]], - ['ucx_5ffprintf',['ucx_fprintf',['../utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a',1,'utils.c']]], - ['ucx_5fhash',['ucx_hash',['../map_8h.html#aea3be97254c05595d986ef6a9faae87b',1,'map.c']]], - ['ucx_5fkey',['ucx_key',['../map_8h.html#a3e540bb46b8ee19789aed63fd8919200',1,'map.c']]], - ['ucx_5flist_5fappend',['ucx_list_append',['../list_8h.html#a00c122c8a26d35b60676939df4161621',1,'list.c']]], - ['ucx_5flist_5fappend_5fa',['ucx_list_append_a',['../list_8h.html#adf3b3e2e0ff977d8928671d6bd82fc60',1,'list.c']]], - ['ucx_5flist_5fclone',['ucx_list_clone',['../list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed',1,'list.c']]], - ['ucx_5flist_5fclone_5fa',['ucx_list_clone_a',['../list_8h.html#a08ca1ba0d2e82258b0408714c1f4c425',1,'list.c']]], - ['ucx_5flist_5fconcat',['ucx_list_concat',['../list_8h.html#a77163a0cc82fae52bec26c8c0c3674d9',1,'list.c']]], - ['ucx_5flist_5fcontains',['ucx_list_contains',['../list_8h.html#a8b0fa051fcfe12e1a82cca1087973852',1,'list.c']]], - ['ucx_5flist_5fdifference',['ucx_list_difference',['../list_8h.html#a6c5db5d1d11ad28b6fe1a80ee1c1e449',1,'list.c']]], - ['ucx_5flist_5fdifference_5fa',['ucx_list_difference_a',['../list_8h.html#a4a2a2fc5cc41073c516db6235bbc51d5',1,'list.c']]], - ['ucx_5flist_5fequals',['ucx_list_equals',['../list_8h.html#adc435447cecf885bc63d232191085bbe',1,'list.c']]], - ['ucx_5flist_5ffind',['ucx_list_find',['../list_8h.html#a9b3b6842d3be572e06a7f519e198cb83',1,'list.c']]], - ['ucx_5flist_5ffirst',['ucx_list_first',['../list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5',1,'list.c']]], - ['ucx_5flist_5ffree',['ucx_list_free',['../list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668',1,'list.c']]], - ['ucx_5flist_5ffree_5fa',['ucx_list_free_a',['../list_8h.html#a944e11f76c38767cd1100d72a4e3b25b',1,'list.c']]], - ['ucx_5flist_5ffree_5fcontent',['ucx_list_free_content',['../list_8h.html#a4ba6c96642f72ea046cc22627c72979c',1,'list.c']]], - ['ucx_5flist_5fget',['ucx_list_get',['../list_8h.html#a2509ffe19bce6a8708c77f89480c75fb',1,'list.c']]], - ['ucx_5flist_5findexof',['ucx_list_indexof',['../list_8h.html#ae2ff2974812ca185870f80bc4ed9337e',1,'list.c']]], - ['ucx_5flist_5fintersection',['ucx_list_intersection',['../list_8h.html#a259f9b754978aeca23dfabba16e20f39',1,'list.c']]], - ['ucx_5flist_5fintersection_5fa',['ucx_list_intersection_a',['../list_8h.html#a1d0b00514dbb81ba6270b58da0c5b9a8',1,'list.c']]], - ['ucx_5flist_5flast',['ucx_list_last',['../list_8h.html#add5ec40c5006e29c629d23c2eb5a6553',1,'list.c']]], - ['ucx_5flist_5fprepend',['ucx_list_prepend',['../list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4',1,'list.c']]], - ['ucx_5flist_5fprepend_5fa',['ucx_list_prepend_a',['../list_8h.html#a54654e6dc60e1c3de9e886c150e404ec',1,'list.c']]], - ['ucx_5flist_5fremove',['ucx_list_remove',['../list_8h.html#a410cb3e8260037ba56c72d14b899b468',1,'list.c']]], - ['ucx_5flist_5fremove_5fa',['ucx_list_remove_a',['../list_8h.html#aca687b7c4e7170175f447e549125aa52',1,'list.c']]], - ['ucx_5flist_5fsize',['ucx_list_size',['../list_8h.html#ae88001cc8ae40b946560f31434abed8f',1,'list.c']]], - ['ucx_5flist_5fsort',['ucx_list_sort',['../list_8h.html#ac74962d9bd7cfc9d3e2e09651469377b',1,'list.c']]], - ['ucx_5flist_5funion',['ucx_list_union',['../list_8h.html#a94ecdb0cea1633ad7074f027fa8485fa',1,'list.c']]], - ['ucx_5flist_5funion_5fa',['ucx_list_union_a',['../list_8h.html#a65b4355536f4ebc4130211b46469f4c1',1,'list.c']]], - ['ucx_5flogger_5ffree',['ucx_logger_free',['../logging_8h.html#ac4697b784e01ec990d2acea192e21658',1,'logging.c']]], - ['ucx_5flogger_5flogf',['ucx_logger_logf',['../logging_8h.html#ac337e5d02ebea565012d4c11bd643801',1,'logging.c']]], - ['ucx_5flogger_5fnew',['ucx_logger_new',['../logging_8h.html#ac560f8517d2172794c9d2691735ec48c',1,'logging.c']]], - ['ucx_5fmap_5fclear',['ucx_map_clear',['../map_8h.html#a285e90e40681c6d9631c935dda0967f2',1,'map.c']]], - ['ucx_5fmap_5fclone',['ucx_map_clone',['../map_8h.html#a62c6c30cbb0d824ba710f5030ff9a4e4',1,'map.c']]], - ['ucx_5fmap_5fclone_5fa',['ucx_map_clone_a',['../map_8h.html#a9aea9103703d5c168420bb6bf85549ea',1,'map.c']]], - ['ucx_5fmap_5fcopy',['ucx_map_copy',['../map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425',1,'map.c']]], - ['ucx_5fmap_5fdifference',['ucx_map_difference',['../map_8h.html#a774fcff87d1e58b6c5af77dd19a8c3dc',1,'map.c']]], - ['ucx_5fmap_5fdifference_5fa',['ucx_map_difference_a',['../map_8h.html#ad0ba103494247d798ac3037c50fc8831',1,'map.c']]], - ['ucx_5fmap_5ffree',['ucx_map_free',['../map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e',1,'map.c']]], - ['ucx_5fmap_5ffree_5fcontent',['ucx_map_free_content',['../map_8h.html#a750f3d9d83e2f3788a14c17a9d160618',1,'map.c']]], - ['ucx_5fmap_5fget',['ucx_map_get',['../map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6',1,'map.c']]], - ['ucx_5fmap_5fintersection',['ucx_map_intersection',['../map_8h.html#aa594d7a5afebc3bed6bb265348cf6b0d',1,'map.c']]], - ['ucx_5fmap_5fintersection_5fa',['ucx_map_intersection_a',['../map_8h.html#a169e0470a20484dd76425fdf77e3651e',1,'map.c']]], - ['ucx_5fmap_5fiter_5fnext',['ucx_map_iter_next',['../map_8h.html#aceb8675abf44860b4bbc301bbada5b91',1,'map.c']]], - ['ucx_5fmap_5fiterator',['ucx_map_iterator',['../map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110',1,'map.c']]], - ['ucx_5fmap_5fnew',['ucx_map_new',['../map_8h.html#a79f31de8b93814493759dbc8b940cf0c',1,'map.c']]], - ['ucx_5fmap_5fnew_5fa',['ucx_map_new_a',['../map_8h.html#aed508a94c66cc15372503c64b70eb03e',1,'map.c']]], - ['ucx_5fmap_5fput',['ucx_map_put',['../map_8h.html#ac04a08b604217070254d4c58f0e82498',1,'map.c']]], - ['ucx_5fmap_5frehash',['ucx_map_rehash',['../map_8h.html#a174bce9fad554dd92b8da354e0d32512',1,'map.c']]], - ['ucx_5fmap_5fremove',['ucx_map_remove',['../map_8h.html#a17248a4888eb8f9ae18be522d64632aa',1,'map.c']]], - ['ucx_5fmap_5funion',['ucx_map_union',['../map_8h.html#a3f65978c481af7f637cad021d93522d5',1,'map.c']]], - ['ucx_5fmap_5funion_5fa',['ucx_map_union_a',['../map_8h.html#ab6370c3fa8113fdad593ce4b0460c9c6',1,'map.c']]], - ['ucx_5fmemcpy',['ucx_memcpy',['../utils_8h.html#ab2e184e6a744941aab6b8058116baf30',1,'utils.c']]], - ['ucx_5fmempool_5fcalloc',['ucx_mempool_calloc',['../mempool_8h.html#a4b9142011824ae24f00fabe128417d69',1,'mempool.c']]], - ['ucx_5fmempool_5fchcap',['ucx_mempool_chcap',['../mempool_8h.html#aaf75b5016098723a9280531ccc3a6d77',1,'mempool.c']]], - ['ucx_5fmempool_5fdestroy',['ucx_mempool_destroy',['../mempool_8h.html#af096378da7e9bfbed3088497cf4c15bf',1,'mempool.c']]], - ['ucx_5fmempool_5ffree',['ucx_mempool_free',['../mempool_8h.html#aefa26e3015f5aefadbfc74221bd246ac',1,'mempool.c']]], - ['ucx_5fmempool_5fmalloc',['ucx_mempool_malloc',['../mempool_8h.html#a2ae492b8f2878ccc9837ac213dced11e',1,'mempool.c']]], - ['ucx_5fmempool_5fnew',['ucx_mempool_new',['../mempool_8h.html#ad71cb8c3b6fdb30360376a8b372ef22a',1,'mempool.c']]], - ['ucx_5fmempool_5frealloc',['ucx_mempool_realloc',['../mempool_8h.html#a660ef42520ed6737c2e77aae18e3a7a4',1,'mempool.c']]], - ['ucx_5fmempool_5freg_5fdestr',['ucx_mempool_reg_destr',['../mempool_8h.html#af47b6b7c40f8f263dc28cc9a4e77b27c',1,'mempool.c']]], - ['ucx_5fmempool_5fset_5fdestr',['ucx_mempool_set_destr',['../mempool_8h.html#adb788e7ec24cd7dbdea6381539c549f2',1,'mempool.c']]], - ['ucx_5fproperties2map',['ucx_properties2map',['../properties_8h.html#a5c7ff8bc3139960a3f3dc92072b742f3',1,'properties.c']]], - ['ucx_5fproperties_5ffill',['ucx_properties_fill',['../properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d',1,'properties.c']]], - ['ucx_5fproperties_5ffree',['ucx_properties_free',['../properties_8h.html#a38a2fe7bb2986bd87c7e69356ab05c05',1,'properties.c']]], - ['ucx_5fproperties_5fload',['ucx_properties_load',['../properties_8h.html#ae1b600f839a6b2278b68fc314981a8a3',1,'properties.c']]], - ['ucx_5fproperties_5fnew',['ucx_properties_new',['../properties_8h.html#a44d9dd12cab3aaa0084f1c8b89405796',1,'properties.c']]], - ['ucx_5fproperties_5fnext',['ucx_properties_next',['../properties_8h.html#a7e03bc573d45d48c538cd721e810d33c',1,'properties.c']]], - ['ucx_5fproperties_5fstore',['ucx_properties_store',['../properties_8h.html#a63c0c1b7648e675b21a1788917ff36fb',1,'properties.c']]], - ['ucx_5fsc2sc',['ucx_sc2sc',['../string_8h.html#a69d5e3eeec783cc43314df71248768f5',1,'string.c']]], - ['ucx_5fss2c_5fs',['ucx_ss2c_s',['../string_8h.html#aedeb5d7bddda54116101a8d68af8c56d',1,'string.h']]], - ['ucx_5fss2sc',['ucx_ss2sc',['../string_8h.html#a9ce5ad1b2aa2dbeba204d452c2e64359',1,'string.c']]], - ['ucx_5fstack_5favail',['ucx_stack_avail',['../stack_8h.html#a53cd2c7743dc8ad9cbd35ade0b4873e7',1,'stack.c']]], - ['ucx_5fstack_5fcalloc',['ucx_stack_calloc',['../stack_8h.html#afdc467524b5e19a9a777c6bc03e17174',1,'stack.c']]], - ['ucx_5fstack_5ffree',['ucx_stack_free',['../stack_8h.html#aabd55c14a3866b3782ba324f4d8b4c41',1,'stack.c']]], - ['ucx_5fstack_5finit',['ucx_stack_init',['../stack_8h.html#abaef685df4e7ef95cd7218984a0618fe',1,'stack.c']]], - ['ucx_5fstack_5fmalloc',['ucx_stack_malloc',['../stack_8h.html#af865b416802140f6b6e8ab3626d7d1ac',1,'stack.c']]], - ['ucx_5fstack_5fpopn',['ucx_stack_popn',['../stack_8h.html#a07ea48f28eab474dcfefbb86fa66ef81',1,'stack.c']]], - ['ucx_5fstack_5fpush',['ucx_stack_push',['../stack_8h.html#af85e6f77a8341beb6188f9ae1a8e9f92',1,'stack.c']]], - ['ucx_5fstack_5fpusharr',['ucx_stack_pusharr',['../stack_8h.html#a7bb138979191bba138e76ea37488fae2',1,'stack.c']]], - ['ucx_5fstack_5frealloc',['ucx_stack_realloc',['../stack_8h.html#a0c678f96f6fabab49b2b034a1fe91c3a',1,'stack.c']]], - ['ucx_5fstrcpy',['ucx_strcpy',['../utils_8h.html#adeb6e8d0a53a829207cfa0a979d01fff',1,'utils.c']]], - ['ucx_5fstream_5fbncopy',['ucx_stream_bncopy',['../utils_8h.html#a114ee7f7da62656ffd35e2dc23394201',1,'utils.c']]], - ['ucx_5fszmul_5fimpl',['ucx_szmul_impl',['../ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b',1,'ucx.c']]], - ['ucx_5ftest_5fregister',['ucx_test_register',['../test_8h.html#a8dfabc42f183d3a4d79379a5d17bf67d',1,'test.c']]], - ['ucx_5ftest_5frun',['ucx_test_run',['../test_8h.html#a3721458deeecb43aa322428f007714c3',1,'test.c']]], - ['ucx_5ftest_5fsuite_5ffree',['ucx_test_suite_free',['../test_8h.html#a4a6ac61a6f72722273f8eaa7a343edde',1,'test.c']]], - ['ucx_5ftest_5fsuite_5fnew',['ucx_test_suite_new',['../test_8h.html#a531f0df90363e0befbe900878f65f09e',1,'test.c']]], - ['ucx_5fvasprintf',['ucx_vasprintf',['../utils_8h.html#a3ea1dfb856c741f3e8ec6bfdc9ad427e',1,'utils.c']]], - ['ucx_5fvfprintf',['ucx_vfprintf',['../utils_8h.html#a4907967beb92c3ae351dd239abbb6927',1,'utils.c']]] -];
--- a/docs/api-2.1/search/nomatches.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="NoMatches">No Matches</div> -</div> -</body> -</html>
--- a/docs/api-2.1/search/pages_0.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="pages_0.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/pages_0.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['uap_20common_20extensions',['UAP Common Extensions',['../index.html',1,'']]] -];
--- a/docs/api-2.1/search/search.css Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} -
--- a/docs/api-2.1/search/search.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,791 +0,0 @@ -function convertToId(search) -{ - var result = ''; - for (i=0;i<search.length;i++) - { - var c = search.charAt(i); - var cn = c.charCodeAt(0); - if (c.match(/[a-z0-9\u0080-\uFFFF]/)) - { - result+=c; - } - else if (cn<16) - { - result+="_0"+cn.toString(16); - } - else - { - result+="_"+cn.toString(16); - } - } - return result; -} - -function getXPos(item) -{ - var x = 0; - if (item.offsetWidth) - { - while (item && item!=document.body) - { - x += item.offsetLeft; - item = item.offsetParent; - } - } - return x; -} - -function getYPos(item) -{ - var y = 0; - if (item.offsetWidth) - { - while (item && item!=document.body) - { - y += item.offsetTop; - item = item.offsetParent; - } - } - return y; -} - -/* A class handling everything associated with the search panel. - - Parameters: - name - The name of the global variable that will be - storing this instance. Is needed to be able to set timeouts. - resultPath - path to use for external files -*/ -function SearchBox(name, resultsPath, inFrame, label) -{ - if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } - - // ---------- Instance variables - this.name = name; - this.resultsPath = resultsPath; - this.keyTimeout = 0; - this.keyTimeoutLength = 500; - this.closeSelectionTimeout = 300; - this.lastSearchValue = ""; - this.lastResultsPage = ""; - this.hideTimeout = 0; - this.searchIndex = 0; - this.searchActive = false; - this.insideFrame = inFrame; - this.searchLabel = label; - - // ----------- DOM Elements - - this.DOMSearchField = function() - { return document.getElementById("MSearchField"); } - - this.DOMSearchSelect = function() - { return document.getElementById("MSearchSelect"); } - - this.DOMSearchSelectWindow = function() - { return document.getElementById("MSearchSelectWindow"); } - - this.DOMPopupSearchResults = function() - { return document.getElementById("MSearchResults"); } - - this.DOMPopupSearchResultsWindow = function() - { return document.getElementById("MSearchResultsWindow"); } - - this.DOMSearchClose = function() - { return document.getElementById("MSearchClose"); } - - this.DOMSearchBox = function() - { return document.getElementById("MSearchBox"); } - - // ------------ Event Handlers - - // Called when focus is added or removed from the search field. - this.OnSearchFieldFocus = function(isActive) - { - this.Activate(isActive); - } - - this.OnSearchSelectShow = function() - { - var searchSelectWindow = this.DOMSearchSelectWindow(); - var searchField = this.DOMSearchSelect(); - - if (this.insideFrame) - { - var left = getXPos(searchField); - var top = getYPos(searchField); - left += searchField.offsetWidth + 6; - top += searchField.offsetHeight; - - // show search selection popup - searchSelectWindow.style.display='block'; - left -= searchSelectWindow.offsetWidth; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - } - else - { - var left = getXPos(searchField); - var top = getYPos(searchField); - top += searchField.offsetHeight; - - // show search selection popup - searchSelectWindow.style.display='block'; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - } - - // stop selection hide timer - if (this.hideTimeout) - { - clearTimeout(this.hideTimeout); - this.hideTimeout=0; - } - return false; // to avoid "image drag" default event - } - - this.OnSearchSelectHide = function() - { - this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", - this.closeSelectionTimeout); - } - - // Called when the content of the search field is changed. - this.OnSearchFieldChange = function(evt) - { - if (this.keyTimeout) // kill running timer - { - clearTimeout(this.keyTimeout); - this.keyTimeout = 0; - } - - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 || e.keyCode==13) - { - if (e.shiftKey==1) - { - this.OnSearchSelectShow(); - var win=this.DOMSearchSelectWindow(); - for (i=0;i<win.childNodes.length;i++) - { - var child = win.childNodes[i]; // get span within a - if (child.className=='SelectItem') - { - child.focus(); - return; - } - } - return; - } - else if (window.frames.MSearchResults.searchResults) - { - var elem = window.frames.MSearchResults.searchResults.NavNext(0); - if (elem) elem.focus(); - } - } - else if (e.keyCode==27) // Escape out of the search field - { - this.DOMSearchField().blur(); - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.lastSearchValue = ''; - this.Activate(false); - return; - } - - // strip whitespaces - var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); - - if (searchValue != this.lastSearchValue) // search value has changed - { - if (searchValue != "") // non-empty search - { - // set timer for search update - this.keyTimeout = setTimeout(this.name + '.Search()', - this.keyTimeoutLength); - } - else // empty search field - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.lastSearchValue = ''; - } - } - } - - this.SelectItemCount = function(id) - { - var count=0; - var win=this.DOMSearchSelectWindow(); - for (i=0;i<win.childNodes.length;i++) - { - var child = win.childNodes[i]; // get span within a - if (child.className=='SelectItem') - { - count++; - } - } - return count; - } - - this.SelectItemSet = function(id) - { - var i,j=0; - var win=this.DOMSearchSelectWindow(); - for (i=0;i<win.childNodes.length;i++) - { - var child = win.childNodes[i]; // get span within a - if (child.className=='SelectItem') - { - var node = child.firstChild; - if (j==id) - { - node.innerHTML='•'; - } - else - { - node.innerHTML=' '; - } - j++; - } - } - } - - // Called when an search filter selection is made. - // set item with index id as the active item - this.OnSelectItem = function(id) - { - this.searchIndex = id; - this.SelectItemSet(id); - var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); - if (searchValue!="" && this.searchActive) // something was found -> do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down - { - this.searchIndex++; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==38 && this.searchIndex>0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of <Search()>. - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e<searchData.length; e++) - { - var id = searchData[e][0]; - var srResult = document.createElement('div'); - srResult.setAttribute('id','SR_'+id); - setClassAttr(srResult,'SRResult'); - var srEntry = document.createElement('div'); - setClassAttr(srEntry,'SREntry'); - var srLink = document.createElement('a'); - srLink.setAttribute('id','Item'+e); - setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); - setClassAttr(srLink,'SRSymbol'); - srLink.innerHTML = searchData[e][1][0]; - srEntry.appendChild(srLink); - if (searchData[e][1].length==2) // single result - { - srLink.setAttribute('href',searchData[e][1][1][0]); - if (searchData[e][1][1][1]) - { - srLink.setAttribute('target','_parent'); - } - var srScope = document.createElement('span'); - setClassAttr(srScope,'SRScope'); - srScope.innerHTML = searchData[e][1][1][2]; - srEntry.appendChild(srScope); - } - else // multiple results - { - srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); - var srChildren = document.createElement('div'); - setClassAttr(srChildren,'SRChildren'); - for (var c=0; c<searchData[e][1].length-1; c++) - { - var srChild = document.createElement('a'); - srChild.setAttribute('id','Item'+e+'_c'+c); - setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')'); - setClassAttr(srChild,'SRScope'); - srChild.setAttribute('href',searchData[e][1][c+1][0]); - if (searchData[e][1][c+1][1]) - { - srChild.setAttribute('target','_parent'); - } - srChild.innerHTML = searchData[e][1][c+1][2]; - srChildren.appendChild(srChild); - } - srEntry.appendChild(srChildren); - } - srResult.appendChild(srEntry); - results.appendChild(srResult); - } -} - -function init_search() -{ - var results = document.getElementById("MSearchSelectWindow"); - for (var key in indexSectionLabels) - { - var link = document.createElement('a'); - link.setAttribute('class','SelectItem'); - link.setAttribute('onclick','searchBox.OnSelectItem('+key+')'); - link.href='javascript:void(0)'; - link.innerHTML='<span class="SelectionMark"> </span>'+indexSectionLabels[key]; - results.appendChild(link); - } - searchBox.OnSelectItem(0); -} -
--- a/docs/api-2.1/search/searchdata.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -var indexSectionsWithContent = -{ - 0: "_abcdefhiklmnprstuvw", - 1: "su", - 2: "ablmpstu", - 3: "su", - 4: "abcdefhiklmnprstuvw", - 5: "cdruw", - 6: "_apsu", - 7: "u" -}; - -var indexSectionNames = -{ - 0: "all", - 1: "classes", - 2: "files", - 3: "functions", - 4: "variables", - 5: "typedefs", - 6: "defines", - 7: "pages" -}; - -var indexSectionLabels = -{ - 0: "All", - 1: "Data Structures", - 2: "Files", - 3: "Functions", - 4: "Variables", - 5: "Typedefs", - 6: "Macros", - 7: "Pages" -}; -
--- a/docs/api-2.1/search/typedefs_0.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="typedefs_0.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/typedefs_0.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['cmp_5ffunc',['cmp_func',['../ucx_8h.html#afe5e2d5dbf34778e0e97852051570791',1,'ucx.h']]], - ['copy_5ffunc',['copy_func',['../ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967',1,'ucx.h']]] -];
--- a/docs/api-2.1/search/typedefs_1.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="typedefs_1.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/typedefs_1.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['distance_5ffunc',['distance_func',['../ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9',1,'ucx.h']]] -];
--- a/docs/api-2.1/search/typedefs_2.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="typedefs_2.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/typedefs_2.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['read_5ffunc',['read_func',['../ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5',1,'ucx.h']]] -];
--- a/docs/api-2.1/search/typedefs_3.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="typedefs_3.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/typedefs_3.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -var searchData= -[ - ['ucx_5fallocator_5fcalloc',['ucx_allocator_calloc',['../allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12',1,'allocator.h']]], - ['ucx_5fallocator_5ffree',['ucx_allocator_free',['../allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e',1,'allocator.h']]], - ['ucx_5fallocator_5fmalloc',['ucx_allocator_malloc',['../allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473',1,'allocator.h']]], - ['ucx_5fallocator_5frealloc',['ucx_allocator_realloc',['../allocator_8h.html#a6d7cf038a806e327c5da37321d04e426',1,'allocator.h']]], - ['ucx_5fdestructor',['ucx_destructor',['../ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3',1,'ucx.h']]], - ['ucxavlnode',['UcxAVLNode',['../avl_8h.html#a08ba2496c2316df58548c3cc29712add',1,'avl.h']]], - ['ucxkey',['UcxKey',['../map_8h.html#ad63828bb23123fc01a5315a2bac3b142',1,'map.h']]], - ['ucxlist',['UcxList',['../list_8h.html#aa6f89f91c1081c9a7c6866c298f497a2',1,'list.h']]], - ['ucxmap',['UcxMap',['../map_8h.html#a18e21948725b2da68c35da587a722033',1,'map.h']]], - ['ucxmapelement',['UcxMapElement',['../map_8h.html#ad7d7a910a32113eb93eae11c3dc97b4b',1,'map.h']]], - ['ucxmapiterator',['UcxMapIterator',['../map_8h.html#ae36aff5f645948c54f51578b11fd87fb',1,'map.h']]], - ['ucxtest',['UcxTest',['../test_8h.html#ae906817354c010b83c2784260cce7a1c',1,'test.h']]], - ['ucxtestlist',['UcxTestList',['../test_8h.html#a8048c50ae73ea690b776edfd63bd6a5d',1,'test.h']]], - ['ucxtestsuite',['UcxTestSuite',['../test_8h.html#a52115d1d0f1c4a565ed6ef7c1bfd0363',1,'test.h']]] -];
--- a/docs/api-2.1/search/typedefs_4.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="typedefs_4.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/typedefs_4.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['write_5ffunc',['write_func',['../ucx_8h.html#a989b3f0fa4d307d278378fde435641ed',1,'ucx.h']]] -];
--- a/docs/api-2.1/search/variables_0.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_0.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_0.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['allocator',['allocator',['../structUcxArray.html#a2ef31303b7548b9aa8e2b9187e295212',1,'UcxArray::allocator()'],['../structUcxAVLTree.html#a30652776b540156ad54c7d52833e4e28',1,'UcxAVLTree::allocator()'],['../structUcxMap.html#a531f3e481c1c331cf037b916192e974d',1,'UcxMap::allocator()'],['../structUcxMempool.html#ac45fd1e9269399e4c434d6bdaa770d92',1,'UcxMempool::allocator()'],['../structUcxStack.html#a33cda4f6890ac56ab31701598bc1ae10',1,'UcxStack::allocator()']]] -];
--- a/docs/api-2.1/search/variables_1.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_1.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_1.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['buffer',['buffer',['../structUcxProperties.html#a6bb4d29686df41a0f42641ee15232bfd',1,'UcxProperties']]], - ['buflen',['buflen',['../structUcxProperties.html#a4e7524434525267e29f493a25dcca6b5',1,'UcxProperties']]] -];
--- a/docs/api-2.1/search/variables_10.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_10.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_10.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['userdata',['userdata',['../structUcxAVLTree.html#ae92a3bfad3fe33c8dcbdad85112f83fd',1,'UcxAVLTree']]] -];
--- a/docs/api-2.1/search/variables_11.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_11.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_11.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['value',['value',['../structUcxAVLNode.html#a302501b8c04c3fde668fe72249871258',1,'UcxAVLNode']]] -];
--- a/docs/api-2.1/search/variables_12.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_12.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_12.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['writer',['writer',['../structUcxLogger.html#ada13bba090a9dc4f8d6cd9be73c60930',1,'UcxLogger']]] -];
--- a/docs/api-2.1/search/variables_2.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_2.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_2.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -var searchData= -[ - ['c',['c',['../structucx__memchunk.html#ab86550503e5f019bfa61a1e91f1c40da',1,'ucx_memchunk']]], - ['calloc',['calloc',['../structUcxAllocator.html#ab94ec1cba45cc4e7d81e1588a11cbb62',1,'UcxAllocator']]], - ['capacity',['capacity',['../structUcxArray.html#a7ed074887908e45bde7e1fbc67b31c18',1,'UcxArray::capacity()'],['../structUcxBuffer.html#a385661894f3cee9c549bfe07a8b316bf',1,'UcxBuffer::capacity()']]], - ['cmpfunc',['cmpfunc',['../structUcxAVLTree.html#a87aff25cb726cb9eb88eb815a10d1004',1,'UcxAVLTree']]], - ['comment1',['comment1',['../structUcxProperties.html#afaa2e6a289fa6949b7b01df35fa5def8',1,'UcxProperties']]], - ['comment2',['comment2',['../structUcxProperties.html#a9ea7ecb414ca8bc7bef62cdd19cc6363',1,'UcxProperties']]], - ['comment3',['comment3',['../structUcxProperties.html#a5f3e561e32bac03e36a191a6940cca92',1,'UcxProperties']]], - ['count',['count',['../structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd',1,'UcxMap']]], - ['cur',['cur',['../structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f',1,'UcxMapIterator']]] -];
--- a/docs/api-2.1/search/variables_3.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_3.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_3.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -var searchData= -[ - ['data',['data',['../structUcxArray.html#a04d2b03d0a45af1fab19b4216602075a',1,'UcxArray::data()'],['../structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2',1,'UcxList::data()'],['../structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c',1,'UcxKey::data()'],['../structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5',1,'UcxMapKey::data()'],['../structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c',1,'UcxMapElement::data()'],['../structUcxMempool.html#ae98c1b0150bb119ee0a8506a6f310d6e',1,'UcxMempool::data()']]], - ['dateformat',['dateformat',['../structUcxLogger.html#a086f75df0f6c81ec491f25c0a4d9262b',1,'UcxLogger']]], - ['delimiter',['delimiter',['../structUcxProperties.html#af6adb3f69616cf9d2bb5ea7b4d837ca5',1,'UcxProperties']]], - ['destructor',['destructor',['../structucx__memchunk.html#ac7b5e3fda47b917d6fb2a1d7ea28447b',1,'ucx_memchunk::destructor()'],['../structucx__regdestr.html#acea2a3bb66909aa800a931ac8b0cce56',1,'ucx_regdestr::destructor()']]] -];
--- a/docs/api-2.1/search/variables_4.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_4.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_4.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['elemsize',['elemsize',['../structUcxArray.html#ac4e9ecdf8a8d010644f6e44dfef8190f',1,'UcxArray']]], - ['error',['error',['../structUcxProperties.html#a34f71a6ab6dcb6892e3b4eb802e75bff',1,'UcxProperties']]] -];
--- a/docs/api-2.1/search/variables_5.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_5.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_5.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -var searchData= -[ - ['failure',['failure',['../structUcxTestSuite.html#abfd240541d1e956e49cde0ac36286951',1,'UcxTestSuite']]], - ['flags',['flags',['../structUcxBuffer.html#ac642e07b0a03be5aac48eb4aa5bec2f7',1,'UcxBuffer']]], - ['free',['free',['../structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f',1,'UcxAllocator']]] -];
--- a/docs/api-2.1/search/variables_6.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_6.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_6.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['hash',['hash',['../structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752',1,'UcxKey::hash()'],['../structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913',1,'UcxMapKey::hash()']]], - ['height',['height',['../structUcxAVLNode.html#af129fd32863a7c35e82c5cd9d11dc95a',1,'UcxAVLNode']]] -];
--- a/docs/api-2.1/search/variables_7.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_7.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_7.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['index',['index',['../structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65',1,'UcxMapIterator']]] -];
--- a/docs/api-2.1/search/variables_8.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_8.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_8.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -var searchData= -[ - ['key',['key',['../structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6',1,'UcxAVLNode::key()'],['../structUcxMapElement.html#aa446141b708e106e2c8de1303318187c',1,'UcxMapElement::key()']]] -];
--- a/docs/api-2.1/search/variables_9.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_9.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_9.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -var searchData= -[ - ['left',['left',['../structUcxAVLNode.html#ad3a1c733f2c1cc81ac527f846fc24b9c',1,'UcxAVLNode']]], - ['len',['len',['../structUcxKey.html#abef01de37f355688f2ac797d2c280683',1,'UcxKey::len()'],['../structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270',1,'UcxMapKey::len()']]], - ['length',['length',['../structsstr__t.html#a5cf571708cdff92e45f08458f2b98229',1,'sstr_t::length()'],['../structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172',1,'scstr_t::length()']]], - ['level',['level',['../structUcxLogger.html#a2e0ee94c25b2307096c7970280d189cd',1,'UcxLogger']]], - ['levels',['levels',['../structUcxLogger.html#a187129f7bc6e5064b3d92a5f1217f396',1,'UcxLogger']]] -];
--- a/docs/api-2.1/search/variables_a.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_a.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_a.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -var searchData= -[ - ['malloc',['malloc',['../structUcxAllocator.html#a013376172be39ed54f77c4be6898845a',1,'UcxAllocator']]], - ['map',['map',['../structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790',1,'UcxMap::map()'],['../structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95',1,'UcxMapIterator::map()']]], - ['mask',['mask',['../structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c',1,'UcxLogger']]] -];
--- a/docs/api-2.1/search/variables_b.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_b.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_b.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -var searchData= -[ - ['ndata',['ndata',['../structUcxMempool.html#aa3a73ab231e1bc207d526f46f1c1e23a',1,'UcxMempool']]], - ['next',['next',['../structUcxList.html#a82a1818f1abf765b026fa91478569a8f',1,'UcxList::next()'],['../structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51',1,'UcxMapElement::next()'],['../structUcxTestList.html#aeebb80ff75d9f6f82ab6dc2641a3c74e',1,'UcxTestList::next()']]] -];
--- a/docs/api-2.1/search/variables_c.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_c.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_c.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -var searchData= -[ - ['parent',['parent',['../structUcxAVLNode.html#afc4e3b4f452aa2d91cabb2135b9d42f7',1,'UcxAVLNode']]], - ['pool',['pool',['../structUcxAllocator.html#a1b78012998d1c28be86dc595f8f0aac9',1,'UcxAllocator']]], - ['pos',['pos',['../structUcxBuffer.html#a7a64288f002cf62b492e2ea49c79615c',1,'UcxBuffer::pos()'],['../structUcxProperties.html#addd36ac8e5e42241c0a57453633970db',1,'UcxProperties::pos()']]], - ['prev',['prev',['../structUcxList.html#a0f1fddce9088b9c1414745d0b1b5c08b',1,'UcxList::prev()'],['../structucx__stack__metadata.html#ad46d2e8e5b0acf05f2def41d451c5579',1,'ucx_stack_metadata::prev()']]], - ['ptr',['ptr',['../structucx__regdestr.html#aac0e9ec8df4aab08728b4f8292b5f5e7',1,'ucx_regdestr::ptr()'],['../structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0',1,'sstr_t::ptr()'],['../structscstr__t.html#a305fd48934b474a9bf4a40869030e391',1,'scstr_t::ptr()']]] -];
--- a/docs/api-2.1/search/variables_d.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_d.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_d.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -var searchData= -[ - ['realloc',['realloc',['../structUcxAllocator.html#a3550e3847f31d9e9ce3ffcb0d3440c15',1,'UcxAllocator']]], - ['right',['right',['../structUcxAVLNode.html#a7cbaa31dba8c7a89f4f8f7905f6fd238',1,'UcxAVLNode']]], - ['root',['root',['../structUcxAVLTree.html#a393a8fc99eb2c290d3cb67170081d742',1,'UcxAVLTree']]] -];
--- a/docs/api-2.1/search/variables_e.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_e.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_e.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -var searchData= -[ - ['size',['size',['../structUcxArray.html#a20c11f2c9048cda80062842b7c094e20',1,'UcxArray::size()'],['../structUcxBuffer.html#aec0aea8325394951d5ad4a9fbb8e1ac7',1,'UcxBuffer::size()'],['../structUcxMap.html#afe120846b26d99580a7ff1276464e838',1,'UcxMap::size()'],['../structUcxMempool.html#a304729986f2894971d0469e71e196bf0',1,'UcxMempool::size()'],['../structUcxStack.html#a4df86b1917bfc3bbf760220870638143',1,'UcxStack::size()'],['../structucx__stack__metadata.html#ae2a2848b721cfa44a7e963484c5e4b28',1,'ucx_stack_metadata::size()']]], - ['space',['space',['../structUcxBuffer.html#a1a5076e85acb84b715a53bc0f37fb721',1,'UcxBuffer::space()'],['../structUcxStack.html#af64d528744bf3a47fec87d2e45d2992f',1,'UcxStack::space()']]], - ['stream',['stream',['../structUcxLogger.html#a33fddf4791e8d49e479ecc78bf5d1b9e',1,'UcxLogger']]], - ['success',['success',['../structUcxTestSuite.html#a6cefa870a3c2e38d6ee682e38643dbbb',1,'UcxTestSuite']]] -];
--- a/docs/api-2.1/search/variables_f.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="variables_f.js"></script> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="Loading">Loading...</div> -<div id="SRResults"></div> -<script type="text/javascript"><!-- -createResults(); ---></script> -<div class="SRStatus" id="Searching">Searching...</div> -<div class="SRStatus" id="NoMatches">No Matches</div> -<script type="text/javascript"><!-- -document.getElementById("Loading").style.display="none"; -document.getElementById("NoMatches").style.display="none"; -var searchResults = new SearchResults("searchResults"); -searchResults.Search(); ---></script> -</div> -</body> -</html>
--- a/docs/api-2.1/search/variables_f.js Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -var searchData= -[ - ['test',['test',['../structUcxTestList.html#a6022faa52e772b073141ca0a2f5a56c9',1,'UcxTestList']]], - ['tests',['tests',['../structUcxTestSuite.html#a630677a70ebc2c3296704cda3196492b',1,'UcxTestSuite']]], - ['tmp',['tmp',['../structUcxProperties.html#a68556d4260153f58dde44e4c365edce6',1,'UcxProperties']]], - ['tmpcap',['tmpcap',['../structUcxProperties.html#a5af10131ea9f679b4ee174499f92e210',1,'UcxProperties']]], - ['tmplen',['tmplen',['../structUcxProperties.html#a8a81853d5903bee2f4e1fa53fdffae6e',1,'UcxProperties']]], - ['top',['top',['../structUcxStack.html#af0ff6f58edce469f17683013b86ade27',1,'UcxStack']]] -];
--- a/docs/api-2.1/stack_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,677 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/stack.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">stack.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Default stack memory allocation implementation. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> -</div> -<p><a href="stack_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxStack.html">UcxStack</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">UCX stack structure. <a href="structUcxStack.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structucx__stack__metadata.html">ucx_stack_metadata</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Metadata for each UCX stack element. <a href="structucx__stack__metadata.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:a030197051a803e87d5eeac5adb80b15a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#a030197051a803e87d5eeac5adb80b15a">ucx_stack_topsize</a>(stack)</td></tr> -<tr class="memdesc:a030197051a803e87d5eeac5adb80b15a"><td class="mdescLeft"> </td><td class="mdescRight">Returns the size of the top most element. <a href="#a030197051a803e87d5eeac5adb80b15a">More...</a><br /></td></tr> -<tr class="separator:a030197051a803e87d5eeac5adb80b15a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a506b82374734ec476d086ddfb561174d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#a506b82374734ec476d086ddfb561174d">ucx_stack_pop</a>(stack, dest)   <a class="el" href="stack_8h.html#a07ea48f28eab474dcfefbb86fa66ef81">ucx_stack_popn</a>(stack, dest, (size_t)-1)</td></tr> -<tr class="memdesc:a506b82374734ec476d086ddfb561174d"><td class="mdescLeft"> </td><td class="mdescRight">Removes the top most element from the stack and copies the content to <code> dest</code>, if specified. <a href="#a506b82374734ec476d086ddfb561174d">More...</a><br /></td></tr> -<tr class="separator:a506b82374734ec476d086ddfb561174d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4f7239dbd6c032c56812e370b71c1985"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#a4f7239dbd6c032c56812e370b71c1985">ucx_stack_empty</a>(stack)   (!(stack)->top)</td></tr> -<tr class="memdesc:a4f7239dbd6c032c56812e370b71c1985"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if the stack is empty. <a href="#a4f7239dbd6c032c56812e370b71c1985">More...</a><br /></td></tr> -<tr class="separator:a4f7239dbd6c032c56812e370b71c1985"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3b761343c6491222604341ebfa443226"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#a3b761343c6491222604341ebfa443226">ucx_stack_dim</a>(size, elems)</td></tr> -<tr class="memdesc:a3b761343c6491222604341ebfa443226"><td class="mdescLeft"> </td><td class="mdescRight">Computes a recommended size for the stack memory area. <a href="#a3b761343c6491222604341ebfa443226">More...</a><br /></td></tr> -<tr class="separator:a3b761343c6491222604341ebfa443226"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:abaef685df4e7ef95cd7218984a0618fe"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#abaef685df4e7ef95cd7218984a0618fe">ucx_stack_init</a> (<a class="el" href="structUcxStack.html">UcxStack</a> *stack, char *space, size_t size)</td></tr> -<tr class="memdesc:abaef685df4e7ef95cd7218984a0618fe"><td class="mdescLeft"> </td><td class="mdescRight">Initializes <a class="el" href="structUcxStack.html" title="UCX stack structure. ">UcxStack</a> structure with memory. <a href="#abaef685df4e7ef95cd7218984a0618fe">More...</a><br /></td></tr> -<tr class="separator:abaef685df4e7ef95cd7218984a0618fe"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af865b416802140f6b6e8ab3626d7d1ac"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#af865b416802140f6b6e8ab3626d7d1ac">ucx_stack_malloc</a> (<a class="el" href="structUcxStack.html">UcxStack</a> *stack, size_t n)</td></tr> -<tr class="memdesc:af865b416802140f6b6e8ab3626d7d1ac"><td class="mdescLeft"> </td><td class="mdescRight">Allocates stack memory. <a href="#af865b416802140f6b6e8ab3626d7d1ac">More...</a><br /></td></tr> -<tr class="separator:af865b416802140f6b6e8ab3626d7d1ac"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af85e6f77a8341beb6188f9ae1a8e9f92"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#af85e6f77a8341beb6188f9ae1a8e9f92">ucx_stack_push</a> (<a class="el" href="structUcxStack.html">UcxStack</a> *stack, size_t n, const void *data)</td></tr> -<tr class="memdesc:af85e6f77a8341beb6188f9ae1a8e9f92"><td class="mdescLeft"> </td><td class="mdescRight">Allocates memory with <a class="el" href="stack_8h.html#af865b416802140f6b6e8ab3626d7d1ac" title="Allocates stack memory. ">ucx_stack_malloc()</a> and copies the specified data if the allocation was successful. <a href="#af85e6f77a8341beb6188f9ae1a8e9f92">More...</a><br /></td></tr> -<tr class="separator:af85e6f77a8341beb6188f9ae1a8e9f92"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:afdc467524b5e19a9a777c6bc03e17174"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#afdc467524b5e19a9a777c6bc03e17174">ucx_stack_calloc</a> (<a class="el" href="structUcxStack.html">UcxStack</a> *stack, size_t nelem, size_t elsize)</td></tr> -<tr class="memdesc:afdc467524b5e19a9a777c6bc03e17174"><td class="mdescLeft"> </td><td class="mdescRight">Allocates an array of stack memory. <a href="#afdc467524b5e19a9a777c6bc03e17174">More...</a><br /></td></tr> -<tr class="separator:afdc467524b5e19a9a777c6bc03e17174"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7bb138979191bba138e76ea37488fae2"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#a7bb138979191bba138e76ea37488fae2">ucx_stack_pusharr</a> (<a class="el" href="structUcxStack.html">UcxStack</a> *stack, size_t nelem, size_t elsize, const void *data)</td></tr> -<tr class="memdesc:a7bb138979191bba138e76ea37488fae2"><td class="mdescLeft"> </td><td class="mdescRight">Allocates memory with <a class="el" href="stack_8h.html#afdc467524b5e19a9a777c6bc03e17174" title="Allocates an array of stack memory. ">ucx_stack_calloc()</a> and copies the specified data if the allocation was successful. <a href="#a7bb138979191bba138e76ea37488fae2">More...</a><br /></td></tr> -<tr class="separator:a7bb138979191bba138e76ea37488fae2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a0c678f96f6fabab49b2b034a1fe91c3a"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#a0c678f96f6fabab49b2b034a1fe91c3a">ucx_stack_realloc</a> (<a class="el" href="structUcxStack.html">UcxStack</a> *stack, void *ptr, size_t n)</td></tr> -<tr class="memdesc:a0c678f96f6fabab49b2b034a1fe91c3a"><td class="mdescLeft"> </td><td class="mdescRight">Reallocates memory on the stack. <a href="#a0c678f96f6fabab49b2b034a1fe91c3a">More...</a><br /></td></tr> -<tr class="separator:a0c678f96f6fabab49b2b034a1fe91c3a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aabd55c14a3866b3782ba324f4d8b4c41"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#aabd55c14a3866b3782ba324f4d8b4c41">ucx_stack_free</a> (<a class="el" href="structUcxStack.html">UcxStack</a> *stack, void *ptr)</td></tr> -<tr class="memdesc:aabd55c14a3866b3782ba324f4d8b4c41"><td class="mdescLeft"> </td><td class="mdescRight">Frees memory on the stack. <a href="#aabd55c14a3866b3782ba324f4d8b4c41">More...</a><br /></td></tr> -<tr class="separator:aabd55c14a3866b3782ba324f4d8b4c41"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a07ea48f28eab474dcfefbb86fa66ef81"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#a07ea48f28eab474dcfefbb86fa66ef81">ucx_stack_popn</a> (<a class="el" href="structUcxStack.html">UcxStack</a> *stack, void *dest, size_t n)</td></tr> -<tr class="memdesc:a07ea48f28eab474dcfefbb86fa66ef81"><td class="mdescLeft"> </td><td class="mdescRight">Removes the top most element from the stack and copies the content to <code> dest</code>. <a href="#a07ea48f28eab474dcfefbb86fa66ef81">More...</a><br /></td></tr> -<tr class="separator:a07ea48f28eab474dcfefbb86fa66ef81"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a53cd2c7743dc8ad9cbd35ade0b4873e7"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="stack_8h.html#a53cd2c7743dc8ad9cbd35ade0b4873e7">ucx_stack_avail</a> (<a class="el" href="structUcxStack.html">UcxStack</a> *stack)</td></tr> -<tr class="memdesc:a53cd2c7743dc8ad9cbd35ade0b4873e7"><td class="mdescLeft"> </td><td class="mdescRight">Returns the remaining available memory on the specified stack. <a href="#a53cd2c7743dc8ad9cbd35ade0b4873e7">More...</a><br /></td></tr> -<tr class="separator:a53cd2c7743dc8ad9cbd35ade0b4873e7"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Default stack memory allocation implementation. </p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a3b761343c6491222604341ebfa443226"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3b761343c6491222604341ebfa443226">◆ </a></span>ucx_stack_dim</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_stack_dim</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">size, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">elems </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line">(size+<span class="keyword">sizeof</span>(<span class="keyword">struct </span><a class="code" href="structucx__stack__metadata.html">ucx_stack_metadata</a>) * \</div><div class="line"> (elems + 1))</div><div class="ttc" id="structucx__stack__metadata_html"><div class="ttname"><a href="structucx__stack__metadata.html">ucx_stack_metadata</a></div><div class="ttdoc">Metadata for each UCX stack element. </div><div class="ttdef"><b>Definition:</b> stack.h:69</div></div> -</div><!-- fragment --> -<p>Computes a recommended size for the stack memory area. </p> -<p>Note, that reallocations have not been taken into account, so you might need to reserve twice as much memory to allow many reallocations.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">size</td><td>the approximate payload </td></tr> - <tr><td class="paramname">elems</td><td>the approximate count of element allocations </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a recommended size for the stack space based on the information provided </dd></dl> - -</div> -</div> -<a id="a4f7239dbd6c032c56812e370b71c1985"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4f7239dbd6c032c56812e370b71c1985">◆ </a></span>ucx_stack_empty</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_stack_empty</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">stack</td><td>)</td> - <td>   (!(stack)->top)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if the stack is empty. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to the stack </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>nonzero, if the stack is empty, zero otherwise </dd></dl> - -</div> -</div> -<a id="a506b82374734ec476d086ddfb561174d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a506b82374734ec476d086ddfb561174d">◆ </a></span>ucx_stack_pop</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_stack_pop</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">stack, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">dest </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="stack_8h.html#a07ea48f28eab474dcfefbb86fa66ef81">ucx_stack_popn</a>(stack, dest, (size_t)-1)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Removes the top most element from the stack and copies the content to <code> dest</code>, if specified. </p> -<p>Use <a class="el" href="stack_8h.html#a030197051a803e87d5eeac5adb80b15a" title="Returns the size of the top most element. ">ucx_stack_topsize()</a># to get the amount of memory that must be available at the location of <code>dest</code>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to the stack </td></tr> - <tr><td class="paramname">dest</td><td>the location where the contents shall be written to, or <code> NULL</code>, if the element shall only be removed. </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="stack_8h.html#aabd55c14a3866b3782ba324f4d8b4c41" title="Frees memory on the stack. ">ucx_stack_free</a> </dd> -<dd> -<a class="el" href="stack_8h.html#a07ea48f28eab474dcfefbb86fa66ef81" title="Removes the top most element from the stack and copies the content to dest. ">ucx_stack_popn</a> </dd></dl> - -</div> -</div> -<a id="a030197051a803e87d5eeac5adb80b15a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a030197051a803e87d5eeac5adb80b15a">◆ </a></span>ucx_stack_topsize</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_stack_topsize</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">stack</td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line">((stack)->top ? ((<span class="keyword">struct</span> <a class="code" href="structucx__stack__metadata.html">ucx_stack_metadata</a>*)\</div><div class="line"> (stack)->top - 1)->size : 0)</div><div class="ttc" id="structucx__stack__metadata_html"><div class="ttname"><a href="structucx__stack__metadata.html">ucx_stack_metadata</a></div><div class="ttdoc">Metadata for each UCX stack element. </div><div class="ttdef"><b>Definition:</b> stack.h:69</div></div> -</div><!-- fragment --> -<p>Returns the size of the top most element. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to the stack </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the size of the top most element </dd></dl> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="a53cd2c7743dc8ad9cbd35ade0b4873e7"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a53cd2c7743dc8ad9cbd35ade0b4873e7">◆ </a></span>ucx_stack_avail()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t ucx_stack_avail </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxStack.html">UcxStack</a> * </td> - <td class="paramname"><em>stack</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the remaining available memory on the specified stack. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to the stack </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the remaining available memory </dd></dl> - -</div> -</div> -<a id="afdc467524b5e19a9a777c6bc03e17174"></a> -<h2 class="memtitle"><span class="permalink"><a href="#afdc467524b5e19a9a777c6bc03e17174">◆ </a></span>ucx_stack_calloc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_stack_calloc </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxStack.html">UcxStack</a> * </td> - <td class="paramname"><em>stack</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>nelem</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>elsize</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Allocates an array of stack memory. </p> -<p>The content of the allocated memory is set to zero.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to the stack </td></tr> - <tr><td class="paramname">nelem</td><td>amount of elements to allocate </td></tr> - <tr><td class="paramname">elsize</td><td>amount of memory per element </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the allocated memory </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12" title="A function pointer to the allocators calloc() function. ">ucx_allocator_calloc()</a> </dd></dl> - -</div> -</div> -<a id="aabd55c14a3866b3782ba324f4d8b4c41"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aabd55c14a3866b3782ba324f4d8b4c41">◆ </a></span>ucx_stack_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_stack_free </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxStack.html">UcxStack</a> * </td> - <td class="paramname"><em>stack</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ptr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Frees memory on the stack. </p> -<p>Freeing stack memory behaves in a special way.</p> -<p>If the element, that should be freed, is the top most element of the stack, it is removed from the stack. Otherwise it is marked as freed. Marked elements are removed, when they become the top most elements of the stack.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to the stack </td></tr> - <tr><td class="paramname">ptr</td><td>a pointer to the memory that shall be freed </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="abaef685df4e7ef95cd7218984a0618fe"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abaef685df4e7ef95cd7218984a0618fe">◆ </a></span>ucx_stack_init()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_stack_init </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxStack.html">UcxStack</a> * </td> - <td class="paramname"><em>stack</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">char * </td> - <td class="paramname"><em>space</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>size</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Initializes <a class="el" href="structUcxStack.html" title="UCX stack structure. ">UcxStack</a> structure with memory. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to an uninitialized stack structure </td></tr> - <tr><td class="paramname">space</td><td>the memory area that shall be managed </td></tr> - <tr><td class="paramname">size</td><td>size of the memory area </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structUcxStack.html" title="UCX stack structure. ">UcxStack</a> structure </dd></dl> - -</div> -</div> -<a id="af865b416802140f6b6e8ab3626d7d1ac"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af865b416802140f6b6e8ab3626d7d1ac">◆ </a></span>ucx_stack_malloc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_stack_malloc </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxStack.html">UcxStack</a> * </td> - <td class="paramname"><em>stack</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Allocates stack memory. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to the stack </td></tr> - <tr><td class="paramname">n</td><td>amount of memory to allocate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the allocated memory or <code>NULL</code> on stack overflow </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473" title="A function pointer to the allocators malloc() function. ">ucx_allocator_malloc()</a> </dd></dl> - -</div> -</div> -<a id="a07ea48f28eab474dcfefbb86fa66ef81"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a07ea48f28eab474dcfefbb86fa66ef81">◆ </a></span>ucx_stack_popn()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_stack_popn </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxStack.html">UcxStack</a> * </td> - <td class="paramname"><em>stack</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>dest</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Removes the top most element from the stack and copies the content to <code> dest</code>. </p> -<p>This function copies at most <code>n</code> bytes to the destination, but the element is always freed as a whole. If the element was larger than <code>n</code>, the remaining data is lost.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to the stack </td></tr> - <tr><td class="paramname">dest</td><td>the location where the contents shall be written to </td></tr> - <tr><td class="paramname">n</td><td>copies at most n bytes to <code>dest</code> </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="stack_8h.html#a506b82374734ec476d086ddfb561174d" title="Removes the top most element from the stack and copies the content to dest, if specified. ">ucx_stack_pop</a> </dd></dl> - -</div> -</div> -<a id="af85e6f77a8341beb6188f9ae1a8e9f92"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af85e6f77a8341beb6188f9ae1a8e9f92">◆ </a></span>ucx_stack_push()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_stack_push </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxStack.html">UcxStack</a> * </td> - <td class="paramname"><em>stack</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Allocates memory with <a class="el" href="stack_8h.html#af865b416802140f6b6e8ab3626d7d1ac" title="Allocates stack memory. ">ucx_stack_malloc()</a> and copies the specified data if the allocation was successful. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to the stack </td></tr> - <tr><td class="paramname">n</td><td>amount of memory to allocate </td></tr> - <tr><td class="paramname">data</td><td>a pointer to the data to copy </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the allocated memory </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="stack_8h.html#af865b416802140f6b6e8ab3626d7d1ac" title="Allocates stack memory. ">ucx_stack_malloc</a> </dd></dl> - -</div> -</div> -<a id="a7bb138979191bba138e76ea37488fae2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a7bb138979191bba138e76ea37488fae2">◆ </a></span>ucx_stack_pusharr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_stack_pusharr </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxStack.html">UcxStack</a> * </td> - <td class="paramname"><em>stack</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>nelem</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>elsize</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Allocates memory with <a class="el" href="stack_8h.html#afdc467524b5e19a9a777c6bc03e17174" title="Allocates an array of stack memory. ">ucx_stack_calloc()</a> and copies the specified data if the allocation was successful. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>a pointer to the stack </td></tr> - <tr><td class="paramname">nelem</td><td>amount of elements to allocate </td></tr> - <tr><td class="paramname">elsize</td><td>amount of memory per element </td></tr> - <tr><td class="paramname">data</td><td>a pointer to the data </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the allocated memory </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="stack_8h.html#afdc467524b5e19a9a777c6bc03e17174" title="Allocates an array of stack memory. ">ucx_stack_calloc</a> </dd></dl> - -</div> -</div> -<a id="a0c678f96f6fabab49b2b034a1fe91c3a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a0c678f96f6fabab49b2b034a1fe91c3a">◆ </a></span>ucx_stack_realloc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_stack_realloc </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxStack.html">UcxStack</a> * </td> - <td class="paramname"><em>stack</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>ptr</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Reallocates memory on the stack. </p> -<p>Shrinking memory is always safe. Extending memory can be very expensive.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stack</td><td>the stack </td></tr> - <tr><td class="paramname">ptr</td><td>a pointer to the memory that shall be reallocated </td></tr> - <tr><td class="paramname">n</td><td>the new size of the memory </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to the new location of the memory </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="allocator_8h.html#a6d7cf038a806e327c5da37321d04e426" title="A function pointer to the allocators realloc() function. ">ucx_allocator_realloc()</a> </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/stack_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/stack.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">stack.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="stack_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#ifndef UCX_STACK_H</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#define UCX_STACK_H</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "<a class="code" href="allocator_8h.html">allocator.h</a>"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structUcxStack.html"> 52</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structUcxStack.html#a33cda4f6890ac56ab31701598bc1ae10"> 54</a></span>  <a class="code" href="structUcxAllocator.html">UcxAllocator</a> <a class="code" href="structUcxStack.html#a33cda4f6890ac56ab31701598bc1ae10">allocator</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structUcxStack.html#a4df86b1917bfc3bbf760220870638143"> 57</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structUcxStack.html#a4df86b1917bfc3bbf760220870638143">size</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structUcxStack.html#af64d528744bf3a47fec87d2e45d2992f"> 60</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structUcxStack.html#af64d528744bf3a47fec87d2e45d2992f">space</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="structUcxStack.html#af0ff6f58edce469f17683013b86ade27"> 63</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structUcxStack.html#af0ff6f58edce469f17683013b86ade27">top</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> } <a class="code" href="structUcxStack.html">UcxStack</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="structucx__stack__metadata.html"> 69</a></span> <span class="keyword">struct </span><a class="code" href="structucx__stack__metadata.html">ucx_stack_metadata</a> {</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="structucx__stack__metadata.html#ad46d2e8e5b0acf05f2def41d451c5579"> 73</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structucx__stack__metadata.html#ad46d2e8e5b0acf05f2def41d451c5579">prev</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structucx__stack__metadata.html#ae2a2848b721cfa44a7e963484c5e4b28"> 76</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structucx__stack__metadata.html#ae2a2848b721cfa44a7e963484c5e4b28">size</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">void</span> <a class="code" href="stack_8h.html#abaef685df4e7ef95cd7218984a0618fe">ucx_stack_init</a>(<a class="code" href="structUcxStack.html">UcxStack</a> *stack, <span class="keywordtype">char</span>* space, <span class="keywordtype">size_t</span> <a class="code" href="structucx__stack__metadata.html#ae2a2848b721cfa44a7e963484c5e4b28">size</a>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">void</span> *<a class="code" href="stack_8h.html#af865b416802140f6b6e8ab3626d7d1ac">ucx_stack_malloc</a>(<a class="code" href="structUcxStack.html">UcxStack</a> *stack, <span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keywordtype">void</span> *<a class="code" href="stack_8h.html#af85e6f77a8341beb6188f9ae1a8e9f92">ucx_stack_push</a>(<a class="code" href="structUcxStack.html">UcxStack</a> *stack, <span class="keywordtype">size_t</span> n, <span class="keyword">const</span> <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keywordtype">void</span> *<a class="code" href="stack_8h.html#afdc467524b5e19a9a777c6bc03e17174">ucx_stack_calloc</a>(<a class="code" href="structUcxStack.html">UcxStack</a> *stack, <span class="keywordtype">size_t</span> nelem, <span class="keywordtype">size_t</span> elsize);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keywordtype">void</span> *<a class="code" href="stack_8h.html#a7bb138979191bba138e76ea37488fae2">ucx_stack_pusharr</a>(<a class="code" href="structUcxStack.html">UcxStack</a> *stack,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">size_t</span> nelem, <span class="keywordtype">size_t</span> elsize, <span class="keyword">const</span> <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keywordtype">void</span> *<a class="code" href="stack_8h.html#a0c678f96f6fabab49b2b034a1fe91c3a">ucx_stack_realloc</a>(<a class="code" href="structUcxStack.html">UcxStack</a> *stack, <span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">void</span> <a class="code" href="stack_8h.html#aabd55c14a3866b3782ba324f4d8b4c41">ucx_stack_free</a>(<a class="code" href="structUcxStack.html">UcxStack</a> *stack, <span class="keywordtype">void</span> *ptr);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="stack_8h.html#a030197051a803e87d5eeac5adb80b15a"> 172</a></span> <span class="preprocessor">#define ucx_stack_topsize(stack) ((stack)->top ? ((struct ucx_stack_metadata*)\</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor"> (stack)->top - 1)->size : 0)</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="stack_8h.html#a506b82374734ec476d086ddfb561174d"> 188</a></span> <span class="preprocessor">#define ucx_stack_pop(stack, dest) ucx_stack_popn(stack, dest, (size_t)-1)</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keywordtype">void</span> <a class="code" href="stack_8h.html#a07ea48f28eab474dcfefbb86fa66ef81">ucx_stack_popn</a>(<a class="code" href="structUcxStack.html">UcxStack</a> *stack, <span class="keywordtype">void</span> *dest, <span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keywordtype">size_t</span> <a class="code" href="stack_8h.html#a53cd2c7743dc8ad9cbd35ade0b4873e7">ucx_stack_avail</a>(<a class="code" href="structUcxStack.html">UcxStack</a> *stack);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="stack_8h.html#a4f7239dbd6c032c56812e370b71c1985"> 219</a></span> <span class="preprocessor">#define ucx_stack_empty(stack) (!(stack)->top)</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="stack_8h.html#a3b761343c6491222604341ebfa443226"> 231</a></span> <span class="preprocessor">#define ucx_stack_dim(size, elems) (size+sizeof(struct ucx_stack_metadata) * \</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor"> (elems + 1))</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_STACK_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="ttc" id="structUcxStack_html_a4df86b1917bfc3bbf760220870638143"><div class="ttname"><a href="structUcxStack.html#a4df86b1917bfc3bbf760220870638143">UcxStack::size</a></div><div class="ttdeci">size_t size</div><div class="ttdoc">Stack size. </div><div class="ttdef"><b>Definition:</b> stack.h:57</div></div> -<div class="ttc" id="structUcxStack_html"><div class="ttname"><a href="structUcxStack.html">UcxStack</a></div><div class="ttdoc">UCX stack structure. </div><div class="ttdef"><b>Definition:</b> stack.h:52</div></div> -<div class="ttc" id="stack_8h_html_aabd55c14a3866b3782ba324f4d8b4c41"><div class="ttname"><a href="stack_8h.html#aabd55c14a3866b3782ba324f4d8b4c41">ucx_stack_free</a></div><div class="ttdeci">void ucx_stack_free(UcxStack *stack, void *ptr)</div><div class="ttdoc">Frees memory on the stack. </div><div class="ttdef"><b>Definition:</b> stack.c:106</div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="stack_8h_html_af865b416802140f6b6e8ab3626d7d1ac"><div class="ttname"><a href="stack_8h.html#af865b416802140f6b6e8ab3626d7d1ac">ucx_stack_malloc</a></div><div class="ttdeci">void * ucx_stack_malloc(UcxStack *stack, size_t n)</div><div class="ttdoc">Allocates stack memory. </div><div class="ttdef"><b>Definition:</b> stack.c:53</div></div> -<div class="ttc" id="stack_8h_html_af85e6f77a8341beb6188f9ae1a8e9f92"><div class="ttname"><a href="stack_8h.html#af85e6f77a8341beb6188f9ae1a8e9f92">ucx_stack_push</a></div><div class="ttdeci">void * ucx_stack_push(UcxStack *stack, size_t n, const void *data)</div><div class="ttdoc">Allocates memory with ucx_stack_malloc() and copies the specified data if the allocation was successf...</div><div class="ttdef"><b>Definition:</b> stack.c:148</div></div> -<div class="ttc" id="structucx__stack__metadata_html"><div class="ttname"><a href="structucx__stack__metadata.html">ucx_stack_metadata</a></div><div class="ttdoc">Metadata for each UCX stack element. </div><div class="ttdef"><b>Definition:</b> stack.h:69</div></div> -<div class="ttc" id="stack_8h_html_a0c678f96f6fabab49b2b034a1fe91c3a"><div class="ttname"><a href="stack_8h.html#a0c678f96f6fabab49b2b034a1fe91c3a">ucx_stack_realloc</a></div><div class="ttdeci">void * ucx_stack_realloc(UcxStack *stack, void *ptr, size_t n)</div><div class="ttdoc">Reallocates memory on the stack. </div><div class="ttdef"><b>Definition:</b> stack.c:79</div></div> -<div class="ttc" id="structucx__stack__metadata_html_ad46d2e8e5b0acf05f2def41d451c5579"><div class="ttname"><a href="structucx__stack__metadata.html#ad46d2e8e5b0acf05f2def41d451c5579">ucx_stack_metadata::prev</a></div><div class="ttdeci">char * prev</div><div class="ttdoc">Location of the previous element (NULL if this is the first) </div><div class="ttdef"><b>Definition:</b> stack.h:73</div></div> -<div class="ttc" id="stack_8h_html_a53cd2c7743dc8ad9cbd35ade0b4873e7"><div class="ttname"><a href="stack_8h.html#a53cd2c7743dc8ad9cbd35ade0b4873e7">ucx_stack_avail</a></div><div class="ttdeci">size_t ucx_stack_avail(UcxStack *stack)</div><div class="ttdoc">Returns the remaining available memory on the specified stack. </div><div class="ttdef"><b>Definition:</b> stack.c:135</div></div> -<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div> -<div class="ttc" id="structUcxStack_html_af64d528744bf3a47fec87d2e45d2992f"><div class="ttname"><a href="structUcxStack.html#af64d528744bf3a47fec87d2e45d2992f">UcxStack::space</a></div><div class="ttdeci">char * space</div><div class="ttdoc">Pointer to the bottom of the stack. </div><div class="ttdef"><b>Definition:</b> stack.h:60</div></div> -<div class="ttc" id="stack_8h_html_a07ea48f28eab474dcfefbb86fa66ef81"><div class="ttname"><a href="stack_8h.html#a07ea48f28eab474dcfefbb86fa66ef81">ucx_stack_popn</a></div><div class="ttdeci">void ucx_stack_popn(UcxStack *stack, void *dest, size_t n)</div><div class="ttdoc">Removes the top most element from the stack and copies the content to dest. </div><div class="ttdef"><b>Definition:</b> stack.c:118</div></div> -<div class="ttc" id="allocator_8h_html"><div class="ttname"><a href="allocator_8h.html">allocator.h</a></div><div class="ttdoc">Allocator for custom memory management. </div></div> -<div class="ttc" id="stack_8h_html_abaef685df4e7ef95cd7218984a0618fe"><div class="ttname"><a href="stack_8h.html#abaef685df4e7ef95cd7218984a0618fe">ucx_stack_init</a></div><div class="ttdeci">void ucx_stack_init(UcxStack *stack, char *space, size_t size)</div><div class="ttdoc">Initializes UcxStack structure with memory. </div><div class="ttdef"><b>Definition:</b> stack.c:41</div></div> -<div class="ttc" id="structucx__stack__metadata_html_ae2a2848b721cfa44a7e963484c5e4b28"><div class="ttname"><a href="structucx__stack__metadata.html#ae2a2848b721cfa44a7e963484c5e4b28">ucx_stack_metadata::size</a></div><div class="ttdeci">size_t size</div><div class="ttdoc">Size of this element. </div><div class="ttdef"><b>Definition:</b> stack.h:76</div></div> -<div class="ttc" id="stack_8h_html_a7bb138979191bba138e76ea37488fae2"><div class="ttname"><a href="stack_8h.html#a7bb138979191bba138e76ea37488fae2">ucx_stack_pusharr</a></div><div class="ttdeci">void * ucx_stack_pusharr(UcxStack *stack, size_t nelem, size_t elsize, const void *data)</div><div class="ttdoc">Allocates memory with ucx_stack_calloc() and copies the specified data if the allocation was successf...</div><div class="ttdef"><b>Definition:</b> stack.c:156</div></div> -<div class="ttc" id="stack_8h_html_afdc467524b5e19a9a777c6bc03e17174"><div class="ttname"><a href="stack_8h.html#afdc467524b5e19a9a777c6bc03e17174">ucx_stack_calloc</a></div><div class="ttdeci">void * ucx_stack_calloc(UcxStack *stack, size_t nelem, size_t elsize)</div><div class="ttdoc">Allocates an array of stack memory. </div><div class="ttdef"><b>Definition:</b> stack.c:73</div></div> -<div class="ttc" id="structUcxStack_html_af0ff6f58edce469f17683013b86ade27"><div class="ttname"><a href="structUcxStack.html#af0ff6f58edce469f17683013b86ade27">UcxStack::top</a></div><div class="ttdeci">char * top</div><div class="ttdoc">Pointer to the top of the stack. </div><div class="ttdef"><b>Definition:</b> stack.h:63</div></div> -<div class="ttc" id="structUcxStack_html_a33cda4f6890ac56ab31701598bc1ae10"><div class="ttname"><a href="structUcxStack.html#a33cda4f6890ac56ab31701598bc1ae10">UcxStack::allocator</a></div><div class="ttdeci">UcxAllocator allocator</div><div class="ttdoc">UcxAllocator based on this stack. </div><div class="ttdef"><b>Definition:</b> stack.h:54</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/string_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2598 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/string.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">string.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Bounded string implementation. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> -<code>#include <stddef.h></code><br /> -</div> -<p><a href="string_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structsstr__t.html">sstr_t</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The UCX string structure. <a href="structsstr__t.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structscstr__t.html">scstr_t</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The UCX string structure for immutable (constant) strings. <a href="structscstr__t.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:a9037956cca97a4e84b642f17f3d10378"><td class="memItemLeft" align="right" valign="top"><a id="a9037956cca97a4e84b642f17f3d10378"></a> -#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a9037956cca97a4e84b642f17f3d10378">ST</a>(s)   { s, sizeof(s)-1 }</td></tr> -<tr class="memdesc:a9037956cca97a4e84b642f17f3d10378"><td class="mdescLeft"> </td><td class="mdescRight">Shortcut for a <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> struct</code> or <code><a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> struct</code> literal. <br /></td></tr> -<tr class="separator:a9037956cca97a4e84b642f17f3d10378"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8fa17c8cf4c36df48f4108c36da8573e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e">S</a>(s)   <a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>(s, sizeof(s)-1)</td></tr> -<tr class="memdesc:a8fa17c8cf4c36df48f4108c36da8573e"><td class="mdescLeft"> </td><td class="mdescRight">Shortcut for the conversion of a C string to a <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code>. <a href="#a8fa17c8cf4c36df48f4108c36da8573e">More...</a><br /></td></tr> -<tr class="separator:a8fa17c8cf4c36df48f4108c36da8573e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7d261dd0bc358c957a368bc058c1ce53"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7d261dd0bc358c957a368bc058c1ce53">SC</a>(s)   <a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a>(s, sizeof(s)-1)</td></tr> -<tr class="memdesc:a7d261dd0bc358c957a368bc058c1ce53"><td class="mdescLeft"> </td><td class="mdescRight">Shortcut for the conversion of a C string to a <code><a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a></code>. <a href="#a7d261dd0bc358c957a368bc058c1ce53">More...</a><br /></td></tr> -<tr class="separator:a7d261dd0bc358c957a368bc058c1ce53"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a23ed51e87385886bb65e8cd19c839362"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a23ed51e87385886bb65e8cd19c839362">SFMT</a>(s)   (int) (s).length, (s).ptr</td></tr> -<tr class="memdesc:a23ed51e87385886bb65e8cd19c839362"><td class="mdescLeft"> </td><td class="mdescRight">Expands a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> or <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> to printf arguments. <a href="#a23ed51e87385886bb65e8cd19c839362">More...</a><br /></td></tr> -<tr class="separator:a23ed51e87385886bb65e8cd19c839362"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7d5bc48708405a28b23667e32dfcecae"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7d5bc48708405a28b23667e32dfcecae">PRIsstr</a>   ".*s"</td></tr> -<tr class="memdesc:a7d5bc48708405a28b23667e32dfcecae"><td class="mdescLeft"> </td><td class="mdescRight">Format specifier for a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> or <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. <a href="#a7d5bc48708405a28b23667e32dfcecae">More...</a><br /></td></tr> -<tr class="separator:a7d5bc48708405a28b23667e32dfcecae"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad4293350a9b39a23a6546bd0fef2aeed"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(str)   <a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a>(str)</td></tr> -<tr class="memdesc:ad4293350a9b39a23a6546bd0fef2aeed"><td class="mdescLeft"> </td><td class="mdescRight">Converts a UCX string to an immutable UCX string (<a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>). <a href="#ad4293350a9b39a23a6546bd0fef2aeed">More...</a><br /></td></tr> -<tr class="separator:ad4293350a9b39a23a6546bd0fef2aeed"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a33fa945acc5ac2ce962e5ef13cf1638c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a33fa945acc5ac2ce962e5ef13cf1638c">sstrnlen</a>(count, ...)   <a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a>(count, __VA_ARGS__)</td></tr> -<tr class="memdesc:a33fa945acc5ac2ce962e5ef13cf1638c"><td class="mdescLeft"> </td><td class="mdescRight">Returns the accumulated length of all specified strings. <a href="#a33fa945acc5ac2ce962e5ef13cf1638c">More...</a><br /></td></tr> -<tr class="separator:a33fa945acc5ac2ce962e5ef13cf1638c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a6af8a4c347c7fdb5980d4c4803be2759"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759">sstrcat</a>(count, s1, ...)   <a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a>(count, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), __VA_ARGS__)</td></tr> -<tr class="memdesc:a6af8a4c347c7fdb5980d4c4803be2759"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates two or more strings. <a href="#a6af8a4c347c7fdb5980d4c4803be2759">More...</a><br /></td></tr> -<tr class="separator:a6af8a4c347c7fdb5980d4c4803be2759"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a6068d460f9bc05962666a917d26568b3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a6068d460f9bc05962666a917d26568b3">sstrcat_a</a>(alloc, count, s1, ...)   <a class="el" href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">scstrcat_a</a>(alloc, count, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), __VA_ARGS__)</td></tr> -<tr class="memdesc:a6068d460f9bc05962666a917d26568b3"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates two or more strings using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a6068d460f9bc05962666a917d26568b3">More...</a><br /></td></tr> -<tr class="separator:a6068d460f9bc05962666a917d26568b3"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9d03be026afa9447c52bb34b9e3b895a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a9d03be026afa9447c52bb34b9e3b895a">sstrstr</a>(string, match)   <a class="el" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td></tr> -<tr class="memdesc:a9d03be026afa9447c52bb34b9e3b895a"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring starting at the location of the first occurrence of the specified string. <a href="#a9d03be026afa9447c52bb34b9e3b895a">More...</a><br /></td></tr> -<tr class="separator:a9d03be026afa9447c52bb34b9e3b895a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa696932213265e10f864678686f4ccde"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aa696932213265e10f864678686f4ccde">sstrscstr</a>(string, match)   <a class="el" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td></tr> -<tr class="memdesc:aa696932213265e10f864678686f4ccde"><td class="mdescLeft"> </td><td class="mdescRight">Returns an immutable substring starting at the location of the first occurrence of the specified immutable string. <a href="#aa696932213265e10f864678686f4ccde">More...</a><br /></td></tr> -<tr class="separator:aa696932213265e10f864678686f4ccde"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa929984004c3576bfafb95031aca8eb7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7">sstrsplit</a>(string, delim, count)   <a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">scstrsplit</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(delim), count)</td></tr> -<tr class="memdesc:aa929984004c3576bfafb95031aca8eb7"><td class="mdescLeft"> </td><td class="mdescRight">Splits a string into parts by using a delimiter string. <a href="#aa929984004c3576bfafb95031aca8eb7">More...</a><br /></td></tr> -<tr class="separator:aa929984004c3576bfafb95031aca8eb7"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac9f69fa3a17e26a3a5f9d985b5844601"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601">sstrsplit_a</a>(allocator, string, delim, count)   <a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">scstrsplit_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(delim), count)</td></tr> -<tr class="memdesc:ac9f69fa3a17e26a3a5f9d985b5844601"><td class="mdescLeft"> </td><td class="mdescRight">Performing <a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7" title="Splits a string into parts by using a delimiter string. ">sstrsplit()</a> using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#ac9f69fa3a17e26a3a5f9d985b5844601">More...</a><br /></td></tr> -<tr class="separator:ac9f69fa3a17e26a3a5f9d985b5844601"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7ae7156c8de57454ca38d306100b8160"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7ae7156c8de57454ca38d306100b8160">sstrcmp</a>(s1, s2)   <a class="el" href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">scstrcmp</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s2))</td></tr> -<tr class="memdesc:a7ae7156c8de57454ca38d306100b8160"><td class="mdescLeft"> </td><td class="mdescRight">Compares two UCX strings with standard <code>memcmp()</code>. <a href="#a7ae7156c8de57454ca38d306100b8160">More...</a><br /></td></tr> -<tr class="separator:a7ae7156c8de57454ca38d306100b8160"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a81b0f6df794152c2038703d4e9d0ad59"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a81b0f6df794152c2038703d4e9d0ad59">sstrcasecmp</a>(s1, s2)   <a class="el" href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">scstrcasecmp</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s2))</td></tr> -<tr class="memdesc:a81b0f6df794152c2038703d4e9d0ad59"><td class="mdescLeft"> </td><td class="mdescRight">Compares two UCX strings ignoring the case. <a href="#a81b0f6df794152c2038703d4e9d0ad59">More...</a><br /></td></tr> -<tr class="separator:a81b0f6df794152c2038703d4e9d0ad59"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:accbfd2b459a028d7af9fb7df6f977d80"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80">sstrdup</a>(string)   <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> -<tr class="memdesc:accbfd2b459a028d7af9fb7df6f977d80"><td class="mdescLeft"> </td><td class="mdescRight">Creates a duplicate of the specified string. <a href="#accbfd2b459a028d7af9fb7df6f977d80">More...</a><br /></td></tr> -<tr class="separator:accbfd2b459a028d7af9fb7df6f977d80"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8d098baada4ea9ad5d8b6343b5aec007"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007">sstrdup_a</a>(allocator, string)   <a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014">scstrdup_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> -<tr class="memdesc:a8d098baada4ea9ad5d8b6343b5aec007"><td class="mdescLeft"> </td><td class="mdescRight">Creates a duplicate of the specified string using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a8d098baada4ea9ad5d8b6343b5aec007">More...</a><br /></td></tr> -<tr class="separator:a8d098baada4ea9ad5d8b6343b5aec007"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7d73b66256384b26927e787318fdefa2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7d73b66256384b26927e787318fdefa2">sstrprefix</a>(string, prefix)   <a class="el" href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">scstrprefix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(prefix))</td></tr> -<tr class="memdesc:a7d73b66256384b26927e787318fdefa2"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific prefix. <a href="#a7d73b66256384b26927e787318fdefa2">More...</a><br /></td></tr> -<tr class="separator:a7d73b66256384b26927e787318fdefa2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac6a5246f26be2e8a5f34d8995b7ec14e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ac6a5246f26be2e8a5f34d8995b7ec14e">sstrsuffix</a>(string, suffix)   <a class="el" href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">scstrsuffix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(suffix))</td></tr> -<tr class="memdesc:ac6a5246f26be2e8a5f34d8995b7ec14e"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific suffix. <a href="#ac6a5246f26be2e8a5f34d8995b7ec14e">More...</a><br /></td></tr> -<tr class="separator:ac6a5246f26be2e8a5f34d8995b7ec14e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:acd3dc64e90db9b4046e14f115a815ff4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#acd3dc64e90db9b4046e14f115a815ff4">sstrcaseprefix</a>(string, prefix)   <a class="el" href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">scstrcaseprefix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(prefix))</td></tr> -<tr class="memdesc:acd3dc64e90db9b4046e14f115a815ff4"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific prefix, ignoring the case. <a href="#acd3dc64e90db9b4046e14f115a815ff4">More...</a><br /></td></tr> -<tr class="separator:acd3dc64e90db9b4046e14f115a815ff4"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a57eabd4862d531dd685bbf2feb8468bf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a57eabd4862d531dd685bbf2feb8468bf">sstrcasesuffix</a>(string, suffix)   <a class="el" href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">scstrcasesuffix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(suffix))</td></tr> -<tr class="memdesc:a57eabd4862d531dd685bbf2feb8468bf"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific suffix, ignoring the case. <a href="#a57eabd4862d531dd685bbf2feb8468bf">More...</a><br /></td></tr> -<tr class="separator:a57eabd4862d531dd685bbf2feb8468bf"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a89343ea3e719f00ee802b557db57b769"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a89343ea3e719f00ee802b557db57b769">sstrlower</a>(string)   <a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> -<tr class="memdesc:a89343ea3e719f00ee802b557db57b769"><td class="mdescLeft"> </td><td class="mdescRight">Returns a lower case version of a string. <a href="#a89343ea3e719f00ee802b557db57b769">More...</a><br /></td></tr> -<tr class="separator:a89343ea3e719f00ee802b557db57b769"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4bb4742fe71115f493991d307cb22b23"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a4bb4742fe71115f493991d307cb22b23">sstrlower_a</a>(allocator, string)   <a class="el" href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">scstrlower_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> -<tr class="memdesc:a4bb4742fe71115f493991d307cb22b23"><td class="mdescLeft"> </td><td class="mdescRight">Returns a lower case version of a string. <a href="#a4bb4742fe71115f493991d307cb22b23">More...</a><br /></td></tr> -<tr class="separator:a4bb4742fe71115f493991d307cb22b23"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a084fe5a3a90d6fb6b15ecda03bb30824"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a084fe5a3a90d6fb6b15ecda03bb30824">sstrupper</a>(string)   <a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> -<tr class="memdesc:a084fe5a3a90d6fb6b15ecda03bb30824"><td class="mdescLeft"> </td><td class="mdescRight">Returns a upper case version of a string. <a href="#a084fe5a3a90d6fb6b15ecda03bb30824">More...</a><br /></td></tr> -<tr class="separator:a084fe5a3a90d6fb6b15ecda03bb30824"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5f0dd83c0176b812fb428004b2877a34"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a5f0dd83c0176b812fb428004b2877a34">sstrupper_a</a>(allocator, string)   <a class="el" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a>(allocator, string)</td></tr> -<tr class="memdesc:a5f0dd83c0176b812fb428004b2877a34"><td class="mdescLeft"> </td><td class="mdescRight">Returns a upper case version of a string. <a href="#a5f0dd83c0176b812fb428004b2877a34">More...</a><br /></td></tr> -<tr class="separator:a5f0dd83c0176b812fb428004b2877a34"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:a69d5e3eeec783cc43314df71248768f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a69d5e3eeec783cc43314df71248768f5">ucx_sc2sc</a> (<a class="el" href="structscstr__t.html">scstr_t</a> str)</td></tr> -<tr class="memdesc:a69d5e3eeec783cc43314df71248768f5"><td class="mdescLeft"> </td><td class="mdescRight">One of two type adjustment functions that return an <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. <a href="#a69d5e3eeec783cc43314df71248768f5">More...</a><br /></td></tr> -<tr class="separator:a69d5e3eeec783cc43314df71248768f5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9ce5ad1b2aa2dbeba204d452c2e64359"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a9ce5ad1b2aa2dbeba204d452c2e64359">ucx_ss2sc</a> (<a class="el" href="structsstr__t.html">sstr_t</a> str)</td></tr> -<tr class="memdesc:a9ce5ad1b2aa2dbeba204d452c2e64359"><td class="mdescLeft"> </td><td class="mdescRight">One of two type adjustment functions that return an <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. <a href="#a9ce5ad1b2aa2dbeba204d452c2e64359">More...</a><br /></td></tr> -<tr class="separator:a9ce5ad1b2aa2dbeba204d452c2e64359"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aedeb5d7bddda54116101a8d68af8c56d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a> ()</td></tr> -<tr class="memdesc:aedeb5d7bddda54116101a8d68af8c56d"><td class="mdescLeft"> </td><td class="mdescRight">Converts a UCX string to an immutable UCX string (<a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>). <a href="#aedeb5d7bddda54116101a8d68af8c56d">More...</a><br /></td></tr> -<tr class="separator:aedeb5d7bddda54116101a8d68af8c56d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a539eb7059251a051ee5d179526a23e9a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a539eb7059251a051ee5d179526a23e9a">sstr</a> (char *cstring)</td></tr> -<tr class="memdesc:a539eb7059251a051ee5d179526a23e9a"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> based on a C string. <a href="#a539eb7059251a051ee5d179526a23e9a">More...</a><br /></td></tr> -<tr class="separator:a539eb7059251a051ee5d179526a23e9a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2744c38ac44abf3e01fa059056dcf36c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a> (char *cstring, size_t length)</td></tr> -<tr class="memdesc:a2744c38ac44abf3e01fa059056dcf36c"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> of the specified length based on a C string. <a href="#a2744c38ac44abf3e01fa059056dcf36c">More...</a><br /></td></tr> -<tr class="separator:a2744c38ac44abf3e01fa059056dcf36c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2b1d6f1eca1c1549f37107b9c026c5a6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6">scstr</a> (const char *cstring)</td></tr> -<tr class="memdesc:a2b1d6f1eca1c1549f37107b9c026c5a6"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> based on a constant C string. <a href="#a2b1d6f1eca1c1549f37107b9c026c5a6">More...</a><br /></td></tr> -<tr class="separator:a2b1d6f1eca1c1549f37107b9c026c5a6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae594f6e222ea394cef6a26c0dfad000d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a> (const char *cstring, size_t length)</td></tr> -<tr class="memdesc:ae594f6e222ea394cef6a26c0dfad000d"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> of the specified length based on a constant C string. <a href="#ae594f6e222ea394cef6a26c0dfad000d">More...</a><br /></td></tr> -<tr class="separator:ae594f6e222ea394cef6a26c0dfad000d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac1b000030d6d197eec48c15a182055d5"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a> (size_t count,...)</td></tr> -<tr class="memdesc:ac1b000030d6d197eec48c15a182055d5"><td class="mdescLeft"> </td><td class="mdescRight">Returns the accumulated length of all specified strings. <a href="#ac1b000030d6d197eec48c15a182055d5">More...</a><br /></td></tr> -<tr class="separator:ac1b000030d6d197eec48c15a182055d5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7376842c19e954b49215da81ef76ac0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a> (size_t count, <a class="el" href="structscstr__t.html">scstr_t</a> s1,...)</td></tr> -<tr class="memdesc:a7376842c19e954b49215da81ef76ac0c"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates two or more strings. <a href="#a7376842c19e954b49215da81ef76ac0c">More...</a><br /></td></tr> -<tr class="separator:a7376842c19e954b49215da81ef76ac0c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:abacce4cbd6f70fcb6453904ef08b02e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">scstrcat_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *alloc, size_t count, <a class="el" href="structscstr__t.html">scstr_t</a> s1,...)</td></tr> -<tr class="memdesc:abacce4cbd6f70fcb6453904ef08b02e9"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates two or more strings using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#abacce4cbd6f70fcb6453904ef08b02e9">More...</a><br /></td></tr> -<tr class="separator:abacce4cbd6f70fcb6453904ef08b02e9"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5eb9e0e1f26cf7fbecc038cd90e8b258"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258">sstrsubs</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, size_t start)</td></tr> -<tr class="memdesc:a5eb9e0e1f26cf7fbecc038cd90e8b258"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring starting at the specified location. <a href="#a5eb9e0e1f26cf7fbecc038cd90e8b258">More...</a><br /></td></tr> -<tr class="separator:a5eb9e0e1f26cf7fbecc038cd90e8b258"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a78925c91af54f23cebd20ff99ef4331a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a78925c91af54f23cebd20ff99ef4331a">sstrsubsl</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, size_t start, size_t length)</td></tr> -<tr class="memdesc:a78925c91af54f23cebd20ff99ef4331a"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring with the given length starting at the specified location. <a href="#a78925c91af54f23cebd20ff99ef4331a">More...</a><br /></td></tr> -<tr class="separator:a78925c91af54f23cebd20ff99ef4331a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9a6c8d8db0dda0037c3c852cce1a5060"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060">scstrsubs</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, size_t start)</td></tr> -<tr class="memdesc:a9a6c8d8db0dda0037c3c852cce1a5060"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring of an immutable string starting at the specified location. <a href="#a9a6c8d8db0dda0037c3c852cce1a5060">More...</a><br /></td></tr> -<tr class="separator:a9a6c8d8db0dda0037c3c852cce1a5060"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad50f0f67b906fad0744f46bcb51e144b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ad50f0f67b906fad0744f46bcb51e144b">scstrsubsl</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, size_t start, size_t length)</td></tr> -<tr class="memdesc:ad50f0f67b906fad0744f46bcb51e144b"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring of an immutable string with a maximum length starting at the specified location. <a href="#ad50f0f67b906fad0744f46bcb51e144b">More...</a><br /></td></tr> -<tr class="separator:ad50f0f67b906fad0744f46bcb51e144b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af80898a0b75955eb2579298c3ae2c481"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481">sstrchr</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, int chr)</td></tr> -<tr class="memdesc:af80898a0b75955eb2579298c3ae2c481"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring starting at the location of the first occurrence of the specified character. <a href="#af80898a0b75955eb2579298c3ae2c481">More...</a><br /></td></tr> -<tr class="separator:af80898a0b75955eb2579298c3ae2c481"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:adae3f59957ca328e1da5285cb8b02a72"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#adae3f59957ca328e1da5285cb8b02a72">sstrrchr</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, int chr)</td></tr> -<tr class="memdesc:adae3f59957ca328e1da5285cb8b02a72"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring starting at the location of the last occurrence of the specified character. <a href="#adae3f59957ca328e1da5285cb8b02a72">More...</a><br /></td></tr> -<tr class="separator:adae3f59957ca328e1da5285cb8b02a72"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5836d6a7a744791c35e5c17bdc394a87"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87">scstrchr</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, int chr)</td></tr> -<tr class="memdesc:a5836d6a7a744791c35e5c17bdc394a87"><td class="mdescLeft"> </td><td class="mdescRight">Returns an immutable substring starting at the location of the first occurrence of the specified character. <a href="#a5836d6a7a744791c35e5c17bdc394a87">More...</a><br /></td></tr> -<tr class="separator:a5836d6a7a744791c35e5c17bdc394a87"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae389835b97cd9382e7d6a6a075323376"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ae389835b97cd9382e7d6a6a075323376">scstrrchr</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, int chr)</td></tr> -<tr class="memdesc:ae389835b97cd9382e7d6a6a075323376"><td class="mdescLeft"> </td><td class="mdescRight">Returns an immutable substring starting at the location of the last occurrence of the specified character. <a href="#ae389835b97cd9382e7d6a6a075323376">More...</a><br /></td></tr> -<tr class="separator:ae389835b97cd9382e7d6a6a075323376"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa4362cb36c6629f9d8484739fd827748"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> match)</td></tr> -<tr class="memdesc:aa4362cb36c6629f9d8484739fd827748"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring starting at the location of the first occurrence of the specified string. <a href="#aa4362cb36c6629f9d8484739fd827748">More...</a><br /></td></tr> -<tr class="separator:aa4362cb36c6629f9d8484739fd827748"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a54f256c3abe811c52d58b4ff1b23f051"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> match)</td></tr> -<tr class="memdesc:a54f256c3abe811c52d58b4ff1b23f051"><td class="mdescLeft"> </td><td class="mdescRight">Returns an immutable substring starting at the location of the first occurrence of the specified immutable string. <a href="#a54f256c3abe811c52d58b4ff1b23f051">More...</a><br /></td></tr> -<tr class="separator:a54f256c3abe811c52d58b4ff1b23f051"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae71cac352b00230848bde358f0fb05ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">scstrsplit</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> delim, ssize_t *count)</td></tr> -<tr class="memdesc:ae71cac352b00230848bde358f0fb05ea"><td class="mdescLeft"> </td><td class="mdescRight">Splits a string into parts by using a delimiter string. <a href="#ae71cac352b00230848bde358f0fb05ea">More...</a><br /></td></tr> -<tr class="separator:ae71cac352b00230848bde358f0fb05ea"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a52906455ae530c9cdc6812c8e6d9bdef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">scstrsplit_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> delim, ssize_t *count)</td></tr> -<tr class="memdesc:a52906455ae530c9cdc6812c8e6d9bdef"><td class="mdescLeft"> </td><td class="mdescRight">Performing <a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea" title="Splits a string into parts by using a delimiter string. ">scstrsplit()</a> using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a52906455ae530c9cdc6812c8e6d9bdef">More...</a><br /></td></tr> -<tr class="separator:a52906455ae530c9cdc6812c8e6d9bdef"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af35272a8e5408c88ed3e25a3a98f0a82"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">scstrcmp</a> (<a class="el" href="structscstr__t.html">scstr_t</a> s1, <a class="el" href="structscstr__t.html">scstr_t</a> s2)</td></tr> -<tr class="memdesc:af35272a8e5408c88ed3e25a3a98f0a82"><td class="mdescLeft"> </td><td class="mdescRight">Compares two UCX strings with standard <code>memcmp()</code>. <a href="#af35272a8e5408c88ed3e25a3a98f0a82">More...</a><br /></td></tr> -<tr class="separator:af35272a8e5408c88ed3e25a3a98f0a82"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aca8142fb823d253054e17c17cfca05e0"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">scstrcasecmp</a> (<a class="el" href="structscstr__t.html">scstr_t</a> s1, <a class="el" href="structscstr__t.html">scstr_t</a> s2)</td></tr> -<tr class="memdesc:aca8142fb823d253054e17c17cfca05e0"><td class="mdescLeft"> </td><td class="mdescRight">Compares two UCX strings ignoring the case. <a href="#aca8142fb823d253054e17c17cfca05e0">More...</a><br /></td></tr> -<tr class="separator:aca8142fb823d253054e17c17cfca05e0"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a97dccce03af419596dbdd592ca46a164"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> -<tr class="memdesc:a97dccce03af419596dbdd592ca46a164"><td class="mdescLeft"> </td><td class="mdescRight">Creates a duplicate of the specified string. <a href="#a97dccce03af419596dbdd592ca46a164">More...</a><br /></td></tr> -<tr class="separator:a97dccce03af419596dbdd592ca46a164"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8fe58921f51eb1fde038472377e63014"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014">scstrdup_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> -<tr class="memdesc:a8fe58921f51eb1fde038472377e63014"><td class="mdescLeft"> </td><td class="mdescRight">Creates a duplicate of the specified string using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a8fe58921f51eb1fde038472377e63014">More...</a><br /></td></tr> -<tr class="separator:a8fe58921f51eb1fde038472377e63014"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae2d6da564d3fce51f2e0cac580fdbc56"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56">sstrtrim</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string)</td></tr> -<tr class="memdesc:ae2d6da564d3fce51f2e0cac580fdbc56"><td class="mdescLeft"> </td><td class="mdescRight">Omits leading and trailing spaces. <a href="#ae2d6da564d3fce51f2e0cac580fdbc56">More...</a><br /></td></tr> -<tr class="separator:ae2d6da564d3fce51f2e0cac580fdbc56"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad374b16eb1be8b48019debad9b9f268c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ad374b16eb1be8b48019debad9b9f268c">scstrtrim</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> -<tr class="memdesc:ad374b16eb1be8b48019debad9b9f268c"><td class="mdescLeft"> </td><td class="mdescRight">Omits leading and trailing spaces. <a href="#ad374b16eb1be8b48019debad9b9f268c">More...</a><br /></td></tr> -<tr class="separator:ad374b16eb1be8b48019debad9b9f268c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a599ddc2f88dd1df68b72eefd91347393"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">scstrprefix</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> prefix)</td></tr> -<tr class="memdesc:a599ddc2f88dd1df68b72eefd91347393"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific prefix. <a href="#a599ddc2f88dd1df68b72eefd91347393">More...</a><br /></td></tr> -<tr class="separator:a599ddc2f88dd1df68b72eefd91347393"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a1f0ae316a2afe85d5b4655e6ece6721a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">scstrsuffix</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> suffix)</td></tr> -<tr class="memdesc:a1f0ae316a2afe85d5b4655e6ece6721a"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific suffix. <a href="#a1f0ae316a2afe85d5b4655e6ece6721a">More...</a><br /></td></tr> -<tr class="separator:a1f0ae316a2afe85d5b4655e6ece6721a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3718ef4aa1e86cdb26bda2f07fb585df"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">scstrcaseprefix</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> prefix)</td></tr> -<tr class="memdesc:a3718ef4aa1e86cdb26bda2f07fb585df"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific prefix, ignoring the case. <a href="#a3718ef4aa1e86cdb26bda2f07fb585df">More...</a><br /></td></tr> -<tr class="separator:a3718ef4aa1e86cdb26bda2f07fb585df"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a6edb4b85f2b9efe79db7ffe6eccd7bc3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">scstrcasesuffix</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> suffix)</td></tr> -<tr class="memdesc:a6edb4b85f2b9efe79db7ffe6eccd7bc3"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific suffix, ignoring the case. <a href="#a6edb4b85f2b9efe79db7ffe6eccd7bc3">More...</a><br /></td></tr> -<tr class="separator:a6edb4b85f2b9efe79db7ffe6eccd7bc3"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:abccf198bea3186ff2abb080cc88dcae6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> -<tr class="memdesc:abccf198bea3186ff2abb080cc88dcae6"><td class="mdescLeft"> </td><td class="mdescRight">Returns a lower case version of a string. <a href="#abccf198bea3186ff2abb080cc88dcae6">More...</a><br /></td></tr> -<tr class="separator:abccf198bea3186ff2abb080cc88dcae6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3cf1e557df7ab58d03c78832c4060276"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">scstrlower_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> -<tr class="memdesc:a3cf1e557df7ab58d03c78832c4060276"><td class="mdescLeft"> </td><td class="mdescRight">Returns a lower case version of a string. <a href="#a3cf1e557df7ab58d03c78832c4060276">More...</a><br /></td></tr> -<tr class="separator:a3cf1e557df7ab58d03c78832c4060276"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af3dd09ec9d11162fe0075f4e60f41240"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> -<tr class="memdesc:af3dd09ec9d11162fe0075f4e60f41240"><td class="mdescLeft"> </td><td class="mdescRight">Returns a upper case version of a string. <a href="#af3dd09ec9d11162fe0075f4e60f41240">More...</a><br /></td></tr> -<tr class="separator:af3dd09ec9d11162fe0075f4e60f41240"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aea94613eb74668cc05d365803d32bfad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> -<tr class="memdesc:aea94613eb74668cc05d365803d32bfad"><td class="mdescLeft"> </td><td class="mdescRight">Returns a upper case version of a string. <a href="#aea94613eb74668cc05d365803d32bfad">More...</a><br /></td></tr> -<tr class="separator:aea94613eb74668cc05d365803d32bfad"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Bounded string implementation. </p> -<p>The UCX strings (<code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code>) provide an alternative to C strings. The main difference to C strings is, that <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code> does <b>not need to be <code>NULL</code>-terminated</b>. Instead the length is stored within the structure.</p> -<p>When using <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code>, developers must be full aware of what type of string (<code>NULL</code>-terminated) or not) they are using, when accessing the <code>char* ptr</code> directly.</p> -<p>The UCX string module provides some common string functions, known from standard libc, working with <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code>.</p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a7d5bc48708405a28b23667e32dfcecae"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a7d5bc48708405a28b23667e32dfcecae">◆ </a></span>PRIsstr</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define PRIsstr   ".*s"</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Format specifier for a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> or <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. </p> - -</div> -</div> -<a id="a8fa17c8cf4c36df48f4108c36da8573e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8fa17c8cf4c36df48f4108c36da8573e">◆ </a></span>S</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define S</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">s</td><td>)</td> - <td>   <a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>(s, sizeof(s)-1)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shortcut for the conversion of a C string to a <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code>. </p> - -</div> -</div> -<a id="a7d261dd0bc358c957a368bc058c1ce53"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a7d261dd0bc358c957a368bc058c1ce53">◆ </a></span>SC</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define SC</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">s</td><td>)</td> - <td>   <a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a>(s, sizeof(s)-1)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shortcut for the conversion of a C string to a <code><a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a></code>. </p> - -</div> -</div> -<a id="ad4293350a9b39a23a6546bd0fef2aeed"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad4293350a9b39a23a6546bd0fef2aeed">◆ </a></span>SCSTR</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define SCSTR</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">str</td><td>)</td> - <td>   <a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a>(str)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Converts a UCX string to an immutable UCX string (<a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>). </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">str</td><td>some UCX string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the an immutable version of the provided string </dd></dl> - -</div> -</div> -<a id="a23ed51e87385886bb65e8cd19c839362"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a23ed51e87385886bb65e8cd19c839362">◆ </a></span>SFMT</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define SFMT</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">s</td><td>)</td> - <td>   (int) (s).length, (s).ptr</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Expands a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> or <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> to printf arguments. </p> - -</div> -</div> -<a id="a81b0f6df794152c2038703d4e9d0ad59"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a81b0f6df794152c2038703d4e9d0ad59">◆ </a></span>sstrcasecmp</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrcasecmp</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">s1, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">s2 </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">scstrcasecmp</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s2))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two UCX strings ignoring the case. </p> -<p>At first it compares the <a class="el" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229" title="The length of the string. ">sstr_t.length</a> attribute of the two strings. If and only if the lengths match, both strings are compared char by char ignoring the case.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">s1</td><td>the first string </td></tr> - <tr><td class="paramname">s2</td><td>the second string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if the length of s1 is less than the length of s2 or 1, if the length of s1 is greater than the length of s2 or the result of the platform specific string comparison function ignoring the case. </dd></dl> - -</div> -</div> -<a id="acd3dc64e90db9b4046e14f115a815ff4"></a> -<h2 class="memtitle"><span class="permalink"><a href="#acd3dc64e90db9b4046e14f115a815ff4">◆ </a></span>sstrcaseprefix</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrcaseprefix</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">string, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">prefix </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">scstrcaseprefix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(prefix))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if a string has a specific prefix, ignoring the case. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to check </td></tr> - <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> - -</div> -</div> -<a id="a57eabd4862d531dd685bbf2feb8468bf"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a57eabd4862d531dd685bbf2feb8468bf">◆ </a></span>sstrcasesuffix</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrcasesuffix</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">string, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">suffix </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">scstrcasesuffix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(suffix))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if a string has a specific suffix, ignoring the case. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to check </td></tr> - <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> - -</div> -</div> -<a id="a6af8a4c347c7fdb5980d4c4803be2759"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6af8a4c347c7fdb5980d4c4803be2759">◆ </a></span>sstrcat</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrcat</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">count, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">s1, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a>(count, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), __VA_ARGS__)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Concatenates two or more strings. </p> -<p>The resulting string will be allocated by standard <code>malloc()</code>. So developers <b>MUST</b> pass the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> to <code>free()</code>.</p> -<p>The <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value will <em>always</em> be <code>NULL</code>- terminated.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> - <tr><td class="paramname">s1</td><td>first string </td></tr> - <tr><td class="paramname">...</td><td>all remaining strings </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the concatenated string </dd></dl> - -</div> -</div> -<a id="a6068d460f9bc05962666a917d26568b3"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6068d460f9bc05962666a917d26568b3">◆ </a></span>sstrcat_a</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrcat_a</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">alloc, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">count, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">s1, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">scstrcat_a</a>(alloc, count, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), __VA_ARGS__)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Concatenates two or more strings using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p>The resulting string must be freed by the allocators <code>free()</code> implementation.</p> -<p>The <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value will <em>always</em> be <code>NULL</code>- terminated.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">alloc</td><td>the allocator to use </td></tr> - <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> - <tr><td class="paramname">s1</td><td>first string </td></tr> - <tr><td class="paramname">...</td><td>all remaining strings </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the concatenated string</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759" title="Concatenates two or more strings. ">sstrcat()</a> </dd></dl> - -</div> -</div> -<a id="a7ae7156c8de57454ca38d306100b8160"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a7ae7156c8de57454ca38d306100b8160">◆ </a></span>sstrcmp</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrcmp</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">s1, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">s2 </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">scstrcmp</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s2))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two UCX strings with standard <code>memcmp()</code>. </p> -<p>At first it compares the <a class="el" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229" title="The length of the string. ">sstr_t.length</a> attribute of the two strings. The <code>memcmp()</code> function is called, if and only if the lengths match.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">s1</td><td>the first string </td></tr> - <tr><td class="paramname">s2</td><td>the second string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if the length of s1 is less than the length of s2 or 1, if the length of s1 is greater than the length of s2 or the result of <code>memcmp()</code> otherwise (i.e. 0 if the strings match) </dd></dl> - -</div> -</div> -<a id="accbfd2b459a028d7af9fb7df6f977d80"></a> -<h2 class="memtitle"><span class="permalink"><a href="#accbfd2b459a028d7af9fb7df6f977d80">◆ </a></span>sstrdup</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrdup</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">string</td><td>)</td> - <td>   <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a duplicate of the specified string. </p> -<p>The new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will contain a copy allocated by standard <code>malloc()</code>. So developers <b>MUST</b> pass the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> to <code>free()</code>.</p> -<p>The <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value will <em>always</em> be <code>NULL</code>- terminated, regardless of the argument.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007" title="Creates a duplicate of the specified string using a UcxAllocator. ">sstrdup_a()</a> </dd></dl> - -</div> -</div> -<a id="a8d098baada4ea9ad5d8b6343b5aec007"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8d098baada4ea9ad5d8b6343b5aec007">◆ </a></span>sstrdup_a</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrdup_a</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">allocator, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">string </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014">scstrdup_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a duplicate of the specified string using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p>The new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will contain a copy allocated by the allocators <a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a" title="The malloc() function for this allocator. ">UcxAllocator.malloc()</a> function. So it is implementation depended, whether the returned <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> pointer must be passed to the allocators <a class="el" href="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f" title="The free() function for this allocator. ">UcxAllocator.free()</a> function manually.</p> -<p>The <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value will <em>always</em> be <code>NULL</code>- terminated, regardless of the argument.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>a valid instance of a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> </td></tr> - <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> </dd></dl> - -</div> -</div> -<a id="a89343ea3e719f00ee802b557db57b769"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a89343ea3e719f00ee802b557db57b769">◆ </a></span>sstrlower</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrlower</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">string</td><td>)</td> - <td>   <a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a lower case version of a string. </p> -<p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a>).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the input string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> - -</div> -</div> -<a id="a4bb4742fe71115f493991d307cb22b23"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4bb4742fe71115f493991d307cb22b23">◆ </a></span>sstrlower_a</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrlower_a</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">allocator, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">string </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">scstrlower_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a lower case version of a string. </p> -<p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007" title="Creates a duplicate of the specified string using a UcxAllocator. ">sstrdup_a()</a>).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> - <tr><td class="paramname">string</td><td>the input string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> - -</div> -</div> -<a id="a33fa945acc5ac2ce962e5ef13cf1638c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a33fa945acc5ac2ce962e5ef13cf1638c">◆ </a></span>sstrnlen</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrnlen</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">count, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a>(count, __VA_ARGS__)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the accumulated length of all specified strings. </p> -<p><b>Attention:</b> if the count argument is larger than the count of the specified strings, the behavior is undefined.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">count</td><td>the total number of specified strings </td></tr> - <tr><td class="paramname">...</td><td>all strings </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the cumulated length of all strings </dd></dl> - -</div> -</div> -<a id="a7d73b66256384b26927e787318fdefa2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a7d73b66256384b26927e787318fdefa2">◆ </a></span>sstrprefix</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrprefix</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">string, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">prefix </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">scstrprefix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(prefix))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if a string has a specific prefix. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to check </td></tr> - <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> - -</div> -</div> -<a id="aa696932213265e10f864678686f4ccde"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa696932213265e10f864678686f4ccde">◆ </a></span>sstrscstr</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrscstr</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">string, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">match </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns an immutable substring starting at the location of the first occurrence of the specified immutable string. </p> -<p>If the string does not contain the other string, an empty string is returned.</p> -<p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> - <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring starting at the first occurrence of <code>match</code>, or an empty string, if the sequence is not present in <code>string</code> </dd></dl> - -</div> -</div> -<a id="aa929984004c3576bfafb95031aca8eb7"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa929984004c3576bfafb95031aca8eb7">◆ </a></span>sstrsplit</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrsplit</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">string, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">delim, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">count </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">scstrsplit</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(delim), count)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Splits a string into parts by using a delimiter string. </p> -<p>This function will return <code>NULL</code>, if one of the following happens: </p><ul> -<li> -the string length is zero </li> -<li> -the delimeter length is zero </li> -<li> -the string equals the delimeter </li> -<li> -memory allocation fails </li> -</ul> -<p>The integer referenced by <code>count</code> is used as input and determines the maximum size of the resulting array, i.e. the maximum count of splits to perform + 1.</p> -<p>The integer referenced by <code>count</code> is also used as output and is set to </p><ul> -<li> --2, on memory allocation errors </li> -<li> --1, if either the string or the delimiter is an empty string </li> -<li> -0, if the string equals the delimiter </li> -<li> -1, if the string does not contain the delimiter </li> -<li> -the count of array items, otherwise </li> -</ul> -<p>If the string starts with the delimiter, the first item of the resulting array will be an empty string.</p> -<p>If the string ends with the delimiter and the maximum list size is not exceeded, the last array item will be an empty string. In case the list size would be exceeded, the last array item will be the remaining string after the last split, <em>including</em> the terminating delimiter.</p> -<p><b>Attention:</b> The array pointer <b>AND</b> all <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the array items must be manually passed to <code>free()</code>. Use <a class="el" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601" title="Performing sstrsplit() using a UcxAllocator. ">sstrsplit_a()</a> with an allocator to managed memory, to avoid this.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to split </td></tr> - <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> - <tr><td class="paramname">count</td><td>IN: the maximum size of the resulting array (0 = no limit), OUT: the actual size of the array </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601" title="Performing sstrsplit() using a UcxAllocator. ">sstrsplit_a()</a> </dd></dl> - -</div> -</div> -<a id="ac9f69fa3a17e26a3a5f9d985b5844601"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac9f69fa3a17e26a3a5f9d985b5844601">◆ </a></span>sstrsplit_a</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrsplit_a</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">allocator, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">string, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">delim, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">count </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">scstrsplit_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(delim), count)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Performing <a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7" title="Splits a string into parts by using a delimiter string. ">sstrsplit()</a> using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p><em>Read the description of <a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7" title="Splits a string into parts by using a delimiter string. ">sstrsplit()</a> for details.</em></p> -<p>The memory for the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> pointers of the array items and the memory for the <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array itself are allocated by using the <a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a" title="The malloc() function for this allocator. ">UcxAllocator.malloc()</a> function.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> used for allocating memory </td></tr> - <tr><td class="paramname">string</td><td>the string to split </td></tr> - <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> - <tr><td class="paramname">count</td><td>IN: the maximum size of the resulting array (0 = no limit), OUT: the actual size of the array </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7" title="Splits a string into parts by using a delimiter string. ">sstrsplit()</a> </dd></dl> - -</div> -</div> -<a id="a9d03be026afa9447c52bb34b9e3b895a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9d03be026afa9447c52bb34b9e3b895a">◆ </a></span>sstrstr</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrstr</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">string, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">match </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a substring starting at the location of the first occurrence of the specified string. </p> -<p>If the string does not contain the other string, an empty string is returned.</p> -<p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> - <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring starting at the first occurrence of <code>match</code>, or an empty string, if the sequence is not present in <code>string</code> </dd></dl> - -</div> -</div> -<a id="ac6a5246f26be2e8a5f34d8995b7ec14e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac6a5246f26be2e8a5f34d8995b7ec14e">◆ </a></span>sstrsuffix</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrsuffix</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">string, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">suffix </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">scstrsuffix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(suffix))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if a string has a specific suffix. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to check </td></tr> - <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> - -</div> -</div> -<a id="a084fe5a3a90d6fb6b15ecda03bb30824"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a084fe5a3a90d6fb6b15ecda03bb30824">◆ </a></span>sstrupper</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrupper</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">string</td><td>)</td> - <td>   <a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a upper case version of a string. </p> -<p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a>).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the input string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> - -</div> -</div> -<a id="a5f0dd83c0176b812fb428004b2877a34"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a5f0dd83c0176b812fb428004b2877a34">◆ </a></span>sstrupper_a</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define sstrupper_a</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">allocator, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">string </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a>(allocator, string)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a upper case version of a string. </p> -<p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007" title="Creates a duplicate of the specified string using a UcxAllocator. ">sstrdup_a()</a>).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> - <tr><td class="paramname">string</td><td>the input string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="a2b1d6f1eca1c1549f37107b9c026c5a6"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2b1d6f1eca1c1549f37107b9c026c5a6">◆ </a></span>scstr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstr </td> - <td>(</td> - <td class="paramtype">const char * </td> - <td class="paramname"><em>cstring</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> based on a constant C string. </p> -<p>The length is implicitly inferred by using a call to <code>strlen()</code>.</p> -<p><b>Note:</b> the <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> will share the specified pointer to the C string. If you do want a copy, use <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> on the return value of this function.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> containing the C string</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d" title="Creates a new scstr_t of the specified length based on a constant C string. ">scstrn()</a> </dd></dl> - -</div> -</div> -<a id="aca8142fb823d253054e17c17cfca05e0"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aca8142fb823d253054e17c17cfca05e0">◆ </a></span>scstrcasecmp()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int scstrcasecmp </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>s1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>s2</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two UCX strings ignoring the case. </p> -<p>At first it compares the <a class="el" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172" title="The length of the string. ">scstr_t.length</a> attribute of the two strings. If and only if the lengths match, both strings are compared char by char ignoring the case.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">s1</td><td>the first string </td></tr> - <tr><td class="paramname">s2</td><td>the second string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if the length of s1 is less than the length of s2 or 1, if the length of s1 is greater than the length of s2 or the result of the platform specific string comparison function ignoring the case. </dd></dl> - -</div> -</div> -<a id="a3718ef4aa1e86cdb26bda2f07fb585df"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3718ef4aa1e86cdb26bda2f07fb585df">◆ </a></span>scstrcaseprefix()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int scstrcaseprefix </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>prefix</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if a string has a specific prefix, ignoring the case. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to check </td></tr> - <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> - -</div> -</div> -<a id="a6edb4b85f2b9efe79db7ffe6eccd7bc3"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6edb4b85f2b9efe79db7ffe6eccd7bc3">◆ </a></span>scstrcasesuffix()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int scstrcasesuffix </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>suffix</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if a string has a specific suffix, ignoring the case. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to check </td></tr> - <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> - -</div> -</div> -<a id="a7376842c19e954b49215da81ef76ac0c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a7376842c19e954b49215da81ef76ac0c">◆ </a></span>scstrcat()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrcat </td> - <td>(</td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>count</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>s1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Concatenates two or more strings. </p> -<p>The resulting string will be allocated by standard <code>malloc()</code>. So developers <b>MUST</b> pass the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> to <code>free()</code>.</p> -<p>The <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value will <em>always</em> be <code>NULL</code>- terminated.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> - <tr><td class="paramname">s1</td><td>first string </td></tr> - <tr><td class="paramname">...</td><td>all remaining strings </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the concatenated string </dd></dl> - -</div> -</div> -<a id="abacce4cbd6f70fcb6453904ef08b02e9"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abacce4cbd6f70fcb6453904ef08b02e9">◆ </a></span>scstrcat_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrcat_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>alloc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>count</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>s1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Concatenates two or more strings using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p>The resulting string must be freed by the allocators <code>free()</code> implementation.</p> -<p>The <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value will <em>always</em> be <code>NULL</code>- terminated.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">alloc</td><td>the allocator to use </td></tr> - <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> - <tr><td class="paramname">s1</td><td>first string </td></tr> - <tr><td class="paramname">...</td><td>all remaining strings </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the concatenated string</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c" title="Concatenates two or more strings. ">scstrcat()</a> </dd></dl> - -</div> -</div> -<a id="a5836d6a7a744791c35e5c17bdc394a87"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a5836d6a7a744791c35e5c17bdc394a87">◆ </a></span>scstrchr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrchr </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">int </td> - <td class="paramname"><em>chr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns an immutable substring starting at the location of the first occurrence of the specified character. </p> -<p>If the string does not contain the character, an empty string is returned.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> - <tr><td class="paramname">chr</td><td>the character to locate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring starting at the first location of <code>chr</code></dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060" title="Returns a substring of an immutable string starting at the specified location. ">scstrsubs()</a> </dd></dl> - -</div> -</div> -<a id="af35272a8e5408c88ed3e25a3a98f0a82"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af35272a8e5408c88ed3e25a3a98f0a82">◆ </a></span>scstrcmp()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int scstrcmp </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>s1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>s2</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two UCX strings with standard <code>memcmp()</code>. </p> -<p>At first it compares the <a class="el" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172" title="The length of the string. ">scstr_t.length</a> attribute of the two strings. The <code>memcmp()</code> function is called, if and only if the lengths match.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">s1</td><td>the first string </td></tr> - <tr><td class="paramname">s2</td><td>the second string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if the length of s1 is less than the length of s2 or 1, if the length of s1 is greater than the length of s2 or the result of <code>memcmp()</code> otherwise (i.e. 0 if the strings match) </dd></dl> - -</div> -</div> -<a id="a97dccce03af419596dbdd592ca46a164"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a97dccce03af419596dbdd592ca46a164">◆ </a></span>scstrdup()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrdup </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a duplicate of the specified string. </p> -<p>The new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will contain a copy allocated by standard <code>malloc()</code>. So developers <b>MUST</b> pass the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> to <code>free()</code>.</p> -<p>The <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value will <em>always</em> be <code>NULL</code>- terminated and mutable, regardless of the argument.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014" title="Creates a duplicate of the specified string using a UcxAllocator. ">scstrdup_a()</a> </dd></dl> - -</div> -</div> -<a id="a8fe58921f51eb1fde038472377e63014"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8fe58921f51eb1fde038472377e63014">◆ </a></span>scstrdup_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrdup_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a duplicate of the specified string using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p>The new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will contain a copy allocated by the allocators <a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a" title="The malloc() function for this allocator. ">UcxAllocator.malloc()</a> function. So it is implementation depended, whether the returned <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> pointer must be passed to the allocators <a class="el" href="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f" title="The free() function for this allocator. ">UcxAllocator.free()</a> function manually.</p> -<p>The <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value will <em>always</em> be <code>NULL</code>- terminated and mutable, regardless of the argument.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>a valid instance of a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> </td></tr> - <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> </dd></dl> - -</div> -</div> -<a id="abccf198bea3186ff2abb080cc88dcae6"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abccf198bea3186ff2abb080cc88dcae6">◆ </a></span>scstrlower()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrlower </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a lower case version of a string. </p> -<p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a>).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the input string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> </dd></dl> - -</div> -</div> -<a id="a3cf1e557df7ab58d03c78832c4060276"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3cf1e557df7ab58d03c78832c4060276">◆ </a></span>scstrlower_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrlower_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a lower case version of a string. </p> -<p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014" title="Creates a duplicate of the specified string using a UcxAllocator. ">scstrdup_a()</a>).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> - <tr><td class="paramname">string</td><td>the input string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014" title="Creates a duplicate of the specified string using a UcxAllocator. ">scstrdup_a()</a> </dd></dl> - -</div> -</div> -<a id="ae594f6e222ea394cef6a26c0dfad000d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae594f6e222ea394cef6a26c0dfad000d">◆ </a></span>scstrn()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrn </td> - <td>(</td> - <td class="paramtype">const char * </td> - <td class="paramname"><em>cstring</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>length</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> of the specified length based on a constant C string. </p> -<p><b>Note:</b> the <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> will share the specified pointer to the C string. If you do want a copy, use <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> on the return value of this function. *</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> - <tr><td class="paramname">length</td><td>the length of the string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> containing the C string</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6" title="Creates a new scstr_t based on a constant C string. ">scstr()</a> </dd></dl> - -</div> -</div> -<a id="ac1b000030d6d197eec48c15a182055d5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac1b000030d6d197eec48c15a182055d5">◆ </a></span>scstrnlen()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t scstrnlen </td> - <td>(</td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>count</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns the accumulated length of all specified strings. </p> -<p><b>Attention:</b> if the count argument is larger than the count of the specified strings, the behavior is undefined.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">count</td><td>the total number of specified strings </td></tr> - <tr><td class="paramname">...</td><td>all strings </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the accumulated length of all strings </dd></dl> - -</div> -</div> -<a id="a599ddc2f88dd1df68b72eefd91347393"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a599ddc2f88dd1df68b72eefd91347393">◆ </a></span>scstrprefix()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int scstrprefix </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>prefix</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if a string has a specific prefix. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to check </td></tr> - <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> - -</div> -</div> -<a id="ae389835b97cd9382e7d6a6a075323376"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae389835b97cd9382e7d6a6a075323376">◆ </a></span>scstrrchr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrrchr </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">int </td> - <td class="paramname"><em>chr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns an immutable substring starting at the location of the last occurrence of the specified character. </p> -<p>If the string does not contain the character, an empty string is returned.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> - <tr><td class="paramname">chr</td><td>the character to locate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring starting at the last location of <code>chr</code></dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060" title="Returns a substring of an immutable string starting at the specified location. ">scstrsubs()</a> </dd></dl> - -</div> -</div> -<a id="a54f256c3abe811c52d58b4ff1b23f051"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a54f256c3abe811c52d58b4ff1b23f051">◆ </a></span>scstrscstr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrscstr </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>match</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns an immutable substring starting at the location of the first occurrence of the specified immutable string. </p> -<p>If the string does not contain the other string, an empty string is returned.</p> -<p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> - <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring starting at the first occurrence of <code>match</code>, or an empty string, if the sequence is not present in <code>string</code> </dd></dl> - -</div> -</div> -<a id="ae71cac352b00230848bde358f0fb05ea"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae71cac352b00230848bde358f0fb05ea">◆ </a></span>scstrsplit()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a>* scstrsplit </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>delim</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">ssize_t * </td> - <td class="paramname"><em>count</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Splits a string into parts by using a delimiter string. </p> -<p>This function will return <code>NULL</code>, if one of the following happens: </p><ul> -<li> -the string length is zero </li> -<li> -the delimeter length is zero </li> -<li> -the string equals the delimeter </li> -<li> -memory allocation fails </li> -</ul> -<p>The integer referenced by <code>count</code> is used as input and determines the maximum size of the resulting array, i.e. the maximum count of splits to perform + 1.</p> -<p>The integer referenced by <code>count</code> is also used as output and is set to </p><ul> -<li> --2, on memory allocation errors </li> -<li> --1, if either the string or the delimiter is an empty string </li> -<li> -0, if the string equals the delimiter </li> -<li> -1, if the string does not contain the delimiter </li> -<li> -the count of array items, otherwise </li> -</ul> -<p>If the string starts with the delimiter, the first item of the resulting array will be an empty string.</p> -<p>If the string ends with the delimiter and the maximum list size is not exceeded, the last array item will be an empty string. In case the list size would be exceeded, the last array item will be the remaining string after the last split, <em>including</em> the terminating delimiter.</p> -<p><b>Attention:</b> The array pointer <b>AND</b> all <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the array items must be manually passed to <code>free()</code>. Use <a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef" title="Performing scstrsplit() using a UcxAllocator. ">scstrsplit_a()</a> with an allocator to managed memory, to avoid this.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to split </td></tr> - <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> - <tr><td class="paramname">count</td><td>IN: the maximum size of the resulting array (0 = no limit), OUT: the actual size of the array </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef" title="Performing scstrsplit() using a UcxAllocator. ">scstrsplit_a()</a> </dd></dl> - -</div> -</div> -<a id="a52906455ae530c9cdc6812c8e6d9bdef"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a52906455ae530c9cdc6812c8e6d9bdef">◆ </a></span>scstrsplit_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a>* scstrsplit_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>delim</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">ssize_t * </td> - <td class="paramname"><em>count</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Performing <a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea" title="Splits a string into parts by using a delimiter string. ">scstrsplit()</a> using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> -<p><em>Read the description of <a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea" title="Splits a string into parts by using a delimiter string. ">scstrsplit()</a> for details.</em></p> -<p>The memory for the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> pointers of the array items and the memory for the <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array itself are allocated by using the <a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a" title="The malloc() function for this allocator. ">UcxAllocator.malloc()</a> function.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> used for allocating memory </td></tr> - <tr><td class="paramname">string</td><td>the string to split </td></tr> - <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> - <tr><td class="paramname">count</td><td>IN: the maximum size of the resulting array (0 = no limit), OUT: the actual size of the array </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea" title="Splits a string into parts by using a delimiter string. ">scstrsplit()</a> </dd></dl> - -</div> -</div> -<a id="aa4362cb36c6629f9d8484739fd827748"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa4362cb36c6629f9d8484739fd827748">◆ </a></span>scstrsstr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrsstr </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>match</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a substring starting at the location of the first occurrence of the specified string. </p> -<p>If the string does not contain the other string, an empty string is returned.</p> -<p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> - <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring starting at the first occurrence of <code>match</code>, or an empty string, if the sequence is not present in <code>string</code> </dd></dl> - -</div> -</div> -<a id="a9a6c8d8db0dda0037c3c852cce1a5060"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9a6c8d8db0dda0037c3c852cce1a5060">◆ </a></span>scstrsubs()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrsubs </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>start</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a substring of an immutable string starting at the specified location. </p> -<p><b>Attention:</b> the new string references the same memory area as the input string and is <b>NOT</b> required to be <code>NULL</code>-terminated. Use <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> to get a copy.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>input string </td></tr> - <tr><td class="paramname">start</td><td>start location of the substring </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring of <code>string</code> starting at <code>start</code></dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#ad50f0f67b906fad0744f46bcb51e144b" title="Returns a substring of an immutable string with a maximum length starting at the specified location...">scstrsubsl()</a> </dd> -<dd> -<a class="el" href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87" title="Returns an immutable substring starting at the location of the first occurrence of the specified char...">scstrchr()</a> </dd></dl> - -</div> -</div> -<a id="ad50f0f67b906fad0744f46bcb51e144b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad50f0f67b906fad0744f46bcb51e144b">◆ </a></span>scstrsubsl()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrsubsl </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>start</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>length</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a substring of an immutable string with a maximum length starting at the specified location. </p> -<p><b>Attention:</b> the new string references the same memory area as the input string and is <b>NOT</b> required to be <code>NULL</code>-terminated. Use <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> to get a copy.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>input string </td></tr> - <tr><td class="paramname">start</td><td>start location of the substring </td></tr> - <tr><td class="paramname">length</td><td>the maximum length of the substring </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring of <code>string</code> starting at <code>start</code> with a maximum length of <code>length</code></dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060" title="Returns a substring of an immutable string starting at the specified location. ">scstrsubs()</a> </dd> -<dd> -<a class="el" href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87" title="Returns an immutable substring starting at the location of the first occurrence of the specified char...">scstrchr()</a> </dd></dl> - -</div> -</div> -<a id="a1f0ae316a2afe85d5b4655e6ece6721a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1f0ae316a2afe85d5b4655e6ece6721a">◆ </a></span>scstrsuffix()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int scstrsuffix </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>suffix</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Checks, if a string has a specific suffix. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string to check </td></tr> - <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> - -</div> -</div> -<a id="ad374b16eb1be8b48019debad9b9f268c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad374b16eb1be8b48019debad9b9f268c">◆ </a></span>scstrtrim()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrtrim </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Omits leading and trailing spaces. </p> -<p>This function returns a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> containing a trimmed version of the specified string.</p> -<p><b>Note:</b> the new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> references the same memory, thus you <b>MUST NOT</b> pass the <a class="el" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391" title="A constant pointer to the immutable string (not necessarily NULL-terminated) ">scstr_t.ptr</a> of the return value to <code>free()</code>. It is also highly recommended to avoid assignments like <code>mystr = scstrtrim(mystr);</code> as you lose the reference to the source string. Assignments of this type are only permitted, if the <a class="el" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391" title="A constant pointer to the immutable string (not necessarily NULL-terminated) ">scstr_t.ptr</a> of the source string does not need to be freed or if another reference to the source string exists.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string that shall be trimmed </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> containing the trimmed string </dd></dl> - -</div> -</div> -<a id="af3dd09ec9d11162fe0075f4e60f41240"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af3dd09ec9d11162fe0075f4e60f41240">◆ </a></span>scstrupper()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrupper </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a upper case version of a string. </p> -<p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a>).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the input string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> </dd></dl> - -</div> -</div> -<a id="aea94613eb74668cc05d365803d32bfad"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aea94613eb74668cc05d365803d32bfad">◆ </a></span>scstrupper_a()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrupper_a </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>string</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a upper case version of a string. </p> -<p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014" title="Creates a duplicate of the specified string using a UcxAllocator. ">scstrdup_a()</a>).</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> - <tr><td class="paramname">string</td><td>the input string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014" title="Creates a duplicate of the specified string using a UcxAllocator. ">scstrdup_a()</a> </dd></dl> - -</div> -</div> -<a id="a539eb7059251a051ee5d179526a23e9a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a539eb7059251a051ee5d179526a23e9a">◆ </a></span>sstr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstr </td> - <td>(</td> - <td class="paramtype">char * </td> - <td class="paramname"><em>cstring</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> based on a C string. </p> -<p>The length is implicitly inferred by using a call to <code>strlen()</code>.</p> -<p><b>Note:</b> the <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will share the specified pointer to the C string. If you do want a copy, use <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a> on the return value of this function.</p> -<p>If you need to wrap a constant string, use <a class="el" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6" title="Creates a new scstr_t based on a constant C string. ">scstr()</a>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing the C string</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c" title="Creates a new sstr_t of the specified length based on a C string. ">sstrn()</a> </dd></dl> - -</div> -</div> -<a id="af80898a0b75955eb2579298c3ae2c481"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af80898a0b75955eb2579298c3ae2c481">◆ </a></span>sstrchr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrchr </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">int </td> - <td class="paramname"><em>chr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a substring starting at the location of the first occurrence of the specified character. </p> -<p>If the string does not contain the character, an empty string is returned.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> - <tr><td class="paramname">chr</td><td>the character to locate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring starting at the first location of <code>chr</code></dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258" title="Returns a substring starting at the specified location. ">sstrsubs()</a> </dd></dl> - -</div> -</div> -<a id="a2744c38ac44abf3e01fa059056dcf36c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2744c38ac44abf3e01fa059056dcf36c">◆ </a></span>sstrn()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrn </td> - <td>(</td> - <td class="paramtype">char * </td> - <td class="paramname"><em>cstring</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>length</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> of the specified length based on a C string. </p> -<p><b>Note:</b> the <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will share the specified pointer to the C string. If you do want a copy, use <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a> on the return value of this function.</p> -<p>If you need to wrap a constant string, use <a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d" title="Creates a new scstr_t of the specified length based on a constant C string. ">scstrn()</a>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> - <tr><td class="paramname">length</td><td>the length of the string </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing the C string</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a539eb7059251a051ee5d179526a23e9a" title="Creates a new sstr_t based on a C string. ">sstr()</a> </dd> -<dd> -<a class="el" href="string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e" title="Shortcut for the conversion of a C string to a sstr_t. ">S()</a> </dd></dl> - -</div> -</div> -<a id="adae3f59957ca328e1da5285cb8b02a72"></a> -<h2 class="memtitle"><span class="permalink"><a href="#adae3f59957ca328e1da5285cb8b02a72">◆ </a></span>sstrrchr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrrchr </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">int </td> - <td class="paramname"><em>chr</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a substring starting at the location of the last occurrence of the specified character. </p> -<p>If the string does not contain the character, an empty string is returned.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> - <tr><td class="paramname">chr</td><td>the character to locate </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring starting at the last location of <code>chr</code></dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258" title="Returns a substring starting at the specified location. ">sstrsubs()</a> </dd></dl> - -</div> -</div> -<a id="a5eb9e0e1f26cf7fbecc038cd90e8b258"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a5eb9e0e1f26cf7fbecc038cd90e8b258">◆ </a></span>sstrsubs()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrsubs </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>start</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a substring starting at the specified location. </p> -<p><b>Attention:</b> the new string references the same memory area as the input string and is <b>NOT</b> required to be <code>NULL</code>-terminated. Use <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a> to get a copy.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>input string </td></tr> - <tr><td class="paramname">start</td><td>start location of the substring </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring of <code>string</code> starting at <code>start</code></dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a78925c91af54f23cebd20ff99ef4331a" title="Returns a substring with the given length starting at the specified location. ">sstrsubsl()</a> </dd> -<dd> -<a class="el" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481" title="Returns a substring starting at the location of the first occurrence of the specified character...">sstrchr()</a> </dd></dl> - -</div> -</div> -<a id="a78925c91af54f23cebd20ff99ef4331a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a78925c91af54f23cebd20ff99ef4331a">◆ </a></span>sstrsubsl()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrsubsl </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> - <td class="paramname"><em>string</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>start</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>length</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Returns a substring with the given length starting at the specified location. </p> -<p><b>Attention:</b> the new string references the same memory area as the input string and is <b>NOT</b> required to be <code>NULL</code>-terminated. Use <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a> to get a copy.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>input string </td></tr> - <tr><td class="paramname">start</td><td>start location of the substring </td></tr> - <tr><td class="paramname">length</td><td>the maximum length of the substring </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a substring of <code>string</code> starting at <code>start</code> with a maximum length of <code>length</code></dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258" title="Returns a substring starting at the specified location. ">sstrsubs()</a> </dd> -<dd> -<a class="el" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481" title="Returns a substring starting at the location of the first occurrence of the specified character...">sstrchr()</a> </dd></dl> - -</div> -</div> -<a id="ae2d6da564d3fce51f2e0cac580fdbc56"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae2d6da564d3fce51f2e0cac580fdbc56">◆ </a></span>sstrtrim()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrtrim </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> - <td class="paramname"><em>string</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Omits leading and trailing spaces. </p> -<p>This function returns a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing a trimmed version of the specified string.</p> -<p><b>Note:</b> the new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> references the same memory, thus you <b>MUST NOT</b> pass the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value to <code>free()</code>. It is also highly recommended to avoid assignments like <code>mystr = sstrtrim(mystr);</code> as you lose the reference to the source string. Assignments of this type are only permitted, if the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the source string does not need to be freed or if another reference to the source string exists.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">string</td><td>the string that shall be trimmed </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing the trimmed string </dd></dl> - -</div> -</div> -<a id="a69d5e3eeec783cc43314df71248768f5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a69d5e3eeec783cc43314df71248768f5">◆ </a></span>ucx_sc2sc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> ucx_sc2sc </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> - <td class="paramname"><em>str</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>One of two type adjustment functions that return an <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. </p> -<p>Used <b>internally</b> to convert a UCX string to an immutable UCX string. This variant is used, when the string is already immutable and no operation needs to be performed.</p> -<p><b>Do not use this function manually.</b></p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">str</td><td>some <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the argument itself </dd></dl> - -</div> -</div> -<a id="aedeb5d7bddda54116101a8d68af8c56d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aedeb5d7bddda54116101a8d68af8c56d">◆ </a></span>ucx_ss2c_s()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> ucx_ss2c_s </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Converts a UCX string to an immutable UCX string (<a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>). </p> -<p>This <b>internal</b> function (ab)uses the C standard an expects one single argument which is then implicitly converted to <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> without a warning.</p> -<p><b>Do not use this function manually.</b></p> -<dl class="section return"><dt>Returns</dt><dd>the an immutable version of the provided string </dd></dl> - -</div> -</div> -<a id="a9ce5ad1b2aa2dbeba204d452c2e64359"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9ce5ad1b2aa2dbeba204d452c2e64359">◆ </a></span>ucx_ss2sc()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> ucx_ss2sc </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> - <td class="paramname"><em>str</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>One of two type adjustment functions that return an <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. </p> -<p>Used <b>internally</b> to convert a UCX string to an immutable UCX string.</p> -<p><b>Do not use this function manually.</b></p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">str</td><td>some <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>an immutable (<a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>) version of the provided string. </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/string_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/string.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">string.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="string_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#ifndef UCX_STRING_H</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#define UCX_STRING_H</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="allocator_8h.html">allocator.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include <stddef.h></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">/*</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment"> * Use this macro to disable the shortcuts if you experience macro collision.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment"> */</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#ifndef UCX_NO_SSTR_SHORTCUTS</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="string_8h.html#a9037956cca97a4e84b642f17f3d10378"> 63</a></span> <span class="preprocessor">#define ST(s) { s, sizeof(s)-1 }</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e"> 66</a></span> <span class="preprocessor">#define S(s) sstrn(s, sizeof(s)-1)</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="string_8h.html#a7d261dd0bc358c957a368bc058c1ce53"> 69</a></span> <span class="preprocessor">#define SC(s) scstrn(s, sizeof(s)-1)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_NO_SSTR_SHORTCUTS */</span><span class="preprocessor"></span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">/*</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment"> * Use this macro to disable the format macros.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment"> */</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#ifndef UCX_NO_SSTR_FORMAT_MACROS</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="string_8h.html#a23ed51e87385886bb65e8cd19c839362"> 77</a></span> <span class="preprocessor">#define SFMT(s) (int) (s).length, (s).ptr</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="string_8h.html#a7d5bc48708405a28b23667e32dfcecae"> 80</a></span> <span class="preprocessor">#define PRIsstr ".*s"</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_NO_SSTR_FORMAT_MACROS */</span><span class="preprocessor"></span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="structsstr__t.html"> 90</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0"> 93</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0">ptr</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229"> 95</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229">length</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> } <a class="code" href="structsstr__t.html">sstr_t</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structscstr__t.html"> 101</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391"> 104</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391">ptr</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172"> 106</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172">length</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> } <a class="code" href="structscstr__t.html">scstr_t</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">inline</span> <a class="code" href="structscstr__t.html">scstr_t</a> s2scstr(<a class="code" href="structsstr__t.html">sstr_t</a> s) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="structscstr__t.html">scstr_t</a> c;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  c.<a class="code" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391">ptr</a> = s.<a class="code" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0">ptr</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  c.<a class="code" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172">length</a> = s.<a class="code" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229">length</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">inline</span> <a class="code" href="structscstr__t.html">scstr_t</a> s2scstr(<a class="code" href="structscstr__t.html">scstr_t</a> str) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#define SCSTR(s) s2scstr(s)</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a69d5e3eeec783cc43314df71248768f5">ucx_sc2sc</a>(<a class="code" href="structscstr__t.html">scstr_t</a> str);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a9ce5ad1b2aa2dbeba204d452c2e64359">ucx_ss2sc</a>(<a class="code" href="structsstr__t.html">sstr_t</a> str);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#if __STDC_VERSION__ >= 201112L</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor">#define SCSTR(str) _Generic(str, sstr_t: ucx_ss2sc, scstr_t: ucx_sc2sc)(str)</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor">#elif defined(__GNUC__) || defined(__clang__)</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor">#define SCSTR(str) __builtin_choose_expr( \</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor"> __builtin_types_compatible_p(typeof(str), sstr_t), \</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor"> ucx_ss2sc, \</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="preprocessor"> ucx_sc2sc)(str)</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor">#elif defined(__sun)</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#define SCSTR(str) ({typeof(str) ucx_tmp_var_str = str; \</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor"> scstr_t ucx_tmp_var_c; \</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="preprocessor"> ucx_tmp_var_c.ptr = ucx_tmp_var_str.ptr;\</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor"> ucx_tmp_var_c.length = ucx_tmp_var_str.length;\</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor"> ucx_tmp_var_c; })</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor">#else </span><span class="comment">/* no generics and no builtins */</span><span class="preprocessor"></span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a>();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed"> 233</a></span> <span class="preprocessor">#define SCSTR(str) ucx_ss2c_s(str)</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor">#endif </span><span class="comment">/* C11 feature test */</span><span class="preprocessor"></span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="preprocessor">#endif </span><span class="comment">/* C++ */</span><span class="preprocessor"></span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a539eb7059251a051ee5d179526a23e9a">sstr</a>(<span class="keywordtype">char</span> *cstring);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>(<span class="keywordtype">char</span> *cstring, <span class="keywordtype">size_t</span> length);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6">scstr</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *cstring);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *cstring, <span class="keywordtype">size_t</span> length);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="keywordtype">size_t</span> <a class="code" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a>(<span class="keywordtype">size_t</span> count, ...);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="string_8h.html#a33fa945acc5ac2ce962e5ef13cf1638c"> 329</a></span> <span class="preprocessor">#define sstrnlen(count, ...) scstrnlen(count, __VA_ARGS__)</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a>(<span class="keywordtype">size_t</span> count, <a class="code" href="structscstr__t.html">scstr_t</a> s1, ...);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759"> 361</a></span> <span class="preprocessor">#define sstrcat(count, s1, ...) scstrcat(count, SCSTR(s1), __VA_ARGS__)</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">scstrcat_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *alloc, <span class="keywordtype">size_t</span> count, <a class="code" href="structscstr__t.html">scstr_t</a> s1, ...);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="string_8h.html#a6068d460f9bc05962666a917d26568b3"> 399</a></span> <span class="preprocessor">#define sstrcat_a(alloc, count, s1, ...) \</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="preprocessor"> scstrcat_a(alloc, count, SCSTR(s1), __VA_ARGS__)</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258">sstrsubs</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">size_t</span> start);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a78925c91af54f23cebd20ff99ef4331a">sstrsubsl</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">size_t</span> start, <span class="keywordtype">size_t</span> length);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060">scstrsubs</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">size_t</span> start);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#ad50f0f67b906fad0744f46bcb51e144b">scstrsubsl</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">size_t</span> start, <span class="keywordtype">size_t</span> length);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481">sstrchr</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">int</span> chr);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#adae3f59957ca328e1da5285cb8b02a72">sstrrchr</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">int</span> chr);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87">scstrchr</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">int</span> chr);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#ae389835b97cd9382e7d6a6a075323376">scstrrchr</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">int</span> chr);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> match);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="string_8h.html#a9d03be026afa9447c52bb34b9e3b895a"> 560</a></span> <span class="preprocessor">#define sstrstr(string, match) scstrsstr(string, SCSTR(match))</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> match);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> </div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="string_8h.html#aa696932213265e10f864678686f4ccde"> 594</a></span> <span class="preprocessor">#define sstrscstr(string, match) scstrscstr(string, SCSTR(match))</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> </div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <a class="code" href="structsstr__t.html">sstr_t</a>* <a class="code" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">scstrsplit</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> delim, ssize_t *count);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> </div><div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7"> 692</a></span> <span class="preprocessor">#define sstrsplit(string, delim, count) \</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="preprocessor"> scstrsplit(SCSTR(string), SCSTR(delim), count)</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> </div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <a class="code" href="structsstr__t.html">sstr_t</a>* <a class="code" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">scstrsplit_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> delim,</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  ssize_t *count);</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div><div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601"> 736</a></span> <span class="preprocessor">#define sstrsplit_a(allocator, string, delim, count) \</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="preprocessor"> scstrsplit_a(allocator, SCSTR(string), SCSTR(delim), count)</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> </div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> <span class="keywordtype">int</span> <a class="code" href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">scstrcmp</a>(<a class="code" href="structscstr__t.html">scstr_t</a> s1, <a class="code" href="structscstr__t.html">scstr_t</a> s2);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> </div><div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="string_8h.html#a7ae7156c8de57454ca38d306100b8160"> 765</a></span> <span class="preprocessor">#define sstrcmp(s1, s2) scstrcmp(SCSTR(s1), SCSTR(s2))</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> </div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="keywordtype">int</span> <a class="code" href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">scstrcasecmp</a>(<a class="code" href="structscstr__t.html">scstr_t</a> s1, <a class="code" href="structscstr__t.html">scstr_t</a> s2);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> </div><div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="string_8h.html#a81b0f6df794152c2038703d4e9d0ad59"> 795</a></span> <span class="preprocessor">#define sstrcasecmp(s1, s2) scstrcasecmp(SCSTR(s1), SCSTR(s2))</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> </div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00827"></a><span class="lineno"><a class="line" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80"> 827</a></span> <span class="preprocessor">#define sstrdup(string) scstrdup(SCSTR(string))</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> </div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a8fe58921f51eb1fde038472377e63014">scstrdup_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> </div><div class="line"><a name="l00863"></a><span class="lineno"><a class="line" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007"> 863</a></span> <span class="preprocessor">#define sstrdup_a(allocator, string) scstrdup_a(allocator, SCSTR(string))</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> </div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> </div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56">sstrtrim</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> </div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#ad374b16eb1be8b48019debad9b9f268c">scstrtrim</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> </div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> <span class="keywordtype">int</span> <a class="code" href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">scstrprefix</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> prefix);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> </div><div class="line"><a name="l00920"></a><span class="lineno"><a class="line" href="string_8h.html#a7d73b66256384b26927e787318fdefa2"> 920</a></span> <span class="preprocessor">#define sstrprefix(string, prefix) scstrprefix(SCSTR(string), SCSTR(prefix))</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="keywordtype">int</span> <a class="code" href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">scstrsuffix</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> suffix);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> </div><div class="line"><a name="l00938"></a><span class="lineno"><a class="line" href="string_8h.html#ac6a5246f26be2e8a5f34d8995b7ec14e"> 938</a></span> <span class="preprocessor">#define sstrsuffix(string, suffix) scstrsuffix(SCSTR(string), SCSTR(suffix))</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="keywordtype">int</span> <a class="code" href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">scstrcaseprefix</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> prefix);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> </div><div class="line"><a name="l00956"></a><span class="lineno"><a class="line" href="string_8h.html#acd3dc64e90db9b4046e14f115a815ff4"> 956</a></span> <span class="preprocessor">#define sstrcaseprefix(string, prefix) \</span></div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> <span class="preprocessor"> scstrcaseprefix(SCSTR(string), SCSTR(prefix))</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> </div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> <span class="keywordtype">int</span> <a class="code" href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">scstrcasesuffix</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> suffix);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> </div><div class="line"><a name="l00975"></a><span class="lineno"><a class="line" href="string_8h.html#a57eabd4862d531dd685bbf2feb8468bf"> 975</a></span> <span class="preprocessor">#define sstrcasesuffix(string, suffix) \</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> <span class="preprocessor"> scstrcasesuffix(SCSTR(string), SCSTR(suffix))</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> </div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l00999"></a><span class="lineno"><a class="line" href="string_8h.html#a89343ea3e719f00ee802b557db57b769"> 999</a></span> <span class="preprocessor">#define sstrlower(string) scstrlower(SCSTR(string))</span></div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> </div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">scstrlower_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> </div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01025"></a><span class="lineno"><a class="line" href="string_8h.html#a4bb4742fe71115f493991d307cb22b23"> 1025</a></span> <span class="preprocessor">#define sstrlower_a(allocator, string) scstrlower_a(allocator, SCSTR(string))</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> </div><div class="line"><a name="l01048"></a><span class="lineno"><a class="line" href="string_8h.html#a084fe5a3a90d6fb6b15ecda03bb30824"> 1048</a></span> <span class="preprocessor">#define sstrupper(string) scstrupper(SCSTR(string))</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> </div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div><div class="line"><a name="l01073"></a><span class="lineno"><a class="line" href="string_8h.html#a5f0dd83c0176b812fb428004b2877a34"> 1073</a></span> <span class="preprocessor">#define sstrupper_a(allocator, string) scstrupper_a(allocator, string)</span></div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> </div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> }</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> </div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_STRING_H */</span><span class="preprocessor"></span></div><div class="ttc" id="string_8h_html_a539eb7059251a051ee5d179526a23e9a"><div class="ttname"><a href="string_8h.html#a539eb7059251a051ee5d179526a23e9a">sstr</a></div><div class="ttdeci">sstr_t sstr(char *cstring)</div><div class="ttdoc">Creates a new sstr_t based on a C string. </div><div class="ttdef"><b>Definition:</b> string.c:43</div></div> -<div class="ttc" id="string_8h_html_a97dccce03af419596dbdd592ca46a164"><div class="ttname"><a href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a></div><div class="ttdeci">sstr_t scstrdup(scstr_t string)</div><div class="ttdoc">Creates a duplicate of the specified string. </div><div class="ttdef"><b>Definition:</b> string.c:520</div></div> -<div class="ttc" id="structsstr__t_html"><div class="ttname"><a href="structsstr__t.html">sstr_t</a></div><div class="ttdoc">The UCX string structure. </div><div class="ttdef"><b>Definition:</b> string.h:90</div></div> -<div class="ttc" id="string_8h_html_abccf198bea3186ff2abb080cc88dcae6"><div class="ttname"><a href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a></div><div class="ttdeci">sstr_t scstrlower(scstr_t string)</div><div class="ttdoc">Returns a lower case version of a string. </div><div class="ttdef"><b>Definition:</b> string.c:633</div></div> -<div class="ttc" id="string_8h_html_a78925c91af54f23cebd20ff99ef4331a"><div class="ttname"><a href="string_8h.html#a78925c91af54f23cebd20ff99ef4331a">sstrsubsl</a></div><div class="ttdeci">sstr_t sstrsubsl(sstr_t string, size_t start, size_t length)</div><div class="ttdoc">Returns a substring with the given length starting at the specified location. </div><div class="ttdef"><b>Definition:</b> string.c:201</div></div> -<div class="ttc" id="string_8h_html_ad374b16eb1be8b48019debad9b9f268c"><div class="ttname"><a href="string_8h.html#ad374b16eb1be8b48019debad9b9f268c">scstrtrim</a></div><div class="ttdeci">scstr_t scstrtrim(scstr_t string)</div><div class="ttdoc">Omits leading and trailing spaces. </div><div class="ttdef"><b>Definition:</b> string.c:563</div></div> -<div class="ttc" id="string_8h_html_a52906455ae530c9cdc6812c8e6d9bdef"><div class="ttname"><a href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">scstrsplit_a</a></div><div class="ttdeci">sstr_t * scstrsplit_a(UcxAllocator *allocator, scstr_t string, scstr_t delim, ssize_t *count)</div><div class="ttdoc">Performing scstrsplit() using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> string.c:400</div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="string_8h_html_ae389835b97cd9382e7d6a6a075323376"><div class="ttname"><a href="string_8h.html#ae389835b97cd9382e7d6a6a075323376">scstrrchr</a></div><div class="ttdeci">scstr_t scstrrchr(scstr_t string, int chr)</div><div class="ttdoc">Returns an immutable substring starting at the location of the last occurrence of the specified chara...</div><div class="ttdef"><b>Definition:</b> string.c:270</div></div> -<div class="ttc" id="string_8h_html_a69d5e3eeec783cc43314df71248768f5"><div class="ttname"><a href="string_8h.html#a69d5e3eeec783cc43314df71248768f5">ucx_sc2sc</a></div><div class="ttdeci">scstr_t ucx_sc2sc(scstr_t str)</div><div class="ttdoc">One of two type adjustment functions that return an scstr_t. </div><div class="ttdef"><b>Definition:</b> string.c:666</div></div> -<div class="ttc" id="string_8h_html_a599ddc2f88dd1df68b72eefd91347393"><div class="ttname"><a href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">scstrprefix</a></div><div class="ttdeci">int scstrprefix(scstr_t string, scstr_t prefix)</div><div class="ttdoc">Checks, if a string has a specific prefix. </div><div class="ttdef"><b>Definition:</b> string.c:570</div></div> -<div class="ttc" id="string_8h_html_adae3f59957ca328e1da5285cb8b02a72"><div class="ttname"><a href="string_8h.html#adae3f59957ca328e1da5285cb8b02a72">sstrrchr</a></div><div class="ttdeci">sstr_t sstrrchr(sstr_t string, int chr)</div><div class="ttdoc">Returns a substring starting at the location of the last occurrence of the specified character...</div><div class="ttdef"><b>Definition:</b> string.c:254</div></div> -<div class="ttc" id="string_8h_html_ae2d6da564d3fce51f2e0cac580fdbc56"><div class="ttname"><a href="string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56">sstrtrim</a></div><div class="ttdeci">sstr_t sstrtrim(sstr_t string)</div><div class="ttdoc">Omits leading and trailing spaces. </div><div class="ttdef"><b>Definition:</b> string.c:556</div></div> -<div class="ttc" id="structscstr__t_html_a305fd48934b474a9bf4a40869030e391"><div class="ttname"><a href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391">scstr_t::ptr</a></div><div class="ttdeci">const char * ptr</div><div class="ttdoc">A constant pointer to the immutable string (not necessarily NULL-terminated) </div><div class="ttdef"><b>Definition:</b> string.h:104</div></div> -<div class="ttc" id="structscstr__t_html"><div class="ttname"><a href="structscstr__t.html">scstr_t</a></div><div class="ttdoc">The UCX string structure for immutable (constant) strings. </div><div class="ttdef"><b>Definition:</b> string.h:101</div></div> -<div class="ttc" id="string_8h_html_ac1b000030d6d197eec48c15a182055d5"><div class="ttname"><a href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a></div><div class="ttdeci">size_t scstrnlen(size_t count,...)</div><div class="ttdoc">Returns the accumulated length of all specified strings. </div><div class="ttdef"><b>Definition:</b> string.c:72</div></div> -<div class="ttc" id="string_8h_html_a5eb9e0e1f26cf7fbecc038cd90e8b258"><div class="ttname"><a href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258">sstrsubs</a></div><div class="ttdeci">sstr_t sstrsubs(sstr_t string, size_t start)</div><div class="ttdoc">Returns a substring starting at the specified location. </div><div class="ttdef"><b>Definition:</b> string.c:197</div></div> -<div class="ttc" id="string_8h_html_aca8142fb823d253054e17c17cfca05e0"><div class="ttname"><a href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">scstrcasecmp</a></div><div class="ttdeci">int scstrcasecmp(scstr_t s1, scstr_t s2)</div><div class="ttdoc">Compares two UCX strings ignoring the case. </div><div class="ttdef"><b>Definition:</b> string.c:506</div></div> -<div class="ttc" id="string_8h_html_a9ce5ad1b2aa2dbeba204d452c2e64359"><div class="ttname"><a href="string_8h.html#a9ce5ad1b2aa2dbeba204d452c2e64359">ucx_ss2sc</a></div><div class="ttdeci">scstr_t ucx_ss2sc(sstr_t str)</div><div class="ttdoc">One of two type adjustment functions that return an scstr_t. </div><div class="ttdef"><b>Definition:</b> string.c:669</div></div> -<div class="ttc" id="string_8h_html_af35272a8e5408c88ed3e25a3a98f0a82"><div class="ttname"><a href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">scstrcmp</a></div><div class="ttdeci">int scstrcmp(scstr_t s1, scstr_t s2)</div><div class="ttdoc">Compares two UCX strings with standard memcmp(). </div><div class="ttdef"><b>Definition:</b> string.c:496</div></div> -<div class="ttc" id="structsstr__t_html_af8049914efc1e67f7de3ee55ec0611b0"><div class="ttname"><a href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0">sstr_t::ptr</a></div><div class="ttdeci">char * ptr</div><div class="ttdoc">A pointer to the string (not necessarily NULL-terminated) </div><div class="ttdef"><b>Definition:</b> string.h:93</div></div> -<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div> -<div class="ttc" id="string_8h_html_ae71cac352b00230848bde358f0fb05ea"><div class="ttname"><a href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">scstrsplit</a></div><div class="ttdeci">sstr_t * scstrsplit(scstr_t string, scstr_t delim, ssize_t *count)</div><div class="ttdoc">Splits a string into parts by using a delimiter string. </div><div class="ttdef"><b>Definition:</b> string.c:396</div></div> -<div class="ttc" id="string_8h_html_a3cf1e557df7ab58d03c78832c4060276"><div class="ttname"><a href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">scstrlower_a</a></div><div class="ttdeci">sstr_t scstrlower_a(UcxAllocator *allocator, scstr_t string)</div><div class="ttdoc">Returns a lower case version of a string. </div><div class="ttdef"><b>Definition:</b> string.c:641</div></div> -<div class="ttc" id="structsstr__t_html_a5cf571708cdff92e45f08458f2b98229"><div class="ttname"><a href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229">sstr_t::length</a></div><div class="ttdeci">size_t length</div><div class="ttdoc">The length of the string. </div><div class="ttdef"><b>Definition:</b> string.h:95</div></div> -<div class="ttc" id="string_8h_html_af80898a0b75955eb2579298c3ae2c481"><div class="ttname"><a href="string_8h.html#af80898a0b75955eb2579298c3ae2c481">sstrchr</a></div><div class="ttdeci">sstr_t sstrchr(sstr_t string, int chr)</div><div class="ttdoc">Returns a substring starting at the location of the first occurrence of the specified character...</div><div class="ttdef"><b>Definition:</b> string.c:246</div></div> -<div class="ttc" id="string_8h_html_a8fe58921f51eb1fde038472377e63014"><div class="ttname"><a href="string_8h.html#a8fe58921f51eb1fde038472377e63014">scstrdup_a</a></div><div class="ttdeci">sstr_t scstrdup_a(UcxAllocator *allocator, scstr_t string)</div><div class="ttdoc">Creates a duplicate of the specified string using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> string.c:524</div></div> -<div class="ttc" id="string_8h_html_ae594f6e222ea394cef6a26c0dfad000d"><div class="ttname"><a href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a></div><div class="ttdeci">scstr_t scstrn(const char *cstring, size_t length)</div><div class="ttdoc">Creates a new scstr_t of the specified length based on a constant C string. </div><div class="ttdef"><b>Definition:</b> string.c:64</div></div> -<div class="ttc" id="string_8h_html_aedeb5d7bddda54116101a8d68af8c56d"><div class="ttname"><a href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a></div><div class="ttdeci">scstr_t ucx_ss2c_s()</div><div class="ttdoc">Converts a UCX string to an immutable UCX string (scstr_t). </div></div> -<div class="ttc" id="string_8h_html_a1f0ae316a2afe85d5b4655e6ece6721a"><div class="ttname"><a href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">scstrsuffix</a></div><div class="ttdeci">int scstrsuffix(scstr_t string, scstr_t suffix)</div><div class="ttdoc">Checks, if a string has a specific suffix. </div><div class="ttdef"><b>Definition:</b> string.c:585</div></div> -<div class="ttc" id="string_8h_html_a2b1d6f1eca1c1549f37107b9c026c5a6"><div class="ttname"><a href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6">scstr</a></div><div class="ttdeci">scstr_t scstr(const char *cstring)</div><div class="ttdoc">Creates a new scstr_t based on a constant C string. </div><div class="ttdef"><b>Definition:</b> string.c:57</div></div> -<div class="ttc" id="allocator_8h_html"><div class="ttname"><a href="allocator_8h.html">allocator.h</a></div><div class="ttdoc">Allocator for custom memory management. </div></div> -<div class="ttc" id="string_8h_html_a54f256c3abe811c52d58b4ff1b23f051"><div class="ttname"><a href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a></div><div class="ttdeci">scstr_t scstrscstr(scstr_t string, scstr_t match)</div><div class="ttdoc">Returns an immutable substring starting at the location of the first occurrence of the specified immu...</div><div class="ttdef"><b>Definition:</b> string.c:375</div></div> -<div class="ttc" id="string_8h_html_abacce4cbd6f70fcb6453904ef08b02e9"><div class="ttname"><a href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">scstrcat_a</a></div><div class="ttdeci">sstr_t scstrcat_a(UcxAllocator *alloc, size_t count, scstr_t s1,...)</div><div class="ttdoc">Concatenates two or more strings using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> string.c:167</div></div> -<div class="ttc" id="string_8h_html_a7376842c19e954b49215da81ef76ac0c"><div class="ttname"><a href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a></div><div class="ttdeci">sstr_t scstrcat(size_t count, scstr_t s1,...)</div><div class="ttdoc">Concatenates two or more strings. </div><div class="ttdef"><b>Definition:</b> string.c:159</div></div> -<div class="ttc" id="string_8h_html_aea94613eb74668cc05d365803d32bfad"><div class="ttname"><a href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a></div><div class="ttdeci">sstr_t scstrupper_a(UcxAllocator *allocator, scstr_t string)</div><div class="ttdoc">Returns a upper case version of a string. </div><div class="ttdef"><b>Definition:</b> string.c:657</div></div> -<div class="ttc" id="string_8h_html_af3dd09ec9d11162fe0075f4e60f41240"><div class="ttname"><a href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a></div><div class="ttdeci">sstr_t scstrupper(scstr_t string)</div><div class="ttdoc">Returns a upper case version of a string. </div><div class="ttdef"><b>Definition:</b> string.c:649</div></div> -<div class="ttc" id="string_8h_html_ad50f0f67b906fad0744f46bcb51e144b"><div class="ttname"><a href="string_8h.html#ad50f0f67b906fad0744f46bcb51e144b">scstrsubsl</a></div><div class="ttdeci">scstr_t scstrsubsl(scstr_t string, size_t start, size_t length)</div><div class="ttdoc">Returns a substring of an immutable string with a maximum length starting at the specified location...</div><div class="ttdef"><b>Definition:</b> string.c:214</div></div> -<div class="ttc" id="string_8h_html_a2744c38ac44abf3e01fa059056dcf36c"><div class="ttname"><a href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a></div><div class="ttdeci">sstr_t sstrn(char *cstring, size_t length)</div><div class="ttdoc">Creates a new sstr_t of the specified length based on a C string. </div><div class="ttdef"><b>Definition:</b> string.c:50</div></div> -<div class="ttc" id="structscstr__t_html_aaa0229f64f1057b6f65adededaa5a172"><div class="ttname"><a href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172">scstr_t::length</a></div><div class="ttdeci">size_t length</div><div class="ttdoc">The length of the string. </div><div class="ttdef"><b>Definition:</b> string.h:106</div></div> -<div class="ttc" id="string_8h_html_a6edb4b85f2b9efe79db7ffe6eccd7bc3"><div class="ttname"><a href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">scstrcasesuffix</a></div><div class="ttdeci">int scstrcasesuffix(scstr_t string, scstr_t suffix)</div><div class="ttdoc">Checks, if a string has a specific suffix, ignoring the case. </div><div class="ttdef"><b>Definition:</b> string.c:617</div></div> -<div class="ttc" id="string_8h_html_a5836d6a7a744791c35e5c17bdc394a87"><div class="ttname"><a href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87">scstrchr</a></div><div class="ttdeci">scstr_t scstrchr(scstr_t string, int chr)</div><div class="ttdoc">Returns an immutable substring starting at the location of the first occurrence of the specified char...</div><div class="ttdef"><b>Definition:</b> string.c:262</div></div> -<div class="ttc" id="string_8h_html_a9a6c8d8db0dda0037c3c852cce1a5060"><div class="ttname"><a href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060">scstrsubs</a></div><div class="ttdeci">scstr_t scstrsubs(scstr_t string, size_t start)</div><div class="ttdoc">Returns a substring of an immutable string starting at the specified location. </div><div class="ttdef"><b>Definition:</b> string.c:210</div></div> -<div class="ttc" id="string_8h_html_aa4362cb36c6629f9d8484739fd827748"><div class="ttname"><a href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a></div><div class="ttdeci">sstr_t scstrsstr(sstr_t string, scstr_t match)</div><div class="ttdoc">Returns a substring starting at the location of the first occurrence of the specified string...</div><div class="ttdef"><b>Definition:</b> string.c:357</div></div> -<div class="ttc" id="string_8h_html_a3718ef4aa1e86cdb26bda2f07fb585df"><div class="ttname"><a href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">scstrcaseprefix</a></div><div class="ttdeci">int scstrcaseprefix(scstr_t string, scstr_t prefix)</div><div class="ttdoc">Checks, if a string has a specific prefix, ignoring the case. </div><div class="ttdef"><b>Definition:</b> string.c:601</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxAVLNode.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,115 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxAVLNode Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxAVLNode Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>UCX AVL Node. - <a href="structUcxAVLNode.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="avl_8h_source.html">avl.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:ab65a31010d26a3df898e6ba534702af6"><td class="memItemLeft" align="right" valign="top"><a id="ab65a31010d26a3df898e6ba534702af6"></a> -intptr_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6">key</a></td></tr> -<tr class="memdesc:ab65a31010d26a3df898e6ba534702af6"><td class="mdescLeft"> </td><td class="mdescRight">The key for this node. <br /></td></tr> -<tr class="separator:ab65a31010d26a3df898e6ba534702af6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a302501b8c04c3fde668fe72249871258"><td class="memItemLeft" align="right" valign="top"><a id="a302501b8c04c3fde668fe72249871258"></a> -void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLNode.html#a302501b8c04c3fde668fe72249871258">value</a></td></tr> -<tr class="memdesc:a302501b8c04c3fde668fe72249871258"><td class="mdescLeft"> </td><td class="mdescRight">Data contained by this node. <br /></td></tr> -<tr class="separator:a302501b8c04c3fde668fe72249871258"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af129fd32863a7c35e82c5cd9d11dc95a"><td class="memItemLeft" align="right" valign="top"><a id="af129fd32863a7c35e82c5cd9d11dc95a"></a> -size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLNode.html#af129fd32863a7c35e82c5cd9d11dc95a">height</a></td></tr> -<tr class="memdesc:af129fd32863a7c35e82c5cd9d11dc95a"><td class="mdescLeft"> </td><td class="mdescRight">The height of this (sub)-tree. <br /></td></tr> -<tr class="separator:af129fd32863a7c35e82c5cd9d11dc95a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:afc4e3b4f452aa2d91cabb2135b9d42f7"><td class="memItemLeft" align="right" valign="top"><a id="afc4e3b4f452aa2d91cabb2135b9d42f7"></a> -<a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLNode.html#afc4e3b4f452aa2d91cabb2135b9d42f7">parent</a></td></tr> -<tr class="memdesc:afc4e3b4f452aa2d91cabb2135b9d42f7"><td class="mdescLeft"> </td><td class="mdescRight">Parent node. <br /></td></tr> -<tr class="separator:afc4e3b4f452aa2d91cabb2135b9d42f7"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad3a1c733f2c1cc81ac527f846fc24b9c"><td class="memItemLeft" align="right" valign="top"><a id="ad3a1c733f2c1cc81ac527f846fc24b9c"></a> -<a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLNode.html#ad3a1c733f2c1cc81ac527f846fc24b9c">left</a></td></tr> -<tr class="memdesc:ad3a1c733f2c1cc81ac527f846fc24b9c"><td class="mdescLeft"> </td><td class="mdescRight">Root node of left subtree. <br /></td></tr> -<tr class="separator:ad3a1c733f2c1cc81ac527f846fc24b9c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7cbaa31dba8c7a89f4f8f7905f6fd238"><td class="memItemLeft" align="right" valign="top"><a id="a7cbaa31dba8c7a89f4f8f7905f6fd238"></a> -<a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLNode.html#a7cbaa31dba8c7a89f4f8f7905f6fd238">right</a></td></tr> -<tr class="memdesc:a7cbaa31dba8c7a89f4f8f7905f6fd238"><td class="mdescLeft"> </td><td class="mdescRight">Root node of right subtree. <br /></td></tr> -<tr class="separator:a7cbaa31dba8c7a89f4f8f7905f6fd238"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>UCX AVL Node. </p> -</div><hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="avl_8h_source.html">avl.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxAVLTree.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxAVLTree Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxAVLTree Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>UCX AVL Tree. - <a href="structUcxAVLTree.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="avl_8h_source.html">avl.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a30652776b540156ad54c7d52833e4e28"><td class="memItemLeft" align="right" valign="top"><a id="a30652776b540156ad54c7d52833e4e28"></a> -<a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLTree.html#a30652776b540156ad54c7d52833e4e28">allocator</a></td></tr> -<tr class="memdesc:a30652776b540156ad54c7d52833e4e28"><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> that shall be used to manage the memory for node data. <br /></td></tr> -<tr class="separator:a30652776b540156ad54c7d52833e4e28"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a393a8fc99eb2c290d3cb67170081d742"><td class="memItemLeft" align="right" valign="top"><a id="a393a8fc99eb2c290d3cb67170081d742"></a> -<a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLTree.html#a393a8fc99eb2c290d3cb67170081d742">root</a></td></tr> -<tr class="memdesc:a393a8fc99eb2c290d3cb67170081d742"><td class="mdescLeft"> </td><td class="mdescRight">Root node of the tree. <br /></td></tr> -<tr class="separator:a393a8fc99eb2c290d3cb67170081d742"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a87aff25cb726cb9eb88eb815a10d1004"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLTree.html#a87aff25cb726cb9eb88eb815a10d1004">cmpfunc</a></td></tr> -<tr class="memdesc:a87aff25cb726cb9eb88eb815a10d1004"><td class="mdescLeft"> </td><td class="mdescRight">Compare function that shall be used to compare the <a class="el" href="structUcxAVLNode.html" title="UCX AVL Node. ">UcxAVLNode</a> keys. <a href="#a87aff25cb726cb9eb88eb815a10d1004">More...</a><br /></td></tr> -<tr class="separator:a87aff25cb726cb9eb88eb815a10d1004"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae92a3bfad3fe33c8dcbdad85112f83fd"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLTree.html#ae92a3bfad3fe33c8dcbdad85112f83fd">userdata</a></td></tr> -<tr class="memdesc:ae92a3bfad3fe33c8dcbdad85112f83fd"><td class="mdescLeft"> </td><td class="mdescRight">Custom user data. <a href="#ae92a3bfad3fe33c8dcbdad85112f83fd">More...</a><br /></td></tr> -<tr class="separator:ae92a3bfad3fe33c8dcbdad85112f83fd"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>UCX AVL Tree. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="a87aff25cb726cb9eb88eb815a10d1004"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a87aff25cb726cb9eb88eb815a10d1004">◆ </a></span>cmpfunc</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> UcxAVLTree::cmpfunc</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compare function that shall be used to compare the <a class="el" href="structUcxAVLNode.html" title="UCX AVL Node. ">UcxAVLNode</a> keys. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxAVLNode.html#ab65a31010d26a3df898e6ba534702af6" title="The key for this node. ">UcxAVLNode.key</a> </dd></dl> - -</div> -</div> -<a id="ae92a3bfad3fe33c8dcbdad85112f83fd"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae92a3bfad3fe33c8dcbdad85112f83fd">◆ </a></span>userdata</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* UcxAVLTree::userdata</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Custom user data. </p> -<p>This data will also be provided to the cmpfunc. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="avl_8h_source.html">avl.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxAllocator.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxAllocator Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxAllocator Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>UCX allocator data structure containing memory management functions. - <a href="structUcxAllocator.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="allocator_8h_source.html">allocator.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a1b78012998d1c28be86dc595f8f0aac9"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAllocator.html#a1b78012998d1c28be86dc595f8f0aac9">pool</a></td></tr> -<tr class="memdesc:a1b78012998d1c28be86dc595f8f0aac9"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to an area of memory or a complex memory pool. <a href="#a1b78012998d1c28be86dc595f8f0aac9">More...</a><br /></td></tr> -<tr class="separator:a1b78012998d1c28be86dc595f8f0aac9"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a013376172be39ed54f77c4be6898845a"><td class="memItemLeft" align="right" valign="top"><a id="a013376172be39ed54f77c4be6898845a"></a> -<a class="el" href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473">ucx_allocator_malloc</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a">malloc</a></td></tr> -<tr class="memdesc:a013376172be39ed54f77c4be6898845a"><td class="mdescLeft"> </td><td class="mdescRight">The <code><a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a" title="The malloc() function for this allocator. ">malloc()</a></code> function for this allocator. <br /></td></tr> -<tr class="separator:a013376172be39ed54f77c4be6898845a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ab94ec1cba45cc4e7d81e1588a11cbb62"><td class="memItemLeft" align="right" valign="top"><a id="ab94ec1cba45cc4e7d81e1588a11cbb62"></a> -<a class="el" href="allocator_8h.html#a2c0aba4221c1ac6801f03ed799f15b12">ucx_allocator_calloc</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAllocator.html#ab94ec1cba45cc4e7d81e1588a11cbb62">calloc</a></td></tr> -<tr class="memdesc:ab94ec1cba45cc4e7d81e1588a11cbb62"><td class="mdescLeft"> </td><td class="mdescRight">The <code><a class="el" href="structUcxAllocator.html#ab94ec1cba45cc4e7d81e1588a11cbb62" title="The calloc() function for this allocator. ">calloc()</a></code> function for this allocator. <br /></td></tr> -<tr class="separator:ab94ec1cba45cc4e7d81e1588a11cbb62"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3550e3847f31d9e9ce3ffcb0d3440c15"><td class="memItemLeft" align="right" valign="top"><a id="a3550e3847f31d9e9ce3ffcb0d3440c15"></a> -<a class="el" href="allocator_8h.html#a6d7cf038a806e327c5da37321d04e426">ucx_allocator_realloc</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAllocator.html#a3550e3847f31d9e9ce3ffcb0d3440c15">realloc</a></td></tr> -<tr class="memdesc:a3550e3847f31d9e9ce3ffcb0d3440c15"><td class="mdescLeft"> </td><td class="mdescRight">The <code><a class="el" href="structUcxAllocator.html#a3550e3847f31d9e9ce3ffcb0d3440c15" title="The realloc() function for this allocator. ">realloc()</a></code> function for this allocator. <br /></td></tr> -<tr class="separator:a3550e3847f31d9e9ce3ffcb0d3440c15"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aecce1840378ed53f1002190f4f87026f"><td class="memItemLeft" align="right" valign="top"><a id="aecce1840378ed53f1002190f4f87026f"></a> -<a class="el" href="allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e">ucx_allocator_free</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f">free</a></td></tr> -<tr class="memdesc:aecce1840378ed53f1002190f4f87026f"><td class="mdescLeft"> </td><td class="mdescRight">The <code><a class="el" href="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f" title="The free() function for this allocator. ">free()</a></code> function for this allocator. <br /></td></tr> -<tr class="separator:aecce1840378ed53f1002190f4f87026f"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>UCX allocator data structure containing memory management functions. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="a1b78012998d1c28be86dc595f8f0aac9"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1b78012998d1c28be86dc595f8f0aac9">◆ </a></span>pool</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* UcxAllocator::pool</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Pointer to an area of memory or a complex memory pool. </p> -<p>This pointer will be passed to any memory management function as first argument. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="allocator_8h_source.html">allocator.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxArray.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxArray Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxArray Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>UCX array type. - <a href="structUcxArray.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="array_8h_source.html">array.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a7ed074887908e45bde7e1fbc67b31c18"><td class="memItemLeft" align="right" valign="top"><a id="a7ed074887908e45bde7e1fbc67b31c18"></a> -size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxArray.html#a7ed074887908e45bde7e1fbc67b31c18">capacity</a></td></tr> -<tr class="memdesc:a7ed074887908e45bde7e1fbc67b31c18"><td class="mdescLeft"> </td><td class="mdescRight">The current capacity of the array. <br /></td></tr> -<tr class="separator:a7ed074887908e45bde7e1fbc67b31c18"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a20c11f2c9048cda80062842b7c094e20"><td class="memItemLeft" align="right" valign="top"><a id="a20c11f2c9048cda80062842b7c094e20"></a> -size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxArray.html#a20c11f2c9048cda80062842b7c094e20">size</a></td></tr> -<tr class="memdesc:a20c11f2c9048cda80062842b7c094e20"><td class="mdescLeft"> </td><td class="mdescRight">The actual number of elements in the array. <br /></td></tr> -<tr class="separator:a20c11f2c9048cda80062842b7c094e20"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac4e9ecdf8a8d010644f6e44dfef8190f"><td class="memItemLeft" align="right" valign="top"><a id="ac4e9ecdf8a8d010644f6e44dfef8190f"></a> -size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxArray.html#ac4e9ecdf8a8d010644f6e44dfef8190f">elemsize</a></td></tr> -<tr class="memdesc:ac4e9ecdf8a8d010644f6e44dfef8190f"><td class="mdescLeft"> </td><td class="mdescRight">The size of an individual element in bytes. <br /></td></tr> -<tr class="separator:ac4e9ecdf8a8d010644f6e44dfef8190f"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a04d2b03d0a45af1fab19b4216602075a"><td class="memItemLeft" align="right" valign="top"><a id="a04d2b03d0a45af1fab19b4216602075a"></a> -void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxArray.html#a04d2b03d0a45af1fab19b4216602075a">data</a></td></tr> -<tr class="memdesc:a04d2b03d0a45af1fab19b4216602075a"><td class="mdescLeft"> </td><td class="mdescRight">A pointer to the data. <br /></td></tr> -<tr class="separator:a04d2b03d0a45af1fab19b4216602075a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2ef31303b7548b9aa8e2b9187e295212"><td class="memItemLeft" align="right" valign="top"><a id="a2ef31303b7548b9aa8e2b9187e295212"></a> -<a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxArray.html#a2ef31303b7548b9aa8e2b9187e295212">allocator</a></td></tr> -<tr class="memdesc:a2ef31303b7548b9aa8e2b9187e295212"><td class="mdescLeft"> </td><td class="mdescRight">The allocator used for the data. <br /></td></tr> -<tr class="separator:a2ef31303b7548b9aa8e2b9187e295212"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>UCX array type. </p> -</div><hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="array_8h_source.html">array.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxBuffer.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,193 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxBuffer Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxBuffer Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>UCX Buffer. - <a href="structUcxBuffer.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="buffer_8h_source.html">buffer.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a1a5076e85acb84b715a53bc0f37fb721"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxBuffer.html#a1a5076e85acb84b715a53bc0f37fb721">space</a></td></tr> -<tr class="memdesc:a1a5076e85acb84b715a53bc0f37fb721"><td class="mdescLeft"> </td><td class="mdescRight">A pointer to the buffer contents. <a href="#a1a5076e85acb84b715a53bc0f37fb721">More...</a><br /></td></tr> -<tr class="separator:a1a5076e85acb84b715a53bc0f37fb721"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7a64288f002cf62b492e2ea49c79615c"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxBuffer.html#a7a64288f002cf62b492e2ea49c79615c">pos</a></td></tr> -<tr class="memdesc:a7a64288f002cf62b492e2ea49c79615c"><td class="mdescLeft"> </td><td class="mdescRight">Current position of the buffer. <a href="#a7a64288f002cf62b492e2ea49c79615c">More...</a><br /></td></tr> -<tr class="separator:a7a64288f002cf62b492e2ea49c79615c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a385661894f3cee9c549bfe07a8b316bf"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxBuffer.html#a385661894f3cee9c549bfe07a8b316bf">capacity</a></td></tr> -<tr class="memdesc:a385661894f3cee9c549bfe07a8b316bf"><td class="mdescLeft"> </td><td class="mdescRight">Current capacity (i.e. <a href="#a385661894f3cee9c549bfe07a8b316bf">More...</a><br /></td></tr> -<tr class="separator:a385661894f3cee9c549bfe07a8b316bf"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aec0aea8325394951d5ad4a9fbb8e1ac7"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxBuffer.html#aec0aea8325394951d5ad4a9fbb8e1ac7">size</a></td></tr> -<tr class="memdesc:aec0aea8325394951d5ad4a9fbb8e1ac7"><td class="mdescLeft"> </td><td class="mdescRight">Current size of the buffer content. <a href="#aec0aea8325394951d5ad4a9fbb8e1ac7">More...</a><br /></td></tr> -<tr class="separator:aec0aea8325394951d5ad4a9fbb8e1ac7"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac642e07b0a03be5aac48eb4aa5bec2f7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxBuffer.html#ac642e07b0a03be5aac48eb4aa5bec2f7">flags</a></td></tr> -<tr class="memdesc:ac642e07b0a03be5aac48eb4aa5bec2f7"><td class="mdescLeft"> </td><td class="mdescRight">Flag register for buffer features. <a href="#ac642e07b0a03be5aac48eb4aa5bec2f7">More...</a><br /></td></tr> -<tr class="separator:ac642e07b0a03be5aac48eb4aa5bec2f7"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>UCX Buffer. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="a385661894f3cee9c549bfe07a8b316bf"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a385661894f3cee9c549bfe07a8b316bf">◆ </a></span>capacity</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxBuffer::capacity</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Current capacity (i.e. </p> -<p>maximum size) of the buffer. </p> - -</div> -</div> -<a id="ac642e07b0a03be5aac48eb4aa5bec2f7"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac642e07b0a03be5aac48eb4aa5bec2f7">◆ </a></span>flags</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int UcxBuffer::flags</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Flag register for buffer features. </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="buffer_8h.html#acc77c8ed7b26854f555d4a5d11e49ea2" title="No buffer features enabled (all flags cleared). ">UCX_BUFFER_DEFAULT</a> </dd> -<dd> -<a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535" title="If this flag is enabled, the buffer will automatically free its contents. ">UCX_BUFFER_AUTOFREE</a> </dd> -<dd> -<a class="el" href="buffer_8h.html#a05f9565f2d04399168c3b1c152a632be" title="If this flag is enabled, the buffer will automatically extends its capacity. ">UCX_BUFFER_AUTOEXTEND</a> </dd></dl> - -</div> -</div> -<a id="a7a64288f002cf62b492e2ea49c79615c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a7a64288f002cf62b492e2ea49c79615c">◆ </a></span>pos</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxBuffer::pos</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Current position of the buffer. </p> - -</div> -</div> -<a id="aec0aea8325394951d5ad4a9fbb8e1ac7"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aec0aea8325394951d5ad4a9fbb8e1ac7">◆ </a></span>size</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxBuffer::size</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Current size of the buffer content. </p> - -</div> -</div> -<a id="a1a5076e85acb84b715a53bc0f37fb721"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1a5076e85acb84b715a53bc0f37fb721">◆ </a></span>space</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">char* UcxBuffer::space</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A pointer to the buffer contents. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="buffer_8h_source.html">buffer.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxKey.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,149 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxKey Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxKey Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Structure to publicly denote a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. - <a href="structUcxKey.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="map_8h_source.html">map.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a6176109f25b34f3fa92bcfbc8ae7a88c"><td class="memItemLeft" align="right" valign="top">const void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c">data</a></td></tr> -<tr class="memdesc:a6176109f25b34f3fa92bcfbc8ae7a88c"><td class="mdescLeft"> </td><td class="mdescRight">The key data. <a href="#a6176109f25b34f3fa92bcfbc8ae7a88c">More...</a><br /></td></tr> -<tr class="separator:a6176109f25b34f3fa92bcfbc8ae7a88c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:abef01de37f355688f2ac797d2c280683"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxKey.html#abef01de37f355688f2ac797d2c280683">len</a></td></tr> -<tr class="memdesc:abef01de37f355688f2ac797d2c280683"><td class="mdescLeft"> </td><td class="mdescRight">The length of the key data. <a href="#abef01de37f355688f2ac797d2c280683">More...</a><br /></td></tr> -<tr class="separator:abef01de37f355688f2ac797d2c280683"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aac9d372ac34a4cbd8459e2b04e505752"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752">hash</a></td></tr> -<tr class="memdesc:aac9d372ac34a4cbd8459e2b04e505752"><td class="mdescLeft"> </td><td class="mdescRight">A cache for the hash value of the key data. <a href="#aac9d372ac34a4cbd8459e2b04e505752">More...</a><br /></td></tr> -<tr class="separator:aac9d372ac34a4cbd8459e2b04e505752"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Structure to publicly denote a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="a6176109f25b34f3fa92bcfbc8ae7a88c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6176109f25b34f3fa92bcfbc8ae7a88c">◆ </a></span>data</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">const void* UcxKey::data</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The key data. </p> - -</div> -</div> -<a id="aac9d372ac34a4cbd8459e2b04e505752"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aac9d372ac34a4cbd8459e2b04e505752">◆ </a></span>hash</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int UcxKey::hash</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A cache for the hash value of the key data. </p> - -</div> -</div> -<a id="abef01de37f355688f2ac797d2c280683"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abef01de37f355688f2ac797d2c280683">◆ </a></span>len</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxKey::len</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The length of the key data. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="map_8h_source.html">map.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxList.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxList Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxList Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>UCX list structure. - <a href="structUcxList.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="list_8h_source.html">list.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a4a44905121b6fc2a088084ce578a9ea2"><td class="memItemLeft" align="right" valign="top"><a id="a4a44905121b6fc2a088084ce578a9ea2"></a> -void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxList.html#a4a44905121b6fc2a088084ce578a9ea2">data</a></td></tr> -<tr class="memdesc:a4a44905121b6fc2a088084ce578a9ea2"><td class="mdescLeft"> </td><td class="mdescRight">List element payload. <br /></td></tr> -<tr class="separator:a4a44905121b6fc2a088084ce578a9ea2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a82a1818f1abf765b026fa91478569a8f"><td class="memItemLeft" align="right" valign="top"><a id="a82a1818f1abf765b026fa91478569a8f"></a> -<a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxList.html#a82a1818f1abf765b026fa91478569a8f">next</a></td></tr> -<tr class="memdesc:a82a1818f1abf765b026fa91478569a8f"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to the next list element or <code>NULL</code>, if this is the last element. <br /></td></tr> -<tr class="separator:a82a1818f1abf765b026fa91478569a8f"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a0f1fddce9088b9c1414745d0b1b5c08b"><td class="memItemLeft" align="right" valign="top"><a id="a0f1fddce9088b9c1414745d0b1b5c08b"></a> -<a class="el" href="structUcxList.html">UcxList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxList.html#a0f1fddce9088b9c1414745d0b1b5c08b">prev</a></td></tr> -<tr class="memdesc:a0f1fddce9088b9c1414745d0b1b5c08b"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to the previous list element or <code>NULL</code>, if this is the first element. <br /></td></tr> -<tr class="separator:a0f1fddce9088b9c1414745d0b1b5c08b"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>UCX list structure. </p> -</div><hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="list_8h_source.html">list.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxLogger.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxLogger Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxLogger Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>The UCX Logger object. - <a href="structUcxLogger.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="logging_8h_source.html">logging.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a33fddf4791e8d49e479ecc78bf5d1b9e"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxLogger.html#a33fddf4791e8d49e479ecc78bf5d1b9e">stream</a></td></tr> -<tr class="memdesc:a33fddf4791e8d49e479ecc78bf5d1b9e"><td class="mdescLeft"> </td><td class="mdescRight">The stream this logger writes its messages to. <a href="#a33fddf4791e8d49e479ecc78bf5d1b9e">More...</a><br /></td></tr> -<tr class="separator:a33fddf4791e8d49e479ecc78bf5d1b9e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ada13bba090a9dc4f8d6cd9be73c60930"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxLogger.html#ada13bba090a9dc4f8d6cd9be73c60930">writer</a></td></tr> -<tr class="memdesc:ada13bba090a9dc4f8d6cd9be73c60930"><td class="mdescLeft"> </td><td class="mdescRight">The write function that shall be used. <a href="#ada13bba090a9dc4f8d6cd9be73c60930">More...</a><br /></td></tr> -<tr class="separator:ada13bba090a9dc4f8d6cd9be73c60930"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a086f75df0f6c81ec491f25c0a4d9262b"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxLogger.html#a086f75df0f6c81ec491f25c0a4d9262b">dateformat</a></td></tr> -<tr class="memdesc:a086f75df0f6c81ec491f25c0a4d9262b"><td class="mdescLeft"> </td><td class="mdescRight">The date format for timestamp outputs including the delimiter (default: <code>"%F %T %z "</code>). <a href="#a086f75df0f6c81ec491f25c0a4d9262b">More...</a><br /></td></tr> -<tr class="separator:a086f75df0f6c81ec491f25c0a4d9262b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2e0ee94c25b2307096c7970280d189cd"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxLogger.html#a2e0ee94c25b2307096c7970280d189cd">level</a></td></tr> -<tr class="memdesc:a2e0ee94c25b2307096c7970280d189cd"><td class="mdescLeft"> </td><td class="mdescRight">The level, this logger operates on. <a href="#a2e0ee94c25b2307096c7970280d189cd">More...</a><br /></td></tr> -<tr class="separator:a2e0ee94c25b2307096c7970280d189cd"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a1de0db2e02dcf03366268f6943f8b97c"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxLogger.html#a1de0db2e02dcf03366268f6943f8b97c">mask</a></td></tr> -<tr class="memdesc:a1de0db2e02dcf03366268f6943f8b97c"><td class="mdescLeft"> </td><td class="mdescRight">A configuration mask for automatic output. <a href="#a1de0db2e02dcf03366268f6943f8b97c">More...</a><br /></td></tr> -<tr class="separator:a1de0db2e02dcf03366268f6943f8b97c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a187129f7bc6e5064b3d92a5f1217f396"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxLogger.html#a187129f7bc6e5064b3d92a5f1217f396">levels</a></td></tr> -<tr class="memdesc:a187129f7bc6e5064b3d92a5f1217f396"><td class="mdescLeft"> </td><td class="mdescRight">A map of valid log levels for this logger. <a href="#a187129f7bc6e5064b3d92a5f1217f396">More...</a><br /></td></tr> -<tr class="separator:a187129f7bc6e5064b3d92a5f1217f396"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>The UCX Logger object. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="a086f75df0f6c81ec491f25c0a4d9262b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a086f75df0f6c81ec491f25c0a4d9262b">◆ </a></span>dateformat</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">char* UcxLogger::dateformat</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The date format for timestamp outputs including the delimiter (default: <code>"%F %T %z "</code>). </p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="logging_8h.html#a38607008268b4f776ee500fb95d2e823" title="Output flag for the timestmap. ">UCX_LOGGER_TIMESTAMP</a> </dd></dl> - -</div> -</div> -<a id="a2e0ee94c25b2307096c7970280d189cd"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a2e0ee94c25b2307096c7970280d189cd">◆ </a></span>level</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">unsigned int UcxLogger::level</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The level, this logger operates on. </p> -<p>If a log command is issued, the message will only be logged, if the log level of the message is less or equal than the log level of the logger. </p> - -</div> -</div> -<a id="a187129f7bc6e5064b3d92a5f1217f396"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a187129f7bc6e5064b3d92a5f1217f396">◆ </a></span>levels</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a>* UcxLogger::levels</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A map of valid log levels for this logger. </p> -<p>The keys represent all valid log levels and the values provide string representations, that are used, if the UCX_LOGGER_LEVEL flag is set.</p> -<p>The exact data types are <code>unsigned int</code> for the key and <code>const char*</code> for the value.</p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="logging_8h.html#aee18bc20e58ffb69910121512c350839" title="Output flag for the log level. ">UCX_LOGGER_LEVEL</a> </dd></dl> - -</div> -</div> -<a id="a1de0db2e02dcf03366268f6943f8b97c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1de0db2e02dcf03366268f6943f8b97c">◆ </a></span>mask</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">unsigned int UcxLogger::mask</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A configuration mask for automatic output. </p> -<p>For each flag that is set, the logger automatically outputs some extra information like the timestamp or the source file and line number. See the documentation for the flags for details. </p> - -</div> -</div> -<a id="a33fddf4791e8d49e479ecc78bf5d1b9e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a33fddf4791e8d49e479ecc78bf5d1b9e">◆ </a></span>stream</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* UcxLogger::stream</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The stream this logger writes its messages to. </p> - -</div> -</div> -<a id="ada13bba090a9dc4f8d6cd9be73c60930"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ada13bba090a9dc4f8d6cd9be73c60930">◆ </a></span>writer</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> UcxLogger::writer</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The write function that shall be used. </p> -<p>For standard file or stdout loggers this might be standard fwrite (default). </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="logging_8h_source.html">logging.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxMap.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,168 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxMap Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxMap Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Structure for the UCX map. - <a href="structUcxMap.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="map_8h_source.html">map.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a531f3e481c1c331cf037b916192e974d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a></td></tr> -<tr class="memdesc:a531f3e481c1c331cf037b916192e974d"><td class="mdescLeft"> </td><td class="mdescRight">An allocator that is used for the map elements. <a href="#a531f3e481c1c331cf037b916192e974d">More...</a><br /></td></tr> -<tr class="separator:a531f3e481c1c331cf037b916192e974d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5792b5037c4f77ea3cb144b66c9b8790"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMapElement.html">UcxMapElement</a> ** </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a></td></tr> -<tr class="memdesc:a5792b5037c4f77ea3cb144b66c9b8790"><td class="mdescLeft"> </td><td class="mdescRight">The array of map element lists. <a href="#a5792b5037c4f77ea3cb144b66c9b8790">More...</a><br /></td></tr> -<tr class="separator:a5792b5037c4f77ea3cb144b66c9b8790"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:afe120846b26d99580a7ff1276464e838"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">size</a></td></tr> -<tr class="memdesc:afe120846b26d99580a7ff1276464e838"><td class="mdescLeft"> </td><td class="mdescRight">The size of the map is the length of the element list array. <a href="#afe120846b26d99580a7ff1276464e838">More...</a><br /></td></tr> -<tr class="separator:afe120846b26d99580a7ff1276464e838"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a14e9163f71f6c014dfa2103de70ae9cd"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd">count</a></td></tr> -<tr class="memdesc:a14e9163f71f6c014dfa2103de70ae9cd"><td class="mdescLeft"> </td><td class="mdescRight">The count of elements currently stored in this map. <a href="#a14e9163f71f6c014dfa2103de70ae9cd">More...</a><br /></td></tr> -<tr class="separator:a14e9163f71f6c014dfa2103de70ae9cd"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Structure for the UCX map. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="a531f3e481c1c331cf037b916192e974d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a531f3e481c1c331cf037b916192e974d">◆ </a></span>allocator</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxAllocator.html">UcxAllocator</a>* UcxMap::allocator</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>An allocator that is used for the map elements. </p> - -</div> -</div> -<a id="a14e9163f71f6c014dfa2103de70ae9cd"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a14e9163f71f6c014dfa2103de70ae9cd">◆ </a></span>count</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxMap::count</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The count of elements currently stored in this map. </p> - -</div> -</div> -<a id="a5792b5037c4f77ea3cb144b66c9b8790"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a5792b5037c4f77ea3cb144b66c9b8790">◆ </a></span>map</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMapElement.html">UcxMapElement</a>** UcxMap::map</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The array of map element lists. </p> - -</div> -</div> -<a id="afe120846b26d99580a7ff1276464e838"></a> -<h2 class="memtitle"><span class="permalink"><a href="#afe120846b26d99580a7ff1276464e838">◆ </a></span>size</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxMap::size</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The size of the map is the length of the element list array. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="map_8h_source.html">map.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxMapElement.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,149 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxMapElement Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxMapElement Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Structure for an element of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. - <a href="structUcxMapElement.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="map_8h_source.html">map.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:abbd7f3bf5beef370f702d2d5bb07733c"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c">data</a></td></tr> -<tr class="memdesc:abbd7f3bf5beef370f702d2d5bb07733c"><td class="mdescLeft"> </td><td class="mdescRight">The value data. <a href="#abbd7f3bf5beef370f702d2d5bb07733c">More...</a><br /></td></tr> -<tr class="separator:abbd7f3bf5beef370f702d2d5bb07733c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a99fe8188b0889201d70ff5f922deef51"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMapElement.html">UcxMapElement</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51">next</a></td></tr> -<tr class="memdesc:a99fe8188b0889201d70ff5f922deef51"><td class="mdescLeft"> </td><td class="mdescRight">A pointer to the next element in the current list. <a href="#a99fe8188b0889201d70ff5f922deef51">More...</a><br /></td></tr> -<tr class="separator:a99fe8188b0889201d70ff5f922deef51"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa446141b708e106e2c8de1303318187c"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structUcxMapKey.html">UcxMapKey</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapElement.html#aa446141b708e106e2c8de1303318187c">key</a></td></tr> -<tr class="memdesc:aa446141b708e106e2c8de1303318187c"><td class="mdescLeft"> </td><td class="mdescRight">The corresponding key. <a href="#aa446141b708e106e2c8de1303318187c">More...</a><br /></td></tr> -<tr class="separator:aa446141b708e106e2c8de1303318187c"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Structure for an element of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="abbd7f3bf5beef370f702d2d5bb07733c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abbd7f3bf5beef370f702d2d5bb07733c">◆ </a></span>data</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* UcxMapElement::data</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The value data. </p> - -</div> -</div> -<a id="aa446141b708e106e2c8de1303318187c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa446141b708e106e2c8de1303318187c">◆ </a></span>key</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">struct <a class="el" href="structUcxMapKey.html">UcxMapKey</a> UcxMapElement::key</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The corresponding key. </p> - -</div> -</div> -<a id="a99fe8188b0889201d70ff5f922deef51"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a99fe8188b0889201d70ff5f922deef51">◆ </a></span>next</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMapElement.html">UcxMapElement</a>* UcxMapElement::next</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A pointer to the next element in the current list. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="map_8h_source.html">map.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxMapIterator.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,150 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxMapIterator Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxMapIterator Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Structure for an iterator over a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. - <a href="structUcxMapIterator.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="map_8h_source.html">map.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:af88d6e22547d09fe1d665dd650dcdb95"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMap.html">UcxMap</a> const * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95">map</a></td></tr> -<tr class="memdesc:af88d6e22547d09fe1d665dd650dcdb95"><td class="mdescLeft"> </td><td class="mdescRight">The map to iterate over. <a href="#af88d6e22547d09fe1d665dd650dcdb95">More...</a><br /></td></tr> -<tr class="separator:af88d6e22547d09fe1d665dd650dcdb95"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af1fc40f899f37280adb5b85acf6e742f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxMapElement.html">UcxMapElement</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f">cur</a></td></tr> -<tr class="memdesc:af1fc40f899f37280adb5b85acf6e742f"><td class="mdescLeft"> </td><td class="mdescRight">The current map element. <a href="#af1fc40f899f37280adb5b85acf6e742f">More...</a><br /></td></tr> -<tr class="separator:af1fc40f899f37280adb5b85acf6e742f"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac2376545c8816dd6895de4995e558c65"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65">index</a></td></tr> -<tr class="memdesc:ac2376545c8816dd6895de4995e558c65"><td class="mdescLeft"> </td><td class="mdescRight">The current index of the element list array. <a href="#ac2376545c8816dd6895de4995e558c65">More...</a><br /></td></tr> -<tr class="separator:ac2376545c8816dd6895de4995e558c65"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Structure for an iterator over a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="af1fc40f899f37280adb5b85acf6e742f"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af1fc40f899f37280adb5b85acf6e742f">◆ </a></span>cur</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMapElement.html">UcxMapElement</a>* UcxMapIterator::cur</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The current map element. </p> - -</div> -</div> -<a id="ac2376545c8816dd6895de4995e558c65"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac2376545c8816dd6895de4995e558c65">◆ </a></span>index</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxMapIterator::index</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The current index of the element list array. </p> -<p><b>Attention: </b> this is <b>NOT</b> the element index! Do <b>NOT</b> manually iterate over the map by increasing this index. Use <a class="el" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91" title="Proceeds to the next element of the map (if any). ">ucx_map_iter_next()</a>. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790" title="The array of map element lists. ">UcxMap.map</a> </dd></dl> - -</div> -</div> -<a id="af88d6e22547d09fe1d665dd650dcdb95"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af88d6e22547d09fe1d665dd650dcdb95">◆ </a></span>map</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxMap.html">UcxMap</a> const* UcxMapIterator::map</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The map to iterate over. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="map_8h_source.html">map.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxMapKey.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,149 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxMapKey Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxMapKey Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Internal structure for a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. - <a href="structUcxMapKey.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="map_8h_source.html">map.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:ab71d1841e4f538628c00f782267fb6d5"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5">data</a></td></tr> -<tr class="memdesc:ab71d1841e4f538628c00f782267fb6d5"><td class="mdescLeft"> </td><td class="mdescRight">The key data. <a href="#ab71d1841e4f538628c00f782267fb6d5">More...</a><br /></td></tr> -<tr class="separator:ab71d1841e4f538628c00f782267fb6d5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a504d46caa45c79cd87ff8cd835654270"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270">len</a></td></tr> -<tr class="memdesc:a504d46caa45c79cd87ff8cd835654270"><td class="mdescLeft"> </td><td class="mdescRight">The length of the key data. <a href="#a504d46caa45c79cd87ff8cd835654270">More...</a><br /></td></tr> -<tr class="separator:a504d46caa45c79cd87ff8cd835654270"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a34c1f8fec98174583944fffd30e7c913"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913">hash</a></td></tr> -<tr class="memdesc:a34c1f8fec98174583944fffd30e7c913"><td class="mdescLeft"> </td><td class="mdescRight">The hash value of the key data. <a href="#a34c1f8fec98174583944fffd30e7c913">More...</a><br /></td></tr> -<tr class="separator:a34c1f8fec98174583944fffd30e7c913"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Internal structure for a key of a <a class="el" href="structUcxMap.html" title="Structure for the UCX map. ">UcxMap</a>. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="ab71d1841e4f538628c00f782267fb6d5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ab71d1841e4f538628c00f782267fb6d5">◆ </a></span>data</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* UcxMapKey::data</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The key data. </p> - -</div> -</div> -<a id="a34c1f8fec98174583944fffd30e7c913"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a34c1f8fec98174583944fffd30e7c913">◆ </a></span>hash</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int UcxMapKey::hash</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The hash value of the key data. </p> - -</div> -</div> -<a id="a504d46caa45c79cd87ff8cd835654270"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a504d46caa45c79cd87ff8cd835654270">◆ </a></span>len</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxMapKey::len</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The length of the key data. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="map_8h_source.html">map.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxMempool.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxMempool Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxMempool Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>UCX mempool structure. - <a href="structUcxMempool.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="mempool_8h_source.html">mempool.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:ac45fd1e9269399e4c434d6bdaa770d92"><td class="memItemLeft" align="right" valign="top"><a id="ac45fd1e9269399e4c434d6bdaa770d92"></a> -<a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMempool.html#ac45fd1e9269399e4c434d6bdaa770d92">allocator</a></td></tr> -<tr class="memdesc:ac45fd1e9269399e4c434d6bdaa770d92"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> based on this pool. <br /></td></tr> -<tr class="separator:ac45fd1e9269399e4c434d6bdaa770d92"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae98c1b0150bb119ee0a8506a6f310d6e"><td class="memItemLeft" align="right" valign="top">void ** </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMempool.html#ae98c1b0150bb119ee0a8506a6f310d6e">data</a></td></tr> -<tr class="memdesc:ae98c1b0150bb119ee0a8506a6f310d6e"><td class="mdescLeft"> </td><td class="mdescRight">List of pointers to pooled memory. <a href="#ae98c1b0150bb119ee0a8506a6f310d6e">More...</a><br /></td></tr> -<tr class="separator:ae98c1b0150bb119ee0a8506a6f310d6e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa3a73ab231e1bc207d526f46f1c1e23a"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMempool.html#aa3a73ab231e1bc207d526f46f1c1e23a">ndata</a></td></tr> -<tr class="memdesc:aa3a73ab231e1bc207d526f46f1c1e23a"><td class="mdescLeft"> </td><td class="mdescRight">Count of pooled memory items. <a href="#aa3a73ab231e1bc207d526f46f1c1e23a">More...</a><br /></td></tr> -<tr class="separator:aa3a73ab231e1bc207d526f46f1c1e23a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a304729986f2894971d0469e71e196bf0"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxMempool.html#a304729986f2894971d0469e71e196bf0">size</a></td></tr> -<tr class="memdesc:a304729986f2894971d0469e71e196bf0"><td class="mdescLeft"> </td><td class="mdescRight">Memory pool size. <a href="#a304729986f2894971d0469e71e196bf0">More...</a><br /></td></tr> -<tr class="separator:a304729986f2894971d0469e71e196bf0"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>UCX mempool structure. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="ae98c1b0150bb119ee0a8506a6f310d6e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae98c1b0150bb119ee0a8506a6f310d6e">◆ </a></span>data</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void** UcxMempool::data</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>List of pointers to pooled memory. </p> - -</div> -</div> -<a id="aa3a73ab231e1bc207d526f46f1c1e23a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa3a73ab231e1bc207d526f46f1c1e23a">◆ </a></span>ndata</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxMempool::ndata</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Count of pooled memory items. </p> - -</div> -</div> -<a id="a304729986f2894971d0469e71e196bf0"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a304729986f2894971d0469e71e196bf0">◆ </a></span>size</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxMempool::size</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Memory pool size. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="mempool_8h_source.html">mempool.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxProperties.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,313 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxProperties Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxProperties Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p><a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object for parsing properties data. - <a href="structUcxProperties.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="properties_8h_source.html">properties.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a6bb4d29686df41a0f42641ee15232bfd"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#a6bb4d29686df41a0f42641ee15232bfd">buffer</a></td></tr> -<tr class="memdesc:a6bb4d29686df41a0f42641ee15232bfd"><td class="mdescLeft"> </td><td class="mdescRight">Input buffer (don't set manually). <a href="#a6bb4d29686df41a0f42641ee15232bfd">More...</a><br /></td></tr> -<tr class="separator:a6bb4d29686df41a0f42641ee15232bfd"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4e7524434525267e29f493a25dcca6b5"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#a4e7524434525267e29f493a25dcca6b5">buflen</a></td></tr> -<tr class="memdesc:a4e7524434525267e29f493a25dcca6b5"><td class="mdescLeft"> </td><td class="mdescRight">Length of the input buffer (don't set manually). <a href="#a4e7524434525267e29f493a25dcca6b5">More...</a><br /></td></tr> -<tr class="separator:a4e7524434525267e29f493a25dcca6b5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:addd36ac8e5e42241c0a57453633970db"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#addd36ac8e5e42241c0a57453633970db">pos</a></td></tr> -<tr class="memdesc:addd36ac8e5e42241c0a57453633970db"><td class="mdescLeft"> </td><td class="mdescRight">Current buffer position (don't set manually). <a href="#addd36ac8e5e42241c0a57453633970db">More...</a><br /></td></tr> -<tr class="separator:addd36ac8e5e42241c0a57453633970db"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a68556d4260153f58dde44e4c365edce6"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#a68556d4260153f58dde44e4c365edce6">tmp</a></td></tr> -<tr class="memdesc:a68556d4260153f58dde44e4c365edce6"><td class="mdescLeft"> </td><td class="mdescRight">Internal temporary buffer (don't set manually). <a href="#a68556d4260153f58dde44e4c365edce6">More...</a><br /></td></tr> -<tr class="separator:a68556d4260153f58dde44e4c365edce6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8a81853d5903bee2f4e1fa53fdffae6e"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#a8a81853d5903bee2f4e1fa53fdffae6e">tmplen</a></td></tr> -<tr class="memdesc:a8a81853d5903bee2f4e1fa53fdffae6e"><td class="mdescLeft"> </td><td class="mdescRight">Internal temporary buffer length (don't set manually). <a href="#a8a81853d5903bee2f4e1fa53fdffae6e">More...</a><br /></td></tr> -<tr class="separator:a8a81853d5903bee2f4e1fa53fdffae6e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5af10131ea9f679b4ee174499f92e210"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#a5af10131ea9f679b4ee174499f92e210">tmpcap</a></td></tr> -<tr class="memdesc:a5af10131ea9f679b4ee174499f92e210"><td class="mdescLeft"> </td><td class="mdescRight">Internal temporary buffer capacity (don't set manually). <a href="#a5af10131ea9f679b4ee174499f92e210">More...</a><br /></td></tr> -<tr class="separator:a5af10131ea9f679b4ee174499f92e210"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a34f71a6ab6dcb6892e3b4eb802e75bff"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#a34f71a6ab6dcb6892e3b4eb802e75bff">error</a></td></tr> -<tr class="memdesc:a34f71a6ab6dcb6892e3b4eb802e75bff"><td class="mdescLeft"> </td><td class="mdescRight">Parser error code. <a href="#a34f71a6ab6dcb6892e3b4eb802e75bff">More...</a><br /></td></tr> -<tr class="separator:a34f71a6ab6dcb6892e3b4eb802e75bff"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af6adb3f69616cf9d2bb5ea7b4d837ca5"><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#af6adb3f69616cf9d2bb5ea7b4d837ca5">delimiter</a></td></tr> -<tr class="memdesc:af6adb3f69616cf9d2bb5ea7b4d837ca5"><td class="mdescLeft"> </td><td class="mdescRight">The delimiter that shall be used. <a href="#af6adb3f69616cf9d2bb5ea7b4d837ca5">More...</a><br /></td></tr> -<tr class="separator:af6adb3f69616cf9d2bb5ea7b4d837ca5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:afaa2e6a289fa6949b7b01df35fa5def8"><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#afaa2e6a289fa6949b7b01df35fa5def8">comment1</a></td></tr> -<tr class="memdesc:afaa2e6a289fa6949b7b01df35fa5def8"><td class="mdescLeft"> </td><td class="mdescRight">The first comment character. <a href="#afaa2e6a289fa6949b7b01df35fa5def8">More...</a><br /></td></tr> -<tr class="separator:afaa2e6a289fa6949b7b01df35fa5def8"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9ea7ecb414ca8bc7bef62cdd19cc6363"><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#a9ea7ecb414ca8bc7bef62cdd19cc6363">comment2</a></td></tr> -<tr class="memdesc:a9ea7ecb414ca8bc7bef62cdd19cc6363"><td class="mdescLeft"> </td><td class="mdescRight">The second comment character. <a href="#a9ea7ecb414ca8bc7bef62cdd19cc6363">More...</a><br /></td></tr> -<tr class="separator:a9ea7ecb414ca8bc7bef62cdd19cc6363"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5f3e561e32bac03e36a191a6940cca92"><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxProperties.html#a5f3e561e32bac03e36a191a6940cca92">comment3</a></td></tr> -<tr class="memdesc:a5f3e561e32bac03e36a191a6940cca92"><td class="mdescLeft"> </td><td class="mdescRight">The third comment character. <a href="#a5f3e561e32bac03e36a191a6940cca92">More...</a><br /></td></tr> -<tr class="separator:a5f3e561e32bac03e36a191a6940cca92"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p><a class="el" href="structUcxProperties.html" title="UcxProperties object for parsing properties data. ">UcxProperties</a> object for parsing properties data. </p> -<p>Most of the fields are for internal use only. You may configure the properties parser, e.g. by changing the used delimiter or specifying up to three different characters that shall introduce comments. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="a6bb4d29686df41a0f42641ee15232bfd"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6bb4d29686df41a0f42641ee15232bfd">◆ </a></span>buffer</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">char* UcxProperties::buffer</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Input buffer (don't set manually). </p> -<p>Automatically set by calls to <a class="el" href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d" title="Sets the input buffer for the properties parser. ">ucx_properties_fill()</a>. </p> - -</div> -</div> -<a id="a4e7524434525267e29f493a25dcca6b5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4e7524434525267e29f493a25dcca6b5">◆ </a></span>buflen</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxProperties::buflen</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Length of the input buffer (don't set manually). </p> -<p>Automatically set by calls to <a class="el" href="properties_8h.html#aaf8de121764a4d22c763ff2ab41f3a4d" title="Sets the input buffer for the properties parser. ">ucx_properties_fill()</a>. </p> - -</div> -</div> -<a id="afaa2e6a289fa6949b7b01df35fa5def8"></a> -<h2 class="memtitle"><span class="permalink"><a href="#afaa2e6a289fa6949b7b01df35fa5def8">◆ </a></span>comment1</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">char UcxProperties::comment1</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The first comment character. </p> -<p>This is '#' by default. </p> - -</div> -</div> -<a id="a9ea7ecb414ca8bc7bef62cdd19cc6363"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9ea7ecb414ca8bc7bef62cdd19cc6363">◆ </a></span>comment2</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">char UcxProperties::comment2</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The second comment character. </p> -<p>This is not set by default. </p> - -</div> -</div> -<a id="a5f3e561e32bac03e36a191a6940cca92"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a5f3e561e32bac03e36a191a6940cca92">◆ </a></span>comment3</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">char UcxProperties::comment3</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The third comment character. </p> -<p>This is not set by default. </p> - -</div> -</div> -<a id="af6adb3f69616cf9d2bb5ea7b4d837ca5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af6adb3f69616cf9d2bb5ea7b4d837ca5">◆ </a></span>delimiter</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">char UcxProperties::delimiter</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The delimiter that shall be used. </p> -<p>This is '=' by default. </p> - -</div> -</div> -<a id="a34f71a6ab6dcb6892e3b4eb802e75bff"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a34f71a6ab6dcb6892e3b4eb802e75bff">◆ </a></span>error</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int UcxProperties::error</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Parser error code. </p> -<p>This is always 0 on success and a nonzero value on syntax errors. The value is set by <a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c" title="Retrieves the next key/value-pair. ">ucx_properties_next()</a>. </p> - -</div> -</div> -<a id="addd36ac8e5e42241c0a57453633970db"></a> -<h2 class="memtitle"><span class="permalink"><a href="#addd36ac8e5e42241c0a57453633970db">◆ </a></span>pos</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxProperties::pos</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Current buffer position (don't set manually). </p> -<p>Used by <a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c" title="Retrieves the next key/value-pair. ">ucx_properties_next()</a>. </p> - -</div> -</div> -<a id="a68556d4260153f58dde44e4c365edce6"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a68556d4260153f58dde44e4c365edce6">◆ </a></span>tmp</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">char* UcxProperties::tmp</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Internal temporary buffer (don't set manually). </p> -<p>Used by <a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c" title="Retrieves the next key/value-pair. ">ucx_properties_next()</a>. </p> - -</div> -</div> -<a id="a5af10131ea9f679b4ee174499f92e210"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a5af10131ea9f679b4ee174499f92e210">◆ </a></span>tmpcap</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxProperties::tmpcap</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Internal temporary buffer capacity (don't set manually). </p> -<p>Used by <a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c" title="Retrieves the next key/value-pair. ">ucx_properties_next()</a>. </p> - -</div> -</div> -<a id="a8a81853d5903bee2f4e1fa53fdffae6e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8a81853d5903bee2f4e1fa53fdffae6e">◆ </a></span>tmplen</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxProperties::tmplen</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Internal temporary buffer length (don't set manually). </p> -<p>Used by <a class="el" href="properties_8h.html#a7e03bc573d45d48c538cd721e810d33c" title="Retrieves the next key/value-pair. ">ucx_properties_next()</a>. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="properties_8h_source.html">properties.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxStack.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxStack Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxStack Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>UCX stack structure. - <a href="structUcxStack.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="stack_8h_source.html">stack.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a33cda4f6890ac56ab31701598bc1ae10"><td class="memItemLeft" align="right" valign="top"><a id="a33cda4f6890ac56ab31701598bc1ae10"></a> -<a class="el" href="structUcxAllocator.html">UcxAllocator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxStack.html#a33cda4f6890ac56ab31701598bc1ae10">allocator</a></td></tr> -<tr class="memdesc:a33cda4f6890ac56ab31701598bc1ae10"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> based on this stack. <br /></td></tr> -<tr class="separator:a33cda4f6890ac56ab31701598bc1ae10"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4df86b1917bfc3bbf760220870638143"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxStack.html#a4df86b1917bfc3bbf760220870638143">size</a></td></tr> -<tr class="memdesc:a4df86b1917bfc3bbf760220870638143"><td class="mdescLeft"> </td><td class="mdescRight">Stack size. <a href="#a4df86b1917bfc3bbf760220870638143">More...</a><br /></td></tr> -<tr class="separator:a4df86b1917bfc3bbf760220870638143"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af64d528744bf3a47fec87d2e45d2992f"><td class="memItemLeft" align="right" valign="top"><a id="af64d528744bf3a47fec87d2e45d2992f"></a> -char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxStack.html#af64d528744bf3a47fec87d2e45d2992f">space</a></td></tr> -<tr class="memdesc:af64d528744bf3a47fec87d2e45d2992f"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to the bottom of the stack. <br /></td></tr> -<tr class="separator:af64d528744bf3a47fec87d2e45d2992f"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af0ff6f58edce469f17683013b86ade27"><td class="memItemLeft" align="right" valign="top"><a id="af0ff6f58edce469f17683013b86ade27"></a> -char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxStack.html#af0ff6f58edce469f17683013b86ade27">top</a></td></tr> -<tr class="memdesc:af0ff6f58edce469f17683013b86ade27"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to the top of the stack. <br /></td></tr> -<tr class="separator:af0ff6f58edce469f17683013b86ade27"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>UCX stack structure. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="a4df86b1917bfc3bbf760220870638143"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4df86b1917bfc3bbf760220870638143">◆ </a></span>size</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t UcxStack::size</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Stack size. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="stack_8h_source.html">stack.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxTestList.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxTestList Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxTestList Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Structure for the internal list of test cases. - <a href="structUcxTestList.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="test_8h_source.html">test.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a6022faa52e772b073141ca0a2f5a56c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="test_8h.html#ae906817354c010b83c2784260cce7a1c">UcxTest</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxTestList.html#a6022faa52e772b073141ca0a2f5a56c9">test</a></td></tr> -<tr class="memdesc:a6022faa52e772b073141ca0a2f5a56c9"><td class="mdescLeft"> </td><td class="mdescRight">Test case. <a href="#a6022faa52e772b073141ca0a2f5a56c9">More...</a><br /></td></tr> -<tr class="separator:a6022faa52e772b073141ca0a2f5a56c9"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aeebb80ff75d9f6f82ab6dc2641a3c74e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxTestList.html">UcxTestList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxTestList.html#aeebb80ff75d9f6f82ab6dc2641a3c74e">next</a></td></tr> -<tr class="memdesc:aeebb80ff75d9f6f82ab6dc2641a3c74e"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to the next list element. <a href="#aeebb80ff75d9f6f82ab6dc2641a3c74e">More...</a><br /></td></tr> -<tr class="separator:aeebb80ff75d9f6f82ab6dc2641a3c74e"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Structure for the internal list of test cases. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="aeebb80ff75d9f6f82ab6dc2641a3c74e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aeebb80ff75d9f6f82ab6dc2641a3c74e">◆ </a></span>next</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxTestList.html">UcxTestList</a>* UcxTestList::next</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Pointer to the next list element. </p> - -</div> -</div> -<a id="a6022faa52e772b073141ca0a2f5a56c9"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6022faa52e772b073141ca0a2f5a56c9">◆ </a></span>test</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="test_8h.html#ae906817354c010b83c2784260cce7a1c">UcxTest</a> UcxTestList::test</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Test case. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="test_8h_source.html">test.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structUcxTestSuite.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,150 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: UcxTestSuite Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">UcxTestSuite Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>A test suite containing multiple test cases. - <a href="structUcxTestSuite.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="test_8h_source.html">test.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a6cefa870a3c2e38d6ee682e38643dbbb"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxTestSuite.html#a6cefa870a3c2e38d6ee682e38643dbbb">success</a></td></tr> -<tr class="memdesc:a6cefa870a3c2e38d6ee682e38643dbbb"><td class="mdescLeft"> </td><td class="mdescRight">The number of successful tests after the suite has been run. <a href="#a6cefa870a3c2e38d6ee682e38643dbbb">More...</a><br /></td></tr> -<tr class="separator:a6cefa870a3c2e38d6ee682e38643dbbb"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:abfd240541d1e956e49cde0ac36286951"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxTestSuite.html#abfd240541d1e956e49cde0ac36286951">failure</a></td></tr> -<tr class="memdesc:abfd240541d1e956e49cde0ac36286951"><td class="mdescLeft"> </td><td class="mdescRight">The number of failed tests after the suite has been run. <a href="#abfd240541d1e956e49cde0ac36286951">More...</a><br /></td></tr> -<tr class="separator:abfd240541d1e956e49cde0ac36286951"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a630677a70ebc2c3296704cda3196492b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxTestList.html">UcxTestList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxTestSuite.html#a630677a70ebc2c3296704cda3196492b">tests</a></td></tr> -<tr class="memdesc:a630677a70ebc2c3296704cda3196492b"><td class="mdescLeft"> </td><td class="mdescRight">Internal list of test cases. <a href="#a630677a70ebc2c3296704cda3196492b">More...</a><br /></td></tr> -<tr class="separator:a630677a70ebc2c3296704cda3196492b"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>A test suite containing multiple test cases. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="abfd240541d1e956e49cde0ac36286951"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abfd240541d1e956e49cde0ac36286951">◆ </a></span>failure</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">unsigned int UcxTestSuite::failure</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The number of failed tests after the suite has been run. </p> - -</div> -</div> -<a id="a6cefa870a3c2e38d6ee682e38643dbbb"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6cefa870a3c2e38d6ee682e38643dbbb">◆ </a></span>success</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">unsigned int UcxTestSuite::success</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The number of successful tests after the suite has been run. </p> - -</div> -</div> -<a id="a630677a70ebc2c3296704cda3196492b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a630677a70ebc2c3296704cda3196492b">◆ </a></span>tests</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxTestList.html">UcxTestList</a>* UcxTestSuite::tests</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Internal list of test cases. </p> -<p>Use <a class="el" href="test_8h.html#a8dfabc42f183d3a4d79379a5d17bf67d" title="Registers a test function with the specified test suite. ">ucx_test_register()</a> to add tests to this list. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="test_8h_source.html">test.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structscstr__t.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: scstr_t Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">scstr_t Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>The UCX string structure for immutable (constant) strings. - <a href="structscstr__t.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="string_8h_source.html">string.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:a305fd48934b474a9bf4a40869030e391"><td class="memItemLeft" align="right" valign="top"><a id="a305fd48934b474a9bf4a40869030e391"></a> -const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391">ptr</a></td></tr> -<tr class="memdesc:a305fd48934b474a9bf4a40869030e391"><td class="mdescLeft"> </td><td class="mdescRight">A constant pointer to the immutable string (<b>not necessarily <code>NULL</code>-terminated</b>) <br /></td></tr> -<tr class="separator:a305fd48934b474a9bf4a40869030e391"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aaa0229f64f1057b6f65adededaa5a172"><td class="memItemLeft" align="right" valign="top"><a id="aaa0229f64f1057b6f65adededaa5a172"></a> -size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172">length</a></td></tr> -<tr class="memdesc:aaa0229f64f1057b6f65adededaa5a172"><td class="mdescLeft"> </td><td class="mdescRight">The length of the string. <br /></td></tr> -<tr class="separator:aaa0229f64f1057b6f65adededaa5a172"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>The UCX string structure for immutable (constant) strings. </p> -</div><hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="string_8h_source.html">string.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structsstr__t.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: sstr_t Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">sstr_t Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>The UCX string structure. - <a href="structsstr__t.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="string_8h_source.html">string.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:af8049914efc1e67f7de3ee55ec0611b0"><td class="memItemLeft" align="right" valign="top"><a id="af8049914efc1e67f7de3ee55ec0611b0"></a> -char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0">ptr</a></td></tr> -<tr class="memdesc:af8049914efc1e67f7de3ee55ec0611b0"><td class="mdescLeft"> </td><td class="mdescRight">A pointer to the string (<b>not necessarily <code>NULL</code>-terminated</b>) <br /></td></tr> -<tr class="separator:af8049914efc1e67f7de3ee55ec0611b0"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5cf571708cdff92e45f08458f2b98229"><td class="memItemLeft" align="right" valign="top"><a id="a5cf571708cdff92e45f08458f2b98229"></a> -size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229">length</a></td></tr> -<tr class="memdesc:a5cf571708cdff92e45f08458f2b98229"><td class="mdescLeft"> </td><td class="mdescRight">The length of the string. <br /></td></tr> -<tr class="separator:a5cf571708cdff92e45f08458f2b98229"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>The UCX string structure. </p> -</div><hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="string_8h_source.html">string.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structucx__memchunk.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: ucx_memchunk Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">ucx_memchunk Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Capsule for destructible memory chunks. - <a href="structucx__memchunk.html#details">More...</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:ac7b5e3fda47b917d6fb2a1d7ea28447b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structucx__memchunk.html#ac7b5e3fda47b917d6fb2a1d7ea28447b">destructor</a></td></tr> -<tr class="memdesc:ac7b5e3fda47b917d6fb2a1d7ea28447b"><td class="mdescLeft"> </td><td class="mdescRight">The destructor for the memory chunk. <a href="#ac7b5e3fda47b917d6fb2a1d7ea28447b">More...</a><br /></td></tr> -<tr class="separator:ac7b5e3fda47b917d6fb2a1d7ea28447b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ab86550503e5f019bfa61a1e91f1c40da"><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="structucx__memchunk.html#ab86550503e5f019bfa61a1e91f1c40da">c</a></td></tr> -<tr class="memdesc:ab86550503e5f019bfa61a1e91f1c40da"><td class="mdescLeft"> </td><td class="mdescRight">First byte of the memory chunk. <a href="#ab86550503e5f019bfa61a1e91f1c40da">More...</a><br /></td></tr> -<tr class="separator:ab86550503e5f019bfa61a1e91f1c40da"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Capsule for destructible memory chunks. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="ab86550503e5f019bfa61a1e91f1c40da"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ab86550503e5f019bfa61a1e91f1c40da">◆ </a></span>c</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">char ucx_memchunk::c</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>First byte of the memory chunk. </p> -<p>Note, that the address <code>&c</code> is also the address of the whole memory chunk. </p> - -</div> -</div> -<a id="ac7b5e3fda47b917d6fb2a1d7ea28447b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac7b5e3fda47b917d6fb2a1d7ea28447b">◆ </a></span>destructor</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> ucx_memchunk::destructor</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The destructor for the memory chunk. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/mempool.c</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structucx__regdestr.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: ucx_regdestr Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">ucx_regdestr Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Capsule for data and its destructor. - <a href="structucx__regdestr.html#details">More...</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:acea2a3bb66909aa800a931ac8b0cce56"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structucx__regdestr.html#acea2a3bb66909aa800a931ac8b0cce56">destructor</a></td></tr> -<tr class="memdesc:acea2a3bb66909aa800a931ac8b0cce56"><td class="mdescLeft"> </td><td class="mdescRight">The destructor for the data. <a href="#acea2a3bb66909aa800a931ac8b0cce56">More...</a><br /></td></tr> -<tr class="separator:acea2a3bb66909aa800a931ac8b0cce56"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aac0e9ec8df4aab08728b4f8292b5f5e7"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structucx__regdestr.html#aac0e9ec8df4aab08728b4f8292b5f5e7">ptr</a></td></tr> -<tr class="memdesc:aac0e9ec8df4aab08728b4f8292b5f5e7"><td class="mdescLeft"> </td><td class="mdescRight">A pointer to the data. <a href="#aac0e9ec8df4aab08728b4f8292b5f5e7">More...</a><br /></td></tr> -<tr class="separator:aac0e9ec8df4aab08728b4f8292b5f5e7"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Capsule for data and its destructor. </p> -</div><h2 class="groupheader">Field Documentation</h2> -<a id="acea2a3bb66909aa800a931ac8b0cce56"></a> -<h2 class="memtitle"><span class="permalink"><a href="#acea2a3bb66909aa800a931ac8b0cce56">◆ </a></span>destructor</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> ucx_regdestr::destructor</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>The destructor for the data. </p> - -</div> -</div> -<a id="aac0e9ec8df4aab08728b4f8292b5f5e7"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aac0e9ec8df4aab08728b4f8292b5f5e7">◆ </a></span>ptr</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_regdestr::ptr</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A pointer to the data. </p> - -</div> -</div> -<hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/mempool.c</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/structucx__stack__metadata.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: ucx_stack_metadata Struct Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Data Fields</a> </div> - <div class="headertitle"> -<div class="title">ucx_stack_metadata Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Metadata for each UCX stack element. - <a href="structucx__stack__metadata.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="stack_8h_source.html">stack.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Data Fields</h2></td></tr> -<tr class="memitem:ad46d2e8e5b0acf05f2def41d451c5579"><td class="memItemLeft" align="right" valign="top"><a id="ad46d2e8e5b0acf05f2def41d451c5579"></a> -char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structucx__stack__metadata.html#ad46d2e8e5b0acf05f2def41d451c5579">prev</a></td></tr> -<tr class="memdesc:ad46d2e8e5b0acf05f2def41d451c5579"><td class="mdescLeft"> </td><td class="mdescRight">Location of the previous element (<code>NULL</code> if this is the first) <br /></td></tr> -<tr class="separator:ad46d2e8e5b0acf05f2def41d451c5579"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae2a2848b721cfa44a7e963484c5e4b28"><td class="memItemLeft" align="right" valign="top"><a id="ae2a2848b721cfa44a7e963484c5e4b28"></a> -size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structucx__stack__metadata.html#ae2a2848b721cfa44a7e963484c5e4b28">size</a></td></tr> -<tr class="memdesc:ae2a2848b721cfa44a7e963484c5e4b28"><td class="mdescLeft"> </td><td class="mdescRight">Size of this element. <br /></td></tr> -<tr class="separator:ae2a2848b721cfa44a7e963484c5e4b28"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Metadata for each UCX stack element. </p> -</div><hr/>The documentation for this struct was generated from the following file:<ul> -<li>/home/mike/workspace/c/ucx/src/ucx/<a class="el" href="stack_8h_source.html">stack.h</a></li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/tabs.css Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:transparent}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
--- a/docs/api-2.1/test_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,547 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/test.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Data Structures</a> | -<a href="#define-members">Macros</a> | -<a href="#typedef-members">Typedefs</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">test.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>UCX Test Framework. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include <stdio.h></code><br /> -<code>#include <<a class="el" href="string_8h_source.html">string.h</a>></code><br /> -<code>#include <setjmp.h></code><br /> -</div> -<p><a href="test_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Data Structures</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxTestList.html">UcxTestList</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Structure for the internal list of test cases. <a href="structUcxTestList.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxTestSuite.html">UcxTestSuite</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A test suite containing multiple test cases. <a href="structUcxTestSuite.html#details">More...</a><br /></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:a828bb1dfda1afd67ca795075903d227d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a828bb1dfda1afd67ca795075903d227d">__FUNCTION__</a>   __func__</td></tr> -<tr class="memdesc:a828bb1dfda1afd67ca795075903d227d"><td class="mdescLeft"> </td><td class="mdescRight">Alias for the <code>__func__</code> preprocessor macro. <a href="#a828bb1dfda1afd67ca795075903d227d">More...</a><br /></td></tr> -<tr class="separator:a828bb1dfda1afd67ca795075903d227d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a66cfb29c329fc9eaef071f2449836659"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a66cfb29c329fc9eaef071f2449836659">UCX_TEST</a>(name)   void name(<a class="el" href="structUcxTestSuite.html">UcxTestSuite</a>* _suite_,FILE *_output_)</td></tr> -<tr class="memdesc:a66cfb29c329fc9eaef071f2449836659"><td class="mdescLeft"> </td><td class="mdescRight">Macro for a <a class="el" href="test_8h.html#ae906817354c010b83c2784260cce7a1c" title="Pointer to a test function. ">UcxTest</a> function header. <a href="#a66cfb29c329fc9eaef071f2449836659">More...</a><br /></td></tr> -<tr class="separator:a66cfb29c329fc9eaef071f2449836659"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a0547b8d4f3bcdb0633fdd8925e8aa5d4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4">UCX_TEST_BEGIN</a></td></tr> -<tr class="memdesc:a0547b8d4f3bcdb0633fdd8925e8aa5d4"><td class="mdescLeft"> </td><td class="mdescRight">Marks the begin of a test. <a href="#a0547b8d4f3bcdb0633fdd8925e8aa5d4">More...</a><br /></td></tr> -<tr class="separator:a0547b8d4f3bcdb0633fdd8925e8aa5d4"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a08f477cd12fc3fe741a92493e5df58a9"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a08f477cd12fc3fe741a92493e5df58a9">UCX_TEST_ASSERT</a>(condition, message)</td></tr> -<tr class="memdesc:a08f477cd12fc3fe741a92493e5df58a9"><td class="mdescLeft"> </td><td class="mdescRight">Checks a test assertion. <a href="#a08f477cd12fc3fe741a92493e5df58a9">More...</a><br /></td></tr> -<tr class="separator:a08f477cd12fc3fe741a92493e5df58a9"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae073cf5ead22cb27d662da048e16f44a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#ae073cf5ead22cb27d662da048e16f44a">UCX_TEST_SUBROUTINE</a>(name, ...)</td></tr> -<tr class="memdesc:ae073cf5ead22cb27d662da048e16f44a"><td class="mdescLeft"> </td><td class="mdescRight">Macro for a test subroutine function header. <a href="#ae073cf5ead22cb27d662da048e16f44a">More...</a><br /></td></tr> -<tr class="separator:ae073cf5ead22cb27d662da048e16f44a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a0efbab91c54f5237a2ab207f48cf0e51"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a0efbab91c54f5237a2ab207f48cf0e51">UCX_TEST_CALL_SUBROUTINE</a>(name, ...)   name(_suite_,_output_,_env_,__VA_ARGS__);</td></tr> -<tr class="memdesc:a0efbab91c54f5237a2ab207f48cf0e51"><td class="mdescLeft"> </td><td class="mdescRight">Macro for calling a test subroutine. <a href="#a0efbab91c54f5237a2ab207f48cf0e51">More...</a><br /></td></tr> -<tr class="separator:a0efbab91c54f5237a2ab207f48cf0e51"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a86e64857c04f0447f8b16fb9c2b3b639"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a86e64857c04f0447f8b16fb9c2b3b639">UCX_TEST_END</a>   fwrite("success.\n", 1, 9, _output_); _suite_->success++;}</td></tr> -<tr class="memdesc:a86e64857c04f0447f8b16fb9c2b3b639"><td class="mdescLeft"> </td><td class="mdescRight">Marks the end of a test. <a href="#a86e64857c04f0447f8b16fb9c2b3b639">More...</a><br /></td></tr> -<tr class="separator:a86e64857c04f0447f8b16fb9c2b3b639"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> -Typedefs</h2></td></tr> -<tr class="memitem:a52115d1d0f1c4a565ed6ef7c1bfd0363"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a52115d1d0f1c4a565ed6ef7c1bfd0363">UcxTestSuite</a></td></tr> -<tr class="memdesc:a52115d1d0f1c4a565ed6ef7c1bfd0363"><td class="mdescLeft"> </td><td class="mdescRight">Type for the <a class="el" href="structUcxTestSuite.html" title="A test suite containing multiple test cases. ">UcxTestSuite</a>. <a href="#a52115d1d0f1c4a565ed6ef7c1bfd0363">More...</a><br /></td></tr> -<tr class="separator:a52115d1d0f1c4a565ed6ef7c1bfd0363"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae906817354c010b83c2784260cce7a1c"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#ae906817354c010b83c2784260cce7a1c">UcxTest</a>) (<a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> *, FILE *)</td></tr> -<tr class="memdesc:ae906817354c010b83c2784260cce7a1c"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to a test function. <a href="#ae906817354c010b83c2784260cce7a1c">More...</a><br /></td></tr> -<tr class="separator:ae906817354c010b83c2784260cce7a1c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8048c50ae73ea690b776edfd63bd6a5d"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxTestList.html">UcxTestList</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a8048c50ae73ea690b776edfd63bd6a5d">UcxTestList</a></td></tr> -<tr class="memdesc:a8048c50ae73ea690b776edfd63bd6a5d"><td class="mdescLeft"> </td><td class="mdescRight">Type for the internal list of test cases. <a href="#a8048c50ae73ea690b776edfd63bd6a5d">More...</a><br /></td></tr> -<tr class="separator:a8048c50ae73ea690b776edfd63bd6a5d"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:a531f0df90363e0befbe900878f65f09e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a531f0df90363e0befbe900878f65f09e">ucx_test_suite_new</a> ()</td></tr> -<tr class="memdesc:a531f0df90363e0befbe900878f65f09e"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new test suite. <a href="#a531f0df90363e0befbe900878f65f09e">More...</a><br /></td></tr> -<tr class="separator:a531f0df90363e0befbe900878f65f09e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4a6ac61a6f72722273f8eaa7a343edde"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a4a6ac61a6f72722273f8eaa7a343edde">ucx_test_suite_free</a> (<a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> *suite)</td></tr> -<tr class="memdesc:a4a6ac61a6f72722273f8eaa7a343edde"><td class="mdescLeft"> </td><td class="mdescRight">Destroys a test suite. <a href="#a4a6ac61a6f72722273f8eaa7a343edde">More...</a><br /></td></tr> -<tr class="separator:a4a6ac61a6f72722273f8eaa7a343edde"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8dfabc42f183d3a4d79379a5d17bf67d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a8dfabc42f183d3a4d79379a5d17bf67d">ucx_test_register</a> (<a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> *suite, <a class="el" href="test_8h.html#ae906817354c010b83c2784260cce7a1c">UcxTest</a> test)</td></tr> -<tr class="memdesc:a8dfabc42f183d3a4d79379a5d17bf67d"><td class="mdescLeft"> </td><td class="mdescRight">Registers a test function with the specified test suite. <a href="#a8dfabc42f183d3a4d79379a5d17bf67d">More...</a><br /></td></tr> -<tr class="separator:a8dfabc42f183d3a4d79379a5d17bf67d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3721458deeecb43aa322428f007714c3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="test_8h.html#a3721458deeecb43aa322428f007714c3">ucx_test_run</a> (<a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> *suite, FILE *outstream)</td></tr> -<tr class="memdesc:a3721458deeecb43aa322428f007714c3"><td class="mdescLeft"> </td><td class="mdescRight">Runs a test suite and writes the test log to the specified stream. <a href="#a3721458deeecb43aa322428f007714c3">More...</a><br /></td></tr> -<tr class="separator:a3721458deeecb43aa322428f007714c3"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>UCX Test Framework. </p> -<p>Usage of this test framework:</p> -<p>**** IN HEADER FILE: ****</p> -<pre> -<a class="el" href="test_8h.html#a66cfb29c329fc9eaef071f2449836659" title="Macro for a UcxTest function header. ">UCX_TEST(function_name)</a>; -<a class="el" href="test_8h.html#ae073cf5ead22cb27d662da048e16f44a" title="Macro for a test subroutine function header. ">UCX_TEST_SUBROUTINE(subroutine_name, paramlist)</a>; // optional -</pre><p>**** IN SOURCE FILE: **** </p><pre> -<a class="el" href="test_8h.html#ae073cf5ead22cb27d662da048e16f44a" title="Macro for a test subroutine function header. ">UCX_TEST_SUBROUTINE(subroutine_name, paramlist)</a> { - // tests with <a class="el" href="test_8h.html#a08f477cd12fc3fe741a92493e5df58a9" title="Checks a test assertion. ">UCX_TEST_ASSERT()</a> -}</pre><pre><a class="el" href="test_8h.html#a66cfb29c329fc9eaef071f2449836659" title="Macro for a UcxTest function header. ">UCX_TEST(function_name)</a> { - // memory allocation and other stuff here - <a class="el" href="test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4" title="Marks the begin of a test. ">UCX_TEST_BEGIN</a> - // tests with <a class="el" href="test_8h.html#a08f477cd12fc3fe741a92493e5df58a9" title="Checks a test assertion. ">UCX_TEST_ASSERT()</a> and/or - // calls with <a class="el" href="test_8h.html#a0efbab91c54f5237a2ab207f48cf0e51" title="Macro for calling a test subroutine. ">UCX_TEST_CALL_SUBROUTINE()</a> here - <a class="el" href="test_8h.html#a86e64857c04f0447f8b16fb9c2b3b639" title="Marks the end of a test. ">UCX_TEST_END</a> - // cleanup of memory here -} -</pre><p><b>Note:</b> if a test fails, a longjump is performed back to the <a class="el" href="test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4" title="Marks the begin of a test. ">UCX_TEST_BEGIN</a> macro!</p> -<p><b>Attention:</b> Do not call own functions within a test, that use <a class="el" href="test_8h.html#a08f477cd12fc3fe741a92493e5df58a9" title="Checks a test assertion. ">UCX_TEST_ASSERT()</a> macros and are not defined by using <a class="el" href="test_8h.html#ae073cf5ead22cb27d662da048e16f44a" title="Macro for a test subroutine function header. ">UCX_TEST_SUBROUTINE()</a>.</p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a828bb1dfda1afd67ca795075903d227d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a828bb1dfda1afd67ca795075903d227d">◆ </a></span>__FUNCTION__</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define __FUNCTION__   __func__</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Alias for the <code>__func__</code> preprocessor macro. </p> -<p>Some compilers use <code>__func__</code> and others use <b>FUNCTION</b>. We use <b>FUNCTION</b> so we define it for those compilers which use <code>__func__</code>. </p> - -</div> -</div> -<a id="a66cfb29c329fc9eaef071f2449836659"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a66cfb29c329fc9eaef071f2449836659">◆ </a></span>UCX_TEST</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_TEST</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">name</td><td>)</td> - <td>   void name(<a class="el" href="structUcxTestSuite.html">UcxTestSuite</a>* _suite_,FILE *_output_)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Macro for a <a class="el" href="test_8h.html#ae906817354c010b83c2784260cce7a1c" title="Pointer to a test function. ">UcxTest</a> function header. </p> -<p>Use this macro to declare and/or define a <a class="el" href="test_8h.html#ae906817354c010b83c2784260cce7a1c" title="Pointer to a test function. ">UcxTest</a> function.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">name</td><td>the name of the test function </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a08f477cd12fc3fe741a92493e5df58a9"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a08f477cd12fc3fe741a92493e5df58a9">◆ </a></span>UCX_TEST_ASSERT</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_TEST_ASSERT</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">condition, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">message </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">if</span> (!(condition)) { \</div><div class="line"> fwrite(message<span class="stringliteral">".\n"</span>, 1, 2+strlen(message), _output_); \</div><div class="line"> _suite_->failure++; \</div><div class="line"> longjmp(_env_, 1);\</div><div class="line"> }</div></div><!-- fragment --> -<p>Checks a test assertion. </p> -<p>If the assertion is correct, the test carries on. If the assertion is not correct, the specified message (terminated by a dot and a line break) is written to the test suites output stream. </p><dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">condition</td><td>the condition to check </td></tr> - <tr><td class="paramname">message</td><td>the message that shall be printed out on failure </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a0547b8d4f3bcdb0633fdd8925e8aa5d4"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a0547b8d4f3bcdb0633fdd8925e8aa5d4">◆ </a></span>UCX_TEST_BEGIN</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_TEST_BEGIN</td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line">fwrite(<span class="stringliteral">"Running "</span>, 1, 8, _output_);\</div><div class="line"> fwrite(<a class="code" href="test_8h.html#a828bb1dfda1afd67ca795075903d227d">__FUNCTION__</a>, 1, strlen(<a class="code" href="test_8h.html#a828bb1dfda1afd67ca795075903d227d">__FUNCTION__</a>), _output_);\</div><div class="line"> fwrite(<span class="stringliteral">"... "</span>, 1, 4, _output_);\</div><div class="line"> jmp_buf _env_; \</div><div class="line"> if (!setjmp(_env_)) {</div><div class="ttc" id="test_8h_html_a828bb1dfda1afd67ca795075903d227d"><div class="ttname"><a href="test_8h.html#a828bb1dfda1afd67ca795075903d227d">__FUNCTION__</a></div><div class="ttdeci">#define __FUNCTION__</div><div class="ttdoc">Alias for the __func__ preprocessor macro. </div><div class="ttdef"><b>Definition:</b> test.h:91</div></div> -</div><!-- fragment --> -<p>Marks the begin of a test. </p> -<p><b>Note:</b> Any <a class="el" href="test_8h.html#a08f477cd12fc3fe741a92493e5df58a9" title="Checks a test assertion. ">UCX_TEST_ASSERT()</a> calls must be performed <b>after</b> <a class="el" href="test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4" title="Marks the begin of a test. ">UCX_TEST_BEGIN</a>.</p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="test_8h.html#a86e64857c04f0447f8b16fb9c2b3b639" title="Marks the end of a test. ">UCX_TEST_END</a> </dd></dl> - -</div> -</div> -<a id="a0efbab91c54f5237a2ab207f48cf0e51"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a0efbab91c54f5237a2ab207f48cf0e51">◆ </a></span>UCX_TEST_CALL_SUBROUTINE</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_TEST_CALL_SUBROUTINE</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">name, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   name(_suite_,_output_,_env_,__VA_ARGS__);</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Macro for calling a test subroutine. </p> -<p>Subroutines declared with <a class="el" href="test_8h.html#ae073cf5ead22cb27d662da048e16f44a" title="Macro for a test subroutine function header. ">UCX_TEST_SUBROUTINE()</a> can be called by using this macro.</p> -<p><b>Note:</b> You may <b>only</b> call subroutines within a <a class="el" href="test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4" title="Marks the begin of a test. ">UCX_TEST_BEGIN</a>- <a class="el" href="test_8h.html#a86e64857c04f0447f8b16fb9c2b3b639" title="Marks the end of a test. ">UCX_TEST_END</a>-block.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">name</td><td>the name of the subroutine </td></tr> - <tr><td class="paramname">...</td><td>the argument list</td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="test_8h.html#ae073cf5ead22cb27d662da048e16f44a" title="Macro for a test subroutine function header. ">UCX_TEST_SUBROUTINE()</a> </dd></dl> - -</div> -</div> -<a id="a86e64857c04f0447f8b16fb9c2b3b639"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a86e64857c04f0447f8b16fb9c2b3b639">◆ </a></span>UCX_TEST_END</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_TEST_END   fwrite("success.\n", 1, 9, _output_); _suite_->success++;}</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Marks the end of a test. </p> -<p><b>Note:</b> Any <a class="el" href="test_8h.html#a08f477cd12fc3fe741a92493e5df58a9" title="Checks a test assertion. ">UCX_TEST_ASSERT()</a> calls must be performed <b>before</b> <a class="el" href="test_8h.html#a86e64857c04f0447f8b16fb9c2b3b639" title="Marks the end of a test. ">UCX_TEST_END</a>.</p> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4" title="Marks the begin of a test. ">UCX_TEST_BEGIN</a> </dd></dl> - -</div> -</div> -<a id="ae073cf5ead22cb27d662da048e16f44a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae073cf5ead22cb27d662da048e16f44a">◆ </a></span>UCX_TEST_SUBROUTINE</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_TEST_SUBROUTINE</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">name, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line"><span class="keywordtype">void</span> name(<a class="code" href="structUcxTestSuite.html">UcxTestSuite</a>* _suite_,\</div><div class="line"> FILE *_output_, jmp_buf _env_, __VA_ARGS__)</div><div class="ttc" id="structUcxTestSuite_html"><div class="ttname"><a href="structUcxTestSuite.html">UcxTestSuite</a></div><div class="ttdoc">A test suite containing multiple test cases. </div><div class="ttdef"><b>Definition:</b> test.h:116</div></div> -</div><!-- fragment --> -<p>Macro for a test subroutine function header. </p> -<p>Use this to declare and/or define a subroutine that can be called by using <a class="el" href="test_8h.html#a0efbab91c54f5237a2ab207f48cf0e51" title="Macro for calling a test subroutine. ">UCX_TEST_CALL_SUBROUTINE()</a>.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">name</td><td>the name of the subroutine </td></tr> - <tr><td class="paramname">...</td><td>the parameter list</td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="test_8h.html#a0efbab91c54f5237a2ab207f48cf0e51" title="Macro for calling a test subroutine. ">UCX_TEST_CALL_SUBROUTINE()</a> </dd></dl> - -</div> -</div> -<h2 class="groupheader">Typedef Documentation</h2> -<a id="ae906817354c010b83c2784260cce7a1c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ae906817354c010b83c2784260cce7a1c">◆ </a></span>UcxTest</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef void(* UcxTest) (<a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> *, FILE *)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Pointer to a test function. </p> - -</div> -</div> -<a id="a8048c50ae73ea690b776edfd63bd6a5d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8048c50ae73ea690b776edfd63bd6a5d">◆ </a></span>UcxTestList</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef struct <a class="el" href="structUcxTestList.html">UcxTestList</a> <a class="el" href="structUcxTestList.html">UcxTestList</a></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Type for the internal list of test cases. </p> - -</div> -</div> -<a id="a52115d1d0f1c4a565ed6ef7c1bfd0363"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a52115d1d0f1c4a565ed6ef7c1bfd0363">◆ </a></span>UcxTestSuite</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef struct <a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> <a class="el" href="structUcxTestSuite.html">UcxTestSuite</a></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Type for the <a class="el" href="structUcxTestSuite.html" title="A test suite containing multiple test cases. ">UcxTestSuite</a>. </p> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="a8dfabc42f183d3a4d79379a5d17bf67d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8dfabc42f183d3a4d79379a5d17bf67d">◆ </a></span>ucx_test_register()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_test_register </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> * </td> - <td class="paramname"><em>suite</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="test_8h.html#ae906817354c010b83c2784260cce7a1c">UcxTest</a> </td> - <td class="paramname"><em>test</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Registers a test function with the specified test suite. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">suite</td><td>the suite, the test function shall be added to </td></tr> - <tr><td class="paramname">test</td><td>the test function to register </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd><code>EXIT_SUCCESS</code> on success or <code>EXIT_FAILURE</code> on failure </dd></dl> - -</div> -</div> -<a id="a3721458deeecb43aa322428f007714c3"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3721458deeecb43aa322428f007714c3">◆ </a></span>ucx_test_run()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_test_run </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> * </td> - <td class="paramname"><em>suite</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">FILE * </td> - <td class="paramname"><em>outstream</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Runs a test suite and writes the test log to the specified stream. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">suite</td><td>the test suite to run </td></tr> - <tr><td class="paramname">outstream</td><td>the stream the log shall be written to </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a4a6ac61a6f72722273f8eaa7a343edde"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4a6ac61a6f72722273f8eaa7a343edde">◆ </a></span>ucx_test_suite_free()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void ucx_test_suite_free </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxTestSuite.html">UcxTestSuite</a> * </td> - <td class="paramname"><em>suite</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Destroys a test suite. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">suite</td><td>the test suite to destroy </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a id="a531f0df90363e0befbe900878f65f09e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a531f0df90363e0befbe900878f65f09e">◆ </a></span>ucx_test_suite_new()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structUcxTestSuite.html">UcxTestSuite</a>* ucx_test_suite_new </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Creates a new test suite. </p> -<dl class="section return"><dt>Returns</dt><dd>a new test suite </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/test_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/test.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">test.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="test_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#ifndef UCX_TEST_H</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#define UCX_TEST_H</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#include <<a class="code" href="string_8h.html">string.h</a>></span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#include <setjmp.h></span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#ifndef __FUNCTION__</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="test_8h.html#a828bb1dfda1afd67ca795075903d227d"> 91</a></span> <span class="preprocessor">#define __FUNCTION__ __func__</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="test_8h.html#a52115d1d0f1c4a565ed6ef7c1bfd0363"> 95</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxTestSuite.html">UcxTestSuite</a> <a class="code" href="structUcxTestSuite.html">UcxTestSuite</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="test_8h.html#ae906817354c010b83c2784260cce7a1c"> 98</a></span> <span class="keyword">typedef</span> void(*<a class="code" href="test_8h.html#ae906817354c010b83c2784260cce7a1c">UcxTest</a>)(<a class="code" href="structUcxTestSuite.html">UcxTestSuite</a>*,FILE*);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="test_8h.html#a8048c50ae73ea690b776edfd63bd6a5d"> 101</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxTestList.html">UcxTestList</a> <a class="code" href="structUcxTestList.html">UcxTestList</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structUcxTestList.html"> 104</a></span> <span class="keyword">struct </span><a class="code" href="structUcxTestList.html">UcxTestList</a> {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="structUcxTestList.html#a6022faa52e772b073141ca0a2f5a56c9"> 107</a></span>  <a class="code" href="test_8h.html#ae906817354c010b83c2784260cce7a1c">UcxTest</a> <a class="code" href="structUcxTestList.html#a6022faa52e772b073141ca0a2f5a56c9">test</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="structUcxTestList.html#aeebb80ff75d9f6f82ab6dc2641a3c74e"> 110</a></span>  <a class="code" href="structUcxTestList.html">UcxTestList</a> *<a class="code" href="structUcxTestList.html#aeebb80ff75d9f6f82ab6dc2641a3c74e">next</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> };</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="structUcxTestSuite.html"> 116</a></span> <span class="keyword">struct </span>UcxTestSuite {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="structUcxTestSuite.html#a6cefa870a3c2e38d6ee682e38643dbbb"> 119</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structUcxTestSuite.html#a6cefa870a3c2e38d6ee682e38643dbbb">success</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="structUcxTestSuite.html#abfd240541d1e956e49cde0ac36286951"> 122</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structUcxTestSuite.html#abfd240541d1e956e49cde0ac36286951">failure</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="structUcxTestSuite.html#a630677a70ebc2c3296704cda3196492b"> 128</a></span>  <a class="code" href="structUcxTestList.html">UcxTestList</a> *<a class="code" href="structUcxTestSuite.html#a630677a70ebc2c3296704cda3196492b">tests</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> };</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> UcxTestSuite* <a class="code" href="test_8h.html#a531f0df90363e0befbe900878f65f09e">ucx_test_suite_new</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keywordtype">void</span> <a class="code" href="test_8h.html#a4a6ac61a6f72722273f8eaa7a343edde">ucx_test_suite_free</a>(UcxTestSuite* suite);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keywordtype">int</span> <a class="code" href="test_8h.html#a8dfabc42f183d3a4d79379a5d17bf67d">ucx_test_register</a>(UcxTestSuite* suite, <a class="code" href="test_8h.html#ae906817354c010b83c2784260cce7a1c">UcxTest</a> <a class="code" href="structUcxTestList.html#a6022faa52e772b073141ca0a2f5a56c9">test</a>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="keywordtype">void</span> <a class="code" href="test_8h.html#a3721458deeecb43aa322428f007714c3">ucx_test_run</a>(UcxTestSuite* suite, FILE* outstream);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="test_8h.html#a66cfb29c329fc9eaef071f2449836659"> 167</a></span> <span class="preprocessor">#define UCX_TEST(name) void name(UcxTestSuite* _suite_,FILE *_output_)</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="test_8h.html#a0547b8d4f3bcdb0633fdd8925e8aa5d4"> 176</a></span> <span class="preprocessor">#define UCX_TEST_BEGIN fwrite("Running ", 1, 8, _output_);\</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor"> fwrite(__FUNCTION__, 1, strlen(__FUNCTION__), _output_);\</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor"> fwrite("... ", 1, 4, _output_);\</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor"> jmp_buf _env_; \</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor"> if (!setjmp(_env_)) {</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="test_8h.html#a08f477cd12fc3fe741a92493e5df58a9"> 190</a></span> <span class="preprocessor">#define UCX_TEST_ASSERT(condition,message) if (!(condition)) { \</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor"> fwrite(message".\n", 1, 2+strlen(message), _output_); \</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor"> _suite_->failure++; \</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor"> longjmp(_env_, 1);\</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="preprocessor"> }</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="test_8h.html#ae073cf5ead22cb27d662da048e16f44a"> 207</a></span> <span class="preprocessor">#define UCX_TEST_SUBROUTINE(name,...) void name(UcxTestSuite* _suite_,\</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor"> FILE *_output_, jmp_buf _env_, __VA_ARGS__)</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="test_8h.html#a0efbab91c54f5237a2ab207f48cf0e51"> 224</a></span> <span class="preprocessor">#define UCX_TEST_CALL_SUBROUTINE(name,...) \</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor"> name(_suite_,_output_,_env_,__VA_ARGS__);</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="test_8h.html#a86e64857c04f0447f8b16fb9c2b3b639"> 234</a></span> <span class="preprocessor">#define UCX_TEST_END fwrite("success.\n", 1, 9, _output_); _suite_->success++;}</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_TEST_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="ttc" id="structUcxTestSuite_html_a6cefa870a3c2e38d6ee682e38643dbbb"><div class="ttname"><a href="structUcxTestSuite.html#a6cefa870a3c2e38d6ee682e38643dbbb">UcxTestSuite::success</a></div><div class="ttdeci">unsigned int success</div><div class="ttdoc">The number of successful tests after the suite has been run. </div><div class="ttdef"><b>Definition:</b> test.h:119</div></div> -<div class="ttc" id="string_8h_html"><div class="ttname"><a href="string_8h.html">string.h</a></div><div class="ttdoc">Bounded string implementation. </div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="structUcxTestList_html_a6022faa52e772b073141ca0a2f5a56c9"><div class="ttname"><a href="structUcxTestList.html#a6022faa52e772b073141ca0a2f5a56c9">UcxTestList::test</a></div><div class="ttdeci">UcxTest test</div><div class="ttdoc">Test case. </div><div class="ttdef"><b>Definition:</b> test.h:107</div></div> -<div class="ttc" id="test_8h_html_a8dfabc42f183d3a4d79379a5d17bf67d"><div class="ttname"><a href="test_8h.html#a8dfabc42f183d3a4d79379a5d17bf67d">ucx_test_register</a></div><div class="ttdeci">int ucx_test_register(UcxTestSuite *suite, UcxTest test)</div><div class="ttdoc">Registers a test function with the specified test suite. </div><div class="ttdef"><b>Definition:</b> test.c:52</div></div> -<div class="ttc" id="test_8h_html_a3721458deeecb43aa322428f007714c3"><div class="ttname"><a href="test_8h.html#a3721458deeecb43aa322428f007714c3">ucx_test_run</a></div><div class="ttdeci">void ucx_test_run(UcxTestSuite *suite, FILE *outstream)</div><div class="ttdoc">Runs a test suite and writes the test log to the specified stream. </div><div class="ttdef"><b>Definition:</b> test.c:82</div></div> -<div class="ttc" id="structUcxTestList_html"><div class="ttname"><a href="structUcxTestList.html">UcxTestList</a></div><div class="ttdoc">Structure for the internal list of test cases. </div><div class="ttdef"><b>Definition:</b> test.h:104</div></div> -<div class="ttc" id="test_8h_html_a531f0df90363e0befbe900878f65f09e"><div class="ttname"><a href="test_8h.html#a531f0df90363e0befbe900878f65f09e">ucx_test_suite_new</a></div><div class="ttdeci">UcxTestSuite * ucx_test_suite_new()</div><div class="ttdoc">Creates a new test suite. </div><div class="ttdef"><b>Definition:</b> test.c:31</div></div> -<div class="ttc" id="structUcxTestSuite_html_a630677a70ebc2c3296704cda3196492b"><div class="ttname"><a href="structUcxTestSuite.html#a630677a70ebc2c3296704cda3196492b">UcxTestSuite::tests</a></div><div class="ttdeci">UcxTestList * tests</div><div class="ttdoc">Internal list of test cases. </div><div class="ttdef"><b>Definition:</b> test.h:128</div></div> -<div class="ttc" id="test_8h_html_ae906817354c010b83c2784260cce7a1c"><div class="ttname"><a href="test_8h.html#ae906817354c010b83c2784260cce7a1c">UcxTest</a></div><div class="ttdeci">void(* UcxTest)(UcxTestSuite *, FILE *)</div><div class="ttdoc">Pointer to a test function. </div><div class="ttdef"><b>Definition:</b> test.h:98</div></div> -<div class="ttc" id="test_8h_html_a4a6ac61a6f72722273f8eaa7a343edde"><div class="ttname"><a href="test_8h.html#a4a6ac61a6f72722273f8eaa7a343edde">ucx_test_suite_free</a></div><div class="ttdeci">void ucx_test_suite_free(UcxTestSuite *suite)</div><div class="ttdoc">Destroys a test suite. </div><div class="ttdef"><b>Definition:</b> test.c:42</div></div> -<div class="ttc" id="structUcxTestSuite_html_abfd240541d1e956e49cde0ac36286951"><div class="ttname"><a href="structUcxTestSuite.html#abfd240541d1e956e49cde0ac36286951">UcxTestSuite::failure</a></div><div class="ttdeci">unsigned int failure</div><div class="ttdoc">The number of failed tests after the suite has been run. </div><div class="ttdef"><b>Definition:</b> test.h:122</div></div> -<div class="ttc" id="structUcxTestList_html_aeebb80ff75d9f6f82ab6dc2641a3c74e"><div class="ttname"><a href="structUcxTestList.html#aeebb80ff75d9f6f82ab6dc2641a3c74e">UcxTestList::next</a></div><div class="ttdeci">UcxTestList * next</div><div class="ttdoc">Pointer to the next list element. </div><div class="ttdef"><b>Definition:</b> test.h:110</div></div> -<div class="ttc" id="structUcxTestSuite_html"><div class="ttname"><a href="structUcxTestSuite.html">UcxTestSuite</a></div><div class="ttdoc">A test suite containing multiple test cases. </div><div class="ttdef"><b>Definition:</b> test.h:116</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/ucx_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,388 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/ucx.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#define-members">Macros</a> | -<a href="#typedef-members">Typedefs</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">ucx.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Main UCX Header providing most common definitions. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include <stdlib.h></code><br /> -<code>#include <stdint.h></code><br /> -<code>#include <sys/types.h></code><br /> -</div> -<p><a href="ucx_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:aa57e5dd22d42387d748cc16777df1383"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#aa57e5dd22d42387d748cc16777df1383">UCX_VERSION_MAJOR</a>   2</td></tr> -<tr class="memdesc:aa57e5dd22d42387d748cc16777df1383"><td class="mdescLeft"> </td><td class="mdescRight">Major UCX version as integer constant. <a href="#aa57e5dd22d42387d748cc16777df1383">More...</a><br /></td></tr> -<tr class="separator:aa57e5dd22d42387d748cc16777df1383"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9ac10d6353e23d4615a87fc737c65eb0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0">UCX_VERSION_MINOR</a>   1</td></tr> -<tr class="memdesc:a9ac10d6353e23d4615a87fc737c65eb0"><td class="mdescLeft"> </td><td class="mdescRight">Minor UCX version as integer constant. <a href="#a9ac10d6353e23d4615a87fc737c65eb0">More...</a><br /></td></tr> -<tr class="separator:a9ac10d6353e23d4615a87fc737c65eb0"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af12001920ca2fc1405615684e4dea284"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#af12001920ca2fc1405615684e4dea284">UCX_VERSION</a>   (((<a class="el" href="ucx_8h.html#aa57e5dd22d42387d748cc16777df1383">UCX_VERSION_MAJOR</a>)<<16)|<a class="el" href="ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0">UCX_VERSION_MINOR</a>)</td></tr> -<tr class="memdesc:af12001920ca2fc1405615684e4dea284"><td class="mdescLeft"> </td><td class="mdescRight">Version constant which ensures to increase monotonically. <a href="#af12001920ca2fc1405615684e4dea284">More...</a><br /></td></tr> -<tr class="separator:af12001920ca2fc1405615684e4dea284"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a0b5ed6c1a0b15356f4f948acfd32a4cc"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a0b5ed6c1a0b15356f4f948acfd32a4cc">ucx_szmul</a>(a, b, result)   <a class="el" href="ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b">ucx_szmul_impl</a>(a, b, result)</td></tr> -<tr class="memdesc:a0b5ed6c1a0b15356f4f948acfd32a4cc"><td class="mdescLeft"> </td><td class="mdescRight">Performs a multiplication of size_t values and checks for overflow. <a href="#a0b5ed6c1a0b15356f4f948acfd32a4cc">More...</a><br /></td></tr> -<tr class="separator:a0b5ed6c1a0b15356f4f948acfd32a4cc"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> -Typedefs</h2></td></tr> -<tr class="memitem:ad2b370c2809914c8b7fedab163c266b3"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a>) (void *)</td></tr> -<tr class="memdesc:ad2b370c2809914c8b7fedab163c266b3"><td class="mdescLeft"> </td><td class="mdescRight">A function pointer to a destructor function. <a href="#ad2b370c2809914c8b7fedab163c266b3">More...</a><br /></td></tr> -<tr class="separator:ad2b370c2809914c8b7fedab163c266b3"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:afe5e2d5dbf34778e0e97852051570791"><td class="memItemLeft" align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>) (const void *, const void *, void *)</td></tr> -<tr class="memdesc:afe5e2d5dbf34778e0e97852051570791"><td class="mdescLeft"> </td><td class="mdescRight">Function pointer to a compare function. <a href="#afe5e2d5dbf34778e0e97852051570791">More...</a><br /></td></tr> -<tr class="separator:afe5e2d5dbf34778e0e97852051570791"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a0bc5bf89e556c1d45d10863d52728ac9"><td class="memItemLeft" align="right" valign="top">typedef intmax_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a>) (const void *, const void *, void *)</td></tr> -<tr class="memdesc:a0bc5bf89e556c1d45d10863d52728ac9"><td class="mdescLeft"> </td><td class="mdescRight">Function pointer to a distance function. <a href="#a0bc5bf89e556c1d45d10863d52728ac9">More...</a><br /></td></tr> -<tr class="separator:a0bc5bf89e556c1d45d10863d52728ac9"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aab917a5fe0965673c73e8ebd0a1fc967"><td class="memItemLeft" align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>) (const void *, void *)</td></tr> -<tr class="memdesc:aab917a5fe0965673c73e8ebd0a1fc967"><td class="mdescLeft"> </td><td class="mdescRight">Function pointer to a copy function. <a href="#aab917a5fe0965673c73e8ebd0a1fc967">More...</a><br /></td></tr> -<tr class="separator:aab917a5fe0965673c73e8ebd0a1fc967"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a989b3f0fa4d307d278378fde435641ed"><td class="memItemLeft" align="right" valign="top">typedef size_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>) (const void *, size_t, size_t, void *)</td></tr> -<tr class="memdesc:a989b3f0fa4d307d278378fde435641ed"><td class="mdescLeft"> </td><td class="mdescRight">Function pointer to a write function. <a href="#a989b3f0fa4d307d278378fde435641ed">More...</a><br /></td></tr> -<tr class="separator:a989b3f0fa4d307d278378fde435641ed"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a6a67e255e460acb58f802067b3ff5fd5"><td class="memItemLeft" align="right" valign="top">typedef size_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a>) (void *, size_t, size_t, void *)</td></tr> -<tr class="memdesc:a6a67e255e460acb58f802067b3ff5fd5"><td class="mdescLeft"> </td><td class="mdescRight">Function pointer to a read function. <a href="#a6a67e255e460acb58f802067b3ff5fd5">More...</a><br /></td></tr> -<tr class="separator:a6a67e255e460acb58f802067b3ff5fd5"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:a6637171cc0ec097b297f731a3036dd3b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b">ucx_szmul_impl</a> (size_t a, size_t b, size_t *result)</td></tr> -<tr class="memdesc:a6637171cc0ec097b297f731a3036dd3b"><td class="mdescLeft"> </td><td class="mdescRight">Performs a multiplication of size_t values and checks for overflow. <a href="#a6637171cc0ec097b297f731a3036dd3b">More...</a><br /></td></tr> -<tr class="separator:a6637171cc0ec097b297f731a3036dd3b"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Main UCX Header providing most common definitions. </p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a0b5ed6c1a0b15356f4f948acfd32a4cc"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a0b5ed6c1a0b15356f4f948acfd32a4cc">◆ </a></span>ucx_szmul</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_szmul</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">a, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">b, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">result </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td>   <a class="el" href="ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b">ucx_szmul_impl</a>(a, b, result)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Performs a multiplication of size_t values and checks for overflow. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">a</td><td>first operand </td></tr> - <tr><td class="paramname">b</td><td>second operand </td></tr> - <tr><td class="paramname">result</td><td>a pointer to a size_t, where the result should be stored </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero, if no overflow occurred and the result is correct, non-zero otherwise </dd></dl> - -</div> -</div> -<a id="af12001920ca2fc1405615684e4dea284"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af12001920ca2fc1405615684e4dea284">◆ </a></span>UCX_VERSION</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_VERSION   (((<a class="el" href="ucx_8h.html#aa57e5dd22d42387d748cc16777df1383">UCX_VERSION_MAJOR</a>)<<16)|<a class="el" href="ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0">UCX_VERSION_MINOR</a>)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Version constant which ensures to increase monotonically. </p> - -</div> -</div> -<a id="aa57e5dd22d42387d748cc16777df1383"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa57e5dd22d42387d748cc16777df1383">◆ </a></span>UCX_VERSION_MAJOR</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_VERSION_MAJOR   2</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Major UCX version as integer constant. </p> - -</div> -</div> -<a id="a9ac10d6353e23d4615a87fc737c65eb0"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9ac10d6353e23d4615a87fc737c65eb0">◆ </a></span>UCX_VERSION_MINOR</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define UCX_VERSION_MINOR   1</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Minor UCX version as integer constant. </p> - -</div> -</div> -<h2 class="groupheader">Typedef Documentation</h2> -<a id="afe5e2d5dbf34778e0e97852051570791"></a> -<h2 class="memtitle"><span class="permalink"><a href="#afe5e2d5dbf34778e0e97852051570791">◆ </a></span>cmp_func</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef int(* cmp_func) (const void *, const void *, void *)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Function pointer to a compare function. </p> -<p>The compare function shall take three arguments: the two values that shall be compared and optional additional data. The function shall then return -1 if the first argument is less than the second argument, 1 if the first argument is greater than the second argument and 0 if both arguments are equal. If the third argument is <code>NULL</code>, it shall be ignored. </p> - -</div> -</div> -<a id="aab917a5fe0965673c73e8ebd0a1fc967"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aab917a5fe0965673c73e8ebd0a1fc967">◆ </a></span>copy_func</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef void*(* copy_func) (const void *, void *)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Function pointer to a copy function. </p> -<p>The copy function shall create a copy of the first argument and may use additional data provided by the second argument. If the second argument is <code>NULL</code>, it shall be ignored.</p> -<p><b>Attention:</b> if pointers returned by functions of this type may be passed to <code>free()</code> depends on the implementation of the respective <code>copy_func</code>. </p> - -</div> -</div> -<a id="a0bc5bf89e556c1d45d10863d52728ac9"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a0bc5bf89e556c1d45d10863d52728ac9">◆ </a></span>distance_func</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef intmax_t(* distance_func) (const void *, const void *, void *)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Function pointer to a distance function. </p> -<p>The distance function shall take three arguments: the two values for which the distance shall be computed and optional additional data. The function shall then return the signed distance as integer value. </p> - -</div> -</div> -<a id="a6a67e255e460acb58f802067b3ff5fd5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6a67e255e460acb58f802067b3ff5fd5">◆ </a></span>read_func</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef size_t(* read_func) (void *, size_t, size_t, void *)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Function pointer to a read function. </p> -<p>The signature of the read function shall be compatible to the signature of standard <code>fread</code>, though it may use arbitrary data types for source and destination.</p> -<p>The arguments shall contain (in ascending order): a pointer to the destination, the length of one element, the element count and a pointer to the source. </p> - -</div> -</div> -<a id="ad2b370c2809914c8b7fedab163c266b3"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad2b370c2809914c8b7fedab163c266b3">◆ </a></span>ucx_destructor</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef void(* ucx_destructor) (void *)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A function pointer to a destructor function. </p> -<dl class="section see"><dt>See also</dt><dd>ucx_mempool_setdestr() </dd> -<dd> -ucx_mempool_regdestr() </dd></dl> - -</div> -</div> -<a id="a989b3f0fa4d307d278378fde435641ed"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a989b3f0fa4d307d278378fde435641ed">◆ </a></span>write_func</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">typedef size_t(* write_func) (const void *, size_t, size_t, void *)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Function pointer to a write function. </p> -<p>The signature of the write function shall be compatible to the signature of standard <code>fwrite</code>, though it may use arbitrary data types for source and destination.</p> -<p>The arguments shall contain (in ascending order): a pointer to the source, the length of one element, the element count and a pointer to the destination. </p> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="a6637171cc0ec097b297f731a3036dd3b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6637171cc0ec097b297f731a3036dd3b">◆ </a></span>ucx_szmul_impl()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_szmul_impl </td> - <td>(</td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>a</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>b</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t * </td> - <td class="paramname"><em>result</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Performs a multiplication of size_t values and checks for overflow. </p> -<p>This is a custom implementation in case there is no compiler builtin available.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">a</td><td>first operand </td></tr> - <tr><td class="paramname">b</td><td>second operand </td></tr> - <tr><td class="paramname">result</td><td>a pointer to a size_t where the result should be stored </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>zero, if no overflow occurred and the result is correct, non-zero otherwise </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/ucx_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/ucx.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">ucx.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="ucx_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef UCX_H</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define UCX_H</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="ucx_8h.html#aa57e5dd22d42387d748cc16777df1383"> 40</a></span> <span class="preprocessor">#define UCX_VERSION_MAJOR 2</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0"> 43</a></span> <span class="preprocessor">#define UCX_VERSION_MINOR 1</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="ucx_8h.html#af12001920ca2fc1405615684e4dea284"> 46</a></span> <span class="preprocessor">#define UCX_VERSION (((UCX_VERSION_MAJOR)<<16)|UCX_VERSION_MINOR)</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <stdint.h></span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#ifdef _WIN32</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#if !(defined __ssize_t_defined || defined _SSIZE_T_)</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include <BaseTsd.h></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">typedef</span> SSIZE_T ssize_t;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define __ssize_t_defined</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define _SSIZE_T_</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#endif </span><span class="comment">/* __ssize_t_defined and _SSIZE_T */</span><span class="preprocessor"></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#else </span><span class="comment">/* !_WIN32 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif </span><span class="comment">/* _WIN32 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3"> 72</a></span> <span class="keyword">typedef</span> void(*<a class="code" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a>)(<span class="keywordtype">void</span>*);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791"> 84</a></span> <span class="keyword">typedef</span> int(*<a class="code" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>)(<span class="keyword">const</span> <span class="keywordtype">void</span>*,<span class="keyword">const</span> <span class="keywordtype">void</span>*,<span class="keywordtype">void</span>*);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9"> 93</a></span> <span class="keyword">typedef</span> intmax_t(*<a class="code" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a>)(<span class="keyword">const</span> <span class="keywordtype">void</span>*,<span class="keyword">const</span> <span class="keywordtype">void</span>*,<span class="keywordtype">void</span>*);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967"> 106</a></span> <span class="keyword">typedef</span> <span class="keywordtype">void</span>*(*copy_func)(<span class="keyword">const</span> <span class="keywordtype">void</span>*,<span class="keywordtype">void</span>*);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed"> 119</a></span> <span class="keyword">typedef</span> size_t(*<a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>)(<span class="keyword">const</span> <span class="keywordtype">void</span>*, size_t, size_t, <span class="keywordtype">void</span>*);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5"> 132</a></span> <span class="keyword">typedef</span> size_t(*<a class="code" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a>)(<span class="keywordtype">void</span>*, size_t, size_t, <span class="keywordtype">void</span>*);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#if __GNUC__ >= 5 || defined(__clang__)</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#define UCX_MUL_BUILTIN</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#if __WORDSIZE == 32</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#define ucx_szmul(a, b, result) __builtin_umul_overflow(a, b, result)</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#else </span><span class="comment">/* __WORDSIZE != 32 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#define ucx_szmul(a, b, result) __builtin_umull_overflow(a, b, result)</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#endif </span><span class="comment">/* __WORDSIZE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#else </span><span class="comment">/* no GNUC or clang bultin */</span><span class="preprocessor"></span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="ucx_8h.html#a0b5ed6c1a0b15356f4f948acfd32a4cc"> 181</a></span> <span class="preprocessor">#define ucx_szmul(a, b, result) ucx_szmul_impl(a, b, result)</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keywordtype">int</span> <a class="code" href="ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b">ucx_szmul_impl</a>(<span class="keywordtype">size_t</span> a, <span class="keywordtype">size_t</span> b, <span class="keywordtype">size_t</span> *result);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="ttc" id="ucx_8h_html_afe5e2d5dbf34778e0e97852051570791"><div class="ttname"><a href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a></div><div class="ttdeci">int(* cmp_func)(const void *, const void *, void *)</div><div class="ttdoc">Function pointer to a compare function. </div><div class="ttdef"><b>Definition:</b> ucx.h:84</div></div> -<div class="ttc" id="ucx_8h_html_a6a67e255e460acb58f802067b3ff5fd5"><div class="ttname"><a href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a></div><div class="ttdeci">size_t(* read_func)(void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a read function. </div><div class="ttdef"><b>Definition:</b> ucx.h:132</div></div> -<div class="ttc" id="ucx_8h_html_a0bc5bf89e556c1d45d10863d52728ac9"><div class="ttname"><a href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a></div><div class="ttdeci">intmax_t(* distance_func)(const void *, const void *, void *)</div><div class="ttdoc">Function pointer to a distance function. </div><div class="ttdef"><b>Definition:</b> ucx.h:93</div></div> -<div class="ttc" id="ucx_8h_html_a6637171cc0ec097b297f731a3036dd3b"><div class="ttname"><a href="ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b">ucx_szmul_impl</a></div><div class="ttdeci">int ucx_szmul_impl(size_t a, size_t b, size_t *result)</div><div class="ttdoc">Performs a multiplication of size_t values and checks for overflow. </div><div class="ttdef"><b>Definition:</b> ucx.c:48</div></div> -<div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> -<div class="ttc" id="ucx_8h_html_ad2b370c2809914c8b7fedab163c266b3"><div class="ttname"><a href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a></div><div class="ttdeci">void(* ucx_destructor)(void *)</div><div class="ttdoc">A function pointer to a destructor function. </div><div class="ttdef"><b>Definition:</b> ucx.h:72</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/utils_8h.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2233 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/utils.h File Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#define-members">Macros</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">utils.h File Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Compare, copy and printf functions. -<a href="#details">More...</a></p> -<div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> -<code>#include "<a class="el" href="string_8h_source.html">string.h</a>"</code><br /> -<code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> -<code>#include <inttypes.h></code><br /> -<code>#include <stdarg.h></code><br /> -</div> -<p><a href="utils_8h_source.html">Go to the source code of this file.</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> -Macros</h2></td></tr> -<tr class="memitem:a23efd74fa5f701d4cf26ccbfd138a439"><td class="memItemLeft" align="right" valign="top"><a id="a23efd74fa5f701d4cf26ccbfd138a439"></a> -#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">UCX_STREAM_COPY_BUFSIZE</a>   4096</td></tr> -<tr class="memdesc:a23efd74fa5f701d4cf26ccbfd138a439"><td class="mdescLeft"> </td><td class="mdescRight">Default buffer size for <a class="el" href="utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392" title="Shorthand for an unbounded ucx_stream_bncopy call using a default buffer. ">ucx_stream_copy()</a> and <a class="el" href="utils_8h.html#add13f39a8af440b4f7e6f74339eaada2" title="Shorthand for ucx_stream_bncopy using a default copy buffer. ">ucx_stream_ncopy()</a>. <br /></td></tr> -<tr class="separator:a23efd74fa5f701d4cf26ccbfd138a439"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a41ca1344f781c0d3bf7a414a6e811392"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392">ucx_stream_copy</a>(src, dest, rfnc, wfnc)</td></tr> -<tr class="memdesc:a41ca1344f781c0d3bf7a414a6e811392"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for an unbounded ucx_stream_bncopy call using a default buffer. <a href="#a41ca1344f781c0d3bf7a414a6e811392">More...</a><br /></td></tr> -<tr class="separator:a41ca1344f781c0d3bf7a414a6e811392"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:add13f39a8af440b4f7e6f74339eaada2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#add13f39a8af440b4f7e6f74339eaada2">ucx_stream_ncopy</a>(src, dest, rfnc, wfnc, n)</td></tr> -<tr class="memdesc:add13f39a8af440b4f7e6f74339eaada2"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for ucx_stream_bncopy using a default copy buffer. <a href="#add13f39a8af440b4f7e6f74339eaada2">More...</a><br /></td></tr> -<tr class="separator:add13f39a8af440b4f7e6f74339eaada2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a6003a1750a66234169bd1f8cc84b297b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a6003a1750a66234169bd1f8cc84b297b">ucx_stream_bcopy</a>(src, dest, rfnc, wfnc, buf, bufsize)</td></tr> -<tr class="memdesc:a6003a1750a66234169bd1f8cc84b297b"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for an unbounded ucx_stream_bncopy call using the specified buffer. <a href="#a6003a1750a66234169bd1f8cc84b297b">More...</a><br /></td></tr> -<tr class="separator:a6003a1750a66234169bd1f8cc84b297b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af9f333b66ecd639c347c7235f4992e2e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#af9f333b66ecd639c347c7235f4992e2e">ucx_sprintf</a>(...)   <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5">ucx_asprintf</a>(<a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>(), __VA_ARGS__)</td></tr> -<tr class="memdesc:af9f333b66ecd639c347c7235f4992e2e"><td class="mdescLeft"> </td><td class="mdescRight">Shortcut for <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5" title="A printf() like function which allocates space for a sstr_t the result is written to...">ucx_asprintf()</a> with default allocator. <a href="#af9f333b66ecd639c347c7235f4992e2e">More...</a><br /></td></tr> -<tr class="separator:af9f333b66ecd639c347c7235f4992e2e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9d7d65a420f026fcb6982803d5120519"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a9d7d65a420f026fcb6982803d5120519">ucx_bprintf</a>(buffer, ...)</td></tr> -<tr class="memdesc:a9d7d65a420f026fcb6982803d5120519"><td class="mdescLeft"> </td><td class="mdescRight">A <code>printf()</code> like function which writes the output to a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. <a href="#a9d7d65a420f026fcb6982803d5120519">More...</a><br /></td></tr> -<tr class="separator:a9d7d65a420f026fcb6982803d5120519"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:adeb6e8d0a53a829207cfa0a979d01fff"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#adeb6e8d0a53a829207cfa0a979d01fff">ucx_strcpy</a> (const void *s, void *data)</td></tr> -<tr class="memdesc:adeb6e8d0a53a829207cfa0a979d01fff"><td class="mdescLeft"> </td><td class="mdescRight">Copies a string. <a href="#adeb6e8d0a53a829207cfa0a979d01fff">More...</a><br /></td></tr> -<tr class="separator:adeb6e8d0a53a829207cfa0a979d01fff"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ab2e184e6a744941aab6b8058116baf30"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ab2e184e6a744941aab6b8058116baf30">ucx_memcpy</a> (const void *m, void *n)</td></tr> -<tr class="memdesc:ab2e184e6a744941aab6b8058116baf30"><td class="mdescLeft"> </td><td class="mdescRight">Copies a memory area. <a href="#ab2e184e6a744941aab6b8058116baf30">More...</a><br /></td></tr> -<tr class="separator:ab2e184e6a744941aab6b8058116baf30"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a114ee7f7da62656ffd35e2dc23394201"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a> (void *src, void *dest, <a class="el" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a> rfnc, <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> wfnc, char *buf, size_t bufsize, size_t n)</td></tr> -<tr class="memdesc:a114ee7f7da62656ffd35e2dc23394201"><td class="mdescLeft"> </td><td class="mdescRight">Reads data from a stream and writes it to another stream. <a href="#a114ee7f7da62656ffd35e2dc23394201">More...</a><br /></td></tr> -<tr class="separator:a114ee7f7da62656ffd35e2dc23394201"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa6a37b9d172b6a5b2803d152f9e1b258"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aa6a37b9d172b6a5b2803d152f9e1b258">ucx_cmp_str</a> (const void *s1, const void *s2, void *data)</td></tr> -<tr class="memdesc:aa6a37b9d172b6a5b2803d152f9e1b258"><td class="mdescLeft"> </td><td class="mdescRight">Wraps the strcmp function. <a href="#aa6a37b9d172b6a5b2803d152f9e1b258">More...</a><br /></td></tr> -<tr class="separator:aa6a37b9d172b6a5b2803d152f9e1b258"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac6b354a878f551a3a5b20a167db3f308"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ac6b354a878f551a3a5b20a167db3f308">ucx_cmp_strn</a> (const void *s1, const void *s2, void *n)</td></tr> -<tr class="memdesc:ac6b354a878f551a3a5b20a167db3f308"><td class="mdescLeft"> </td><td class="mdescRight">Wraps the strncmp function. <a href="#ac6b354a878f551a3a5b20a167db3f308">More...</a><br /></td></tr> -<tr class="separator:ac6b354a878f551a3a5b20a167db3f308"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:adee0739589166d272f8cb7c23aabf8ba"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#adee0739589166d272f8cb7c23aabf8ba">ucx_cmp_sstr</a> (const void *s1, const void *s2, void *data)</td></tr> -<tr class="memdesc:adee0739589166d272f8cb7c23aabf8ba"><td class="mdescLeft"> </td><td class="mdescRight">Wraps the sstrcmp function. <a href="#adee0739589166d272f8cb7c23aabf8ba">More...</a><br /></td></tr> -<tr class="separator:adee0739589166d272f8cb7c23aabf8ba"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a8ce7e11e6b3deafe89a32a091fde7f16"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a8ce7e11e6b3deafe89a32a091fde7f16">ucx_cmp_int</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a8ce7e11e6b3deafe89a32a091fde7f16"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type int. <a href="#a8ce7e11e6b3deafe89a32a091fde7f16">More...</a><br /></td></tr> -<tr class="separator:a8ce7e11e6b3deafe89a32a091fde7f16"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aeb57a2b9a6aaa0460c7a6bec29accf2c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aeb57a2b9a6aaa0460c7a6bec29accf2c">ucx_cmp_longint</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:aeb57a2b9a6aaa0460c7a6bec29accf2c"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type long int. <a href="#aeb57a2b9a6aaa0460c7a6bec29accf2c">More...</a><br /></td></tr> -<tr class="separator:aeb57a2b9a6aaa0460c7a6bec29accf2c"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a366b57def20f86a41eaedf575eea5375"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a366b57def20f86a41eaedf575eea5375">ucx_cmp_longlong</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a366b57def20f86a41eaedf575eea5375"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type long long. <a href="#a366b57def20f86a41eaedf575eea5375">More...</a><br /></td></tr> -<tr class="separator:a366b57def20f86a41eaedf575eea5375"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa29e6e559946375e34113e34e0b0bd0d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aa29e6e559946375e34113e34e0b0bd0d">ucx_cmp_int16</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:aa29e6e559946375e34113e34e0b0bd0d"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type int16_t. <a href="#aa29e6e559946375e34113e34e0b0bd0d">More...</a><br /></td></tr> -<tr class="separator:aa29e6e559946375e34113e34e0b0bd0d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a858b2ac443fb202643b71f6a7e9218dd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a858b2ac443fb202643b71f6a7e9218dd">ucx_cmp_int32</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a858b2ac443fb202643b71f6a7e9218dd"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type int32_t. <a href="#a858b2ac443fb202643b71f6a7e9218dd">More...</a><br /></td></tr> -<tr class="separator:a858b2ac443fb202643b71f6a7e9218dd"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a54701aea6a89fed1402dfb0bf56bc7f6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a54701aea6a89fed1402dfb0bf56bc7f6">ucx_cmp_int64</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a54701aea6a89fed1402dfb0bf56bc7f6"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type int64_t. <a href="#a54701aea6a89fed1402dfb0bf56bc7f6">More...</a><br /></td></tr> -<tr class="separator:a54701aea6a89fed1402dfb0bf56bc7f6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:abd83a5da91c3dd026a6931bd80c12f1e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#abd83a5da91c3dd026a6931bd80c12f1e">ucx_cmp_uint</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:abd83a5da91c3dd026a6931bd80c12f1e"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type unsigned int. <a href="#abd83a5da91c3dd026a6931bd80c12f1e">More...</a><br /></td></tr> -<tr class="separator:abd83a5da91c3dd026a6931bd80c12f1e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3f3cbae2594d6f722bae29acb0408a24"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a3f3cbae2594d6f722bae29acb0408a24">ucx_cmp_ulongint</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a3f3cbae2594d6f722bae29acb0408a24"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type unsigned long int. <a href="#a3f3cbae2594d6f722bae29acb0408a24">More...</a><br /></td></tr> -<tr class="separator:a3f3cbae2594d6f722bae29acb0408a24"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a6acfc359421f21f9a042a654ff7faac5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a6acfc359421f21f9a042a654ff7faac5">ucx_cmp_ulonglong</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a6acfc359421f21f9a042a654ff7faac5"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type unsigned long long. <a href="#a6acfc359421f21f9a042a654ff7faac5">More...</a><br /></td></tr> -<tr class="separator:a6acfc359421f21f9a042a654ff7faac5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:acde5366437e886a459b7468f7a9e11f0"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#acde5366437e886a459b7468f7a9e11f0">ucx_cmp_uint16</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:acde5366437e886a459b7468f7a9e11f0"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type uint16_t. <a href="#acde5366437e886a459b7468f7a9e11f0">More...</a><br /></td></tr> -<tr class="separator:acde5366437e886a459b7468f7a9e11f0"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5879d1722330355914d8c9146fa549d3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a5879d1722330355914d8c9146fa549d3">ucx_cmp_uint32</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a5879d1722330355914d8c9146fa549d3"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type uint32_t. <a href="#a5879d1722330355914d8c9146fa549d3">More...</a><br /></td></tr> -<tr class="separator:a5879d1722330355914d8c9146fa549d3"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a1572a78b5b42f7151a5b2a5a7283d62d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a1572a78b5b42f7151a5b2a5a7283d62d">ucx_cmp_uint64</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a1572a78b5b42f7151a5b2a5a7283d62d"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type uint64_t. <a href="#a1572a78b5b42f7151a5b2a5a7283d62d">More...</a><br /></td></tr> -<tr class="separator:a1572a78b5b42f7151a5b2a5a7283d62d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4ab6753739d56c09cdf6079fdcabf7c6"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a4ab6753739d56c09cdf6079fdcabf7c6">ucx_dist_int</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a4ab6753739d56c09cdf6079fdcabf7c6"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type int. <a href="#a4ab6753739d56c09cdf6079fdcabf7c6">More...</a><br /></td></tr> -<tr class="separator:a4ab6753739d56c09cdf6079fdcabf7c6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a43e73d288b1553a0078bf4c98dd341f5"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a43e73d288b1553a0078bf4c98dd341f5">ucx_dist_longint</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a43e73d288b1553a0078bf4c98dd341f5"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type long int. <a href="#a43e73d288b1553a0078bf4c98dd341f5">More...</a><br /></td></tr> -<tr class="separator:a43e73d288b1553a0078bf4c98dd341f5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a306778414a2427951ea263be92368627"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a306778414a2427951ea263be92368627">ucx_dist_longlong</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a306778414a2427951ea263be92368627"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type long long. <a href="#a306778414a2427951ea263be92368627">More...</a><br /></td></tr> -<tr class="separator:a306778414a2427951ea263be92368627"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a81fb8434b70ca11bf2c14abfa21d16a9"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a81fb8434b70ca11bf2c14abfa21d16a9">ucx_dist_int16</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a81fb8434b70ca11bf2c14abfa21d16a9"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type int16_t. <a href="#a81fb8434b70ca11bf2c14abfa21d16a9">More...</a><br /></td></tr> -<tr class="separator:a81fb8434b70ca11bf2c14abfa21d16a9"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ab4a659cc46096f0490c1dafa57726476"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ab4a659cc46096f0490c1dafa57726476">ucx_dist_int32</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:ab4a659cc46096f0490c1dafa57726476"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type int32_t. <a href="#ab4a659cc46096f0490c1dafa57726476">More...</a><br /></td></tr> -<tr class="separator:ab4a659cc46096f0490c1dafa57726476"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a54e7d06585bad3a899befc4e9c13853f"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a54e7d06585bad3a899befc4e9c13853f">ucx_dist_int64</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a54e7d06585bad3a899befc4e9c13853f"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type int64_t. <a href="#a54e7d06585bad3a899befc4e9c13853f">More...</a><br /></td></tr> -<tr class="separator:a54e7d06585bad3a899befc4e9c13853f"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a37b7d471ca1679992afc11a0deda45f4"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a37b7d471ca1679992afc11a0deda45f4">ucx_dist_uint</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a37b7d471ca1679992afc11a0deda45f4"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type unsigned int. <a href="#a37b7d471ca1679992afc11a0deda45f4">More...</a><br /></td></tr> -<tr class="separator:a37b7d471ca1679992afc11a0deda45f4"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:abb13476228d0c16bfaba08469adbae2d"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#abb13476228d0c16bfaba08469adbae2d">ucx_dist_ulongint</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:abb13476228d0c16bfaba08469adbae2d"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type unsigned long int. <a href="#abb13476228d0c16bfaba08469adbae2d">More...</a><br /></td></tr> -<tr class="separator:abb13476228d0c16bfaba08469adbae2d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a59a5859272cb4b43cbdd58208c41e32b"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a59a5859272cb4b43cbdd58208c41e32b">ucx_dist_ulonglong</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a59a5859272cb4b43cbdd58208c41e32b"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type unsigned long long. <a href="#a59a5859272cb4b43cbdd58208c41e32b">More...</a><br /></td></tr> -<tr class="separator:a59a5859272cb4b43cbdd58208c41e32b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a66e00a0703cbcde050ec922578e2f080"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a66e00a0703cbcde050ec922578e2f080">ucx_dist_uint16</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a66e00a0703cbcde050ec922578e2f080"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type uint16_t. <a href="#a66e00a0703cbcde050ec922578e2f080">More...</a><br /></td></tr> -<tr class="separator:a66e00a0703cbcde050ec922578e2f080"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:add2b5c5507caba59d894b84e056b079b"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#add2b5c5507caba59d894b84e056b079b">ucx_dist_uint32</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:add2b5c5507caba59d894b84e056b079b"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type uint32_t. <a href="#add2b5c5507caba59d894b84e056b079b">More...</a><br /></td></tr> -<tr class="separator:add2b5c5507caba59d894b84e056b079b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3ba75e2e0b2479eef2b22fb219b42da7"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a3ba75e2e0b2479eef2b22fb219b42da7">ucx_dist_uint64</a> (const void *i1, const void *i2, void *data)</td></tr> -<tr class="memdesc:a3ba75e2e0b2479eef2b22fb219b42da7"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type uint64_t. <a href="#a3ba75e2e0b2479eef2b22fb219b42da7">More...</a><br /></td></tr> -<tr class="separator:a3ba75e2e0b2479eef2b22fb219b42da7"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad1196b561bcdad76c393885819769a97"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ad1196b561bcdad76c393885819769a97">ucx_cmp_float</a> (const void *f1, const void *f2, void *data)</td></tr> -<tr class="memdesc:ad1196b561bcdad76c393885819769a97"><td class="mdescLeft"> </td><td class="mdescRight">Compares two real numbers of type float. <a href="#ad1196b561bcdad76c393885819769a97">More...</a><br /></td></tr> -<tr class="separator:ad1196b561bcdad76c393885819769a97"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ab804b7c27d0bfcd7bf3a3583140825b6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ab804b7c27d0bfcd7bf3a3583140825b6">ucx_cmp_double</a> (const void *d1, const void *d2, void *data)</td></tr> -<tr class="memdesc:ab804b7c27d0bfcd7bf3a3583140825b6"><td class="mdescLeft"> </td><td class="mdescRight">Compares two real numbers of type double. <a href="#ab804b7c27d0bfcd7bf3a3583140825b6">More...</a><br /></td></tr> -<tr class="separator:ab804b7c27d0bfcd7bf3a3583140825b6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa174d539de3ea59be4f9640f17ce53d8"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8">ucx_cmp_ptr</a> (const void *ptr1, const void *ptr2, void *data)</td></tr> -<tr class="memdesc:aa174d539de3ea59be4f9640f17ce53d8"><td class="mdescLeft"> </td><td class="mdescRight">Compares two pointers. <a href="#aa174d539de3ea59be4f9640f17ce53d8">More...</a><br /></td></tr> -<tr class="separator:aa174d539de3ea59be4f9640f17ce53d8"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aff7d2bcded71196831a8c0664333f8e7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aff7d2bcded71196831a8c0664333f8e7">ucx_cmp_mem</a> (const void *ptr1, const void *ptr2, void *n)</td></tr> -<tr class="memdesc:aff7d2bcded71196831a8c0664333f8e7"><td class="mdescLeft"> </td><td class="mdescRight">Compares two memory areas. <a href="#aff7d2bcded71196831a8c0664333f8e7">More...</a><br /></td></tr> -<tr class="separator:aff7d2bcded71196831a8c0664333f8e7"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa0bec80e1c67f769ff5e112a7d4ce72a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a">ucx_fprintf</a> (void *stream, <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> wfc, const char *fmt,...)</td></tr> -<tr class="memdesc:aa0bec80e1c67f769ff5e112a7d4ce72a"><td class="mdescLeft"> </td><td class="mdescRight">A <code>printf()</code> like function which writes the output to a stream by using a <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed" title="Function pointer to a write function. ">write_func()</a>. <a href="#aa0bec80e1c67f769ff5e112a7d4ce72a">More...</a><br /></td></tr> -<tr class="separator:aa0bec80e1c67f769ff5e112a7d4ce72a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4907967beb92c3ae351dd239abbb6927"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a4907967beb92c3ae351dd239abbb6927">ucx_vfprintf</a> (void *stream, <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> wfc, const char *fmt, va_list ap)</td></tr> -<tr class="memdesc:a4907967beb92c3ae351dd239abbb6927"><td class="mdescLeft"> </td><td class="mdescRight"><code>va_list</code> version of <a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a" title="A printf() like function which writes the output to a stream by using a write_func(). ">ucx_fprintf()</a>. <a href="#a4907967beb92c3ae351dd239abbb6927">More...</a><br /></td></tr> -<tr class="separator:a4907967beb92c3ae351dd239abbb6927"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9f9cf0e89ffdc256ecb35429907f51f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5">ucx_asprintf</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const char *fmt,...)</td></tr> -<tr class="memdesc:a9f9cf0e89ffdc256ecb35429907f51f5"><td class="mdescLeft"> </td><td class="mdescRight">A <code>printf()</code> like function which allocates space for a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> the result is written to. <a href="#a9f9cf0e89ffdc256ecb35429907f51f5">More...</a><br /></td></tr> -<tr class="separator:a9f9cf0e89ffdc256ecb35429907f51f5"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3ea1dfb856c741f3e8ec6bfdc9ad427e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a3ea1dfb856c741f3e8ec6bfdc9ad427e">ucx_vasprintf</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const char *fmt, va_list ap)</td></tr> -<tr class="memdesc:a3ea1dfb856c741f3e8ec6bfdc9ad427e"><td class="mdescLeft"> </td><td class="mdescRight"><code>va_list</code> version of <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5" title="A printf() like function which allocates space for a sstr_t the result is written to...">ucx_asprintf()</a>. <a href="#a3ea1dfb856c741f3e8ec6bfdc9ad427e">More...</a><br /></td></tr> -<tr class="separator:a3ea1dfb856c741f3e8ec6bfdc9ad427e"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Compare, copy and printf functions. </p> -<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> -<dd> -Olaf Wintermann </dd></dl> -</div><h2 class="groupheader">Macro Definition Documentation</h2> -<a id="a9d7d65a420f026fcb6982803d5120519"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9d7d65a420f026fcb6982803d5120519">◆ </a></span>ucx_bprintf</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_bprintf</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">buffer, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a">ucx_fprintf</a>((<a class="code" href="structUcxBuffer.html">UcxBuffer</a>*)buffer, \</div><div class="line"> (<a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>)<a class="code" href="buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05">ucx_buffer_write</a>, __VA_ARGS__)</div><div class="ttc" id="buffer_8h_html_af8aacc7401814392b58c1b7b81bffc05"><div class="ttname"><a href="buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05">ucx_buffer_write</a></div><div class="ttdeci">size_t ucx_buffer_write(const void *ptr, size_t size, size_t nitems, UcxBuffer *buffer)</div><div class="ttdoc">Writes data to a UcxBuffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:152</div></div> -<div class="ttc" id="structUcxBuffer_html"><div class="ttname"><a href="structUcxBuffer.html">UcxBuffer</a></div><div class="ttdoc">UCX Buffer. </div><div class="ttdef"><b>Definition:</b> buffer.h:73</div></div> -<div class="ttc" id="utils_8h_html_aa0bec80e1c67f769ff5e112a7d4ce72a"><div class="ttname"><a href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a">ucx_fprintf</a></div><div class="ttdeci">int ucx_fprintf(void *stream, write_func wfc, const char *fmt,...)</div><div class="ttdoc">A printf() like function which writes the output to a stream by using a write_func(). </div><div class="ttdef"><b>Definition:</b> utils.c:343</div></div> -<div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> -</div><!-- fragment --> -<p>A <code>printf()</code> like function which writes the output to a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">buffer</td><td>the buffer the data is written to </td></tr> - <tr><td class="paramname">...</td><td>format string and additional arguments </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the total number of bytes written </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a" title="A printf() like function which writes the output to a stream by using a write_func(). ">ucx_fprintf()</a> </dd></dl> - -</div> -</div> -<a id="af9f333b66ecd639c347c7235f4992e2e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#af9f333b66ecd639c347c7235f4992e2e">◆ </a></span>ucx_sprintf</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_sprintf</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em></td><td>)</td> - <td>   <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5">ucx_asprintf</a>(<a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>(), __VA_ARGS__)</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Shortcut for <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5" title="A printf() like function which allocates space for a sstr_t the result is written to...">ucx_asprintf()</a> with default allocator. </p> - -</div> -</div> -<a id="a6003a1750a66234169bd1f8cc84b297b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6003a1750a66234169bd1f8cc84b297b">◆ </a></span>ucx_stream_bcopy</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_stream_bcopy</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">src, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">dest, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">rfnc, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">wfnc, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">buf, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">bufsize </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a>(\</div><div class="line"> src, dest, (<a class="code" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a>)rfnc, (<a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>)wfnc, \</div><div class="line"> buf, bufsize, (<span class="keywordtype">size_t</span>)-1)</div><div class="ttc" id="utils_8h_html_a114ee7f7da62656ffd35e2dc23394201"><div class="ttname"><a href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a></div><div class="ttdeci">size_t ucx_stream_bncopy(void *src, void *dest, read_func rfnc, write_func wfnc, char *buf, size_t bufsize, size_t n)</div><div class="ttdoc">Reads data from a stream and writes it to another stream. </div><div class="ttdef"><b>Definition:</b> utils.c:52</div></div> -<div class="ttc" id="ucx_8h_html_a6a67e255e460acb58f802067b3ff5fd5"><div class="ttname"><a href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a></div><div class="ttdeci">size_t(* read_func)(void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a read function. </div><div class="ttdef"><b>Definition:</b> ucx.h:132</div></div> -<div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> -</div><!-- fragment --> -<p>Shorthand for an unbounded ucx_stream_bncopy call using the specified buffer. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">src</td><td>the source stream </td></tr> - <tr><td class="paramname">dest</td><td>the destination stream </td></tr> - <tr><td class="paramname">rfnc</td><td>the read function </td></tr> - <tr><td class="paramname">wfnc</td><td>the write function </td></tr> - <tr><td class="paramname">buf</td><td>a pointer to the copy buffer or <code>NULL</code> if a buffer shall be implicitly created on the heap </td></tr> - <tr><td class="paramname">bufsize</td><td>the size of the copy buffer - if <code>NULL</code> was provided for <code>buf</code>, this is the size of the buffer that shall be implicitly created </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>total number of bytes copied </dd></dl> - -</div> -</div> -<a id="a41ca1344f781c0d3bf7a414a6e811392"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a41ca1344f781c0d3bf7a414a6e811392">◆ </a></span>ucx_stream_copy</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_stream_copy</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">src, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">dest, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">rfnc, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">wfnc </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a>(\</div><div class="line"> src, dest, (<a class="code" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a>)rfnc, (<a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>)wfnc, \</div><div class="line"> NULL, <a class="code" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">UCX_STREAM_COPY_BUFSIZE</a>, (<span class="keywordtype">size_t</span>)-1)</div><div class="ttc" id="utils_8h_html_a114ee7f7da62656ffd35e2dc23394201"><div class="ttname"><a href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a></div><div class="ttdeci">size_t ucx_stream_bncopy(void *src, void *dest, read_func rfnc, write_func wfnc, char *buf, size_t bufsize, size_t n)</div><div class="ttdoc">Reads data from a stream and writes it to another stream. </div><div class="ttdef"><b>Definition:</b> utils.c:52</div></div> -<div class="ttc" id="utils_8h_html_a23efd74fa5f701d4cf26ccbfd138a439"><div class="ttname"><a href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">UCX_STREAM_COPY_BUFSIZE</a></div><div class="ttdeci">#define UCX_STREAM_COPY_BUFSIZE</div><div class="ttdoc">Default buffer size for ucx_stream_copy() and ucx_stream_ncopy(). </div><div class="ttdef"><b>Definition:</b> utils.h:55</div></div> -<div class="ttc" id="ucx_8h_html_a6a67e255e460acb58f802067b3ff5fd5"><div class="ttname"><a href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a></div><div class="ttdeci">size_t(* read_func)(void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a read function. </div><div class="ttdef"><b>Definition:</b> ucx.h:132</div></div> -<div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> -</div><!-- fragment --> -<p>Shorthand for an unbounded ucx_stream_bncopy call using a default buffer. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">src</td><td>the source stream </td></tr> - <tr><td class="paramname">dest</td><td>the destination stream </td></tr> - <tr><td class="paramname">rfnc</td><td>the read function </td></tr> - <tr><td class="paramname">wfnc</td><td>the write function </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>total number of bytes copied</dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439" title="Default buffer size for ucx_stream_copy() and ucx_stream_ncopy(). ">UCX_STREAM_COPY_BUFSIZE</a> </dd></dl> - -</div> -</div> -<a id="add13f39a8af440b4f7e6f74339eaada2"></a> -<h2 class="memtitle"><span class="permalink"><a href="#add13f39a8af440b4f7e6f74339eaada2">◆ </a></span>ucx_stream_ncopy</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">#define ucx_stream_ncopy</td> - <td>(</td> - <td class="paramtype"> </td> - <td class="paramname">src, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">dest, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">rfnc, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">wfnc, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname">n </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> -<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a>(\</div><div class="line"> src, dest, (<a class="code" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a>)rfnc, (<a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>)wfnc, \</div><div class="line"> NULL, <a class="code" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">UCX_STREAM_COPY_BUFSIZE</a>, n)</div><div class="ttc" id="utils_8h_html_a114ee7f7da62656ffd35e2dc23394201"><div class="ttname"><a href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a></div><div class="ttdeci">size_t ucx_stream_bncopy(void *src, void *dest, read_func rfnc, write_func wfnc, char *buf, size_t bufsize, size_t n)</div><div class="ttdoc">Reads data from a stream and writes it to another stream. </div><div class="ttdef"><b>Definition:</b> utils.c:52</div></div> -<div class="ttc" id="utils_8h_html_a23efd74fa5f701d4cf26ccbfd138a439"><div class="ttname"><a href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">UCX_STREAM_COPY_BUFSIZE</a></div><div class="ttdeci">#define UCX_STREAM_COPY_BUFSIZE</div><div class="ttdoc">Default buffer size for ucx_stream_copy() and ucx_stream_ncopy(). </div><div class="ttdef"><b>Definition:</b> utils.h:55</div></div> -<div class="ttc" id="ucx_8h_html_a6a67e255e460acb58f802067b3ff5fd5"><div class="ttname"><a href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a></div><div class="ttdeci">size_t(* read_func)(void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a read function. </div><div class="ttdef"><b>Definition:</b> ucx.h:132</div></div> -<div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> -</div><!-- fragment --> -<p>Shorthand for ucx_stream_bncopy using a default copy buffer. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">src</td><td>the source stream </td></tr> - <tr><td class="paramname">dest</td><td>the destination stream </td></tr> - <tr><td class="paramname">rfnc</td><td>the read function </td></tr> - <tr><td class="paramname">wfnc</td><td>the write function </td></tr> - <tr><td class="paramname">n</td><td>maximum number of bytes that shall be copied </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>total number of bytes copied </dd></dl> - -</div> -</div> -<h2 class="groupheader">Function Documentation</h2> -<a id="a9f9cf0e89ffdc256ecb35429907f51f5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9f9cf0e89ffdc256ecb35429907f51f5">◆ </a></span>ucx_asprintf()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> ucx_asprintf </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const char * </td> - <td class="paramname"><em>fmt</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A <code>printf()</code> like function which allocates space for a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> the result is written to. </p> -<p><b>Attention</b>: The <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> data is allocated with the allocators <a class="el" href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473" title="A function pointer to the allocators malloc() function. ">ucx_allocator_malloc()</a> function. So it is implementation dependent, if the returned <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> pointer must be passed to the allocators <a class="el" href="allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e" title="A function pointer to the allocators free() function. ">ucx_allocator_free()</a> function manually.</p> -<p><b>Note</b>: The <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value will <em>always</em> be <code>NULL</code>-terminated.</p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> used for allocating the result <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> </td></tr> - <tr><td class="paramname">fmt</td><td>format string </td></tr> - <tr><td class="paramname">...</td><td>additional arguments </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing the formatted string </dd></dl> - -</div> -</div> -<a id="ab804b7c27d0bfcd7bf3a3583140825b6"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ab804b7c27d0bfcd7bf3a3583140825b6">◆ </a></span>ucx_cmp_double()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_double </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>d1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>d2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two real numbers of type double. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">d1</td><td>pointer to double one </td></tr> - <tr><td class="paramname">d2</td><td>pointer to double two </td></tr> - <tr><td class="paramname">data</td><td>if provided: a pointer to precision (default: 1e-14) </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *d1 is less than *d2, 0 if both are equal, 1 if *d1 is greater than *d2 </dd></dl> - -</div> -</div> -<a id="ad1196b561bcdad76c393885819769a97"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ad1196b561bcdad76c393885819769a97">◆ </a></span>ucx_cmp_float()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_float </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>f1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>f2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two real numbers of type float. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">f1</td><td>pointer to float one </td></tr> - <tr><td class="paramname">f2</td><td>pointer to float two </td></tr> - <tr><td class="paramname">data</td><td>if provided: a pointer to precision (default: 1e-6f) </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *f1 is less than *f2, 0 if both are equal, 1 if *f1 is greater than *f2 </dd></dl> - -</div> -</div> -<a id="a8ce7e11e6b3deafe89a32a091fde7f16"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a8ce7e11e6b3deafe89a32a091fde7f16">◆ </a></span>ucx_cmp_int()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_int </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type int. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to integer one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to integer two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="aa29e6e559946375e34113e34e0b0bd0d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa29e6e559946375e34113e34e0b0bd0d">◆ </a></span>ucx_cmp_int16()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_int16 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type int16_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to int16_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to int16_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="a858b2ac443fb202643b71f6a7e9218dd"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a858b2ac443fb202643b71f6a7e9218dd">◆ </a></span>ucx_cmp_int32()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_int32 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type int32_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to int32_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to int32_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="a54701aea6a89fed1402dfb0bf56bc7f6"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a54701aea6a89fed1402dfb0bf56bc7f6">◆ </a></span>ucx_cmp_int64()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_int64 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type int64_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to int64_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to int64_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="aeb57a2b9a6aaa0460c7a6bec29accf2c"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aeb57a2b9a6aaa0460c7a6bec29accf2c">◆ </a></span>ucx_cmp_longint()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_longint </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type long int. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to long integer one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to long integer two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="a366b57def20f86a41eaedf575eea5375"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a366b57def20f86a41eaedf575eea5375">◆ </a></span>ucx_cmp_longlong()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_longlong </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type long long. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to long long one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to long long two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="aff7d2bcded71196831a8c0664333f8e7"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aff7d2bcded71196831a8c0664333f8e7">◆ </a></span>ucx_cmp_mem()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_mem </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>ptr1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>ptr2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two memory areas. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">ptr1</td><td>pointer one </td></tr> - <tr><td class="paramname">ptr2</td><td>pointer two </td></tr> - <tr><td class="paramname">n</td><td>a pointer to the size_t containing the third parameter for memcmp </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the result of memcmp(ptr1, ptr2, *n) </dd></dl> - -</div> -</div> -<a id="aa174d539de3ea59be4f9640f17ce53d8"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa174d539de3ea59be4f9640f17ce53d8">◆ </a></span>ucx_cmp_ptr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_ptr </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>ptr1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>ptr2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two pointers. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">ptr1</td><td>pointer one </td></tr> - <tr><td class="paramname">ptr2</td><td>pointer two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1 if ptr1 is less than ptr2, 0 if both are equal, 1 if ptr1 is greater than ptr2 </dd></dl> - -</div> -</div> -<a id="adee0739589166d272f8cb7c23aabf8ba"></a> -<h2 class="memtitle"><span class="permalink"><a href="#adee0739589166d272f8cb7c23aabf8ba">◆ </a></span>ucx_cmp_sstr()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_sstr </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>s1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>s2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Wraps the sstrcmp function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">s1</td><td>sstr one </td></tr> - <tr><td class="paramname">s2</td><td>sstr two </td></tr> - <tr><td class="paramname">data</td><td>ignored </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the result of <a class="el" href="string_8h.html#a7ae7156c8de57454ca38d306100b8160" title="Compares two UCX strings with standard memcmp(). ">sstrcmp(s1, s2)</a> </dd></dl> - -</div> -</div> -<a id="aa6a37b9d172b6a5b2803d152f9e1b258"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa6a37b9d172b6a5b2803d152f9e1b258">◆ </a></span>ucx_cmp_str()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_str </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>s1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>s2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Wraps the strcmp function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">s1</td><td>string one </td></tr> - <tr><td class="paramname">s2</td><td>string two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the result of strcmp(s1, s2) </dd></dl> - -</div> -</div> -<a id="ac6b354a878f551a3a5b20a167db3f308"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ac6b354a878f551a3a5b20a167db3f308">◆ </a></span>ucx_cmp_strn()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_strn </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>s1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>s2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Wraps the strncmp function. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">s1</td><td>string one </td></tr> - <tr><td class="paramname">s2</td><td>string two </td></tr> - <tr><td class="paramname">n</td><td>a pointer to the size_t containing the third strncmp parameter </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the result of strncmp(s1, s2, *n) </dd></dl> - -</div> -</div> -<a id="abd83a5da91c3dd026a6931bd80c12f1e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abd83a5da91c3dd026a6931bd80c12f1e">◆ </a></span>ucx_cmp_uint()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_uint </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type unsigned int. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to unsigned integer one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to unsigned integer two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="acde5366437e886a459b7468f7a9e11f0"></a> -<h2 class="memtitle"><span class="permalink"><a href="#acde5366437e886a459b7468f7a9e11f0">◆ </a></span>ucx_cmp_uint16()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_uint16 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type uint16_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to uint16_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to uint16_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="a5879d1722330355914d8c9146fa549d3"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a5879d1722330355914d8c9146fa549d3">◆ </a></span>ucx_cmp_uint32()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_uint32 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type uint32_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to uint32_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to uint32_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="a1572a78b5b42f7151a5b2a5a7283d62d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a1572a78b5b42f7151a5b2a5a7283d62d">◆ </a></span>ucx_cmp_uint64()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_uint64 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type uint64_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to uint64_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to uint64_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="a3f3cbae2594d6f722bae29acb0408a24"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3f3cbae2594d6f722bae29acb0408a24">◆ </a></span>ucx_cmp_ulongint()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_ulongint </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type unsigned long int. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to unsigned long integer one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to unsigned long integer two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="a6acfc359421f21f9a042a654ff7faac5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a6acfc359421f21f9a042a654ff7faac5">◆ </a></span>ucx_cmp_ulonglong()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_cmp_ulonglong </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Compares two integers of type unsigned long long. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to unsigned long long one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to unsigned long long two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> - -</div> -</div> -<a id="a4ab6753739d56c09cdf6079fdcabf7c6"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4ab6753739d56c09cdf6079fdcabf7c6">◆ </a></span>ucx_dist_int()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_int </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type int. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to integer one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to integer two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="a81fb8434b70ca11bf2c14abfa21d16a9"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a81fb8434b70ca11bf2c14abfa21d16a9">◆ </a></span>ucx_dist_int16()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_int16 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type int16_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to int16_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to int16_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="ab4a659cc46096f0490c1dafa57726476"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ab4a659cc46096f0490c1dafa57726476">◆ </a></span>ucx_dist_int32()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_int32 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type int32_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to int32_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to int32_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="a54e7d06585bad3a899befc4e9c13853f"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a54e7d06585bad3a899befc4e9c13853f">◆ </a></span>ucx_dist_int64()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_int64 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type int64_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to int64_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to int64_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="a43e73d288b1553a0078bf4c98dd341f5"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a43e73d288b1553a0078bf4c98dd341f5">◆ </a></span>ucx_dist_longint()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_longint </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type long int. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to long integer one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to long integer two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="a306778414a2427951ea263be92368627"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a306778414a2427951ea263be92368627">◆ </a></span>ucx_dist_longlong()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_longlong </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type long long. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to long long one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to long long two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="a37b7d471ca1679992afc11a0deda45f4"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a37b7d471ca1679992afc11a0deda45f4">◆ </a></span>ucx_dist_uint()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_uint </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type unsigned int. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to unsigned integer one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to unsigned integer two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="a66e00a0703cbcde050ec922578e2f080"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a66e00a0703cbcde050ec922578e2f080">◆ </a></span>ucx_dist_uint16()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_uint16 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type uint16_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to uint16_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to uint16_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="add2b5c5507caba59d894b84e056b079b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#add2b5c5507caba59d894b84e056b079b">◆ </a></span>ucx_dist_uint32()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_uint32 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type uint32_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to uint32_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to uint32_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="a3ba75e2e0b2479eef2b22fb219b42da7"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3ba75e2e0b2479eef2b22fb219b42da7">◆ </a></span>ucx_dist_uint64()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_uint64 </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type uint64_t. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to uint64_t one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to uint64_t two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="abb13476228d0c16bfaba08469adbae2d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#abb13476228d0c16bfaba08469adbae2d">◆ </a></span>ucx_dist_ulongint()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_ulongint </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type unsigned long int. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to unsigned long integer one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to unsigned long integer two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="a59a5859272cb4b43cbdd58208c41e32b"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a59a5859272cb4b43cbdd58208c41e32b">◆ </a></span>ucx_dist_ulonglong()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">intmax_t ucx_dist_ulonglong </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i1</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>i2</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Distance function for integers of type unsigned long long. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">i1</td><td>pointer to unsigned long long one </td></tr> - <tr><td class="paramname">i2</td><td>pointer to unsigned long long two </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> - -</div> -</div> -<a id="aa0bec80e1c67f769ff5e112a7d4ce72a"></a> -<h2 class="memtitle"><span class="permalink"><a href="#aa0bec80e1c67f769ff5e112a7d4ce72a">◆ </a></span>ucx_fprintf()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_fprintf </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>stream</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> </td> - <td class="paramname"><em>wfc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const char * </td> - <td class="paramname"><em>fmt</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"> </td> - <td class="paramname"><em>...</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>A <code>printf()</code> like function which writes the output to a stream by using a <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed" title="Function pointer to a write function. ">write_func()</a>. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stream</td><td>the stream the data is written to </td></tr> - <tr><td class="paramname">wfc</td><td>the write function </td></tr> - <tr><td class="paramname">fmt</td><td>format string </td></tr> - <tr><td class="paramname">...</td><td>additional arguments </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the total number of bytes written </dd></dl> - -</div> -</div> -<a id="ab2e184e6a744941aab6b8058116baf30"></a> -<h2 class="memtitle"><span class="permalink"><a href="#ab2e184e6a744941aab6b8058116baf30">◆ </a></span>ucx_memcpy()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_memcpy </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>m</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Copies a memory area. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">m</td><td>a pointer to the memory area </td></tr> - <tr><td class="paramname">n</td><td>a pointer to the size_t containing the size of the memory area </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to a copy of the specified memory area that can be passed to free(void*) </dd></dl> - -</div> -</div> -<a id="adeb6e8d0a53a829207cfa0a979d01fff"></a> -<h2 class="memtitle"><span class="permalink"><a href="#adeb6e8d0a53a829207cfa0a979d01fff">◆ </a></span>ucx_strcpy()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void* ucx_strcpy </td> - <td>(</td> - <td class="paramtype">const void * </td> - <td class="paramname"><em>s</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>data</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Copies a string. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">s</td><td>the string to copy </td></tr> - <tr><td class="paramname">data</td><td>omitted </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a pointer to a copy of s1 that can be passed to free(void*) </dd></dl> - -</div> -</div> -<a id="a114ee7f7da62656ffd35e2dc23394201"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a114ee7f7da62656ffd35e2dc23394201">◆ </a></span>ucx_stream_bncopy()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">size_t ucx_stream_bncopy </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>src</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">void * </td> - <td class="paramname"><em>dest</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a> </td> - <td class="paramname"><em>rfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> </td> - <td class="paramname"><em>wfnc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">char * </td> - <td class="paramname"><em>buf</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>bufsize</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">size_t </td> - <td class="paramname"><em>n</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Reads data from a stream and writes it to another stream. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">src</td><td>the source stream </td></tr> - <tr><td class="paramname">dest</td><td>the destination stream </td></tr> - <tr><td class="paramname">rfnc</td><td>the read function </td></tr> - <tr><td class="paramname">wfnc</td><td>the write function </td></tr> - <tr><td class="paramname">buf</td><td>a pointer to the copy buffer or <code>NULL</code> if a buffer shall be implicitly created on the heap </td></tr> - <tr><td class="paramname">bufsize</td><td>the size of the copy buffer - if <code>NULL</code> was provided for <code>buf</code>, this is the size of the buffer that shall be implicitly created </td></tr> - <tr><td class="paramname">n</td><td>the maximum number of bytes that shall be copied </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the total number of bytes copied </dd></dl> - -</div> -</div> -<a id="a3ea1dfb856c741f3e8ec6bfdc9ad427e"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a3ea1dfb856c741f3e8ec6bfdc9ad427e">◆ </a></span>ucx_vasprintf()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> ucx_vasprintf </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> - <td class="paramname"><em>allocator</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const char * </td> - <td class="paramname"><em>fmt</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">va_list </td> - <td class="paramname"><em>ap</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p><code>va_list</code> version of <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5" title="A printf() like function which allocates space for a sstr_t the result is written to...">ucx_asprintf()</a>. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">allocator</td><td>the <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> used for allocating the result <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> </td></tr> - <tr><td class="paramname">fmt</td><td>format string </td></tr> - <tr><td class="paramname">ap</td><td>argument list </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing the formatted string </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5" title="A printf() like function which allocates space for a sstr_t the result is written to...">ucx_asprintf()</a> </dd></dl> - -</div> -</div> -<a id="a4907967beb92c3ae351dd239abbb6927"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a4907967beb92c3ae351dd239abbb6927">◆ </a></span>ucx_vfprintf()</h2> - -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int ucx_vfprintf </td> - <td>(</td> - <td class="paramtype">void * </td> - <td class="paramname"><em>stream</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype"><a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> </td> - <td class="paramname"><em>wfc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const char * </td> - <td class="paramname"><em>fmt</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">va_list </td> - <td class="paramname"><em>ap</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p><code>va_list</code> version of <a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a" title="A printf() like function which writes the output to a stream by using a write_func(). ">ucx_fprintf()</a>. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stream</td><td>the stream the data is written to </td></tr> - <tr><td class="paramname">wfc</td><td>the write function </td></tr> - <tr><td class="paramname">fmt</td><td>format string </td></tr> - <tr><td class="paramname">ap</td><td>argument list </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>the total number of bytes written </dd></dl> -<dl class="section see"><dt>See also</dt><dd><a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a" title="A printf() like function which writes the output to a stream by using a write_func(). ">ucx_fprintf()</a> </dd></dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/api-2.1/utils_8h_source.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> -<meta name="viewport" content="width=device-width, initial-scale=1"/> -<title>ucx: /home/mike/workspace/c/ucx/src/ucx/utils.h Source File</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/searchdata.js"></script> -<script type="text/javascript" src="search/search.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">ucx - </div> - <div id="projectbrief">UAP Common Extensions</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> -<script type="text/javascript" src="menudata.js"></script> -<script type="text/javascript" src="menu.js"></script> -<script type="text/javascript"> -$(function() { - initMenu('',true,false,'search.php','Search'); - $(document).ready(function() { init_search(); }); -}); -</script> -<div id="main-nav"></div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -</div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">utils.h</div> </div> -</div><!--header--> -<div class="contents"> -<a href="utils_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#ifndef UCX_UTILS_H</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#define UCX_UTILS_H</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="ucx_8h.html">ucx.h</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "<a class="code" href="string_8h.html">string.h</a>"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "<a class="code" href="allocator_8h.html">allocator.h</a>"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <inttypes.h></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <<a class="code" href="string_8h.html">string.h</a>></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <stdarg.h></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439"> 55</a></span> <span class="preprocessor">#define UCX_STREAM_COPY_BUFSIZE 4096</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keywordtype">void</span> *<a class="code" href="utils_8h.html#adeb6e8d0a53a829207cfa0a979d01fff">ucx_strcpy</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *s, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keywordtype">void</span> *<a class="code" href="utils_8h.html#ab2e184e6a744941aab6b8058116baf30">ucx_memcpy</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *m, <span class="keywordtype">void</span> *n);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keywordtype">size_t</span> <a class="code" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a>(<span class="keywordtype">void</span> *src, <span class="keywordtype">void</span> *dest, <a class="code" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a> rfnc, <a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> wfnc,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">char</span>* buf, <span class="keywordtype">size_t</span> bufsize, <span class="keywordtype">size_t</span> n);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392"> 104</a></span> <span class="preprocessor">#define ucx_stream_copy(src,dest,rfnc,wfnc) ucx_stream_bncopy(\</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor"> src, dest, (read_func)rfnc, (write_func)wfnc, \</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor"> NULL, UCX_STREAM_COPY_BUFSIZE, (size_t)-1)</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="utils_8h.html#add13f39a8af440b4f7e6f74339eaada2"> 118</a></span> <span class="preprocessor">#define ucx_stream_ncopy(src,dest,rfnc,wfnc, n) ucx_stream_bncopy(\</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor"> src, dest, (read_func)rfnc, (write_func)wfnc, \</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor"> NULL, UCX_STREAM_COPY_BUFSIZE, n)</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="utils_8h.html#a6003a1750a66234169bd1f8cc84b297b"> 136</a></span> <span class="preprocessor">#define ucx_stream_bcopy(src,dest,rfnc,wfnc, buf, bufsize) ucx_stream_bncopy(\</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor"> src, dest, (read_func)rfnc, (write_func)wfnc, \</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor"> buf, bufsize, (size_t)-1)</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#aa6a37b9d172b6a5b2803d152f9e1b258">ucx_cmp_str</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *s1, <span class="keyword">const</span> <span class="keywordtype">void</span> *s2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#ac6b354a878f551a3a5b20a167db3f308">ucx_cmp_strn</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *s1, <span class="keyword">const</span> <span class="keywordtype">void</span> *s2, <span class="keywordtype">void</span> *n);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#adee0739589166d272f8cb7c23aabf8ba">ucx_cmp_sstr</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *s1, <span class="keyword">const</span> <span class="keywordtype">void</span> *s2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#a8ce7e11e6b3deafe89a32a091fde7f16">ucx_cmp_int</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#aeb57a2b9a6aaa0460c7a6bec29accf2c">ucx_cmp_longint</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#a366b57def20f86a41eaedf575eea5375">ucx_cmp_longlong</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#aa29e6e559946375e34113e34e0b0bd0d">ucx_cmp_int16</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#a858b2ac443fb202643b71f6a7e9218dd">ucx_cmp_int32</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#a54701aea6a89fed1402dfb0bf56bc7f6">ucx_cmp_int64</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#abd83a5da91c3dd026a6931bd80c12f1e">ucx_cmp_uint</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#a3f3cbae2594d6f722bae29acb0408a24">ucx_cmp_ulongint</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#a6acfc359421f21f9a042a654ff7faac5">ucx_cmp_ulonglong</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#acde5366437e886a459b7468f7a9e11f0">ucx_cmp_uint16</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#a5879d1722330355914d8c9146fa549d3">ucx_cmp_uint32</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#a1572a78b5b42f7151a5b2a5a7283d62d">ucx_cmp_uint64</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> intmax_t <a class="code" href="utils_8h.html#a4ab6753739d56c09cdf6079fdcabf7c6">ucx_dist_int</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> intmax_t <a class="code" href="utils_8h.html#a43e73d288b1553a0078bf4c98dd341f5">ucx_dist_longint</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> intmax_t <a class="code" href="utils_8h.html#a306778414a2427951ea263be92368627">ucx_dist_longlong</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> intmax_t <a class="code" href="utils_8h.html#a81fb8434b70ca11bf2c14abfa21d16a9">ucx_dist_int16</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> intmax_t <a class="code" href="utils_8h.html#ab4a659cc46096f0490c1dafa57726476">ucx_dist_int32</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> intmax_t <a class="code" href="utils_8h.html#a54e7d06585bad3a899befc4e9c13853f">ucx_dist_int64</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> intmax_t <a class="code" href="utils_8h.html#a37b7d471ca1679992afc11a0deda45f4">ucx_dist_uint</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> intmax_t <a class="code" href="utils_8h.html#abb13476228d0c16bfaba08469adbae2d">ucx_dist_ulongint</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> intmax_t <a class="code" href="utils_8h.html#a59a5859272cb4b43cbdd58208c41e32b">ucx_dist_ulonglong</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> intmax_t <a class="code" href="utils_8h.html#a66e00a0703cbcde050ec922578e2f080">ucx_dist_uint16</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> intmax_t <a class="code" href="utils_8h.html#add2b5c5507caba59d894b84e056b079b">ucx_dist_uint32</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> intmax_t <a class="code" href="utils_8h.html#a3ba75e2e0b2479eef2b22fb219b42da7">ucx_dist_uint64</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *i1, <span class="keyword">const</span> <span class="keywordtype">void</span> *i2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#ad1196b561bcdad76c393885819769a97">ucx_cmp_float</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *f1, <span class="keyword">const</span> <span class="keywordtype">void</span> *f2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#ab804b7c27d0bfcd7bf3a3583140825b6">ucx_cmp_double</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *d1, <span class="keyword">const</span> <span class="keywordtype">void</span> *d2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8">ucx_cmp_ptr</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *ptr1, <span class="keyword">const</span> <span class="keywordtype">void</span> *ptr2, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#aff7d2bcded71196831a8c0664333f8e7">ucx_cmp_mem</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *ptr1, <span class="keyword">const</span> <span class="keywordtype">void</span> *ptr2, <span class="keywordtype">void</span> *n);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a">ucx_fprintf</a>(<span class="keywordtype">void</span> *stream, <a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> wfc, <span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, ...);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="keywordtype">int</span> <a class="code" href="utils_8h.html#a4907967beb92c3ae351dd239abbb6927">ucx_vfprintf</a>(<span class="keywordtype">void</span> *stream, <a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> wfc, <span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, va_list ap);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5">ucx_asprintf</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, ...);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> </div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="utils_8h.html#a3ea1dfb856c741f3e8ec6bfdc9ad427e">ucx_vasprintf</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, va_list ap);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00488"></a><span class="lineno"><a class="line" href="utils_8h.html#af9f333b66ecd639c347c7235f4992e2e"> 488</a></span> <span class="preprocessor">#define ucx_sprintf(...) \</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="preprocessor"> ucx_asprintf(ucx_default_allocator(), __VA_ARGS__)</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="utils_8h.html#a9d7d65a420f026fcb6982803d5120519"> 500</a></span> <span class="preprocessor">#define ucx_bprintf(buffer, ...) ucx_fprintf((UcxBuffer*)buffer, \</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="preprocessor"> (write_func)ucx_buffer_write, __VA_ARGS__)</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> </div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor">#endif </span><span class="comment">/* UCX_UTILS_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="ttc" id="utils_8h_html_a5879d1722330355914d8c9146fa549d3"><div class="ttname"><a href="utils_8h.html#a5879d1722330355914d8c9146fa549d3">ucx_cmp_uint32</a></div><div class="ttdeci">int ucx_cmp_uint32(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type uint32_t. </div><div class="ttdef"><b>Definition:</b> utils.c:205</div></div> -<div class="ttc" id="structsstr__t_html"><div class="ttname"><a href="structsstr__t.html">sstr_t</a></div><div class="ttdoc">The UCX string structure. </div><div class="ttdef"><b>Definition:</b> string.h:90</div></div> -<div class="ttc" id="utils_8h_html_aeb57a2b9a6aaa0460c7a6bec29accf2c"><div class="ttname"><a href="utils_8h.html#aeb57a2b9a6aaa0460c7a6bec29accf2c">ucx_cmp_longint</a></div><div class="ttdeci">int ucx_cmp_longint(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type long int. </div><div class="ttdef"><b>Definition:</b> utils.c:115</div></div> -<div class="ttc" id="utils_8h_html_a4ab6753739d56c09cdf6079fdcabf7c6"><div class="ttname"><a href="utils_8h.html#a4ab6753739d56c09cdf6079fdcabf7c6">ucx_dist_int</a></div><div class="ttdeci">intmax_t ucx_dist_int(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type int. </div><div class="ttdef"><b>Definition:</b> utils.c:225</div></div> -<div class="ttc" id="string_8h_html"><div class="ttname"><a href="string_8h.html">string.h</a></div><div class="ttdoc">Bounded string implementation. </div></div> -<div class="ttc" id="utils_8h_html_a6acfc359421f21f9a042a654ff7faac5"><div class="ttname"><a href="utils_8h.html#a6acfc359421f21f9a042a654ff7faac5">ucx_cmp_ulonglong</a></div><div class="ttdeci">int ucx_cmp_ulonglong(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type unsigned long long. </div><div class="ttdef"><b>Definition:</b> utils.c:185</div></div> -<div class="ttc" id="utils_8h_html_a114ee7f7da62656ffd35e2dc23394201"><div class="ttname"><a href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a></div><div class="ttdeci">size_t ucx_stream_bncopy(void *src, void *dest, read_func rfnc, write_func wfnc, char *buf, size_t bufsize, size_t n)</div><div class="ttdoc">Reads data from a stream and writes it to another stream. </div><div class="ttdef"><b>Definition:</b> utils.c:52</div></div> -<div class="ttc" id="utils_8h_html_adee0739589166d272f8cb7c23aabf8ba"><div class="ttname"><a href="utils_8h.html#adee0739589166d272f8cb7c23aabf8ba">ucx_cmp_sstr</a></div><div class="ttdeci">int ucx_cmp_sstr(const void *s1, const void *s2, void *data)</div><div class="ttdoc">Wraps the sstrcmp function. </div><div class="ttdef"><b>Definition:</b> utils.c:99</div></div> -<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div> -<div class="ttc" id="utils_8h_html_ad1196b561bcdad76c393885819769a97"><div class="ttname"><a href="utils_8h.html#ad1196b561bcdad76c393885819769a97">ucx_cmp_float</a></div><div class="ttdeci">int ucx_cmp_float(const void *f1, const void *f2, void *data)</div><div class="ttdoc">Compares two real numbers of type float. </div><div class="ttdef"><b>Definition:</b> utils.c:297</div></div> -<div class="ttc" id="utils_8h_html_a366b57def20f86a41eaedf575eea5375"><div class="ttname"><a href="utils_8h.html#a366b57def20f86a41eaedf575eea5375">ucx_cmp_longlong</a></div><div class="ttdeci">int ucx_cmp_longlong(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type long long. </div><div class="ttdef"><b>Definition:</b> utils.c:125</div></div> -<div class="ttc" id="utils_8h_html_a858b2ac443fb202643b71f6a7e9218dd"><div class="ttname"><a href="utils_8h.html#a858b2ac443fb202643b71f6a7e9218dd">ucx_cmp_int32</a></div><div class="ttdeci">int ucx_cmp_int32(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type int32_t. </div><div class="ttdef"><b>Definition:</b> utils.c:145</div></div> -<div class="ttc" id="utils_8h_html_a3f3cbae2594d6f722bae29acb0408a24"><div class="ttname"><a href="utils_8h.html#a3f3cbae2594d6f722bae29acb0408a24">ucx_cmp_ulongint</a></div><div class="ttdeci">int ucx_cmp_ulongint(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type unsigned long int. </div><div class="ttdef"><b>Definition:</b> utils.c:175</div></div> -<div class="ttc" id="utils_8h_html_a1572a78b5b42f7151a5b2a5a7283d62d"><div class="ttname"><a href="utils_8h.html#a1572a78b5b42f7151a5b2a5a7283d62d">ucx_cmp_uint64</a></div><div class="ttdeci">int ucx_cmp_uint64(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type uint64_t. </div><div class="ttdef"><b>Definition:</b> utils.c:215</div></div> -<div class="ttc" id="utils_8h_html_a306778414a2427951ea263be92368627"><div class="ttname"><a href="utils_8h.html#a306778414a2427951ea263be92368627">ucx_dist_longlong</a></div><div class="ttdeci">intmax_t ucx_dist_longlong(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type long long. </div><div class="ttdef"><b>Definition:</b> utils.c:237</div></div> -<div class="ttc" id="utils_8h_html_ac6b354a878f551a3a5b20a167db3f308"><div class="ttname"><a href="utils_8h.html#ac6b354a878f551a3a5b20a167db3f308">ucx_cmp_strn</a></div><div class="ttdeci">int ucx_cmp_strn(const void *s1, const void *s2, void *n)</div><div class="ttdoc">Wraps the strncmp function. </div><div class="ttdef"><b>Definition:</b> utils.c:95</div></div> -<div class="ttc" id="utils_8h_html_aa6a37b9d172b6a5b2803d152f9e1b258"><div class="ttname"><a href="utils_8h.html#aa6a37b9d172b6a5b2803d152f9e1b258">ucx_cmp_str</a></div><div class="ttdeci">int ucx_cmp_str(const void *s1, const void *s2, void *data)</div><div class="ttdoc">Wraps the strcmp function. </div><div class="ttdef"><b>Definition:</b> utils.c:91</div></div> -<div class="ttc" id="utils_8h_html_ab804b7c27d0bfcd7bf3a3583140825b6"><div class="ttname"><a href="utils_8h.html#ab804b7c27d0bfcd7bf3a3583140825b6">ucx_cmp_double</a></div><div class="ttdeci">int ucx_cmp_double(const void *d1, const void *d2, void *data)</div><div class="ttdoc">Compares two real numbers of type double. </div><div class="ttdef"><b>Definition:</b> utils.c:308</div></div> -<div class="ttc" id="utils_8h_html_a3ba75e2e0b2479eef2b22fb219b42da7"><div class="ttname"><a href="utils_8h.html#a3ba75e2e0b2479eef2b22fb219b42da7">ucx_dist_uint64</a></div><div class="ttdeci">intmax_t ucx_dist_uint64(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type uint64_t. </div><div class="ttdef"><b>Definition:</b> utils.c:291</div></div> -<div class="ttc" id="utils_8h_html_add2b5c5507caba59d894b84e056b079b"><div class="ttname"><a href="utils_8h.html#add2b5c5507caba59d894b84e056b079b">ucx_dist_uint32</a></div><div class="ttdeci">intmax_t ucx_dist_uint32(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type uint32_t. </div><div class="ttdef"><b>Definition:</b> utils.c:285</div></div> -<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div> -<div class="ttc" id="utils_8h_html_aa174d539de3ea59be4f9640f17ce53d8"><div class="ttname"><a href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8">ucx_cmp_ptr</a></div><div class="ttdeci">int ucx_cmp_ptr(const void *ptr1, const void *ptr2, void *data)</div><div class="ttdoc">Compares two pointers. </div><div class="ttdef"><b>Definition:</b> utils.c:319</div></div> -<div class="ttc" id="utils_8h_html_aff7d2bcded71196831a8c0664333f8e7"><div class="ttname"><a href="utils_8h.html#aff7d2bcded71196831a8c0664333f8e7">ucx_cmp_mem</a></div><div class="ttdeci">int ucx_cmp_mem(const void *ptr1, const void *ptr2, void *n)</div><div class="ttdoc">Compares two memory areas. </div><div class="ttdef"><b>Definition:</b> utils.c:329</div></div> -<div class="ttc" id="utils_8h_html_a59a5859272cb4b43cbdd58208c41e32b"><div class="ttname"><a href="utils_8h.html#a59a5859272cb4b43cbdd58208c41e32b">ucx_dist_ulonglong</a></div><div class="ttdeci">intmax_t ucx_dist_ulonglong(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type unsigned long long. </div><div class="ttdef"><b>Definition:</b> utils.c:273</div></div> -<div class="ttc" id="utils_8h_html_aa0bec80e1c67f769ff5e112a7d4ce72a"><div class="ttname"><a href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a">ucx_fprintf</a></div><div class="ttdeci">int ucx_fprintf(void *stream, write_func wfc, const char *fmt,...)</div><div class="ttdoc">A printf() like function which writes the output to a stream by using a write_func(). </div><div class="ttdef"><b>Definition:</b> utils.c:343</div></div> -<div class="ttc" id="utils_8h_html_acde5366437e886a459b7468f7a9e11f0"><div class="ttname"><a href="utils_8h.html#acde5366437e886a459b7468f7a9e11f0">ucx_cmp_uint16</a></div><div class="ttdeci">int ucx_cmp_uint16(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type uint16_t. </div><div class="ttdef"><b>Definition:</b> utils.c:195</div></div> -<div class="ttc" id="utils_8h_html_a8ce7e11e6b3deafe89a32a091fde7f16"><div class="ttname"><a href="utils_8h.html#a8ce7e11e6b3deafe89a32a091fde7f16">ucx_cmp_int</a></div><div class="ttdeci">int ucx_cmp_int(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type int. </div><div class="ttdef"><b>Definition:</b> utils.c:105</div></div> -<div class="ttc" id="utils_8h_html_a54e7d06585bad3a899befc4e9c13853f"><div class="ttname"><a href="utils_8h.html#a54e7d06585bad3a899befc4e9c13853f">ucx_dist_int64</a></div><div class="ttdeci">intmax_t ucx_dist_int64(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type int64_t. </div><div class="ttdef"><b>Definition:</b> utils.c:255</div></div> -<div class="ttc" id="ucx_8h_html_a6a67e255e460acb58f802067b3ff5fd5"><div class="ttname"><a href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a></div><div class="ttdeci">size_t(* read_func)(void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a read function. </div><div class="ttdef"><b>Definition:</b> ucx.h:132</div></div> -<div class="ttc" id="utils_8h_html_abd83a5da91c3dd026a6931bd80c12f1e"><div class="ttname"><a href="utils_8h.html#abd83a5da91c3dd026a6931bd80c12f1e">ucx_cmp_uint</a></div><div class="ttdeci">int ucx_cmp_uint(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type unsigned int. </div><div class="ttdef"><b>Definition:</b> utils.c:165</div></div> -<div class="ttc" id="utils_8h_html_a9f9cf0e89ffdc256ecb35429907f51f5"><div class="ttname"><a href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5">ucx_asprintf</a></div><div class="ttdeci">sstr_t ucx_asprintf(UcxAllocator *allocator, const char *fmt,...)</div><div class="ttdoc">A printf() like function which allocates space for a sstr_t the result is written to...</div><div class="ttdef"><b>Definition:</b> utils.c:394</div></div> -<div class="ttc" id="utils_8h_html_a37b7d471ca1679992afc11a0deda45f4"><div class="ttname"><a href="utils_8h.html#a37b7d471ca1679992afc11a0deda45f4">ucx_dist_uint</a></div><div class="ttdeci">intmax_t ucx_dist_uint(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type unsigned int. </div><div class="ttdef"><b>Definition:</b> utils.c:261</div></div> -<div class="ttc" id="utils_8h_html_a81fb8434b70ca11bf2c14abfa21d16a9"><div class="ttname"><a href="utils_8h.html#a81fb8434b70ca11bf2c14abfa21d16a9">ucx_dist_int16</a></div><div class="ttdeci">intmax_t ucx_dist_int16(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type int16_t. </div><div class="ttdef"><b>Definition:</b> utils.c:243</div></div> -<div class="ttc" id="utils_8h_html_adeb6e8d0a53a829207cfa0a979d01fff"><div class="ttname"><a href="utils_8h.html#adeb6e8d0a53a829207cfa0a979d01fff">ucx_strcpy</a></div><div class="ttdeci">void * ucx_strcpy(const void *s, void *data)</div><div class="ttdoc">Copies a string. </div><div class="ttdef"><b>Definition:</b> utils.c:37</div></div> -<div class="ttc" id="utils_8h_html_a43e73d288b1553a0078bf4c98dd341f5"><div class="ttname"><a href="utils_8h.html#a43e73d288b1553a0078bf4c98dd341f5">ucx_dist_longint</a></div><div class="ttdeci">intmax_t ucx_dist_longint(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type long int. </div><div class="ttdef"><b>Definition:</b> utils.c:231</div></div> -<div class="ttc" id="utils_8h_html_a66e00a0703cbcde050ec922578e2f080"><div class="ttname"><a href="utils_8h.html#a66e00a0703cbcde050ec922578e2f080">ucx_dist_uint16</a></div><div class="ttdeci">intmax_t ucx_dist_uint16(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type uint16_t. </div><div class="ttdef"><b>Definition:</b> utils.c:279</div></div> -<div class="ttc" id="utils_8h_html_ab4a659cc46096f0490c1dafa57726476"><div class="ttname"><a href="utils_8h.html#ab4a659cc46096f0490c1dafa57726476">ucx_dist_int32</a></div><div class="ttdeci">intmax_t ucx_dist_int32(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type int32_t. </div><div class="ttdef"><b>Definition:</b> utils.c:249</div></div> -<div class="ttc" id="allocator_8h_html"><div class="ttname"><a href="allocator_8h.html">allocator.h</a></div><div class="ttdoc">Allocator for custom memory management. </div></div> -<div class="ttc" id="utils_8h_html_abb13476228d0c16bfaba08469adbae2d"><div class="ttname"><a href="utils_8h.html#abb13476228d0c16bfaba08469adbae2d">ucx_dist_ulongint</a></div><div class="ttdeci">intmax_t ucx_dist_ulongint(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Distance function for integers of type unsigned long int. </div><div class="ttdef"><b>Definition:</b> utils.c:267</div></div> -<div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> -<div class="ttc" id="utils_8h_html_aa29e6e559946375e34113e34e0b0bd0d"><div class="ttname"><a href="utils_8h.html#aa29e6e559946375e34113e34e0b0bd0d">ucx_cmp_int16</a></div><div class="ttdeci">int ucx_cmp_int16(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type int16_t. </div><div class="ttdef"><b>Definition:</b> utils.c:135</div></div> -<div class="ttc" id="utils_8h_html_ab2e184e6a744941aab6b8058116baf30"><div class="ttname"><a href="utils_8h.html#ab2e184e6a744941aab6b8058116baf30">ucx_memcpy</a></div><div class="ttdeci">void * ucx_memcpy(const void *m, void *n)</div><div class="ttdoc">Copies a memory area. </div><div class="ttdef"><b>Definition:</b> utils.c:45</div></div> -<div class="ttc" id="utils_8h_html_a54701aea6a89fed1402dfb0bf56bc7f6"><div class="ttname"><a href="utils_8h.html#a54701aea6a89fed1402dfb0bf56bc7f6">ucx_cmp_int64</a></div><div class="ttdeci">int ucx_cmp_int64(const void *i1, const void *i2, void *data)</div><div class="ttdoc">Compares two integers of type int64_t. </div><div class="ttdef"><b>Definition:</b> utils.c:155</div></div> -<div class="ttc" id="utils_8h_html_a4907967beb92c3ae351dd239abbb6927"><div class="ttname"><a href="utils_8h.html#a4907967beb92c3ae351dd239abbb6927">ucx_vfprintf</a></div><div class="ttdeci">int ucx_vfprintf(void *stream, write_func wfc, const char *fmt, va_list ap)</div><div class="ttdoc">va_list version of ucx_fprintf(). </div><div class="ttdef"><b>Definition:</b> utils.c:352</div></div> -<div class="ttc" id="utils_8h_html_a3ea1dfb856c741f3e8ec6bfdc9ad427e"><div class="ttname"><a href="utils_8h.html#a3ea1dfb856c741f3e8ec6bfdc9ad427e">ucx_vasprintf</a></div><div class="ttdeci">sstr_t ucx_vasprintf(UcxAllocator *allocator, const char *fmt, va_list ap)</div><div class="ttdoc">va_list version of ucx_asprintf(). </div><div class="ttdef"><b>Definition:</b> utils.c:403</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.13 -</small></address> -</body> -</html>
--- a/docs/src/features.md Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,395 +0,0 @@ ---- -title: UCX Features ---- - -<div id="modules"> - ------------------------- ------------------------- ------------------- --------------------------------- -[Allocator](#allocator) [String](#string) [Buffer](#buffer) [Memory Pool](#memory-pool) -[Iterator](#iterator) [Collection](#collection) [List](#list) [Map](#map) -[Utilities](#utilities) ------------------------- ------------------------- ------------------- --------------------------------- - -</div> - -## Allocator - -*Header file:* [allocator.h](api/allocator_8h.html) - -The UCX allocator provides an interface for implementing an own memory allocation mechanism. -Various function in UCX provide an additional alternative signature that takes an allocator as -argument. A default allocator implementation using the stdlib memory management functions is -available via the global symbol `cxDefaultAllocator`. - -If you want to define your own allocator, you need to initialize the `CxAllocator` structure -with a pointer to an allocator class (containing function pointers for the memory management -functions) and an optional pointer to an arbitrary memory region that can be used to store -state information for the allocator. An example is shown below: - -```c -struct my_allocator_state { - size_t total; - size_t avail; - char mem[]; -}; - -static cx_allocator_class my_allocator_class = { - my_malloc_impl, - my_realloc_impl, // all these functions are somewhere defined - my_calloc_impl, - my_free_impl -}; - -CxAllocator create_my_allocator(size_t n) { - CxAllocator alloc; - alloc.cl = &my_allocator_class; - alloc.data = calloc(1, sizeof(struct my_allocator_state) + n); - return alloc; -} -``` - -## String - -*Header file:* [string.h](api/string_8h.html) - -UCX strings come in two variants: immutable (`cxstring`) and mutable (`cxmutstr`). -The functions of UCX are designed to work with immutable strings by default but in situations where it is necessary, -the API also provides alternative functions that work directly with mutable strings. -Functions that change a string in-place are, of course, only accepting mutable strings. - -When you are using UCX functions, or defining your own functions, you are sometimes facing the "problem", -that the function only accepts arguments of type `cxstring` but you only have a `cxmutstr` at hand. -In this case you _should not_ introduce a wrapper function that accepts the `cxmutstr`, -but instead you should use the `cx_strcast()` function to cast the argument to the correct type. - -In general, UCX strings are **not** necessarily zero-terminated. If a function guarantees to return zero-terminated -string, it is explicitly mentioned in the documentation of the respective function. -As a rule of thumb, you _should not_ pass the strings of a UCX string structure to another API without explicitly -ensuring that the string is zero-terminated. - -## Buffer - -*Header file:* [buffer.h](api/buffer_8h.html) - -Instances of this buffer implementation can be used to read from or write to memory like you would do with a stream. -This allows the use of `cx_stream_copy()` (see [Utilities](#utilities)) to copy contents from one buffer to another, -or from a file or network streams to the buffer and vice-versa. - -More features for convenient use of the buffer can be enabled, like automatic memory management and automatic -resizing of the buffer space. - -Since UCX 3.0, the buffer also supports automatic flushing of contents to another stream (or buffer) as an alternative -to automatically resizing the buffer space. -Please refer to the API doc for the fields prefixed with `flush_` to learn more. - -## Memory Pool - -*Header file:* [mempool.h](api/mempool_8h.html) - -A memory pool is providing an allocator implementation that automatically deallocates the memory upon its destruction. -It also allows you to register destructor functions for the allocated memory, which are automatically called before -the memory is deallocated. -Additionally, you may also register _independent_ destructor functions within a pool in case some external library -allocated memory for you, which should be freed together with this pool. - -Many UCX features support the use of an allocator. -The [strings](#string), for instance, provide several functions suffixed with `_a` that allow specifying an allocator. -You can use this to keep track of the memory occupied by dynamically allocated strings and cleanup everything with -just a single call to `cxMempoolFree()`. - -The following code illustrates this on the example of reading a CSV file into memory. -```C -#include <stdio.h> -#include <cx/mempool.h> -#include <cx/linked_list.h> -#include <cx/string.h> -#include <cx/buffer.h> -#include <cx/utils.h> - -typedef struct { - cxstring column_a; - cxstring column_b; - cxstring column_c; -} CSVData; - -int main(void) { - CxMempool* pool = cxBasicMempoolCreate(128); - - FILE *f = fopen("test.csv", "r"); - if (!f) { - perror("Cannot open file"); - return 1; - } - // close the file automatically at pool destruction - cxMempoolRegister(pool, f, (cx_destructor_func) fclose); - - // create a buffer using the memory pool for destruction - CxBuffer *content = cxBufferCreate(NULL, 256, pool->allocator, CX_BUFFER_AUTO_EXTEND); - - // read the file into the buffer and turn it into a string - cx_stream_copy(f, content, (cx_read_func) fread, cxBufferWriteFunc); - fclose(f); - cxstring contentstr = cx_strn(content->space, content->size); - - // split the string into lines - use the mempool for allocating the target array - cxstring* lines; - size_t lc = cx_strsplit_a(pool->allocator, contentstr, - CX_STR("\n"), SIZE_MAX, &lines); - - // skip the header and parse the remaining data into a linked list - // the nodes of the linked list shall also be allocated by the mempool - CxList* datalist = cxLinkedListCreate(pool->allocator, NULL, sizeof(CSVData)); - for (size_t i = 1 ; i < lc ; i++) { - if (lines[i].length == 0) continue; - cxstring fields[3]; - size_t fc = cx_strsplit(lines[i], CX_STR(";"), 3, fields); - if (fc != 3) { - fprintf(stderr, "Syntax error in line %zu.\n", i); - cxMempoolFree(pool); - return 1; - } - CSVData data; - data.column_a = fields[0]; - data.column_b = fields[1]; - data.column_c = fields[2]; - cxListAdd(datalist, &data); - } - - // iterate through the list and output the data - CxIterator iter = cxListIterator(datalist); - cx_foreach(CSVData*, data, iter) { - printf("Column A: %.*s | " - "Column B: %.*s | " - "Column C: %.*s\n", - (int)data->column_a.length, data->column_a.ptr, - (int)data->column_b.length, data->column_b.ptr, - (int)data->column_c.length, data->column_c.ptr - ); - } - - // cleanup everything, no manual free() needed - cxMempoolFree(pool); - - return 0; -} -``` - -## Iterator - -*Header file:* [iterator.h](api/iterator_8h.html) - -In UCX 3 a new feature has been introduced to write own iterators, that work with the `cx_foreach` macro. -In previous UCX releases there were different hard-coded foreach macros for lists and maps that were not customizable. -Now, creating an iterator is as simple as creating a `CxIterator` struct and setting the fields in a meaningful way. - -You do not always need all fields in the iterator structure, depending on your use case. -Sometimes you only need the `index` (for example when iterating over simple lists), and other times you will need the -`slot` and `kv_data` fields (for example when iterating over maps). - -If the predefined fields are insufficient for your use case, you can alternatively create your own iterator structure -and place the `CX_ITERATOR_BASE` macro as first member of that structure. - -Usually an iterator is not mutating the collection it is iterating over. -In some programming languages it is even disallowed to change the collection while iterating with foreach. -But sometimes it is desirable to remove an element from the collection while iterating over it. -For this purpose, most collections allow the creation of a _mutating_ iterator. -The only differences are, that the `mutating` flag is `true` and the `src_handle` is not const. -On mutating iterators it is allowed to call the `cxFlagForRemoval()` function, which instructs the iterator to remove -the current element from the collection on the next call to `cxIteratorNext()` and clear the flag afterward. -If you are implementing your own iterator, it is up to you to implement this behavior. - -## Collection - -*Header file:* [collection.h](api/collection_8h.html) - -Collections in UCX 3 have several common features. -If you want to implement an own collection data type that uses the same features, you can use the -`CX_COLLECTION_BASE` macro at the beginning of your struct to roll out all members a usual UCX collection has. -```c -struct my_fancy_collection_s { - CX_COLLECTION_BASE; - struct my_collection_data_s *data; -}; -``` -Based on this structure, this header provides some convenience macros for invoking the destructor functions -that are part of the basic collection members. -The idea of having destructor functions within a collection is that you can destroy the collection _and_ the -contents with one single function call. -When you are implementing a collection, you are responsible for invoking the destructors at the right places, e.g. -when removing (and deleting) elements in the collection, clearing the collection, or - the most prominent case - -destroying the collection. - -You can always look at the UCX list and map implementations if you need some inspiration. - -## List - -*Header file:* [list.h](api/list_8h.html) - -This header defines a common interface for all list implementations. - -UCX already comes with two common list implementations (linked list and array list) that should cover most use cases. -But if you feel the need to implement an own list, the only thing you need to do is to define a struct with a -`struct cx_list_s` as first member, and set an appropriate list class that implements the functionality. -It is strongly recommended that this class is shared among all instances of the same list type, because otherwise -the `cxListCompare` function cannot use the optimized implementation of your class and will instead fall back to -using iterators to compare the contents element-wise. - -### Linked List - -*Header file:* [linked_list.h](api/linked__list_8h.html) - -On top of implementing the list interface, this header also defines several low-level functions that -work with arbitrary structures. -Low-level functions, in contrast to the high-level list interface, can easily be recognized by their snake-casing. -The function `cx_linked_list_at`, for example, implements a similar functionality like `cxListAt`, but operates -on arbitrary structures. -The following snippet shows how it is used. -All other low-level functions work similarly. -```c -struct node { - node *next; - node *prev; - int data; -}; - -const ptrdiff_t loc_prev = offsetof(struct node, prev); -const ptrdiff_t loc_next = offsetof(struct node, next); -const ptrdiff_t loc_data = offsetof(struct node, data); - -struct node a = {0}, b = {0}, c = {0}, d = {0}; -cx_linked_list_link(&a, &b, loc_prev, loc_next); -cx_linked_list_link(&b, &c, loc_prev, loc_next); -cx_linked_list_link(&c, &d, loc_prev, loc_next); - -cx_linked_list_at(&a, 0, loc_next, 2); // returns pointer to c -``` - -### Array List - -*Header file:* [array_list.h](api/array__list_8h.html) - -Since low-level array lists are just plain arrays, there is no need for such many low-level functions as for linked -lists. -However, there is one extremely powerful function that can be used for several complex tasks: `cx_array_copy`. -The full signature is shown below: -```c -int cx_array_copy( - void **target, - void *size, - void *capacity, - unsigned width, - size_t index, - const void *src, - size_t elem_size, - size_t elem_count, - struct cx_array_reallocator_s *reallocator -); -``` -The `target` argument is a pointer to the target array pointer. -The reason for this additional indirection is that this function writes -back the pointer to the possibly reallocated array. -The next two arguments are pointers to the `size` and `capacity` of the target array for which the width -(in bits) is specified in the `width` argument. - -On a successful invocation, the function copies `elem_count` number of elements, each of size `elem_size` from -`src` to `*target` and uses the `reallocator` to extend the array when necessary. -Finally, the size, capacity, and the pointer to the array are all updated and the function returns zero. - -A few things to note: -* `*target` and `src` can point to the same memory region, effectively copying elements within the array with `memmove` -* `*target` does not need to point to the start of the array, but `size` and `capacity` always start counting from the - position, `*target` points to - in this scenario, the need for reallocation must be avoided for obvious reasons -* `index` does not need to be within size of the current array -* `index` does not even need to be within the capacity of the array -* `width` must be one of 8, 16, 32, 64 (only on 64-bit systems), or zero (in which case the native word width is used) - -If you just want to add one single element to an existing array, you can use the macro `cx_array_add()`. -You can use `CX_ARRAY_DECLARE()` to declare the necessary fields within a structure and then use the -`cx_array_simple_*()` convenience macros to reduce code overhead. -The convenience macros automatically determine the width of the size/capacity variables. - -## Map - -*Header file:* [map.h](api/map_8h.html) - -Similar to the list interface, the map interface provides a common API for implementing maps. -There are some minor subtle differences, though. - -First, the `remove` method is not always a destructive removal. -Instead, the last argument is a Boolean that indicates whether the element shall be destroyed or returned. -```c -void *(*remove)(CxMap *map, CxHashKey key, bool destroy); -``` -When you implement this method, you are either supposed to invoke the destructors and return `NULL`, -or just remove the element from the map and return it. - -Secondly, the iterator method is a bit more complete. The signature is as follows: -```c -CxIterator (*iterator)(const CxMap *map, enum cx_map_iterator_type type); -``` -There are three map iterator types: for values, for keys, for pairs. -Depending on the iterator type requested, you need to create an iterator with the correct methods that -return the requested thing. -There are no automatic checks to enforce this - it's completely up to you. -If you need inspiration on how to do that, check the hash map implementation that comes with UCX. - -### Hash Map - -*Header file:* [hash_map.h](api/hash__map_8h.html) - -UCX provides a basic hash map implementation with a configurable amount of buckets. -If you do not specify the number of buckets, a default of 16 buckets will be used. -You can always rehash the map with `cxMapRehash()` to change the number of buckets to something more efficient, -but you need to be careful, because when you use this function you are effectively locking into using this -specific hash map implementation, and you would need to remove all calls to this function when you want to -exchange the concrete map implementation with something different. - -## Utilities - -*Header file:* [utils.h](api/utils_8h.html) - -UCX provides some utilities for routine tasks. - -The most useful utilities are the *stream copy* functions, which provide a simple way to copy all - or a -bounded amount of - data from one stream to another. Since the read/write functions of a UCX buffer are -fully compatible with stream read/write functions, you can easily transfer data from file or network streams to -a UCX buffer or vice-versa. - -The following example shows, how easy it is to read the contents of a file into a buffer: -```c -FILE *inputfile = fopen(infilename, "r"); -if (inputfile) { - CxBuffer fbuf; - cxBufferInit(&fbuf, NULL, 4096, NULL, CX_BUFFER_AUTO_EXTEND); - cx_stream_copy(inputfile, &fbuf, - (cx_read_func) fread, - cxBufferWriteFunc); - fclose(inputfile); - - // ... do something meaningful with the contents ... - - cxBufferDestroy(&fbuf); -} else { - perror("Error opening input file"); - if (fout != stdout) { - fclose(fout); - } -} -``` - -### Printf Functions - -*Header file:* [printf.h](api/printf_8h.html) - -In this utility header you can find `printf()`-like functions that can write the formatted output to an arbitrary -stream (or UCX buffer, resp.), or to memory allocated by an allocator within a single function call. -With the help of these convenience functions, you do not need to `snprintf` your string to a temporary buffer anymore, -plus you do not need to worry about too small buffer sizes, because the functions will automatically allocate enough -memory to contain the entire formatted string. - -### Compare Functions - -*Header file:* [compare.h](api/compare_8h.html) - -This header file contains a collection of compare functions for various data types. -Their signatures are designed to be compatible with the `cx_compare_func` function pointer type.
--- a/docs/src/footer.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ - - </div> - <!-- end content -->
--- a/docs/src/header-ucx2.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ - <!-- begin header --> - <div id="page-header"> - <span>UAP Common Extensions</span> - <img src="uaplogo.png" alt="UAP Core"> - </div> - <!-- end header --> - - <!-- begin navigation --> - <div id="sidebar"> - <div class="nav"> - <h3>Getting Started</h3> - <ul> - <li><a href="index.html">Overview</a></li> - <li><a href="install.html">Build Instructions</a></li> - <li><a href="license.html">License</a></li> - </ul> - </div> - <div class="nav"> - <h3>Documentation</h3> - <ul> - <li><a href="features.html">UCX 3</a> - <li><a href="modules-ucx2.html">Modules</a> - <ul> - <li><a href="modules-ucx2.html#allocator">Allocator</a></li> - <li><a href="modules-ucx2.html#array">Array</a></li> - <li><a href="modules-ucx2.html#avl-tree">AVL Tree</a></li> - <li><a href="modules-ucx2.html#buffer">Buffer</a></li> - <li><a href="modules-ucx2.html#list">List</a></li> - <li><a href="modules-ucx2.html#logging">Logging</a></li> - <li><a href="modules-ucx2.html#map">Map</a></li> - <li><a href="modules-ucx2.html#memory-pool">Memory Pool</a></li> - <li><a href="modules-ucx2.html#properties">Properties</a></li> - <li><a href="modules-ucx2.html#stack">Stack</a></li> - <li><a href="modules-ucx2.html#string">String</a></li> - <li><a href="modules-ucx2.html#testing">Testing</a></li> - <li><a href="modules-ucx2.html#utilities">Utilities</a></li> - </ul> - </li> - <li><a target="_blank" href="api-2.1/index.html">API Reference</a></li> - </ul> - </div> - <div class="nav"> - <h3>Repositories</h3> - <ul> - <li><a target="_blank" href="https://develop.uap-core.de/hg/ucx/">UAP Core Repository</a></li> - <li><a target="_blank" href="https://sourceforge.net/p/ucx/">Source Forge</a></li> - </ul> - </div> - <div class="nav"> - <h3>Partners</h3> - <ul> - <li><a target="_blank" href="https://www.unixwork.de">UNIXwork</a></li> - </ul> - </div> - </div> - <!-- end navigation --> - - <!-- begin content --> - <div id="content"> \ No newline at end of file
--- a/docs/src/header.html Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ - <!-- begin header --> - <div id="page-header"> - <span>UAP Common Extensions</span> - <img src="uaplogo.png" alt="UAP Core"> - </div> - <!-- end header --> - - <!-- begin navigation --> - <div id="sidebar"> - <div class="nav"> - <h3>Getting Started</h3> - <ul> - <li><a href="index.html">Overview</a></li> - <li><a href="install.html">Build Instructions</a></li> - <li><a href="license.html">License</a></li> - </ul> - </div> - <div class="nav"> - <h3>Documentation</h3> - <ul> - <li><a href="features.html">Features</a> - <ul> - <li><a href="features.html#allocator">Allocator</a></li> - <li><a href="features.html#string">String</a></li> - <li><a href="features.html#buffer">Buffer</a></li> - <li><a href="features.html#iterator">Iterator</a></li> - <li><a href="features.html#collection">Collection</a></li> - <li><a href="features.html#list">List</a></li> - <li><a href="features.html#map">Map</a></li> - <li><a href="features.html#memory-pool">Memory Pool</a></li> - <li><a href="features.html#utilities">Utilities</a></li> - </ul> - </li> - <li><a target="_blank" href="api/index.html">API Reference</a></li> - <li><a href="modules-ucx2.html">UCX 2.1</a></li> - </ul> - </div> - <div class="nav"> - <h3>Repositories</h3> - <ul> - <li><a target="_blank" href="https://develop.uap-core.de/hg/ucx/">UAP Core Repository</a></li> - <li><a target="_blank" href="https://sourceforge.net/p/ucx/">Source Forge</a></li> - </ul> - </div> - <div class="nav"> - <h3>Partners</h3> - <ul> - <li><a target="_blank" href="https://www.unixwork.de">UNIXwork</a></li> - </ul> - </div> - </div> - <!-- end navigation --> - - <!-- begin content --> - <div id="content"> \ No newline at end of file
--- a/docs/src/index.md Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ ---- -title: Overview ---- - -Welcome to the UAP Common Extensions. - -With this library we provide useful data structures and algorithms for common -programmatic tasks in the C language. Using the build files you can create -a static and a shared lib containing all units, but you may also use the UCX -sources in your project and compile specific units by yourself. - -If you want to use this library, you can [download and install](install.html) -the recent version. -The source code is also available as Mercurial repository [at our site][1] and -on [Source Forge][2]. - -[1]: https://develop.uap-core.de/hg/ucx/ -[2]: https://sourceforge.net/p/ucx/code/ - -### Authors - -Mike Becker [<universe@uap-core.de>](mailto:universe@uap-core.de) - -Olaf Wintermann -[<olaf.wintermann@gmail.com>](mailto:olaf.wintermann@gmail.com) - -Changelog ---------- - -### Version 3.0 - 2023-07-09 - - * complete redesign from scratch - * collections can now store copies of objects and not just pointers - * collections are now dynamically implemented - * users of the library can specify own implementations of collections that work with the UCX API - * low level API for custom lists that do not use the UCX structures - * various fixes and improvements - * drops some other, rarely used, features - * removes testing implementation from the lib - -### Version 2.1 - 2019-12-30 - - * adds string replace functions - * adds set operations for ` UcxList` and `UcxMap` - * adds `sstrcaseprefix()` and `sstrcasesuffix()` - * improves Doxygen documentation in ucx/string.h - * adds `UcxArray` data type - * adds support for CMake builds, but main build system is still autotools - -### Version 2.0 - 2018-12-28 - - * some uncritical bug fixes - * overflow of `sstrnlen` now returns `SIZE_MAX` instead of zero - * adds `scstr_t` - a `const char*` variant for sstr_t - * renames utility compare functions - -### Version 1.1 - 2018-05-14 - - * adds missing 32 bit support to integer overflow checks - * adds `ucx_buffer_to_sstr()` macro - * adds `ucx_avl_free_content()` - * adds some more compare and distance functions in utils.h - * adds `SFMT()` and `PRIsstr` convenience macros - * destructor functions for `*_free_content()` functions are now optional - -### Version 1.0.1 - 2018-01-21 - - * some bug fixes - * adds integer overflow checks - -### Version 1.0 - 2017-10-28 - - * first stable version of UCX released
--- a/docs/src/install.md Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ ---- -title: Build Instructions ---- - -The build processes uses configure and make. -First, download the source code from [Source Forge][1]. - - wget https://sourceforge.net/projects/ucx/files/ucx-latest.tar.gz - tar -xzf ucx-latest.tar.gz - cd ucx-latest - -Then execute ./configure with the options you like. You can get a list of -all available options with ./configure --help. The recommended configuration -for production builds is ./configure --release. - - ./configure --release - make - make check # only available when built with tests - sudo make install - -When compiling UCX 3, you can tweak the buffer sizes for small-buffer-optimization. -You can do this, be pre-defining one or more of the following macros: - ---------------------------------- --------------------------------------------------------------------- ---------- -Macro Description Default ---------------------------------- --------------------------------------------------------------------- ---------- -CX_ARRAY_SWAP_SBO_SIZE The maximum item size in an array list that uses SBO. 128 - -CX_LINKED_LIST_SORT_SBO_SIZE The maximum list size that uses SBO during sort. 1024 - -CX_PRINTF_SBO_SIZE The maximum string length printf.h uses stack memory for. 512 - -CX_STRSTR_SBO_SIZE The maximum length of the "needle" in cx_strstr that can use SBO. 128 ---------------------------------- --------------------------------------------------------------------- ---------- - -You can also tweak some other buffer sizes with the same technique: - ---------------------------------- --------------------------------------------------------------------- ---------- -Macro Description Default ---------------------------------- --------------------------------------------------------------------- ---------- -CX_STRREPLACE_INDEX_BUFFER_SIZE The number of matches the index buffer can store on the stack. 64 - -CX_STREAM_COPY_BUF_SIZE The buffer size on the stack for a stream copy. 1024 - -CX_STREAM_BCOPY_BUF_SIZE The buffer size on the heap for a stream copy. 8192 ---------------------------------- --------------------------------------------------------------------- ---------- - ---- - -### UCX 2.1 - -The build procedure for UCX 2.1 uses a configure script. -For Microsoft Windows, you will need an appropriate port of the linux -tools (like MinGW or Cygwin). -First, download the source code from [Source Forge][1]. - - wget https://sourceforge.net/projects/ucx/files/ucx-2.1.0.tar.gz - tar -xzf ucx-2.1.0.tar.gz - cd ucx-2.1.0 - -Then issue the `configure` and `make` commands. - - ./configure && make - -To verify your installment you can issue `make check`. If everything is fine, -you can install UCX with - - make install - -Note, that you might need administrative privileges for a system wide -installation. - -[1]: https://sourceforge.net/projects/ucx/files/ -
--- a/docs/src/license.md Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ ---- -title: License ---- - -Copyright 2017 - 2023 â“’ Mike Becker, Olaf Wintermann. All rights reserved. - -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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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.
--- a/docs/src/modules-ucx2.md Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,866 +0,0 @@ ---- -title: UCX 2.1 Modules ---- - -UCX 2.1 provided several modules for data structures and algorithms. -You may choose to use specific modules by including the corresponding header -file. -Please note, that some modules make use of other UCX 2.1 modules. -For instance, the [Allocator](#allocator) module is used by many other modules -to allow flexible memory allocation. -By default, the header files are placed into an `ucx` directory within your -systems include directory. In this case you can use a module by including it -via `#include <ucx/MODULENAME.h>`. -Required modules are included automatically. - -<div id="modules"> - ------------------------ ---------------------- -------------------------------- --------------------------- -[String](#string) [Buffer](#buffer) -[Allocator](#allocator) [Stack](#stack) [Memory Pool](#memory-pool) -[Array](#array) [List](#list) [Map](#map) [AVL Tree](#avl-tree) -[Logging](#logging) [Testing](#testing) [Utilities](#utilities) [Properties](#properties) ------------------------ ---------------------- -------------------------------- --------------------------- - -</div> - -## Allocator - -*Header file:* [allocator.h](api-2.1/allocator_8h.html) -*Required modules:* None. - -A UCX allocator consists of a pointer to the memory area / pool and four -function pointers to memory management functions operating on this memory -area / pool. These functions shall behave equivalent to the standard libc -functions `malloc`, `calloc`, `realloc` and `free`. - -The signature of the memory management functions is based on the signature -of the respective libc function but each of them takes the pointer to the -memory area / pool as first argument. - -As the pointer to the memory area / pool can be arbitrarily chosen, any data -can be provided to the memory management functions. One example is the -[UCX Memory Pool](#memory-pool). - -## Array - -*Header file:* [array.h](api-2.1/array_8h.html) -*Required modules:* [Allocator](#allocator) - -The UCX Array is an implementation of a dynamic array with automatic -reallocation. The array structure contains a capacity, the current size, -the size of each element, the raw pointer to the memory area and an allocator. -Arrays are in most cases much faster than linked list. -One can decide, whether to create a new array on the heap with `ucx_array_new()` -or to save one indirection by initializing a `UcxArray` structure on the stack -with `ucx_array_init()`. - -### Remove duplicates from an array of strings - -The following example shows, how a `UcxArray` can be built with -a standard dynamic C array (pointer+length) as basis. - -```C -UcxArray* create_unique(sstr_t* array, size_t arrlen) { - // worst case is no duplicates, hence the capacity is set to arrlen - UcxArray* result = ucx_array_new(arrlen, sizeof(sstr_t)); - // only append elements, if they are not already present in the array - for (size_t i = 0 ; i < arrlen ; ++i) { - if (!ucx_array_contains(result, array+i, ucx_cmp_sstr, NULL)) { - ucx_array_append_from(result, array+i, 1); - } - } - // make the array as small as possible - ucx_array_shrink(result); - return result; -} - -// ... - -sstr_t* array = // some standard array of strings -size_t arrlen = // the length of the array - -UcxArray* result = create_unique(array,arrlen); - -// Iterate over the array and print the elements -sstr_t* unique = result->data; -for (size_t i = 0 ; i < result->size ; i++) { - printf("%" PRIsstr "\n", SFMT(unique[i])); -} - -// Free the array. -ucx_array_free(result); -``` -### Preventing out of bounds writes - -The functions `ucx_array_reserve()`, `ucx_array_resize()`, `ucx_array_grow()`, -and `ucx_array_shrink()` allow easy management of the array capacity. -Imagine you want to add `n` elements to an array. If your `n` elements are -already somewhere else consecutively in memory, you can use -`ucx_array_append_from()` and benefit from the autogrow facility in this family -of functions. Otherwise, you can ask the array to have enough capacity for -holding additional `n` elements. - -```C -size_t n = // ... elements to add -if (ucx_array_grow(array, n)) { - fprintf(stderr, "Cannot add %zu elements to the array.\n", n); - return 1; -} -for (size_t i = 0 ; i < n ; i++) { - ((int*)array->data)[array->size++] = 80; -} -``` - -## AVL Tree - -*Header file:* [avl.h](api-2.1/avl_8h.html) -*Required modules:* [Allocator](#allocator) - -This binary search tree implementation allows average O(1) insertion and -removal of elements (excluding binary search time). -All common binary tree operations are implemented. Furthermore, this module -provides search functions via lower and upper bounds. - -### Filtering items with a time window - -Suppose you have a list of items which contain a `time_t` value and your task -is to find all items within a time window `[t_start, t_end]`. -With AVL Trees this is easy: -```C -// Somewhere in a header -typedef struct { - time_t ts; - // other important data -} MyObject; - -// Source code -UcxAVLTree* tree = ucx_avl_new(ucx_cmp_longint); -// ... populate tree with objects, use '& MyObject.ts' as key ... - - -// Now find every item, with 30 <= ts <= 70 -time_t ts_start = 30; -time_t ts_end = 70; - -printf("Values in range:\n"); -for ( - UcxAVLNode* node = ucx_avl_find_node( - tree, (intptr_t) &ts_start, - ucx_dist_longint, UCX_AVL_FIND_LOWER_BOUNDED); - node && (*(time_t*)node->key) <= ts_end; - node = ucx_avl_succ(node) - ) { - printf(" ts: %ld\n", ((MyObject*)node->value)->ts); -} - -ucx_avl_free_content(tree, free); -ucx_avl_free(tree); -``` - -## Buffer - -*Header file:* [buffer.h](api-2.1/buffer_8h.html) -*Required modules:* None. - -Instances of this buffer implementation can be used to read from or to write to -memory like you would do with a stream. This allows the use of -`ucx_stream_copy()` from the [Utilities](#utilities) module to copy contents -from one buffer to another or from file or network streams to the buffer and -vice-versa. - -More features for convenient use of the buffer can be enabled, like automatic -memory management and automatic resizing of the buffer space. -See the documentation of the macro constants in the header file for more -information. - -### Add line numbers to a file - -When reading a file line by line, you have three options: first, you could limit -the maximum supported line length. -Second, you allocate a god buffer large -enough for the most lines a text file could have. -And third, undoubtedly the best option, you start with a small buffer, which -adjusts on demand. -An `UcxBuffer` can be created to do just that for you. -Just pass the `UCX_BUFFER_AUTOEXTEND` option to the initialization function. -Here is a full working program, which adds line numbers to a file. -```C -#include <stdio.h> -#include <ucx/buffer.h> -#include <ucx/utils.h> - -int main(int argc, char** argv) { - - if (argc != 2) { - fprintf(stderr, "Usage: %s <file>\n", argv[0]); - return 1; - } - - FILE* input = fopen(argv[1], "r"); - if (!input) { - perror("Canno read input"); - return 1; - } - - const size_t chunksize = 256; - - UcxBuffer* linebuf = - ucx_buffer_new( - NULL, // the buffer should manage the memory area for us - 2*chunksize, // initial size should be twice the chunk size - UCX_BUFFER_AUTOEXTEND); // the buffer will grow when necessary - - size_t lineno = 1; - do { - // read line chunk - size_t read = ucx_stream_ncopy( - input, linebuf, fread, ucx_buffer_write, chunksize); - if (read == 0) break; - - // handle line endings - do { - sstr_t bufstr = ucx_buffer_to_sstr(linebuf); - sstr_t nl = sstrchr(bufstr, '\n'); - if (nl.length == 0) break; - - size_t linelen = bufstr.length - nl.length; - sstr_t linestr = sstrsubsl(bufstr, 0, linelen); - - printf("%zu: %" PRIsstr "\n", lineno++, SFMT(linestr)); - - // shift the buffer to the next line - ucx_buffer_shift_left(linebuf, linelen+1); - } while(1); - - } while(1); - - // print the 'noeol' line, if any - sstr_t lastline = ucx_buffer_to_sstr(linebuf); - if (lastline.length > 0) { - printf("%zu: %" PRIsstr, lineno, SFMT(lastline)); - } - - fclose(input); - ucx_buffer_free(linebuf); - - return 0; -} -``` - -## List - -*Header file:* [list.h](api-2.1/list_8h.html) -*Required modules:* [Allocator](#allocator) - -This module provides the data structure and several functions for a doubly -linked list. Among the common operations like insert, remove, search and sort, -we allow convenient iteration via a special `UCX_FOREACH` macro. - -### Remove duplicates from an array of strings - -Assume you are given an array of `sstr_t` and want to create a list of these -strings without duplicates. -This is a similar example to the one [above](#array), but here we are -using a `UcxList`. -```C -#include <stdio.h> -#include <ucx/list.h> -#include <ucx/string.h> -#include <ucx/utils.h> - -UcxList* remove_duplicates(sstr_t* array, size_t arrlen) { - UcxList* list = NULL; - for (size_t i = 0 ; i < arrlen ; ++i) { - if (ucx_list_find(list, array+i, ucx_cmp_sstr, NULL) == -1) { - sstr_t* s = malloc(sizeof(sstr_t)); - *s = sstrdup(array[i]); - list = ucx_list_append(list, s); - } - } - return list; -} - -// we will need this function to clean up the list contents later -void free_sstr(void* ptr) { - sstr_t* s = ptr; - free(s->ptr); - free(s); -} - -// ... - -sstr_t* array = // some array of strings -size_t arrlen = // the length of the array - -UcxList* list = remove_duplicates(array,arrlen); - -// Iterate over the list and print the elements -UCX_FOREACH(elem, list) { - sstr_t s = *((sstr_t*)elem->data); - printf("%" PRIsstr "\n", SFMT(s)); -} - -// Use our free function to free the duplicated strings. -ucx_list_free_content(list, free_sstr); -ucx_list_free(list); -``` - -## Logging - -*Header file:* [logging.h](api-2.1/logging_8h.html) -*Required modules:* [Map](#map), [String](#string) - -The logging module comes with some predefined log levels and allows some more -customization. You may choose if you want to get timestamps or source file and -line number logged automatically when outputting a message. -The following function call initializes a debug logger with all of the above -information: -```C - log = ucx_logger_new(stdout, UCX_LOGGER_DEBUG, - UCX_LOGGER_LEVEL | UCX_LOGGER_TIMESTAMP | UCX_LOGGER_SOURCE); -``` -Afterwards you can use this logger with the predefined macros -```C - ucx_logger_trace(log, "Verbose output"); - ucx_logger_debug(log, "Debug message"); - ucx_logger_info(log, "Information"); - ucx_logger_warn(log, "Warning"); - ucx_logger_error(log, "Error message"); -``` -or you use -```C - ucx_logger_log(log, CUSTOM_LEVEL, "Some message") -``` -When you use your custom log level, don't forget to register it with -```C - ucx_logger_register_level(log, CUSTOM_LEVEL, "CUSTOM") -``` -where the last argument must be a string literal. - -## Map - -*Header file:* [map.h](api-2.1/map_8h.html) -*Required modules:* [Allocator](#allocator), [String](#string) - -This module provides a hash map implementation using murmur hash 2 and separate -chaining with linked lists. Similarly to the list module, we provide a -`UCX_MAP_FOREACH` macro to conveniently iterate through the key/value pairs. - -### Parsing command line options - -Assume you want to parse command line options and record them within a map. -One way to do this is shown by the following code sample: -```C - UcxMap* options = ucx_map_new(16); - const char *NOARG = ""; - - char *option = NULL; - char optchar = 0; - for(int i=1;i<argc;i++) { - char *arg = argv[i]; - size_t len = strlen(arg); - if(len > 1 && arg[0] == '-') { - for(int c=1;c<len;c++) { - if(option) { - fprintf(stderr, - "Missing argument for option -%c\n", optchar); - return 1; - } - switch(arg[c]) { - default: { - fprintf(stderr, "Unknown option -%c\n\n", arg[c]); - return 1; - } - case 'v': { - ucx_map_cstr_put(options, "verbose", NOARG); - break; - } - case 'o': { - option = "output"; - optchar = 'o'; - break; - } - } - } - } else if(option) { - ucx_map_cstr_put(options, option, arg); - option = NULL; - } else { - // ... handle argument that is not an option ... - } - } - if(option) { - fprintf(stderr, - "Missing argument for option -%c\n", optchar); - return 1; - } -``` -With the following loop, you can access the previously recorded options: -```C - UcxMapIterator iter = ucx_map_iterator(options); - char *arg; - UCX_MAP_FOREACH(optkey, arg, iter) { - char* opt = optkey.data; - if (*arg) { - printf("%s = %s\n", opt, arg); - } else { - printf("%s active\n", opt); - } - } -``` -Don't forget to call `ucx_map_free()`, when you are done with the map. - -## Memory Pool - -*Header file:* [mempool.h](api-2.1/mempool_8h.html) -*Required modules:* [Allocator](#allocator) - -Here we have a concrete allocator implementation in the sense of a memory pool. -This pool allows you to register destructor functions for the allocated memory, -which are automatically called on the destruction of the pool. -But you may also register *independent* destructor functions within a pool in -case some external library allocated memory for you, which should be -destroyed together with this pool. - -Many UCX modules support the use of an allocator. -The [String Module](#string), for instance, provides the `sstrdup_a()` function, -which uses the specified allocator to allocate the memory for the duplicated -string. -This way, you can use a `UcxMempool` to keep track of the memory occupied by -duplicated strings and cleanup everything with just a single call to -`ucx_mempool_destroy()`. - -### Read CSV data into a structure - -The following code example shows some of the basic memory pool functions and -how they can be used with other UCX modules. -```C -#include <stdio.h> -#include <ucx/mempool.h> -#include <ucx/list.h> -#include <ucx/string.h> -#include <ucx/buffer.h> -#include <ucx/utils.h> - -typedef struct { - sstr_t column_a; - sstr_t column_b; - sstr_t column_c; -} CSVData; - -int main(int argc, char** argv) { - - UcxMempool* pool = ucx_mempool_new(128); - - FILE *f = fopen("test.csv", "r"); - if (!f) { - perror("Cannot open file"); - return 1; - } - // close the file automatically at pool destruction - ucx_mempool_reg_destr(pool, f, (ucx_destructor) fclose); - - // create a buffer and register it at the memory pool for destruction - UcxBuffer* content = ucx_buffer_new(NULL, 256, UCX_BUFFER_AUTOEXTEND); - ucx_mempool_reg_destr(pool, content, (ucx_destructor) ucx_buffer_free); - - // read the file and split it by lines first - ucx_stream_copy(f, content, fread, ucx_buffer_write); - sstr_t contentstr = ucx_buffer_to_sstr(content); - ssize_t lc = 0; - sstr_t* lines = sstrsplit_a(pool->allocator, contentstr, S("\n"), &lc); - - // skip the header and parse the remaining data - UcxList* datalist = NULL; - for (size_t i = 1 ; i < lc ; i++) { - if (lines[i].length == 0) continue; - ssize_t fc = 3; - sstr_t* fields = sstrsplit_a(pool->allocator, lines[i], S(";"), &fc); - if (fc != 3) { - fprintf(stderr, "Syntax error in line %zu.\n", i); - ucx_mempool_destroy(pool); - return 1; - } - CSVData* data = ucx_mempool_malloc(pool, sizeof(CSVData)); - data->column_a = fields[0]; - data->column_b = fields[1]; - data->column_c = fields[2]; - datalist = ucx_list_append_a(pool->allocator, datalist, data); - } - - // control output - UCX_FOREACH(elem, datalist) { - CSVData* data = elem->data; - printf("Column A: %" PRIsstr " | " - "Column B: %" PRIsstr " | " - "Column C: %" PRIsstr "\n", - SFMT(data->column_a), SFMT(data->column_b), SFMT(data->column_c) - ); - } - - // cleanup everything, no manual free() needed - ucx_mempool_destroy(pool); - - return 0; -} -``` - -### Overriding the default destructor - -Sometimes you need to allocate memory with `ucx_mempool_malloc()`, but the -memory is not supposed to be freed with a simple call to `free()`. -In this case, you can overwrite the default destructor as follows: -```C - MyObject* obj = ucx_mempool_malloc(pool, sizeof(MyObject)); - - // some special initialization with own resource management - my_object_init(obj); - - // register destructor function - ucx_mempool_set_destr(obj, (ucx_destructor) my_object_destroy); -``` -Be aware, that your destructor function should not free any memory, that is -also managed by the pool. -Otherwise, you might be risking a double-free. -More precisely, a destructor function set with `ucx_mempool_set_destr()` MUST -NOT call `free()` on the specified pointer whereas a destructor function -registered with `ucx_mempool_reg_destr()` MAY (and in most cases will) call -`free()`. - -## Properties - -*Header file:* [properties.h](api-2.1/properties_8h.html) -*Required modules:* [Map](#map) - -This module provides load and store function for `*.properties` files. -The key/value pairs are stored within an UCX Map. - -### Example: Loading properties from a file - -```C -// Open the file as usual -FILE* file = fopen("myprops.properties", "r"); -if (!file) { - // error handling - return 1; -} - -// Load the properties from the file -UcxMap* myprops = ucx_map_new(16); -if (ucx_properties_load(myprops, file)) { - // ... error handling ... - fclose(file); - ucx_map_free(myprops); - return 1; -} - -// Print out the key/value pairs -char* propval; -UcxMapIterator propiter = ucx_map_iterator(myprops); -UCX_MAP_FOREACH(key, propval, propiter) { - printf("%s = %s\n", (char*)key.data, propval); -} - -// Don't forget to free the values before freeing the map -ucx_map_free_content(myprops, NULL); -ucx_map_free(myprops); -fclose(file); -``` - -## Stack - -*Header file:* [stack.h](api-2.1/stack_8h.html) -*Required modules:* [Allocator](#allocator) - -This concrete implementation of an UCX Allocator allows you to grab some amount -of memory which is then handled as a stack. -Please note, that the term *stack* only refers to the behavior of this -allocator. You may still choose to use either stack or heap memory -for the underlying space. -A typical use case is an algorithm where you need to allocate and free large -amounts of memory very frequently. - -The following code sample shows how to initialize a stack and push and pop -simple data. -```C - const size_t len = 1024; - char space[len]; - UcxStack stack; - ucx_stack_init(&stack, space, len); - - int i = 42; - float f = 3.14f; - const char* str = "Hello!"; - size_t strn = 7; - - // push the integer - ucx_stack_push(&stack, sizeof(int), &i); - - // push the float and rember the address - float* remember = ucx_stack_push(&stack, sizeof(float), &f); - - // push the string with zero terminator - ucx_stack_push(&stack, strn, str); - - // if we forget, how big an element was, we can ask the stack - printf("Length of string: %zu\n", ucx_stack_topsize(&stack)-1); - - // retrieve the string as sstr_t, without zero terminator! - sstr_t s; - s.length = ucx_stack_topsize(&stack)-1; - s.ptr = malloc(s.length); - ucx_stack_popn(&stack, s.ptr, s.length); - printf("%" PRIsstr "\n", SFMT(s)); - - // print the float directly from the stack and free it - printf("Float: %f\n", *remember); - ucx_stack_free(&stack, remember); - - // the last element is the integer - int j; - ucx_stack_pop(&stack, &j); - printf("Integer: %d\n", j); -``` - - - -## String - -*Header file:* [string.h](api-2.1/string_8h.html) -*Required modules:* [Allocator](#allocator) - -This module provides a safe implementation of bounded string. -Usually C strings do not carry a length. While for zero-terminated strings you -can easily get the length with `strlen`, this is not generally possible for -arbitrary strings. -The `sstr_t` type of this module always carries the string and its length to -reduce the risk of buffer overflows dramatically. - -### Initialization - -There are several ways to create an `sstr_t`: - -```C -// (1) sstr() uses strlen() internally, hence cstr MUST be zero-terminated -sstr_t a = sstr(cstr); - -// (2) cstr does not need to be zero-terminated, if length is specified -sstr_t b = sstrn(cstr, len); - -// (3) S() macro creates sstr_t from a string using sizeof() and using sstrn(). -// This version is especially useful for function arguments -sstr_t c = S("hello"); - -// (4) SC() macro works like S(), but makes the string immutable using scstr_t. -// (available since UCX 2.0) -scstr_t d = SC("hello"); - -// (5) ST() macro creates sstr_t struct literal using sizeof() -sstr_t e = ST("hello"); -``` - -You should not use the `S()`, `SC()`, or `ST()` macro with string of unknown -origin, since the `sizeof()` call might not coincide with the string length in -those cases. If you know what you are doing, it can save you some performance, -because you do not need the `strlen()` call. - -### Handling immutable strings - -*(Since: UCX 2.0)* - -For immutable strings (i.e. `const char*` strings), UCX provides the `scstr_t` -type, which works exactly as the `sstr_t` type but with a pointer -to `const char`. All UCX string functions come in two flavors: one that enforces -the `scstr_t` type, and another that usually accepts both types and performs -a conversion automatically, if necessary. - -There are some exceptions to this rule, as the return type may depend on the -argument type. -E.g. the `sstrchr()` function returns a substring starting at -the first occurrence of the specified character. -Since this substring points to the memory of the argument string, it does not -accept `scstr_t` as input argument, because the return type would break the -const-ness. - - -### Finding the position of a substring - -The `sstrstr()` function gives you a new `sstr_t` object starting with the -requested substring. Thus determining the position comes down to a simple -subtraction. - -```C -sstr_t haystack = ST("Here we go!"); -sstr_t needle = ST("we"); -sstr_t result = sstrstr(haystack, needle); -if (result.ptr) - printf("Found at position %zd.\n", haystack.length-result.length); -else - printf("Not found.\n"); -``` - -### Spliting a string by a delimiter - -The `sstrsplit()` function (and its allocator based version `sstrsplit_a()`) is -very powerful and might look a bit nasty at a first glance. But it is indeed -very simple to use. It is even more convenient in combination with a memory -pool. - -```C -sstr_t test = ST("here::are::some::strings"); -sstr_t delim = ST("::"); - -ssize_t count = 0; // no limit -UcxMempool* pool = ucx_mempool_new_default(); - -sstr_t* result = sstrsplit_a(pool->allocator, test, delim, &count); -for (ssize_t i = 0 ; i < count ; i++) { - // don't forget to specify the length via the %*s format specifier - printf("%*s\n", result[i].length, result[i].ptr); -} - -ucx_mempool_destroy(pool); -``` -The output is: - - here - are - some - strings - -The memory pool ensures, that all strings are freed. - -### Disabling convenience macros - -If you are experiencing any troubles with the short convenience macros `S()`, -`SC()`, or `ST()`, you can disable them by setting the macro -`UCX_NO_SSTR_SHORTCUTS` before including the header (or via a compiler option). -For the formatting macros `SFMT()` and `PRIsstr` you can use the macro -`UCX_NO_SSTR_FORMAT_MACROS` to disable them. - -Please keep in mind, that after disabling the macros, you cannot use them in -your code *and* foreign code that you might have included. -You should only disable the macros, if you are experiencing a nasty name clash -which cannot be otherwise resolved. - -## Testing - -*Header file:* [test.h](api-2.1/test_8h.html) -*Required modules:* None. - -This module provides a testing framework which allows you to execute test cases -within test suites. -To avoid code duplication within tests, we also provide the possibility to -define test subroutines. - -You should declare test cases and subroutines in a header file per test unit -and implement them as you would implement normal functions. -```C - // myunit.h - UCX_TEST(function_name); - UCX_TEST_SUBROUTINE(subroutine_name, paramlist); // optional - - - // myunit.c - UCX_TEST_SUBROUTINE(subroutine_name, paramlist) { - // ... reusable tests with UCX_TEST_ASSERT() ... - } - - UCX_TEST(function_name) { - // ... resource allocation and other test preparation ... - - // mandatory marker for the start of the tests - UCX_TEST_BEGIN - - // ... verifications with UCX_TEST_ASSERT() ... - // (and/or calls with UCX_TEST_CALL_SUBROUTINE()) - - // mandatory marker for the end of the tests - UCX_TEST_END - - // ... resource cleanup ... - // (all code after UCX_TEST_END is always executed) - } -``` -If you want to use the `UCX_TEST_ASSERT()` macro in a function, you are -*required* to use a `UCX_TEST_SUBROUTINE`. -Otherwise, the testing framework does not know where to jump, when the assertion -fails. - -After implementing the tests, you can easily build a test suite and execute it: -```C - UcxTestSuite* suite = ucx_test_suite_new(); - ucx_test_register(suite, testMyTestCase01); - ucx_test_register(suite, testMyTestCase02); - // ... - ucx_test_run(suite, stdout); // stdout, or any other FILE stream -``` - -## Utilities - -*Header file:* [utils.h](api-2.1/utils_8h.html) -*Required modules:* [Allocator](#allocator), [String](#string) - -In this module we provide very general utility function for copy and compare -operations. -We also provide several `printf` variants to conveniently print formatted data -to streams or strings. - -### A simple copy program - -The utilities package provides several stream copy functions. -One of them has a very simple interface and can, for instance, be used to copy -whole files in a single call. -This is a minimal working example: -```C -#include <stdio.h> -#include <ucx/utils.h> - -int main(int argc, char** argv) { - - if (argc != 3) { - fprintf(stderr, "Use %s <src> <dest>", argv[0]); - return 1; - } - - FILE *srcf = fopen(argv[1], "r"); // insert error handling on your own - FILE *destf = fopen(argv[2], "w"); - - size_t n = ucx_stream_copy(srcf, destf, fread, fwrite); - printf("%zu bytes copied.\n", n); - - fclose(srcf); - fclose(destf); - - - return 0; -} -``` - -### Automatic allocation for formatted strings - -The UCX utility function `ucx_asprintf()` and it's convenient shortcut -`ucx_sprintf` allow easy formatting of strings, without ever having to worry -about the required space. -```C -sstr_t mystring = ucx_sprintf("The answer is: %d!", 42); -``` -Still, you have to pass `mystring.ptr` to `free()` (or the free function of -your allocator, if you use `ucx_asprintf`). -If you don't have all the information ready to build your string, you can even -use a [UcxBuffer](#buffer) as a target with the utility function -`ucx_bprintf()`. -```C -UcxBuffer* strbuffer = ucx_buffer_new(NULL, 512, UCX_BUFFER_AUTOEXTEND); - -for (unsigned int i = 2 ; i < 100 ; i++) { - ucx_bprintf(strbuffer, "Integer %d is %s\n", - i, prime(i) ? "prime" : "not prime"); -} - -// print the result to stdout -printf("%s", (char*)strbuffer->space); - -ucx_buffer_free(strbuffer); -```
--- a/docs/src/ucx.css Wed Jan 22 21:02:46 2025 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -a { - color: #2e2eaf; - text-decoration: none; -} - -a:hover { - text-decoration: underline; - text-decoration-style: dotted; -} - -#page-header, h1, h2, h3, #sidebar { - font-family: sans-serif; -} - -#page-header { - padding-top: 0.3em; - padding-bottom: 0.5em; - margin-bottom: 2em; - border: none; - border-bottom-width: 1pt; - border-bottom-style: solid; - border-bottom-color: #2e2e2e; -} - -#page-header span { - font-size: 2em; - font-weight: bold; - color: #2e2e2e; -} - -#page-header img { - float: right; -} - -#sidebar { - float: left; - width: 15em; -} - -.nav { - color: black; - background-color: #e9ebec; - margin-bottom: 1em; - padding-bottom: 0.1em; -} - -.nav h3 { - color: white; - background-color: #5b6f7a; - font-size: 1.2em; - padding-top: 0.2em; - padding-bottom: 0.2em; - padding-left: 0.5em; - margin-top: 0; -} - -.nav ul { - margin-top: 0; - padding-top: 0; - padding-left: 2em; - font-size: 0.95em; -} - -#content { - margin-left: 16em; - margin-right: 0.5em; - padding: 0; - font-family: serif; - font-size: 1em; - min-width: 16em; -} - -#content h1 { - color: white; - background-color: #5b6f7a; - font-size: 1.2em; - padding: 0.2em 0 0.2em 0.5em; - margin-top: 0; -} - -#content h2 { - color: #2e2e2e; - font-size: 1.2em; - border-bottom-color: #5b6f7a; - border-bottom-style: solid; - border-bottom-width: 1pt; - width: 100%; -} - -#content h3 { - font-size: 1.05em; -} - -#modules table { - border-collapse: separate; - border-spacing: .25em; -} - -#modules td > a { - display: table-cell; - text-align: center; - vertical-align: middle; - width: 10em; - height: 2em; - border-style: solid; - border-width: 1pt; - border-color: #2e2e2e; -} - -#modules td > a:hover { - background: #e9ebec; -}
--- a/make/makefile.mk Wed Jan 22 21:02:46 2025 +0100 +++ b/make/makefile.mk Thu Jan 23 01:15:52 2025 +0100 @@ -69,10 +69,8 @@ test -n "$(WITH_CXX_TEST)" docs: FORCE - @(test "$(WITH_DOCS_API)" = "yes" && cd docs && $(MAKE) all-api) \ + @(test "$(WITH_API_DOCS)" = "yes" && cd $(root_dir); $(DOXYGEN) ) \ || echo "[ Generation of API Docs disabled - skipped ]" - @(test "$(WITH_DOCS_HTML)" = "yes" && cd docs && $(MAKE) all-html) \ - || echo "[ Generation of HTML Docs disabled - skipped ]" update-rules: FORCE make/update-rules.sh src
--- a/make/project.xml Wed Jan 22 21:02:46 2025 +0100 +++ b/make/project.xml Thu Jan 23 01:15:52 2025 +0100 @@ -3,7 +3,6 @@ <config> <var name="root_dir" exec="true">pwd</var> <var name="DOXYGEN" exec="true">command -v doxygen</var> - <var name="PANDOC" exec="true">command -v pandoc</var> </config> <dependency> @@ -75,11 +74,6 @@ <make>DOXYGEN=$DOXYGEN</make> </dependency> - <dependency name="pandoc"> - <test>test -n "$PANDOC"</test> - <make>PANDOC=$PANDOC</make> - </dependency> - <dependency name="coverage" toolchain="gcc"> <cflags>\${COVERAGE_CFLAGS}</cflags> <ldflags>\${COVERAGE_LDFLAGS}</ldflags> @@ -91,35 +85,13 @@ </dependency> <target> - <option arg="with-docs"> - <value str="all"> - <dependencies>pandoc,doxygen</dependencies> - <make> - # Documentation - WITH_DOCS_API=yes - WITH_DOCS_HTML=yes - </make> - </value> - <value str="html"> - <dependencies>pandoc</dependencies> - <make> - # Documentation - WITH_DOCS_HTML=yes - </make> - </value> - <value str="api"> - <dependencies>doxygen</dependencies> - <make> - # Documentation - WITH_DOCS_API=yes - </make> - </value> - <value str="none"/> - <default value="all"/> - <default value="html"/> - <default value="api"/> - <default value="none"/> - </option> + <feature name="api-docs"> + <dependencies>doxygen</dependencies> + <make> + # Documentation + WITH_API_DOCS=yes + </make> + </feature> <feature name="coverage"> <dependencies>coverage</dependencies> </feature>