Убрал булевский флаг
This commit is contained in:
parent
f118ef6f08
commit
8392f06b66
2
Makefile
2
Makefile
@ -1,5 +1,5 @@
|
|||||||
# assembler
|
# assembler
|
||||||
AS = /home/selim/progs/bin/fasm
|
AS = /home/selim/blob/fasm/fasm
|
||||||
ASFLAGS =
|
ASFLAGS =
|
||||||
#LINKER = ld
|
#LINKER = ld
|
||||||
#ASLDFLAGS = -lc -e main -dynamic-linker /lib64/ld-linux-x86-64.so.2
|
#ASLDFLAGS = -lc -e main -dynamic-linker /lib64/ld-linux-x86-64.so.2
|
||||||
|
|||||||
@ -9,27 +9,28 @@
|
|||||||
class logger
|
class logger
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
std::atomic<bool> _isLogging;
|
|
||||||
std::stringstream _logLine;
|
std::stringstream _logLine;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
logger();
|
logger();
|
||||||
void log(const char* s);
|
|
||||||
|
|
||||||
template<typename T, typename... Args> void log(const char* s, const T& value, const Args&... args)
|
template<typename... Args> void log(const char* s, const Args&... args)
|
||||||
{
|
{
|
||||||
if(!_isLogging)
|
|
||||||
{
|
|
||||||
_isLogging.store(true);
|
|
||||||
_logLine.str("");
|
_logLine.str("");
|
||||||
|
log_internal(s, args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void log_internal(const char* s);
|
||||||
|
|
||||||
|
template<typename T, typename... Args> void log_internal(const char* s, const T& value, const Args&... args)
|
||||||
|
{
|
||||||
while (*s)
|
while (*s)
|
||||||
{
|
{
|
||||||
if (*s == '%' && *++s != '%')
|
if (*s == '%' && *++s != '%')
|
||||||
{
|
{
|
||||||
_logLine << value;
|
_logLine << value;
|
||||||
return log(s, args...);
|
return log_internal(s, args...);
|
||||||
}
|
}
|
||||||
_logLine << *s++;
|
_logLine << *s++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#include "utf.h"
|
#include "utf.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <cstdint>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс строк, работающий с некоторыми кодировками юникода (UTF-8, UTF-16, UTF-32)
|
* Класс строк, работающий с некоторыми кодировками юникода (UTF-8, UTF-16, UTF-32)
|
||||||
|
|||||||
@ -4,18 +4,12 @@
|
|||||||
|
|
||||||
logger ulog;
|
logger ulog;
|
||||||
|
|
||||||
logger::logger(): _isLogging(ATOMIC_FLAG_INIT)
|
logger::logger()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void logger::log(const char *s)
|
void logger::log_internal(const char *s)
|
||||||
{
|
{
|
||||||
if(!_isLogging)
|
|
||||||
{
|
|
||||||
_isLogging.store(true);
|
|
||||||
_logLine.str("");
|
|
||||||
}
|
|
||||||
|
|
||||||
while (*s)
|
while (*s)
|
||||||
{
|
{
|
||||||
if (*s == '%' && *++s != '%')
|
if (*s == '%' && *++s != '%')
|
||||||
@ -24,7 +18,5 @@ void logger::log(const char *s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::cout << _logLine.str() << std::endl;
|
std::cout << _logLine.str() << std::endl;
|
||||||
|
|
||||||
_isLogging.store(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -563,6 +563,13 @@ TEST(Ustring, replace_string)
|
|||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
::testing::InitGoogleTest(&argc, argv);
|
//::testing::InitGoogleTest(&argc, argv);
|
||||||
return RUN_ALL_TESTS();
|
//return RUN_ALL_TESTS();
|
||||||
|
|
||||||
|
int one = 1;
|
||||||
|
double two = 2.5;
|
||||||
|
ulog.log("one: %, two: %", one, two);
|
||||||
|
ulog.log("Hello world!");
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
10
todo
10
todo
@ -1,9 +1,13 @@
|
|||||||
Задачи на будущее
|
Задачи на будущее
|
||||||
|
|
||||||
|
ustring:
|
||||||
|
|
||||||
1. Сделать декодирование экранированных UCS-2 (\uXXXX) и UCS-4 (\UXXXXXXXX) символов опциональным (по умолчанию выключено), добавить соответствующий тест.
|
1. Сделать декодирование экранированных UCS-2 (\uXXXX) и UCS-4 (\UXXXXXXXX) символов опциональным (по умолчанию выключено), добавить соответствующий тест.
|
||||||
|
|
||||||
2. В функции ucs4_to_utf8 добавить опциональное экранирование не-ANSI символов (по умолчанию выключено), добавить тесты.
|
2. В функции ucs4_to_utf8 добавить опциональное экранирование не-ANSI символов (по умолчанию выключено), добавить тесты.
|
||||||
|
|
||||||
3. Тестирование на android. Можно сделать в QEMU виртуальную машину с ARM процессором.
|
3. Тестирование на android. Можно сделать в QEMU виртуальную машину с ARM процессором.
|
||||||
|
|
||||||
4. Сравнение по производительности с std::string, профилирование, оптимизация (возможно переписывание узких мест на ассемблере с использованием SIMD инструкций)
|
4. Сравнение по производительности с std::string, профилирование, оптимизация (возможно переписывание узких мест на ассемблере с использованием SIMD инструкций)
|
||||||
|
|
||||||
|
logger
|
||||||
|
|
||||||
|
1. Сделать несколько вариантов вывода
|
||||||
|
2. Сделать возможность отключения логов (что-то типа вывода в /dev/null, оверхед от логов в таком режиме должен быть минимален)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user