Убрал булевский флаг

This commit is contained in:
selim 2014-08-23 23:32:17 +04:00
parent f118ef6f08
commit 8392f06b66
6 changed files with 30 additions and 27 deletions

View File

@ -1,5 +1,5 @@
# assembler
AS = /home/selim/progs/bin/fasm
AS = /home/selim/blob/fasm/fasm
ASFLAGS =
#LINKER = ld
#ASLDFLAGS = -lc -e main -dynamic-linker /lib64/ld-linux-x86-64.so.2

View File

@ -9,27 +9,28 @@
class logger
{
private:
std::atomic<bool> _isLogging;
std::stringstream _logLine;
public:
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)
{
if (*s == '%' && *++s != '%')
{
_logLine << value;
return log(s, args...);
return log_internal(s, args...);
}
_logLine << *s++;
}

View File

@ -3,7 +3,6 @@
#include "utf.h"
#include <iostream>
#include <cstdint>
/**
* Класс строк, работающий с некоторыми кодировками юникода (UTF-8, UTF-16, UTF-32)

View File

@ -4,18 +4,12 @@
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)
{
if (*s == '%' && *++s != '%')
@ -24,7 +18,5 @@ void logger::log(const char *s)
}
std::cout << _logLine.str() << std::endl;
_isLogging.store(false);
}

View File

@ -563,6 +563,13 @@ TEST(Ustring, replace_string)
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
//::testing::InitGoogleTest(&argc, argv);
//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
View File

@ -1,9 +1,13 @@
Задачи на будущее
ustring:
1. Сделать декодирование экранированных UCS-2 (\uXXXX) и UCS-4 (\UXXXXXXXX) символов опциональным (по умолчанию выключено), добавить соответствующий тест.
2. В функции ucs4_to_utf8 добавить опциональное экранирование не-ANSI символов (по умолчанию выключено), добавить тесты.
3. Тестирование на android. Можно сделать в QEMU виртуальную машину с ARM процессором.
4. Сравнение по производительности с std::string, профилирование, оптимизация (возможно переписывание узких мест на ассемблере с использованием SIMD инструкций)
logger
1. Сделать несколько вариантов вывода
2. Сделать возможность отключения логов (что-то типа вывода в /dev/null, оверхед от логов в таком режиме должен быть минимален)