Skip to content

vlad441/ncpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

version C++ C++ ru en docs-ru docs-en Github link License Windows Linux

ncpp (Node C++) — минималистичная системная библиотека, которая стремится предоставить простой и эффективный кроссплатформенный мультитул, вдохновленный документацией Node.js.

ncpp предлагает реализации из различных областей для стандартов C++98 и выше, такие как обработка буферов, файлов, сети, шифрования и многое другое, минимизируя внешние зависимости и сохраняя минимальный размер.

Возможности

Сборка

Использование

Документация

Возможности

  • Основа:
    • Стандартные контейнеры: Array, String, Buffer, HashMap.
    • Стандартные преобразования: числа <-> строки, etc.
  • Система:
    • Стандартный ввод/вывод (readline/print)
    • Работа с файловой системой.
    • Сбор информации о системе.
    • Работа с процессами и потоками.
    • Console: управление консолью.
    • Сеть: Сокеты (TCP/UDP/Unix), HTTP клиент, TCP/HTTP сервер, ВебСокеты.
    • Работа с датами и системным временем.
  • Структуры и алгоритмы:
    • Поддержка CBOR/JSON/BSON.
    • BigInt: Целые числа произвольного размера.
  • Криптография:
    • Хеширование (MD5, SHA1/2/3).
    • Симетричное шифрование (AES).
  • Графика:
    • Инициализация окон WinApi/X11.
    • Инициализация контекста OpenGL.
    • Обработка событий.

Сборка

  • Поддержка компиляторов:
    • GCC/MinGW >= 3.4.2 (рекомм. >= 4.9.2)
    • Clang >= 3.5.2
    • MSVC (поддержка не планируется)
  • Поддержка стандарта: >= C++98
  • Поддержка ОС:
    • Windows XP/7/10+
    • Linux >= 2.6.18 (рекомм. >= 3.10.0)
      • X11
      • Wayland
    • FreeBSD (не планируется в ближайшем будущем)
    • Android (не планируется в ближайшем будущем)
    • MacOS, iOS (поддержка не планируется)

Зависимости

Проект стремится к минимизации внешних зависимостей, однако для отдельных компонентов могут требоваться дополнительные пакеты:

  • Windows: - (Все необходимые компоненты уже вшиты в стандартную комплектацию системы)
  • Linux: Необходим glibc/musl (Обычно включены в минимальный состав любого дистрибутива) Для работы компонентов GUI, GL, Experimental могут требоваться следующие пакеты:
#GUI -> X11 packages: 
apt install libx11-dev libxtst-dev -y --no-install-recommends
#GL -> OpenGL packages: 
apt install libgl1-mesa-dev -y --no-install-recommends
#Experimental -> Audio:
#apt install libasound2-dev -y --no-install-recommends
#Experimental -> Images: Необходимо включение реализации stb_image (Не включен в код проекта)

Прямое включение исходного кода

Это основной (и пока единственный) способ, особенно если вы хотите самостоятельно выбрать уровень оптимизации при компиляции каждого вашего проекта под конкретную платформу.

Для упрощения и ускорения сборки используется Unity Build стиль, где собирается единая единица трансляции (мастер-файл) из .cpp файлов в необходимой последовательности, что может помочь с оптимизациями, однако может потреблять больше памяти в сравнении классической модульной сборкой.

Вы можете использовать скрипт make.sh/make.bat в scripts для этих целей. (Необходимо запускать находясь в директории scripts). По умолчанию скрипт соберет пример example.cpp в корне проекта.

Также, можете просто подключить мастер-файл #include "src/ncpp.cpp" в ваш код. Это подключит в ваш файл полную реализацию библиотеки. (Однако, в этом случае может понадобиться вручную выставлять флаги компилятора и линковать системные библиотеки).

Windows

git clone --single-branch --branch main --depth 1 https://github.com/vlad441/ncpp.git
::Или: вы можете скачать архив: https://github.com/vlad441/ncpp/archive/refs/heads/main.zip
::Т.к Git автоматически приводит формат окончания строк к LF, при скачивании архива для make.bat может понадобиться сменить формат окончания строк на CRLF

cd ncpp/scripts
make.bat

Linux

git clone --single-branch --branch main --depth 1 https://github.com/vlad441/ncpp.git
#Или: вы можете скачать архив: wget https://github.com/vlad441/ncpp/archive/refs/heads/main.zip

cd ncpp/scripts
chmod 755 make.sh
bash make.sh

Использование

Примеры

Вы можете посмотреть простой example.cpp в корне проекта.

Также вы можете посмотреть пару примеров в разделе документации.

Документация

Более подробно ознакомиться с документацией вы можете здесь.