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_alg Overview and Reference

mdz_ansi_alg - very lightweight and versatile C library, containing string-processing algorithms for handling contiguous single-byte (ASCII/ANSI) strings. 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_alg Advantages

1. High Portability: The entire codebase conforms to the ANSI C 89/90 standard.

2. Minimal Dependencies: mdz_ansi_alg 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.

Please refer to mdz_ansi_alg Wiki for API details.


mdz_ansi_alg API Reference


mdz_ansi_alg API Reference is generated using mdzApiRefGenerator.

mdz_ansi_alg General Information and Functions

mdz_ansi_alg is algorithms library for contiguous single-byte string, containing ASCII (0..127) and "ANSI" (128 - 255) characters.
Functions are algorithms for processing input data. There are no memory allocations happen inside functions and no dynamic memory use.

String may contain 0-terminators ('\0') inside, and must end with 0-terminator.

Capacity - how many bytes of memory is reserved for string content. Capacity does not include 0-terminator byte, thus reserved memory should be at least 1 byte bigger than Capacity.
Size - how many characters are actually residing in a string.

Init functions:

mdz_ansi_alg_init

Insert/remove functions:

mdz_ansi_alg_insert
mdz_ansi_alg_removeFrom
mdz_ansi_alg_remove
mdz_ansi_alg_trimLeft
mdz_ansi_alg_trimRight
mdz_ansi_alg_trim

Find functions:

mdz_ansi_alg_findSingle
mdz_ansi_alg_find
mdz_ansi_alg_rfindSingle
mdz_ansi_alg_rfind
mdz_ansi_alg_firstOf
mdz_ansi_alg_firstNotOf
mdz_ansi_alg_lastOf
mdz_ansi_alg_lastNotOf

Miscellaneous functions:

mdz_ansi_alg_compare
mdz_ansi_alg_count
mdz_ansi_alg_replace
mdz_ansi_alg_reverse


mdz_ansi_alg_init

Initializes mdz_ansi_alg library and license. This function should be called before any other function of the library.

mdz_bool mdz_ansi_alg_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_alg Reference

mdz_ansi_alg_insert

Insert pcItems into pcData from nLeftPos position. pcData and pcItems cannot overlap. New size is returned in pnDataSize.
Size and capacity - do not include 0-terminator; thus size and capacity of empty string with no free space are 0

enum mdz_error mdz_ansi_alg_insert(char* pcData, size_t* pnDataSize, size_t nDataCapacity, size_t nLeftPos, const char* pcItems, size_t nCount);

ParameterDescription
pcDatapointer to string. It should end with 0-terminator and have enough capacity for insertion of pcItems
pnDataSizepointer to current Size. Size is 0 for empty string. If insertion succeeded, new size is returned here
nDataCapacitymaximal capacity of pcData buffer. nDataCapacity does not include 0-terminator byte, thus pcData buffer should be at least 1 byte bigger than nDataCapacity
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_SIZEpnDataSize is NULL
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_CAPACITYnDataCapacity is 0 (no space for insertion) or SIZE_MAX (no space for 0-terminator)
MDZ_ERROR_TERMINATORthere is no 0-terminator in the end of pcData ([Size] position)
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_LEFTnLeftPos > Size
MDZ_ERROR_BIG_COUNTSize + nCount > nDataCapacity
MDZ_ERROR_OVERLAPpcData + pcItems memory - overlap with pcItems
MDZ_ERROR_NONEfunction succeeded, new size is written in pnDataSize

mdz_ansi_alg Reference

mdz_ansi_alg_findSingle

Find first occurrence of cItem in pcData. 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_alg_findSingle(const char* pcData, size_t nLeftPos, size_t nRightPos, char cItem, enum mdz_error* penError);

ParameterDescription
pcDatapointer to string
nLeftPos0-based start position to search from left. Use 0 to search from the beginning of string
nRightPos0-based end position to search up to. Use Size-1 to search till the end of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_BIG_RIGHTnRightPos is SIZE_MAX
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_alg Reference

mdz_ansi_alg_find

Find first occurrence of pcItems in pcData 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_alg_find(const char* pcData, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);

ParameterDescription
pcDatapointer to string
nLeftPos0-based start position to search from left. Use 0 to search from the beginning of string
nRightPos0-based end position to search up to. Use Size-1 to search till the end of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos is SIZE_MAX
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_alg Reference

mdz_ansi_alg_rfindSingle

Find last occurrence of cItem in pcData. 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_alg_rfindSingle(const char* pcData, size_t nLeftPos, size_t nRightPos, char cItem, enum mdz_error* penError);

ParameterDescription
pcDatapointer to string
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of string
nRightPos0-based start position to find from right. Use Size-1 to search from the end of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_BIG_RIGHTnRightPos is SIZE_MAX
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_alg Reference

mdz_ansi_alg_rfind

Find last occurrence of pcItems in pcData 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_alg_rfind(const char* pcData, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);

ParameterDescription
pcDatapointer to string
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of string
nRightPos0-based start position to find from right. Use Size-1 to search from the end of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos is SIZE_MAX
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_alg Reference

mdz_ansi_alg_firstOf

Find first occurrence of any item of pcItems in string. 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_alg_firstOf(const char* pcData, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);

ParameterDescription
pcDatapointer to string
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of string
nRightPos0-based start position to find from right. Use Size-1 to search till the end of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos is SIZE_MAX
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_alg Reference

mdz_ansi_alg_firstNotOf

Find first non-occurrence of any item of pcItems in string. 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_alg_firstNotOf(const char* pcData, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);

ParameterDescription
pcDatapointer to string
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of string
nRightPos0-based start position to find from right. Use Size-1 to search till the end of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos is SIZE_MAX
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_alg Reference

mdz_ansi_alg_lastOf

Find last occurrence of any item of pcItems in string. 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_alg_lastOf(const char* pcData, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);

ParameterDescription
pcDatapointer to string
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of string
nRightPos0-based start position to find from right. Use Size-1 to search till the end of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos is SIZE_MAX
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_alg Reference

mdz_ansi_alg_lastNotOf

Find last non-occurrence of any item of pcItems in string. 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_alg_lastNotOf(const char* pcData, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, enum mdz_error* penError);

ParameterDescription
pcDatapointer to string
nLeftPos0-based end position to find up to. Use 0 to search till the beginning of string
nRightPos0-based start position to find from right. Use Size-1 to search till the end of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos is SIZE_MAX
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_alg Reference

mdz_ansi_alg_removeFrom

Remove nCount item(s) starting from 0-based nLeftPos position

enum mdz_error mdz_ansi_alg_removeFrom(char* pcData, size_t* pnDataSize, size_t nLeftPos, size_t nCount);

ParameterDescription
pcDatapointer to string. It should end with 0-terminator
pnDataSizepointer to current Size. If removal succeed, new size is returned here
nLeftPos0-based start position to remove item(s) from. Use 0 to remove from the beginning of string
nCountnumber of item(s) to remove. Cannot be 0

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_SIZEpnDataSize is NULL
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_TERMINATORthere is no 0-terminator in the end of pcData ([Size] position)
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_LEFTnLeftPos >= Size
MDZ_ERROR_BIG_COUNTnLeftPos + nCount > Size
MDZ_ERROR_NONEfunction succeeded, new size is written in pnDataSize

mdz_ansi_alg Reference

mdz_ansi_alg_remove

Remove all ocurrences of nCount item(s) matching to pcItems, residing between nLeftPos and nRightPos

enum mdz_error mdz_ansi_alg_remove(char* pcData, size_t* pnDataSize, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, mdz_bool bFromLeft);

ParameterDescription
pcDatapointer to string. It should end with 0-terminator
pnDataSizepointer to current Size. If removal succeed, new size is returned here
nLeftPos0-based start position to remove item(s) from. Use 0 to search from the beginning of string
nRightPos0-based end position to remove item(s) up to. Use Size-1 to search till the end of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_SIZEpnDataSize is NULL
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_TERMINATORthere is no 0-terminator in the end of pcData ([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, new size is written in pnDataSize

mdz_ansi_alg Reference

mdz_ansi_alg_trimLeft

Remove items which are contained in pcItems from left, until first non-contained in pcItems item is reached.

enum mdz_error mdz_ansi_alg_trimLeft(char* pcData, size_t* pnDataSize, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount);

ParameterDescription
pcDatapointer to string. It should end with 0-terminator
pnDataSizepointer to current Size. If removal succeed, new size is returned here
nLeftPos0-based start position to trim item(s) from left. Use 0 to trim from the beginning of string
nRightPos0-based end position to trim item(s) up to. Use Size-1 to trim till the end of string
pcItemsitems to trim. Cannot be NULL
nCountnumber of items to trim. Cannot be 0

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_SIZEpnDataSize is NULL
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_TERMINATORthere is no 0-terminator in the end of pcData ([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, new size is written in pnDataSize

mdz_ansi_alg Reference

mdz_ansi_alg_trimRight

Remove items which are contained in pcItems from right, until first non-contained in pcItems item is reached.

enum mdz_error mdz_ansi_alg_trimRight(char* pcData, size_t* pnDataSize, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount);

ParameterDescription
pcDatapointer to string. It should end with 0-terminator
pnDataSizepointer to current Size. If removal succeed, new size is returned here
nLeftPos0-based end position to trim item(s) up to. Use 0 to trim till the beginning of string
nRightPos0-based start position to trim item(s) from right. Use Size-1 to trim from the end of string
pcItemsitems to trim. Cannot be NULL
nCountnumber of items to trim. Cannot be 0

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_SIZEpnDataSize is NULL
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_TERMINATORthere is no 0-terminator in the end of pcData ([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, new size is written in pnDataSize

mdz_ansi_alg Reference

mdz_ansi_alg_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_alg_trim(char* pcData, size_t* pnDataSize, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount);

ParameterDescription
pcDatapointer to string. It should end with 0-terminator
pnDataSizepointer to current Size. If removal succeed, new size is returned here
nLeftPos0-based start position to trim item(s) from left. Use 0 to trim from the beginning of string
nRightPos0-based start position to trim item(s) from right. Use Size-1 to trim from the end of string
pcItemsitems to trim. Cannot be NULL
nCountnumber of items to trim. Cannot be 0

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_SIZEpnDataSize is NULL
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_TERMINATORthere is no 0-terminator in the end of pcData ([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, new size is written in pnDataSize

mdz_ansi_alg Reference

mdz_ansi_alg_compare

Compare content of string with pcItems. If penError is not NULL, error will be written there

enum mdz_ansi_compare_result mdz_ansi_alg_compare(const char* pcData, size_t nDataSize, size_t nLeftPos, const char* pcItems, size_t nCount, mdz_bool bPartialCompare, enum mdz_error* penError);

ParameterDescription
pcDatapointer to string
nDataSizeSize of pcData
nLeftPos0-based start position to compare from left. Use 0 to compare from the beginning of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_SIZESize is 0 (empty string)
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_LEFTnLeftPos >= Size
MDZ_ERROR_BIG_COUNTnLeftPos + nCount > Size
MDZ_ERROR_NONEfunction succeeded

ReturnDescription
MDZ_COMPARE_EQUAL or MDZ_COMPARE_NONEQUALResult of comparison

mdz_ansi_alg Reference

mdz_ansi_alg_count

Counts number of pcItems substring occurences in string. If penError is not NULL, error will be written there

size_t mdz_ansi_alg_count(const char* pcData, size_t nLeftPos, size_t nRightPos, const char* pcItems, size_t nCount, mdz_bool bAllowOverlapped, mdz_bool bFromLeft, enum mdz_error* penError);

ParameterDescription
pcDatapointer to string
nLeftPos0-based start position to search from left. Use 0 to search from the beginning of string
nRightPos0-based end position to search up to. Use Size-1 to search till the end of string
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_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_ITEMSpcItems is NULL
MDZ_ERROR_ZERO_COUNTnCount is 0
MDZ_ERROR_BIG_RIGHTnRightPos is SIZE_MAX
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_alg Reference

mdz_ansi_alg_replace

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

enum mdz_error mdz_ansi_alg_replace(char* pcData, size_t* pnDataSize, size_t nDataCapacity, 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, size_t* pnNewSize);

ParameterDescription
pcDatapointer to string
pnDataSizepointer to current Size. If replacement succeed, new size is returned here
nDataCapacitymaximal capacity of pcData buffer. nDataCapacity does not include 0-terminator byte, thus pcData buffer should be at least 1 byte bigger than nDataCapacity
nLeftPos0-based start position to search for replace from. Use 0 to search from the beginning of string
nRightPos0-based end position to search for replace up to. Use Size-1 or SIZE_MAX to seach till the end of string
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)
pnNewSizeif nCountAfter > nCountBefore and there is not enough Capacity to make all replacements - minimal-necessary size is returned here, if pnNewSize is not NULL

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_SIZEpnDataSize is NULL
MDZ_ERROR_CAPACITYnDataCapacity is 0 (no space for insertion) or SIZE_MAX (no space for 0-terminator)
MDZ_ERROR_BIG_SIZESize > Capacity
MDZ_ERROR_ZERO_SIZESize is 0 (string is empty)
MDZ_ERROR_TERMINATORthere is no 0-terminator in the end of pcData ([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_OVERLAPpcData overlaps with pcItemsBefore, or pcData overlaps with pcItemsAfter
MDZ_ERROR_BIG_REPLACEnew Size after replacement > Capacity
MDZ_ERROR_OVERLAP_REPLACEpcData after replacement - overlaps with pcItemsBefore, or pcData after replacement - overlaps with pcItemsAfter
MDZ_ERROR_NONEfunction succeeded

mdz_ansi_alg Reference

mdz_ansi_alg_reverse

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

enum mdz_error mdz_ansi_alg_reverse(char* pcData, size_t nLeftPos, size_t nRightPos);

ParameterDescription
pcDatapointer to string
nLeftPos0-based start position to search for replace from. Use 0 to search from the beginning of string
nRightPos0-based end position to search for replace up to. Use Size-1 or SIZE_MAX to seach till the end of string

ReturnDescription
MDZ_ERROR_LICENSElicense is not initialized using mdz_ansi_alg_init() or invalid
MDZ_ERROR_DATApcData is NULL
MDZ_ERROR_BIG_RIGHTnRightPos is SIZE_MAX
MDZ_ERROR_BIG_LEFTnLeftPos >= nRightPos
MDZ_ERROR_NONEfunction succeeded

mdz_ansi_alg 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