# HG changeset patch # User Mike Becker # Date 1509198231 -7200 # Node ID 2f5dea574a7585ff0a1ffadd4b87175b348947a4 # Parent d9f4285c795cf66fc89f38329245dd783d7eae33 modules documentation diff -r d9f4285c795c -r 2f5dea574a75 LICENSE --- a/LICENSE Sat Oct 28 11:25:27 2017 +0200 +++ b/LICENSE Sat Oct 28 15:43:51 2017 +0200 @@ -1,4 +1,4 @@ -Copyright 2017 Olaf Wintermann. All rights reserved. +Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 Makefile.am --- a/Makefile.am Sat Oct 28 11:25:27 2017 +0200 +++ b/Makefile.am Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. # -# Copyright 2017 Olaf Wintermann. All rights reserved. +# Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 README --- a/README Sat Oct 28 11:25:27 2017 +0200 +++ b/README Sat Oct 28 15:43:51 2017 +0200 @@ -15,12 +15,12 @@ 1. Introduction --------------- -UAP Common eXtensions provide useful data structures and algorithms for common -programmatic tasks in C language. By design the features are divided into +With this library we provide useful data structures and algorithms for common +programmatic tasks in the C language. By design the features are divided into modules to minimize the library footprint. Using the build files you can create -a static and a shared lib containing all modules, but you might also want use -the UCX sources in your project and compile specific modules to further minimize -the footprint. Feel free to do so. +a static and a shared lib containing all modules, but you may also use the UCX +sources in your project and compile specific modules by yourself to further +minimize the footprint. 2. Build @@ -69,7 +69,7 @@ 6. License ---------- -Copyright 2017 Olaf Wintermann. All rights reserved. +Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 configure.ac --- a/configure.ac Sat Oct 28 11:25:27 2017 +0200 +++ b/configure.ac Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. # -# Copyright 2017 Olaf Wintermann. All rights reserved. +# Copyright 2017 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: @@ -28,7 +28,7 @@ # the package version must match the macros in ucx.h # if you change the package version, don't forget to adjust the library version -AC_INIT([ucx], [0.14], [olaf.wintermann@gmail.com]) +AC_INIT([ucx], [1.0], [olaf.wintermann@gmail.com]) # don't place everything in the project root AC_CONFIG_AUX_DIR([build-aux]) diff -r d9f4285c795c -r 2f5dea574a75 docs/src/Makefile --- a/docs/src/Makefile Sat Oct 28 11:25:27 2017 +0200 +++ b/docs/src/Makefile Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. # -# Copyright 2017 Olaf Wintermann. All rights reserved. +# Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 docs/src/examples.md --- a/docs/src/examples.md Sat Oct 28 11:25:27 2017 +0200 +++ b/docs/src/examples.md Sat Oct 28 15:43:51 2017 +0200 @@ -1,2 +1,4 @@ Examples ======== + +Examples are currently developed and will be available very soon. diff -r d9f4285c795c -r 2f5dea574a75 docs/src/header.html --- a/docs/src/header.html Sat Oct 28 11:25:27 2017 +0200 +++ b/docs/src/header.html Sat Oct 28 15:43:51 2017 +0200 @@ -40,8 +40,15 @@ + diff -r d9f4285c795c -r 2f5dea574a75 docs/src/index.md --- a/docs/src/index.md Sat Oct 28 11:25:27 2017 +0200 +++ b/docs/src/index.md Sat Oct 28 15:43:51 2017 +0200 @@ -1,2 +1,26 @@ UAP Common Extensions ===================== + +Welcome to the UAP Common Extensions. + +With this library we provide useful data structures and algorithms for common +programmatic tasks in the C language. By design the features are divided into +modules to minimize the library footprint. Using the build files you can create +a static and a shared lib containing all modules, but you may also use the UCX +sources in your project and compile specific modules by yourself to further +minimize the footprint. + +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) diff -r d9f4285c795c -r 2f5dea574a75 docs/src/install.md --- a/docs/src/install.md Sat Oct 28 11:25:27 2017 +0200 +++ b/docs/src/install.md Sat Oct 28 15:43:51 2017 +0200 @@ -1,2 +1,26 @@ Build Instructions ================== + +The install procedure is the same on all supported platforms. +For Microsoft Windows, however, 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-latest.tar.gz + tar -xzf ucx-latest.tar.gz + cd ucx-latest + +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/ + diff -r d9f4285c795c -r 2f5dea574a75 docs/src/license.md --- a/docs/src/license.md Sat Oct 28 11:25:27 2017 +0200 +++ b/docs/src/license.md Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ License ======= -Copyright 2017 Olaf Wintermann. All rights reserved. +Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 docs/src/modules.md --- a/docs/src/modules.md Sat Oct 28 11:25:27 2017 +0200 +++ b/docs/src/modules.md Sat Oct 28 15:43:51 2017 +0200 @@ -1,2 +1,176 @@ Modules ======= + +UCX provides several modules for data structures and algorithms. +You may choose to use specific modules by inclueding the corresponding header +file. +Please note, that some modules make use of other UCX 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 an module by including it +via `#include `. +Required modules are included automatically. + + + +## Allocator + +*Header file:* [allocator.h](api/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](#mempool). + + + +## AVL Tree + +*Header file:* [avl.h](api/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. + + + +## Buffer + +*Header file:* [buffer.h](api/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](#utils) 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. + + + +## List + +*Header file:* [list.h](api/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. + + + +## Logging + +*Header file:* [logging.h](api/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. + + + + +## Map + +*Header file:* [map.h](api/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. + + + +## Memory Pool + +*Header file:* [mempool.h](api/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 you wish to be +destroyed together with this pool. + + + +## Properties + +*Header file:* [properties.h](api/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. + + + +## Stack + +*Header file:* [stack.h](api/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 if you want to use 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. + + + +## String + +*Header file:* [string.h](api/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. + + + +## Testing + +*Header file:* [test.h](api/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. + + + +## Utilities + +*Header file:* [utils.h](api/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. + diff -r d9f4285c795c -r 2f5dea574a75 docs/src/ucx.css --- a/docs/src/ucx.css Sat Oct 28 11:25:27 2017 +0200 +++ b/docs/src/ucx.css Sat Oct 28 15:43:51 2017 +0200 @@ -1,3 +1,13 @@ +a { + color: #2e2eaf; + text-decoration: none; +} + +a:hover { + text-decoration: underline; + text-decoration-style: dotted; // not supported in IE / Edge +} + #header, h1, h2, h3, #sidebar { font-family: sans-serif; } @@ -7,8 +17,9 @@ padding-bottom: 0.5em; margin-bottom: 2em; border: none; - border-bottom: 1px solid; - border-bottom-color: #2E2E2E; + border-bottom-width: 1pt; + border-bottom-style: solid; + border-bottom-color: #2e2e2e; } #header span { @@ -28,14 +39,14 @@ .nav { color: black; - background-color: #E9EBEC; + background-color: #e9ebec; margin-bottom: 1em; padding-bottom: 0.1em; } .nav h3 { color: white; - background-color: #5B6F7A; + background-color: #5b6f7a; font-size: 1.2em; padding-top: 0.2em; padding-bottom: 0.2em; @@ -59,7 +70,7 @@ #content h1 { color: white; - background-color: #5B6F7A; + background-color: #5b6f7a; font-size: 1.2em; padding-top: 0.2em; padding-bottom: 0.2em; @@ -69,7 +80,12 @@ } #content h2 { + color: #2e2e2e; font-size: 1.2em; + border-bottom-color: #5b6f7a; + border-bottom-style: solid; + border-bottom-width: 1pt; + width: 100%; } #content h3 { diff -r d9f4285c795c -r 2f5dea574a75 src/Makefile.am --- a/src/Makefile.am Sat Oct 28 11:25:27 2017 +0200 +++ b/src/Makefile.am Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. # -# Copyright 2017 Olaf Wintermann. All rights reserved. +# Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/allocator.c --- a/src/allocator.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/allocator.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/avl.c --- a/src/avl.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/avl.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/buffer.c --- a/src/buffer.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/buffer.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/list.c --- a/src/list.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/list.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/logging.c --- a/src/logging.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/logging.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/map.c --- a/src/map.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/map.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/mempool.c --- a/src/mempool.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/mempool.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/properties.c --- a/src/properties.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/properties.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/stack.c --- a/src/stack.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/stack.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/string.c --- a/src/string.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/string.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/test.c --- a/src/test.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/test.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/ucx.c --- a/src/ucx.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx.c Sat Oct 28 15:43:51 2017 +0200 @@ -2,14 +2,23 @@ * @mainpage UAP Common Extensions * Library with common and useful functions, macros and data structures. *

- * Latest available source:
+ * Latest available source:
+ * + * https://sourceforge.net/projects/ucx/files/ + *

+ * + *

+ * Repositories:
+ * + * https://ucx.sourceforge.io/code + * - or - * * https://develop.uap-core.de/hg/ucx *

* *

LICENCE

* - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/allocator.h --- a/src/ucx/allocator.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/allocator.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -52,7 +52,7 @@ #ifndef UCX_ALLOCATOR_H #define UCX_ALLOCATOR_H -#include +#include "ucx.h" #ifdef __cplusplus extern "C" { diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/avl.h --- a/src/ucx/avl.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/avl.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -42,8 +42,8 @@ #ifndef UCX_AVL_H #define UCX_AVL_H -#include -#include +#include "ucx.h" +#include "allocator.h" #include #ifdef __cplusplus diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/buffer.h --- a/src/ucx/buffer.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/buffer.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -46,7 +46,7 @@ #ifndef UCX_BUFFER_H #define UCX_BUFFER_H -#include +#include "ucx.h" #include #include diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/list.h --- a/src/ucx/list.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/list.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -36,8 +36,8 @@ #ifndef UCX_LIST_H #define UCX_LIST_H -#include -#include +#include "ucx.h" +#include "allocator.h" #ifdef __cplusplus extern "C" { diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/logging.h --- a/src/ucx/logging.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/logging.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -34,9 +34,9 @@ #ifndef UCX_LOGGING_H #define UCX_LOGGING_H -#include -#include -#include +#include "ucx.h" +#include "map.h" +#include "string.h" #include #ifdef __cplusplus diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/map.h --- a/src/ucx/map.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/map.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -41,9 +41,9 @@ #ifndef UCX_MAP_H #define UCX_MAP_H -#include -#include -#include +#include "ucx.h" +#include "string.h" +#include "allocator.h" #include #ifdef __cplusplus diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/mempool.h --- a/src/ucx/mempool.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/mempool.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -38,8 +38,8 @@ #ifndef UCX_MEMPOOL_H #define UCX_MEMPOOL_H -#include -#include +#include "ucx.h" +#include "allocator.h" #include #ifdef __cplusplus diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/properties.h --- a/src/ucx/properties.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/properties.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -37,8 +37,8 @@ #ifndef UCX_PROPERTIES_H #define UCX_PROPERTIES_H -#include -#include +#include "ucx.h" +#include "map.h" #ifdef __cplusplus extern "C" { diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/stack.h --- a/src/ucx/stack.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/stack.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -38,8 +38,8 @@ #ifndef UCX_STACK_H #define UCX_STACK_H -#include -#include +#include "ucx.h" +#include "allocator.h" #ifdef __cplusplus extern "C" { diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/string.h --- a/src/ucx/string.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/string.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -48,8 +48,8 @@ #ifndef UCX_STRING_H #define UCX_STRING_H -#include -#include +#include "ucx.h" +#include "allocator.h" #include /** Shortcut for a sstr_t struct literal. */ diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/test.h --- a/src/ucx/test.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/test.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -71,7 +71,7 @@ #ifndef UCX_TEST_H #define UCX_TEST_H -#include +#include "ucx.h" #include #include #include diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/ucx.h --- a/src/ucx/ucx.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/ucx.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -37,10 +37,13 @@ #define UCX_H /** Major UCX version as integer constant. */ -#define UCX_VERSION_MAJOR 0 +#define UCX_VERSION_MAJOR 1 /** Minor UCX version as integer constant. */ -#define UCX_VERSION_MINOR 14 +#define UCX_VERSION_MINOR 0 + +/** Version constant which ensures to increase monotonically. */ +#define UCX_VERSION (((UCX_VERSION_MAJOR)<<16)|UCX_VERSION_MINOR) #include #include diff -r d9f4285c795c -r 2f5dea574a75 src/ucx/utils.h --- a/src/ucx/utils.h Sat Oct 28 11:25:27 2017 +0200 +++ b/src/ucx/utils.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: @@ -42,9 +42,9 @@ extern "C" { #endif -#include -#include -#include +#include "ucx.h" +#include "string.h" +#include "allocator.h" #include #include #include diff -r d9f4285c795c -r 2f5dea574a75 src/utils.c --- a/src/utils.c Sat Oct 28 11:25:27 2017 +0200 +++ b/src/utils.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/Makefile.am --- a/test/Makefile.am Sat Oct 28 11:25:27 2017 +0200 +++ b/test/Makefile.am Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. # -# Copyright 2017 Olaf Wintermann. All rights reserved. +# Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/allocator_tests.c --- a/test/allocator_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/allocator_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/allocator_tests.h --- a/test/allocator_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/allocator_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/avl_tests.c --- a/test/avl_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/avl_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/avl_tests.h --- a/test/avl_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/avl_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/buffer_tests.c --- a/test/buffer_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/buffer_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/buffer_tests.h --- a/test/buffer_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/buffer_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/list_tests.c --- a/test/list_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/list_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/list_tests.h --- a/test/list_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/list_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/logging_tests.c --- a/test/logging_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/logging_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/logging_tests.h --- a/test/logging_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/logging_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/main.c --- a/test/main.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/main.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/main.h --- a/test/main.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/main.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/map_tests.c --- a/test/map_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/map_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/map_tests.h --- a/test/map_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/map_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/mpool_tests.c --- a/test/mpool_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/mpool_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/mpool_tests.h --- a/test/mpool_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/mpool_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/prop_tests.c --- a/test/prop_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/prop_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/prop_tests.h --- a/test/prop_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/prop_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/stack_tests.c --- a/test/stack_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/stack_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/stack_tests.h --- a/test/stack_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/stack_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/string_tests.c --- a/test/string_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/string_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/string_tests.h --- a/test/string_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/string_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/utils_tests.c --- a/test/utils_tests.c Sat Oct 28 11:25:27 2017 +0200 +++ b/test/utils_tests.c Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: diff -r d9f4285c795c -r 2f5dea574a75 test/utils_tests.h --- a/test/utils_tests.h Sat Oct 28 11:25:27 2017 +0200 +++ b/test/utils_tests.h Sat Oct 28 15:43:51 2017 +0200 @@ -1,7 +1,7 @@ /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * - * Copyright 2017 Olaf Wintermann. All rights reserved. + * Copyright 2017 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: