Added string conversion and expected library.
All checks were successful
CI / build-and-test (push) Successful in 1m9s

This commit is contained in:
Johannes Janssen 2025-04-21 00:53:07 +02:00
parent 9bfa99272b
commit 842171ee31
4 changed files with 2107 additions and 2 deletions

2037
src/external/include/tl/expected.hpp vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
faust_core_header = files('application.h', 'core.h', 'string.h', 'vector.h')
faust_core_src = files('application.cpp')
faust_core_header = files('application.h', 'core.h', 'string.h', 'vector.h', 'stringConvert.h')
faust_core_src = files('application.cpp', 'stringConvert.cpp')
core_lib = static_library(
'faust-core',

View File

@ -0,0 +1,46 @@
#include "faust-lib/common/stringConvert.h"
tl::expected<faust::u64, faust::convert::eConversionError> faust::convert::hexToNum(const faust::String &str) {
faust::u64 result = 0;
for (faust::u64 i = 0; i < static_cast<faust::u64>(str.length()); ++i) {
result *= 16;
if (str[i] >= u'0' && str[i] <= u'9') {
result += str[i] - u'0';
} else if (str[i] >= u'A' && str[i] <= u'F') {
result += str[i] - u'A' + 10;
} else if (str[i] >= u'a' && str[i] <= u'f') {
result += str[i] - u'a' + 10;
} else {
return tl::unexpected(eConversionError::INVALID_CHARACTER);
}
}
return result;
}
tl::expected<faust::u64, faust::convert::eConversionError> faust::convert::decToNum(const faust::String &str) {
faust::u64 result = 0;
for (faust::u64 i = 0; i < static_cast<faust::u64>(str.length()); ++i) {
result *= 10;
if (str[i] >= u'0' && str[i] <= u'9') {
result += str[i] - u'0';
} else {
return tl::unexpected(eConversionError::INVALID_CHARACTER);
}
}
return result;
}
tl::expected<faust::u64, faust::convert::eConversionError> faust::convert::binToNum(const faust::String &str) {
faust::u64 result = 0;
for (faust::u64 i = 0; i < static_cast<faust::u64>(str.length()); ++i) {
result *= 2;
if (str[i] == u'0') {
result += 0;
} else if (str[i] == u'1') {
result += 1;
} else {
return tl::unexpected(eConversionError::INVALID_CHARACTER);
}
}
return result;
}

View File

@ -0,0 +1,22 @@
#pragma once
#include "faust-lib/common/core.h"
#include "faust-lib/common/string.h"
#include "external/include/tl/expected.hpp"
namespace faust {
namespace convert {
enum class eConversionError : u32 { INVALID_CHARACTER };
tl::expected<u64, eConversionError> hexToNum(const String &str);
tl::expected<u64, eConversionError> decToNum(const String &str);
tl::expected<u64, eConversionError> binToNum(const String &str);
} // namespace convert
} // namespace faust