Переход в новую организацию

This commit is contained in:
cfif 2025-03-11 12:05:56 +03:00
commit b883eb8631
3 changed files with 141 additions and 0 deletions

View File

@ -0,0 +1,30 @@
//
// Created by xemon on 06.09.22.
//
#ifndef ASCIISTRINGASSMEBLINGUTILS_ASCIISTRINGASSMEBLINGUTILS_H
#define ASCIISTRINGASSMEBLINGUTILS_ASCIISTRINGASSMEBLINGUTILS_H
#include "stdint.h"
#include "stddef.h"
void vAsciiStringAdd(char *string, size_t *stringLen, char *addString, size_t addStringLen);
void vAsciiStringAddChar(char *string, size_t *stringLen, uint8_t singleChar);
#define vAsciiStringAddStatic(string, stringLen, staticString)\
vAsciiStringAdd(string, stringLen, staticString, sizeof(staticString)-1)
void vAsciiStringClean(char *string, size_t *stringLen);
void vAsciiStringInit(char *string, size_t *stringLen, size_t fullLen);
void vAsciiStringAddDecimalInt(char *string, size_t *stringLen, uint8_t number, uint8_t digits);
void vAsciiStringAddDecimalIntWithLimit(char *string, size_t *stringLen, int64_t number, uint8_t digitsLimit);
void vAsciiStringAddByteAsHex(char *str, size_t *stringLen, uint8_t number);
void vAsciiStringAddBytesAsHex(char *str, size_t *stringLen, uint8_t *bytesData, size_t bytesCount);
#endif //ASCIISTRINGASSMEBLINGUTILS_ASCIISTRINGASSMEBLINGUTILS_H

View File

@ -0,0 +1,99 @@
//
// Created by xemon on 06.09.22.
//
#include <memory.h>
#include "AsciiStringAssmeblingUtils.h"
static const char ASCII_STRING_HEX_CHAR[] = "0123456789ABCDEF";
static uint8_t vAsciiStringDecimalIntToChar(uint8_t number_0_9) {
number_0_9 = number_0_9 % 10; //cutoff digits more 1 (numbers between 0 and 9)
return ('0' + number_0_9); //return char of number('0' is base number in ascii)
}
void vAsciiStringAdd(char *string, size_t *stringLen, char *addString, size_t addStringLen) {
memcpy(string + (*stringLen), addString, addStringLen);
*stringLen += addStringLen;
}
void vAsciiStringAddChar(char *string, size_t *stringLen, uint8_t singleChar) {
string[*stringLen] = singleChar;
++(*stringLen);
}
void vAsciiStringInit(char *string, size_t *stringLen, size_t fullLen) {
memset(string, 0, fullLen);
*stringLen = 0;
}
void vAsciiStringClean(char *string, size_t *stringLen) {
if (*stringLen == 0)return;
memset(string, 0, *stringLen);
*stringLen = 0;
}
void vAsciiStringAddDecimalInt(char *string, size_t *stringLen, uint8_t number, uint8_t digits) {
for (uint8_t reverse_digit = 1; reverse_digit <= digits; ++reverse_digit) {
string[*stringLen + digits - reverse_digit] = vAsciiStringDecimalIntToChar(number);
number /= 10;
}
*stringLen += digits;
}
void vAsciiStringSpitChars(char *one, char *two) {
char tmp;
tmp = *one;
*one = *two;
*two = tmp;
}
void vAsciiStringAddDecimalIntWithLimit(char *string, size_t *stringLen, int64_t number, uint8_t digitsLimit) {
if (number < 0) {
*(string + (*stringLen)) = '-';
++(*stringLen);
number = -number;
}
uint32_t cutoffNumber = 1;
for (uint8_t scale = 0; scale < digitsLimit; ++scale) {
cutoffNumber *= 10;
}
number = number % cutoffNumber;
if (number == 0) {
string[*stringLen] = '0';
(*stringLen) += 1;
}
uint8_t digits = 0;
for (; (digits < digitsLimit) && (number != 0); ++digits) {
string[(*stringLen) + digits] = vAsciiStringDecimalIntToChar(number % 10);
number /= 10;
}
uint8_t reverses = digits / 2;
for (uint8_t reverse_digit = 0; reverse_digit < reverses; ++reverse_digit) {
vAsciiStringSpitChars(string + *stringLen + reverse_digit, string + *stringLen + digits - 1 - reverse_digit);
}
*stringLen += digits;
}
void vAsciiStringAddByteAsHex(char *str, size_t *stringLen, uint8_t number) {
str[*stringLen + 0] = ASCII_STRING_HEX_CHAR[(number >> 4) & 0xF];
str[*stringLen + 1] = ASCII_STRING_HEX_CHAR[(number & 0xF)];
*stringLen += 2;
}
void vAsciiStringAddBytesAsHex(char *str, size_t *stringLen, uint8_t *bytesData, size_t bytesCount) {
uint8_t *end = bytesData + bytesCount;
while (end > bytesData) {
vAsciiStringAddByteAsHex(str, stringLen, *bytesData);
++bytesData;
}
}

12
modular.json Executable file
View File

@ -0,0 +1,12 @@
{
"dep": [
],
"cmake": {
"inc_dirs": [
"Inc"
],
"srcs": [
"Src/**.c"
]
}
}