Site Logo

maxdz Software GmbH

en | de
Home

Team

Produkte

mdz_ansi_alg

mdz_ansi_16

mdz_ansi_dyn

mdz_ui

mdz_xml

mdz_string

mdz_vector

mdzWebSiteGenerator

mdzTennisTracker

Shop

Gesetzliches

Kontakte

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.

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 API Reference is generated using mdzApiRefGenerator.

mdz_ansi_16 General Information and Functions

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

Status functions:

mdz_ansi_16_size
mdz_ansi_16_capacity
mdz_ansi_16_data
mdz_ansi_16_dataConst

Insert/remove functions:

mdz_ansi_16_insert
mdz_ansi_16_removeFrom
mdz_ansi_16_remove
mdz_ansi_16_trimLeft
mdz_ansi_16_trimRight
mdz_ansi_16_trim

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

Miscellaneous functions:

mdz_ansi_16_compare
mdz_ansi_16_count
mdz_ansi_16_replace
mdz_ansi_16_reverse


mdz_ansi_16_init

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);

ParameterDescription
pnFirstNameHashuser first name hash code
pnLastNameHashuser last name hash code
pnEmailHashuser e-mail hash code
pnLicenseHashlicense hash code

ReturnDescription
mdz_trueif the initialization succeeded, otherwise mdz_false

mdz_ansi_16 Reference

mdz_ansi_16_attach

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 nBufferSize, enum mdz_error* penError);

ParameterDescription
pcBufferpointer 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)
nBufferSizesize of pcBuffer in bytes; should be at least 5 bytes (in this case Capacity is 0)
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApcBuffer is NULL
MDZ_ERROR_CAPACITYnBufferSize < 5
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
NULLfunction failed
Resultpointer to string for use in other mdz_ansi_16 functions

mdz_ansi_16 Reference

mdz_ansi_16_size

Return Size of string Data in characters/bytes.

unsigned short mdz_ansi_16_size(const mdz_Ansi16* psAnsi);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()

ReturnDescription
0if psAnsi is NULL
Sizeotherwise

mdz_ansi_16 Reference

mdz_ansi_16_capacity

Return Capacity of string Data in characters/bytes.

unsigned short mdz_ansi_16_capacity(const mdz_Ansi16* psAnsi);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()

ReturnDescription
0if psAnsi is NULL
Capacityotherwise

mdz_ansi_16 Reference

mdz_ansi_16_data

Return pointer to string Data.

char* mdz_ansi_16_data(mdz_Ansi16* psAnsi);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()

ReturnDescription
0if psAnsi is NULL
Dataotherwise

mdz_ansi_16 Reference

mdz_ansi_16_dataConst

Return const pointer to string Data.

const char* mdz_ansi_16_dataConst(const mdz_Ansi16* psAnsi);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()

ReturnDescription
0if psAnsi is NULL
Dataotherwise

mdz_ansi_16 Reference

mdz_ansi_16_insert

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach(). It should have enough Capacity for insertion of pcItems
nLeftPos0-based position to insert. If nLeftPos == Size items are appended. nLeftPos > Size is not allowed
pcItemsitems to insert. Cannot be NULL
nCountnumber of items to insert. Cannot be 0

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is 0 or too large
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_LEFTnLeftPos > Size
MDZ_ERROR_BIG_COUNTSize + nCount > Capacity
MDZ_ERROR_OVERLAP[Data; Data + Size + nCount] area and pcItems overlap
MDZ_ERROR_NONEfunction succeeded

mdz_ansi_16 Reference

mdz_ansi_16_findSingle

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based start position to search from left. Use 0 to search from the beginning of Data
nRightPos0-based end position to search up to. Use Size-1 to search till the end of Data
cItemcharacter to find
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
SIZE_MAXif cItem not found or error happened
Result0-based position of first match

mdz_ansi_16 Reference

mdz_ansi_16_find

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based start position to search from left. Use 0 to search from the beginning of Data
nRightPos0-based end position to search up to. Use Size-1 to search till the end of Data
pcItemsitems to find. Cannot be NULL
nCountnumber of items to find. Cannot be 0
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_BIG_COUNTnCount is bigger than search area (between nLeftPos and nRightPos)
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
SIZE_MAXif pcItems not found or error happened
Result0-based position of first match

mdz_ansi_16 Reference

mdz_ansi_16_rfindSingle

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of Data
nRightPos0-based start position to find from right. Use Size-1 to search from the end of Data
cItemcharacter to find
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
SIZE_MAXif cItem not found or error happened
Result0-based position of first match

mdz_ansi_16 Reference

mdz_ansi_16_rfind

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of Data
nRightPos0-based start position to find from right. Use Size-1 to search from the end of Data
pcItemsitems to find. Cannot be NULL
nCountnumber of items to find. Cannot be 0
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_BIG_COUNTnCount is bigger than search area (between nLeftPos and nRightPos)
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
SIZE_MAXif pcItems not found or error happened
Result0-based position of first match

mdz_ansi_16 Reference

mdz_ansi_16_firstOf

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of Data
nRightPos0-based start position to find from right. Use Size-1 to search till the end of Data
pcItemsitems to find. Cannot be NULL
nCountnumber of items to find. Cannot be 0
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
SIZE_MAXif no item of pcItems found or error happened
Result0-based position of first match

mdz_ansi_16 Reference

mdz_ansi_16_firstNotOf

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of Data
nRightPos0-based start position to find from right. Use Size-1 to search till the end of Data
pcItemsitems to find. Cannot be NULL
nCountnumber of items to find. Cannot be 0
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
SIZE_MAXif no item of pcItems found or error happened
Result0-based position of first match

mdz_ansi_16 Reference

mdz_ansi_16_lastOf

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of Data
nRightPos0-based start position to find from right. Use Size-1 to search till the end of Data
pcItemsitems to find. Cannot be NULL
nCountnumber of items to find. Cannot be 0
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
SIZE_MAXif no item of pcItems found or error happened
Result0-based position of first match

mdz_ansi_16 Reference

mdz_ansi_16_lastNotOf

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of Data
nRightPos0-based start position to find from right. Use Size-1 to search till the end of Data
pcItemsitems to find. Cannot be NULL
nCountnumber of items to find. Cannot be 0
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
SIZE_MAXif no item of pcItems found or error happened
Result0-based position of first match

mdz_ansi_16 Reference

mdz_ansi_16_removeFrom

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based start position to remove item(s) from. Use 0 to remove from the beginning of Data
nCountnumber of item(s) to remove. Cannot be 0

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_LEFTnLeftPos >= Size
MDZ_ERROR_BIG_COUNTnCount is bigger than remove area (between nLeftPos and Size)
MDZ_ERROR_NONEfunction succeeded

mdz_ansi_16 Reference

mdz_ansi_16_remove

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, mdz_bool bFromLeft);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based start position to remove item(s) from. Use 0 to search from the beginning of Data
nRightPos0-based end position to remove item(s) up to. Use Size-1 to search till the end of Data
pcItemsitems to remove. Cannot be NULL
nCountnumber of item(s) to remove. Cannot be 0
bFromLeftmdz_true if search for items to remove from left side, otherwise from right

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_BIG_COUNTnCount is bigger than search area (between nLeftPos and nRightPos)
MDZ_ERROR_NONEfunction succeeded

mdz_ansi_16 Reference

mdz_ansi_16_trimLeft

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based start position to trim item(s) from left. Use 0 to trim from the beginning of Data
nRightPos0-based end position to trim item(s) up to. Use Size-1 to trim till the end of Data
pcItemsitems to trim. Cannot be NULL
nCountnumber of items to trim. Cannot be 0

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_NONEfunction succeeded

mdz_ansi_16 Reference

mdz_ansi_16_trimRight

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based end position to trim item(s) up to. Use 0 to trim till the beginning of Data
nRightPos0-based start position to trim item(s) from right. Use Size-1 to trim from the end of Data
pcItemsitems to trim. Cannot be NULL
nCountnumber of items to trim. Cannot be 0

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_NONEfunction succeeded

mdz_ansi_16 Reference

mdz_ansi_16_trim

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based start position to trim item(s) from left. Use 0 to trim from the beginning of Data
nRightPos0-based start position to trim item(s) from right. Use Size-1 to trim from the end of Data
pcItemsitems to trim. Cannot be NULL
nCountnumber of items to trim. Cannot be 0

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_NONEfunction succeeded

mdz_ansi_16 Reference

mdz_ansi_16_compare

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);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based start position to compare from left. Use 0 to compare from the beginning of Data
pcItemsitems to compare. Cannot be NULL
nCountnumber of items to compare. Cannot be 0
bPartialCompareif mdz_true compare only nCount items, otherwise compare full strings
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_LEFTnLeftPos >= Size
MDZ_ERROR_BIG_COUNTnCount is bigger than compare area (between nLeftPos and Size)
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
MDZ_COMPARE_EQUAL or MDZ_COMPARE_NONEQUALResult of comparison

mdz_ansi_16 Reference

mdz_ansi_16_count

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, mdz_bool bFromLeft, enum mdz_error* penError);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based start position to search from left. Use 0 to search from the beginning of Data
nRightPos0-based end position to search up to. Use Size-1 to search till the end of Data
pcItemsitems to find. Cannot be NULL
nCountnumber of items to find. Cannot be 0
bAllowOverlappedmdz_true if overlapped substrings should be counted, otherwise mdz_false
bFromLeftmdz_true if search for items to count from left side, otherwise from right
penErrorif not NULL, error will be written there. There are following errors possible:
ValueDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_BIG_COUNTnCount is bigger than search area (between nLeftPos and nRightPos)
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
SIZE_MAXif error happened
Resultcount of substring occurences. 0 if not found

mdz_ansi_16 Reference

mdz_ansi_16_replace

Replace every occurence of pcItemsBefore with pcItemsAfter in Data. There should be enough Capacity for replacing data.

enum mdz_error mdz_ansi_16_replace(mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos, const char* pcItemsBefore, size_t nCountBefore, const char* pcItemsAfter, size_t nCountAfter, mdz_bool bFromLeft, enum mdz_ansi_replace_type enReplacementType);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based start position to search from left. Use 0 to search from the beginning of Data
nRightPos0-based end position to search up to. Use Size-1 to search till the end of Data
pcItemsBeforeitems to find. Cannot be NULL
nCountBeforenumber of items to find. Cannot be 0
pcItemsAfterpointer to items to replace with. Can be NULL
nCountAfternumber of items to replace. Can be 0
bFromLeftmdz_true if search for items to replace from left side, otherwise from right
enReplacementTypetype of replacement when nCountAfter > nCountBefore (thus Size is growing). For now only MDZ_ANSI_REPLACE_DUAL is supported (please refer to description of mdz_ansi_replace_type enum)

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is 0 or too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_ITEMSpcItemsBefore is NULL
MDZ_ERROR_ZERO_COUNTnCountBefore is 0
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos > nRightPos
MDZ_ERROR_BIG_COUNTnCount is bigger than search area (between nLeftPos and nRightPos)
MDZ_ERROR_OVERLAPData overlaps with pcItemsBefore, or Data overlaps with pcItemsAfter
MDZ_ERROR_BIG_REPLACEnew Size after replacement > Capacity
MDZ_ERROR_OVERLAP_REPLACEData after replacement - overlaps with pcItemsBefore, or Data after replacement - overlaps with pcItemsAfter
MDZ_ERROR_NONEfunction succeeded

mdz_ansi_16 Reference

mdz_ansi_16_reverse

Reverses characters in string, like "1234" into "4321".

enum mdz_error mdz_ansi_16_reverse(mdz_Ansi16* psAnsi, size_t nLeftPos, size_t nRightPos);

ParameterDescription
psAnsipointer to string returned by mdz_ansi_16_attach()
nLeftPos0-based start position to search from left. Use 0 to search from the beginning of Data
nRightPos0-based end position to search up to. Use Size-1 to search till the end of Data

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_16_init() or invalid
MDZ_ERROR_DATApsAnsi is NULL
MDZ_ERROR_CAPACITYCapacity is too large
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_TERMINATORthere is no 0-terminator on Data[Size] position
MDZ_ERROR_BIG_RIGHTnRightPos >= Size
MDZ_ERROR_BIG_LEFTnLeftPos >= nRightPos
MDZ_ERROR_NONEfunction succeeded

mdz_ansi_16 Reference
Softwareentwicklung. Strebe nach Unmöglichen, um Hervorragendes zu erreichen.
Copyright Ⓒ 2017 - 2024 maxdz Software GmbH. All rights reserved.
Site content is generated using mdzWebSiteGenerator