/*
 * Copyright (c) 2026, Chloe M.
 * Provided under the BSD-3 clause.
 *
 * Description: String helpers
 * Author:      Chloe M.
 */

#ifndef _SPKG_STRING_H_
#define _SPKG_STRING_H_ 1

#include <stdef.h>

/*
 * Compare the differences between two strings
 *
 * @Buffer1: First buffer to compare
 * @Buffer2: Second buffer to compare
 * @Length:  Number of bytes to compare
 *
 * Returns the differences
 */
LONG RtlMemCmp(const VOID *Buffer1, const VOID *Buffer2, USIZE Length);

/*
 * Obtain the length in bytes of a '\0' terminated string
 *
 * @String: String to obtain length from
 *
 * Returns zero on failure
 */
USIZE RtlStrLen(const CHAR *String);

/*
 * Fill n bytes of a buffer with a value
 *
 * @Buffer:     Pointer to buffer to fill
 * @SetValue:   Value to fill with
 * @Length:     Number of bytes to fill
 *
 * Returns @Buffer on success, otherwise NULL on failure
 */
VOID *RtlMemSet(VOID *Buffer, LONG SetValue, USIZE Length);

/*
 * Copy n bytes of one buffer to another
 *
 * @Dest: Destination buffer
 * @Soruce: Source buffer
 * @Length: Length of buffers
 *
 * Returns @Dest on suucess, otherwise NULL on failure
 */
VOID *RtlMemCpy(VOID *Dest, const VOID *Source, USIZE Length);

#endif  /* !_SPKG_STRING_H_ */
