[ox/std] Remove ::size_t

This commit is contained in:
2018-04-12 19:35:16 -05:00
parent ad62d4c012
commit b8c54eba0c
22 changed files with 213 additions and 179 deletions

View File

@@ -6,6 +6,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <iostream>
#include <ox/__buildinfo/defines.hpp>
namespace ox {

View File

@@ -9,11 +9,11 @@
#include "types.hpp"
int ox_memcmp(const void *ptr1, const void *ptr2, size_t size) {
int ox_memcmp(const void *ptr1, const void *ptr2, std::size_t size) noexcept {
int retval = 0;
auto block1 = reinterpret_cast<const uint8_t*>(ptr1);
auto block2 = reinterpret_cast<const uint8_t*>(ptr2);
for (size_t i = 0; i < size; i++) {
for (std::size_t i = 0; i < size; i++) {
if (block1[i] < block2[i]) {
retval = -1;
break;
@@ -25,7 +25,7 @@ int ox_memcmp(const void *ptr1, const void *ptr2, size_t size) {
return retval;
}
void *ox_memcpy(void *dest, const void *src, int64_t size) {
void *ox_memcpy(void *dest, const void *src, int64_t size) noexcept {
char *srcBuf = (char*) src;
char *dstBuf = (char*) dest;
for (int64_t i = 0; i < size; i++) {
@@ -34,7 +34,7 @@ void *ox_memcpy(void *dest, const void *src, int64_t size) {
return dest;
}
void *ox_memset(void *ptr, int val, int64_t size) {
void *ox_memset(void *ptr, int val, int64_t size) noexcept {
char *buf = (char*) ptr;
for (int64_t i = 0; i < size; i++) {
buf[i] = val;

View File

@@ -9,8 +9,8 @@
#include "types.hpp"
int ox_memcmp(const void *ptr1, const void *ptr2, size_t size);
int ox_memcmp(const void *ptr1, const void *ptr2, std::size_t size) noexcept;
void *ox_memcpy(void *dest, const void *src, int64_t size);
void *ox_memcpy(void *dest, const void *src, int64_t size) noexcept;
void *ox_memset(void *ptr, int val, int64_t size);
void *ox_memset(void *ptr, int val, int64_t size) noexcept;

View File

@@ -15,70 +15,70 @@
namespace ox {
// Bounded String
template<size_t buffLen>
template<std::size_t buffLen>
class BString {
private:
uint8_t m_buff[buffLen];
public:
BString();
BString() noexcept;
BString(const char *str);
BString(const char *str) noexcept;
const BString &operator=(const char *str);
const BString &operator=(const char *str) noexcept;
const BString &operator=(char *str);
const BString &operator=(char *str) noexcept;
const BString &operator=(int64_t i);
const BString &operator=(int64_t i) noexcept;
const BString &operator+=(const char *str);
const BString &operator+=(const char *str) noexcept;
const BString &operator+=(char *str);
const BString &operator+=(char *str) noexcept;
const BString &operator+=(int64_t i);
const BString &operator+=(int64_t i) noexcept;
bool operator==(const BString &other);
bool operator==(const BString &other) noexcept;
char *data();
char *data() noexcept;
const char *c_str() noexcept;
/**
* Returns the number of characters in this string.
*/
size_t len();
std::size_t len() noexcept;
/**
* Returns the number of bytes used for this string.
*/
size_t size();
std::size_t size() noexcept;
/**
* Returns the capacity of bytes for this string.
*/
size_t cap();
std::size_t cap() noexcept;
};
template<size_t size>
BString<size>::BString() {
template<std::size_t size>
BString<size>::BString() noexcept {
m_buff[0] = 0;
}
template<size_t size>
BString<size>::BString(const char *str) {
template<std::size_t size>
BString<size>::BString(const char *str) noexcept {
*this = str;
}
template<size_t size>
const BString<size> &BString<size>::operator=(int64_t i) {
template<std::size_t size>
const BString<size> &BString<size>::operator=(int64_t i) noexcept {
char str[65];
ox_itoa(i, str);
return this->operator=(str);
}
template<size_t size>
const BString<size> &BString<size>::operator=(const char *str) {
size_t strLen = ox_strlen(str) + 1;
template<std::size_t size>
const BString<size> &BString<size>::operator=(const char *str) noexcept {
std::size_t strLen = ox_strlen(str) + 1;
if (cap() < strLen) {
strLen = cap();
}
@@ -88,14 +88,14 @@ const BString<size> &BString<size>::operator=(const char *str) {
return *this;
}
template<size_t size>
const BString<size> &BString<size>::operator=(char *str) {
template<std::size_t size>
const BString<size> &BString<size>::operator=(char *str) noexcept {
return *this = (const char*) str;
}
template<size_t size>
const BString<size> &BString<size>::operator+=(const char *str) {
size_t strLen = ox_strlen(str) + 1;
template<std::size_t size>
const BString<size> &BString<size>::operator+=(const char *str) noexcept {
std::size_t strLen = ox_strlen(str) + 1;
auto currentLen = len();
if (cap() < currentLen + strLen) {
strLen = cap() - currentLen;
@@ -106,22 +106,22 @@ const BString<size> &BString<size>::operator+=(const char *str) {
return *this;
}
template<size_t size>
const BString<size> &BString<size>::operator+=(char *str) {
template<std::size_t size>
const BString<size> &BString<size>::operator+=(char *str) noexcept {
return *this += (const char*) str;
}
template<size_t size>
const BString<size> &BString<size>::operator+=(int64_t i) {
template<std::size_t size>
const BString<size> &BString<size>::operator+=(int64_t i) noexcept {
char str[65];
ox_itoa(i, str);
return this->operator+=(str);
}
template<size_t buffLen>
bool BString<buffLen>::operator==(const BString<buffLen> &other) {
template<std::size_t buffLen>
bool BString<buffLen>::operator==(const BString<buffLen> &other) noexcept {
bool retval = true;
size_t i = 0;
std::size_t i = 0;
while (i < buffLen && (m_buff[i] || other.m_buff[i])) {
if (m_buff[i] != other.m_buff[i]) {
retval = false;
@@ -132,21 +132,21 @@ bool BString<buffLen>::operator==(const BString<buffLen> &other) {
return retval;
}
template<size_t buffLen>
char *BString<buffLen>::data() {
template<std::size_t buffLen>
char *BString<buffLen>::data() noexcept {
return (char*) m_buff;
}
template<size_t buffLen>
template<std::size_t buffLen>
const char *BString<buffLen>::c_str() noexcept {
return (const char*) m_buff;
}
template<size_t buffLen>
size_t BString<buffLen>::len() {
size_t length = 0;
for (size_t i = 0; i < buffLen; i++) {
template<std::size_t buffLen>
std::size_t BString<buffLen>::len() noexcept {
std::size_t length = 0;
for (std::size_t i = 0; i < buffLen; i++) {
uint8_t b = m_buff[i];
if (b) {
if ((b & 128) == 0) { // normal ASCII character
@@ -161,15 +161,15 @@ size_t BString<buffLen>::len() {
return length;
}
template<size_t buffLen>
size_t BString<buffLen>::size() {
size_t i;
template<std::size_t buffLen>
std::size_t BString<buffLen>::size() noexcept {
std::size_t i;
for (i = 0; i < buffLen && m_buff[i]; i++);
return i + 1; // add one for null terminator
}
template<size_t buffLen>
size_t BString<buffLen>::cap() {
template<std::size_t buffLen>
std::size_t BString<buffLen>::cap() noexcept {
return buffLen;
}

View File

@@ -12,19 +12,19 @@
#include "types.hpp"
#include "typetraits.hpp"
constexpr int ox_strlen(const char *str1) {
constexpr int ox_strlen(const char *str1) noexcept {
int len = 0;
for (; str1[len]; len++);
return len;
}
constexpr int ox_strlen(char *str1) {
constexpr int ox_strlen(char *str1) noexcept {
int len = 0;
for (; str1[len]; len++);
return len;
}
constexpr int ox_strcmp(const char *str1, const char *str2) {
constexpr int ox_strcmp(const char *str1, const char *str2) noexcept {
auto retval = 0;
auto i = 0;
while (str1[i] || str2[i]) {
@@ -40,8 +40,8 @@ constexpr int ox_strcmp(const char *str1, const char *str2) {
return retval;
}
constexpr const char *ox_strchr(const char *str, int character, size_t maxLen = 0xFFFFFFFF) {
for (size_t i = 0; i <= maxLen; i++) {
constexpr const char *ox_strchr(const char *str, int character, std::size_t maxLen = 0xFFFFFFFF) noexcept {
for (std::size_t i = 0; i <= maxLen; i++) {
if (str[i] == character) {
return &str[i];
} else if (str[i] == 0) {
@@ -51,8 +51,8 @@ constexpr const char *ox_strchr(const char *str, int character, size_t maxLen =
return nullptr;
}
constexpr char *ox_strchr(char *str, int character, size_t maxLen = 0xFFFFFFFF) {
for (size_t i = 0; i < maxLen; i++) {
constexpr char *ox_strchr(char *str, int character, std::size_t maxLen = 0xFFFFFFFF) noexcept {
for (std::size_t i = 0; i < maxLen; i++) {
if (str[i] == character) {
return &str[i];
} else if (str[i] == 0) {
@@ -62,7 +62,7 @@ constexpr char *ox_strchr(char *str, int character, size_t maxLen = 0xFFFFFFFF)
return nullptr;
}
constexpr int ox_lastIndexOf(const char *str, int character, int maxLen = 0xFFFFFFFF) {
constexpr int ox_lastIndexOf(const char *str, int character, int maxLen = 0xFFFFFFFF) noexcept {
int retval = -1;
for (int i = 0; i < maxLen && str[i]; i++) {
if (str[i] == character) {
@@ -72,7 +72,7 @@ constexpr int ox_lastIndexOf(const char *str, int character, int maxLen = 0xFFFF
return retval;
}
constexpr int ox_lastIndexOf(char *str, int character, int maxLen = 0xFFFFFFFF) {
constexpr int ox_lastIndexOf(char *str, int character, int maxLen = 0xFFFFFFFF) noexcept {
int retval = -1;
for (int i = 0; i < maxLen && str[i]; i++) {
if (str[i] == character) {
@@ -82,7 +82,7 @@ constexpr int ox_lastIndexOf(char *str, int character, int maxLen = 0xFFFFFFFF)
return retval;
}
constexpr int ox_atoi(const char *str) {
constexpr int ox_atoi(const char *str) noexcept {
int total = 0;
int multiplier = 1;
@@ -94,7 +94,7 @@ constexpr int ox_atoi(const char *str) {
return total;
}
constexpr char *ox_itoa(int64_t v, char *str) {
constexpr char *ox_itoa(int64_t v, char *str) noexcept {
if (v) {
auto mod = 1000000000000000000;
constexpr auto base = 10;

View File

@@ -75,8 +75,6 @@ using size_t = decltype(alignof(int));
}
using std::size_t;
static_assert(sizeof(int8_t) == 1, "int8_t is wrong size");
static_assert(sizeof(int16_t) == 2, "int16_t is wrong size");
static_assert(sizeof(int32_t) == 4, "int32_t is wrong size");

View File

@@ -16,13 +16,13 @@ template<typename T>
class Vector {
private:
size_t m_size = 0;
std::size_t m_size = 0;
T *m_items = nullptr;
public:
Vector() = default;
explicit Vector(size_t size);
explicit Vector(std::size_t size);
Vector(Vector &other);
@@ -34,18 +34,18 @@ class Vector {
Vector &operator=(Vector &&other);
T &operator[](size_t i);
T &operator[](std::size_t i);
const T &operator[](size_t i) const;
const T &operator[](std::size_t i) const;
size_t size() const;
std::size_t size() const;
void resize(size_t size);
void resize(std::size_t size);
};
template<typename T>
Vector<T>::Vector(size_t size) {
Vector<T>::Vector(std::size_t size) {
m_size = size;
m_items = new T[m_size];
}
@@ -54,7 +54,7 @@ template<typename T>
Vector<T>::Vector(Vector<T> &other) {
m_size = other.m_size;
m_items = new T[m_size];
for (size_t i = 0; i < m_size; i++) {
for (std::size_t i = 0; i < m_size; i++) {
m_items[i] = other.m_items[i];
}
}
@@ -80,7 +80,7 @@ Vector<T> &Vector<T>::operator=(Vector<T> &other) {
~Vector<T>();
m_size = other.m_size;
m_items = new T[m_size];
for (size_t i = 0; i < m_size; i++) {
for (std::size_t i = 0; i < m_size; i++) {
m_items[i] = other.m_items[i];
}
return *this;
@@ -97,26 +97,26 @@ Vector<T> &Vector<T>::operator=(Vector<T> &&other) {
}
template<typename T>
T &Vector<T>::operator[](size_t i) {
T &Vector<T>::operator[](std::size_t i) {
return *(m_items[i]);
}
template<typename T>
const T &Vector<T>::operator[](size_t i) const {
const T &Vector<T>::operator[](std::size_t i) const {
return *(m_items[i]);
}
template<typename T>
size_t Vector<T>::size() const {
std::size_t Vector<T>::size() const {
return m_size;
};
template<typename T>
void Vector<T>::resize(size_t size) {
void Vector<T>::resize(std::size_t size) {
auto oldItems = m_items;
m_items = new T[size];
const auto itRange = size > m_size ? m_size : size;
for (size_t i = 0; i < itRange; i++) {
for (std::size_t i = 0; i < itRange; i++) {
m_items[i] = oldItems[i];
}
m_size = size;