Разбор кода Nebula Device2. Часть1. Класс строки (статья 1)
Автор: graveman
Начинаю цикл небольших статеек, в которых буду описывать анализ кода небулы. Не гарантирую регулярность с написанием статей и своевременность ответов на комменты.
Я решил выкладывать ход разбора движка здесь, чтобы он не висел мертвым грузом на моем жестком диске и чтобы можно было найти и прочитать эти материалы позже.
Движок Nebula Device2 (ND2) можно скачать с сайта. Но я рекомендую качнуть снапшот кода главной ветки отсюда, так как там исправлены некоторые баги.
В небуле используются свои контейнеры, а не stl. Они располагаются в папке util директории с исходным кодом. Контейнеры в движке составляют значительную часть кода и для того, чтобы понять работу остальных подсистем, нужно с ними освоиться. Я начну разбор со строк.
Строки в движке представлены классом nstring. Перед тем как разбираться с кодом класса надо понять работу некоторых строковых функций стандартной библиотеки C. Я писал код и компилировал его, используя среду Code::blocks 10.05.
Информацию по этим функциям можно найти в книге по Си Кернигана и Ритчи, на этом и этом сайтах.
Функция strpbrk
Прототип:
char* strpbrk (const char* s1, const char* s2);
Описание: возвращает указатель на первый символ в строке s1, который совпал с любым из символов, входящих в строку s2, или 0, если совпадений не было найдено. Завершающие нулевые символы не учитываются при поиске.
Пример демо: