|
mdz_ansi_16 Overview and Reference
mdz_ansi_16 - very lightweight, speedy and portable ANSI C 89/90 compliant library for processing single-byte strings. Minimal dependencies, metadata encapsulated, no dynamic memory use.
The source code is highly-portable and conforms to the ANSI C 89/90 standard. Builds are available for Win32/Win64, Linux, FreeBSD, Android, macOS.
mdz_ansi_16 Advantages
1. High Portability: The entire codebase conforms to the ANSI C 89/90 standard.
2. Minimal Dependencies: mdz_ansi_16 functions solely depend on standard C-library functions. This means you can integrate the library into your code without any additional dependencies beyond the standard platform libraries/APIs.
3. Performance: The library functions are highly optimized for speed, particularly for operations like searching. Especially when processing very large string (e.g., hundreds of megabytes or gigabytes).
4. Flexibilty: Most library functions offer both "left position" and "right position" parameters, allowing you to limit the processing area. Additionally, the library provides more string functions than comparable libraries such as STL, Boost, or GLib.
5. Extended Error-Checking: All functions use strict error-checking mechanisms and return specific error codes pointing the problem precisely.
6. Extended Control: The functions perform only explicit operations. For example, when an "insert" function is called, it will return an error if there is not enough capacity in string - no implicit memory allocations/reservations will be made.
7. No Memory Overhead: The functions are designed to process input data without making internal memory allocations or using dynamic memory.
8. Metadata encapsulated: String controls its Size and Capacity, thus making automatical checking and if necessary adjustment during each string function call.
Please refer to mdz_ansi_16 Wiki for API details.
mdz_ansi_16 API Reference
mdz_ansi_16 is library for contiguous single-byte string, containing ASCII (0..127) and "ANSI" (128 - 255) characters.
There are no dynamic memory-allocations happen inside functions.
String may contain 0-terminators ('\0') inside, and must end with 0-terminator.
String should be attached to static/pre-allocated char
buffer and contains metadata (Size , Capacity ).
Capacity - how many bytes of memory is reserved for string content.
Size - how many characters are actually residing in a string.
Init functions:
mdz_ansi_16_init
mdz_ansi_16_attach
mdz_ansi_16_size
mdz_ansi_16_capacity
mdz_ansi_16_data
mdz_ansi_16_dataConst
mdz_ansi_16_insert
Find functions:
mdz_ansi_16_findSingle
mdz_ansi_16_find
mdz_ansi_16_rfindSingle
mdz_ansi_16_rfind
mdz_ansi_16_firstOf
mdz_ansi_16_firstNotOf
mdz_ansi_16_lastOf
mdz_ansi_16_lastNotOf
mdz_ansi_16_removeFrom
mdz_ansi_16_remove
mdz_ansi_16_trimLeft
mdz_ansi_16_trimRight
mdz_ansi_16_trim
Miscellaneous functions:
mdz_ansi_16_compare
mdz_ansi_16_count
Initializes mdz_ansi_16 library and license. This function should be called before any other function of the library.
mdz_bool mdz_ansi_16_init(const unsigned long* pnFirstNameHash, const unsigned long* pnLastNameHash, const unsigned long* pnEmailHash, const unsigned long* pnLicenseHash);
Parameter | Description |
pnFirstNameHash | user first name hash code |
pnLastNameHash | user last name hash code |
pnEmailHash | user e-mail hash code |
pnLicenseHash | license hash code |
Return | Description |
mdz_true | if the initialization succeeded, otherwise mdz_false |
mdz_ansi_16 Reference
Attach string to pre-allocated pcBuffer of nBufferSize bytes. If penError is not NULL , error will be written there
mdz_Ansi16* mdz_ansi_16_attach(char* pcBuffer, unsigned short nInitialSize, unsigned short nBufferSize, enum mdz_attach_type enAttachType, enum mdz_error* penError);
Parameter | Description |
pcBuffer | pointer to pre-allocated buffer to attach. Buffer has following structure: 4 bytes (reserved) + Data, ending with 0-terminator. Thus minimal pcBuffer size is 5 bytes (in this case Capacity is 0) |
nInitialSize | initial Size of Data. 0 if string is empty |
nBufferSize | size of pcBuffer in bytes; should be at least 5 bytes (in this case Capacity is 0) |
enAttachType | type of attachment. See details in desctiption of mdz_attach_type |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | pcBuffer is NULL |
| MDZ_ERROR_CAPACITY | nBufferSize < 5 |
| MDZ_ERROR_ATTACH_TYPE | invalid attach type |
| MDZ_ERROR_BIGSIZE | nInitialSize > Capacity (normally Capacity is nBufferSize - 5) |
| MDZ_ERROR_TERMINATOR | 0-terminator is not found on Data[nInitialSize ] position, when attachment type is MDZ_ATTACH_SIZE_TERMINATOR ) |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
NULL | function failed |
Result | pointer to string for use in other mdz_ansi_16 functions |
mdz_ansi_16 Reference
Return Size of Data in items.
unsigned short mdz_ansi_16_size(const mdz_Ansi16* psAnsi);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
Return | Description |
0 | if psAnsi is NULL |
Size | otherwise |
mdz_ansi_16 Reference
Return Capacity of Data in items.
unsigned short mdz_ansi_16_capacity(const mdz_Ansi16* psAnsi);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
Return | Description |
0 | if psAnsi is NULL |
Capacity | otherwise |
mdz_ansi_16 Reference
Return pointer to Data.
char* mdz_ansi_16_data(mdz_Ansi16* psAnsi);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
Return | Description |
0 | if psAnsi is NULL |
Data | otherwise |
mdz_ansi_16 Reference
Return const pointer to Data.
const char* mdz_ansi_16_dataConst(const mdz_Ansi16* psAnsi);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
Return | Description |
0 | if psAnsi is NULL |
Data | otherwise |
mdz_ansi_16 Reference
Insert pcItems from nLeftPos position. Data and pcItems cannot overlap. New Size is written in psAnsi .
enum mdz_error mdz_ansi_16_insert(mdz_Ansi16* psAnsi, size_t nLeftPos, const char* pcItems, size_t nCount);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() . It should have enough Capacity for insertion of pcItems |
nLeftPos | 0-based position to insert. If nLeftPos == Size items are appended. nLeftPos > Size is not allowed |
pcItems | items to insert. Cannot be NULL |
nCount | number of items to insert. Cannot be 0 |
Return | Description |
MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
MDZ_ERROR_DATA | psAnsi is NULL |
MDZ_ERROR_CAPACITY | Capacity is 0 or too large |
MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
MDZ_ERROR_ITEMS | pcItems is NULL |
MDZ_ERROR_ZERO_COUNT | nCount is 0 |
MDZ_ERROR_BIGLEFT | nLeftPos > Size |
MDZ_ERROR_BIGCOUNT | Size + nCount > Capacity |
MDZ_ERROR_OVERLAP | [Data; Data + Size + nCount ] area and pcItems overlap |
MDZ_ERROR_NONE | function succeeded |
mdz_ansi_16 Reference
Find first occurrence of cItem . Returns 0-based position of match (if found), or SIZE_MAX if not found or error happened. If penError is not NULL , error will be written there
size_t mdz_ansi_16_findSingle(const mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, char cItem, enum mdz_error* penError);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based start position to search from left. Use 0 to search from the beginning of Data |
nRightPos | 0-based end position to search up to. Use Size-1 to search till the end of Data |
cItem | character to find |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | psAnsi is NULL |
| MDZ_ERROR_CAPACITY | Capacity is too large |
| MDZ_ERROR_BIGSIZE | Size > Capacity |
| MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
| MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
| MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
SIZE_MAX | if cItem not found or error happened |
Result | 0-based position of first match |
mdz_ansi_16 Reference
Find first occurrence of pcItems using optimized Boyer-Moore-Horspool search. Returns 0-based position of match (if found), or SIZE_MAX if not found or error happened. If penError is not NULL , error will be written there
size_t mdz_ansi_16_find(const mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based start position to search from left. Use 0 to search from the beginning of Data |
nRightPos | 0-based end position to search up to. Use Size-1 to search till the end of Data |
pcItems | items to find. Cannot be NULL |
nCount | number of items to find. Cannot be 0 |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | psAnsi is NULL |
| MDZ_ERROR_CAPACITY | Capacity is too large |
| MDZ_ERROR_BIGSIZE | Size > Capacity |
| MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
| MDZ_ERROR_ITEMS | pcItems is NULL |
| MDZ_ERROR_ZERO_COUNT | nCount is 0 |
| MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
| MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
| MDZ_ERROR_BIGCOUNT | nCount is bigger than search area (between nLeftPos and nRightPos ) |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
SIZE_MAX | if pcItems not found or error happened |
Result | 0-based position of first match |
mdz_ansi_16 Reference
Find last occurrence of cItem . Returns 0-based position of match (if found), or SIZE_MAX if not found or error happened. If penError is not NULL , error will be written there
size_t mdz_ansi_16_rfindSingle(const mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, char cItem, enum mdz_error* penError);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based end position to find up to. Use 0 to search till the beginning of Data |
nRightPos | 0-based start position to find from right. Use Size-1 to search from the end of Data |
cItem | character to find |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | psAnsi is NULL |
| MDZ_ERROR_CAPACITY | Capacity is too large |
| MDZ_ERROR_BIGSIZE | Size > Capacity |
| MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
| MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
| MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
SIZE_MAX | if cItem not found or error happened |
Result | 0-based position of first match |
mdz_ansi_16 Reference
Find last occurrence of pcItems using optimized Boyer-Moore-Horspool search. Returns 0-based position of match (if found), or SIZE_MAX if not found or error happened. If penError is not NULL , error will be written there
size_t mdz_ansi_16_rfind(const mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based end position to find up to. Use 0 to search till the beginning of Data |
nRightPos | 0-based start position to find from right. Use Size-1 to search from the end of Data |
pcItems | items to find. Cannot be NULL |
nCount | number of items to find. Cannot be 0 |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | psAnsi is NULL |
| MDZ_ERROR_CAPACITY | Capacity is too large |
| MDZ_ERROR_BIGSIZE | Size > Capacity |
| MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
| MDZ_ERROR_ITEMS | pcItems is NULL |
| MDZ_ERROR_ZERO_COUNT | nCount is 0 |
| MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
| MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
| MDZ_ERROR_BIGCOUNT | nCount is bigger than search area (between nLeftPos and nRightPos ) |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
SIZE_MAX | if pcItems not found or error happened |
Result | 0-based position of first match |
mdz_ansi_16 Reference
Find first occurrence of any item of pcItems . Returns 0-based position of match (if found), or SIZE_MAX if not found or error happened. If penError is not NULL , error will be written there
size_t mdz_ansi_16_firstOf(const mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based end position to find up to. Use 0 to search till the beginning of Data |
nRightPos | 0-based start position to find from right. Use Size-1 to search till the end of Data |
pcItems | items to find. Cannot be NULL |
nCount | number of items to find. Cannot be 0 |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | psAnsi is NULL |
| MDZ_ERROR_CAPACITY | Capacity is too large |
| MDZ_ERROR_BIGSIZE | Size > Capacity |
| MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
| MDZ_ERROR_ITEMS | pcItems is NULL |
| MDZ_ERROR_ZERO_COUNT | nCount is 0 |
| MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
| MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
SIZE_MAX | if no item of pcItems found or error happened |
Result | 0-based position of first match |
mdz_ansi_16 Reference
Find first non-occurrence of any item of pcItems . Returns 0-based position of match (if found), or SIZE_MAX if not found or error happened. If penError is not NULL , error will be written there
size_t mdz_ansi_16_firstNotOf(const mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based end position to find up to. Use 0 to search till the beginning of Data |
nRightPos | 0-based start position to find from right. Use Size-1 to search till the end of Data |
pcItems | items to find. Cannot be NULL |
nCount | number of items to find. Cannot be 0 |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | psAnsi is NULL |
| MDZ_ERROR_CAPACITY | Capacity is too large |
| MDZ_ERROR_BIGSIZE | Size > Capacity |
| MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
| MDZ_ERROR_ITEMS | pcItems is NULL |
| MDZ_ERROR_ZERO_COUNT | nCount is 0 |
| MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
| MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
SIZE_MAX | if no item of pcItems found or error happened |
Result | 0-based position of first match |
mdz_ansi_16 Reference
Find last occurrence of any item of pcItems . Returns 0-based position of match (if found), or SIZE_MAX if not found or error happened. If penError is not NULL , error will be written there
size_t mdz_ansi_16_lastOf(const mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based end position to find up to. Use 0 to search till the beginning of Data |
nRightPos | 0-based start position to find from right. Use Size-1 to search till the end of Data |
pcItems | items to find. Cannot be NULL |
nCount | number of items to find. Cannot be 0 |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | psAnsi is NULL |
| MDZ_ERROR_CAPACITY | Capacity is too large |
| MDZ_ERROR_BIGSIZE | Size > Capacity |
| MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
| MDZ_ERROR_ITEMS | pcItems is NULL |
| MDZ_ERROR_ZERO_COUNT | nCount is 0 |
| MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
| MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
SIZE_MAX | if no item of pcItems found or error happened |
Result | 0-based position of first match |
mdz_ansi_16 Reference
Find last non-occurrence of any item of pcItems . Returns 0-based position of match (if found), or SIZE_MAX if not found or error happened. If penError is not NULL , error will be written there
size_t mdz_ansi_16_lastNotOf(const mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based end position to find up to. Use 0 to search till the beginning of Data |
nRightPos | 0-based start position to find from right. Use Size-1 to search till the end of Data |
pcItems | items to find. Cannot be NULL |
nCount | number of items to find. Cannot be 0 |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | psAnsi is NULL |
| MDZ_ERROR_CAPACITY | Capacity is too large |
| MDZ_ERROR_BIGSIZE | Size > Capacity |
| MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
| MDZ_ERROR_ITEMS | pcItems is NULL |
| MDZ_ERROR_ZERO_COUNT | nCount is 0 |
| MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
| MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
SIZE_MAX | if no item of pcItems found or error happened |
Result | 0-based position of first match |
mdz_ansi_16 Reference
Remove nCount item(s) starting from 0-based nLeftPos position
enum mdz_error mdz_ansi_16_removeFrom(mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nCount);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based start position to remove item(s) from. Use 0 to remove from the beginning of Data |
nCount | number of item(s) to remove. Cannot be 0 |
Return | Description |
MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
MDZ_ERROR_DATA | psAnsi is NULL |
MDZ_ERROR_CAPACITY | Capacity is too large |
MDZ_ERROR_BIGSIZE | Size > Capacity |
MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
MDZ_ERROR_ZERO_SIZE | Size is 0 (string is empty) |
MDZ_ERROR_ZERO_COUNT | nCount is 0 |
MDZ_ERROR_BIGLEFT | nLeftPos >= Size |
MDZ_ERROR_BIGCOUNT | nCount is bigger than remove area (between nLeftPos and Size ) |
MDZ_ERROR_NONE | function succeeded |
mdz_ansi_16 Reference
Remove all ocurrences of nCount item(s) matching to pcItems , residing between nLeftPos and nRightPos
enum mdz_error mdz_ansi_16_remove(mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based start position to remove item(s) from. Use 0 to search from the beginning of Data |
nRightPos | 0-based end position to remove item(s) up to. Use Size-1 to search till the end of Data |
pcItems | items to remove. Cannot be NULL |
nCount | number of item(s) to remove. Cannot be 0 |
Return | Description |
MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
MDZ_ERROR_DATA | psAnsi is NULL |
MDZ_ERROR_CAPACITY | Capacity is too large |
MDZ_ERROR_BIGSIZE | Size > Capacity |
MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
MDZ_ERROR_ZERO_SIZE | Size is 0 (string is empty) |
MDZ_ERROR_ITEMS | pcItems is NULL |
MDZ_ERROR_ZERO_COUNT | nCount is 0 |
MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
MDZ_ERROR_BIGCOUNT | nCount is bigger than search area (between nLeftPos and nRightPos ) |
MDZ_ERROR_NONE | function succeeded |
mdz_ansi_16 Reference
Remove items which are contained in pcItems from left, until first non-contained in pcItems item is reached.
enum mdz_error mdz_ansi_16_trimLeft(mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based start position to trim item(s) from left. Use 0 to trim from the beginning of Data |
nRightPos | 0-based end position to trim item(s) up to. Use Size-1 to trim till the end of Data |
pcItems | items to trim. Cannot be NULL |
nCount | number of items to trim. Cannot be 0 |
Return | Description |
MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
MDZ_ERROR_DATA | psAnsi is NULL |
MDZ_ERROR_CAPACITY | Capacity is too large |
MDZ_ERROR_BIGSIZE | Size > Capacity |
MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
MDZ_ERROR_ZERO_SIZE | Size is 0 (string is empty) |
MDZ_ERROR_ITEMS | pcItems is NULL |
MDZ_ERROR_ZERO_COUNT | nCount is 0 |
MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
MDZ_ERROR_NONE | function succeeded |
mdz_ansi_16 Reference
Remove items which are contained in pcItems from right, until first non-contained in pcItems item is reached.
enum mdz_error mdz_ansi_16_trimRight(mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based end position to trim item(s) up to. Use 0 to trim till the beginning of Data |
nRightPos | 0-based start position to trim item(s) from right. Use Size-1 to trim from the end of Data |
pcItems | items to trim. Cannot be NULL |
nCount | number of items to trim. Cannot be 0 |
Return | Description |
MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
MDZ_ERROR_DATA | psAnsi is NULL |
MDZ_ERROR_CAPACITY | Capacity is too large |
MDZ_ERROR_BIGSIZE | Size > Capacity |
MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
MDZ_ERROR_ZERO_SIZE | Size is 0 (string is empty) |
MDZ_ERROR_ITEMS | pcItems is NULL |
MDZ_ERROR_ZERO_COUNT | nCount is 0 |
MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
MDZ_ERROR_NONE | function succeeded |
mdz_ansi_16 Reference
Remove items which are contained in pcItems from left and from right, until first non-contained in pcItems item is reached.
enum mdz_error mdz_ansi_16_trim(mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based start position to trim item(s) from left. Use 0 to trim from the beginning of Data |
nRightPos | 0-based start position to trim item(s) from right. Use Size-1 to trim from the end of Data |
pcItems | items to trim. Cannot be NULL |
nCount | number of items to trim. Cannot be 0 |
Return | Description |
MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
MDZ_ERROR_DATA | psAnsi is NULL |
MDZ_ERROR_CAPACITY | Capacity is too large |
MDZ_ERROR_BIGSIZE | Size > Capacity |
MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
MDZ_ERROR_ZERO_SIZE | Size is 0 (string is empty) |
MDZ_ERROR_ITEMS | pcItems is NULL |
MDZ_ERROR_ZERO_COUNT | nCount is 0 |
MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
MDZ_ERROR_NONE | function succeeded |
mdz_ansi_16 Reference
Compare content of Data with pcItems . If penError is not NULL , error will be written there
enum mdz_ansi_compare_result mdz_ansi_16_compare(const mdz_Ansi16* psAnsi, size_t nLeftPos, const char* pcItems, size_t nCount, mdz_bool bPartialCompare, enum mdz_error* penError);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based start position to compare from left. Use 0 to compare from the beginning of Data |
pcItems | items to compare. Cannot be NULL |
nCount | number of items to compare. Cannot be 0 |
bPartialCompare | if mdz_true compare only nCount items, otherwise compare full strings |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | psAnsi is NULL |
| MDZ_ERROR_CAPACITY | Capacity is too large |
| MDZ_ERROR_BIGSIZE | Size > Capacity |
| MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
| MDZ_ERROR_ITEMS | pcItems is NULL |
| MDZ_ERROR_ZERO_COUNT | nCount is 0 |
| MDZ_ERROR_BIGLEFT | nLeftPos >= Size |
| MDZ_ERROR_BIGCOUNT | nCount is bigger than compare area (between nLeftPos and Size ) |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
MDZ_COMPARE_EQUAL or MDZ_COMPARE_NONEQUAL | Result of comparison |
mdz_ansi_16 Reference
Counts number of pcItems substring occurences in Data. If penError is not NULL , error will be written there
size_t mdz_ansi_16_count(const mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, mdz_bool bAllowOverlapped, enum mdz_error* penError);
Parameter | Description |
psAnsi | pointer to string returned by mdz_ansi_16_attach() |
nLeftPos | 0-based start position to search from left. Use 0 to search from the beginning of Data |
nRightPos | 0-based end position to search up to. Use Size-1 to search till the end of Data |
pcItems | items to find. Cannot be NULL |
nCount | number of items to find. Cannot be 0 |
bAllowOverlapped | mdz_true if overlapped substrings should be counted, otherwise mdz_false |
penError | if not NULL , error will be written there. There are following errors possible: |
| Value | Description |
| MDZ_ERROR_LICENSE | license is not initialized using mdz_ansi_16_init() or invalid |
| MDZ_ERROR_DATA | psAnsi is NULL |
| MDZ_ERROR_CAPACITY | Capacity is too large |
| MDZ_ERROR_BIGSIZE | Size > Capacity |
| MDZ_ERROR_TERMINATOR | there is no 0-terminator on Data[Size ] position |
| MDZ_ERROR_ITEMS | pcItems is NULL |
| MDZ_ERROR_ZERO_COUNT | nCount is 0 |
| MDZ_ERROR_BIGRIGHT | nRightPos >= Size |
| MDZ_ERROR_BIGLEFT | nLeftPos > nRightPos |
| MDZ_ERROR_BIGCOUNT | nCount is bigger than search area (between nLeftPos and nRightPos ) |
| MDZ_ERROR_NONE | function succeeded |
Return | Description |
SIZE_MAX | if error happened |
Result | count of substring occurences. 0 if not found |
mdz_ansi_16 Reference
|