• R/O
  • SSH

libcpptools: Zusammenfassung des Repository

This library contains code that extends and simplifies different operations
for C++ language based programs


Neueste Commits RSS

Rev. Zeit Autor Nachricht
44387b9adc0a 2024-04-10 08:01:49 Sergey Gusarov tip Attempt to fix(MS VC++ 2019 static analyser) Warning C632...
0b22ca0428d5 2024-04-09 23:31:12 Sergey Gusarov language.hpp: Common header comment moved to the header c...
38c92ff37c09 2024-04-09 23:20:43 Sergey Gusarov library.hpp: Common header comment moved to the header co...
2f6155903c89 2024-04-08 09:13:01 Sergey Gusarov Fixed MS VC++ 2010 warning C4127: conditional expression ...
3656faf5b356 2024-04-08 07:45:51 Sergey Gusarov Hg403 was not sufficient, increased sleep time again
08572d83bc1c 2024-04-08 07:18:35 Sergey Gusarov Fixed MS VC++ 2010's: warning C4836: использовано нестанд...
a10d063cbca5 2024-04-08 06:49:30 Sergey Gusarov std::throw_with_nested defined in <exception>
87a48682d84d 2024-04-08 05:53:45 Sergey Gusarov CMake < 3.1.0 is buggy with rc.exe from MS VC++ 2010 at l...
d1e95bd0e3c0 2024-04-07 06:12:26 Sergey Gusarov test_language: Fixed for old MS VC++
8f2db3a37243 2024-04-07 05:54:07 Sergey Gusarov Added visual c++ 2022 build script

Kürzlich bearbeitete Tags

Name Rev. Zeit Autor
tip 44387b9adc0a 2024-04-10 08:01:49 Sergey Gusarov

Zweige

Name Rev. Zeit Autor Nachricht
default 44387b9adc0a 2024-04-10 08:01:49 Sergey Gusarov Attempt to fix(MS VC++ 2019...
exception_ptr c2f9fc911bf0 2015-07-20 02:01:01 s.gusarov Saved exception_ptr wrapper...

README_RU.rst

Общие сведения

Библиотека для упрощения и расширения различных операций в программах на языке C++. Для выполнения низкоуровневых операций полагается полностью на libctools.

Макросы и определения экспортируемые библиотекой имеют префикс CPT. Все переменные, константы и функции располагаются в пространстве имён cpptools.

Состав

  • Поддержка улучшенной иерархии исключений, собирающих stacktrace;
  • Классы для упрощения работы с потоками;
  • Различные функции и классы для улучшения работы в C++ с enum'ами.

Планируется:

  • Расширенная поддержка исключений;
  • Аттрибуты классов.

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

libctools находится в интерфейсе этой библиотеки. Тем самым формируется иерархия утилит со сходным назначением, но выполненных на разных языках и в разной парадигме. Тем не менее, активное использование libctools не рекомендуется из-за нарушения парадигмы C++. Ситуация полностью аналогична присутствию заголовочных файлов libc в исходном коде на C++. Они не запрещены, а просто не рекомендуются. И многие программисты их используют от случая к случаю. Предлагается часть таких обращений к libc заменить на обращения к libctools.

Из libctools рекомендуется использовать:

  • Препроцессор и всё что с ним связано (там где возникает в этом потребность). И все изменения связанные с препроцессором вносить в ту библиотеку, тем самым оставляя эту библиотеку максимально свободной от препроцессорных определений;

  • Код связанный с обработкой различных системных ситуаций и обращению к операционной системе. Например:

    • Загрузка/выгрузка динамических библиотек;
    • Получение иерархии вызовов (stack trace);
    • Обработка аварийных ситуаций (posix signals, access violation).

    Современные операционные системы имеют, как правило, С-интерфейс. Поэтому без использования парадигм C на уровне сопряжения с кодом C++ не обойтись. Применение libctools в таких случаях позволяет реализовать повторное использование кода;

  • Механизмы и возможности временно отсутствующие в C++ коде (например, из-за недостатка времени на разработку), как fallback (запасное решение). Например, речь можно вести о развитой системе логирования и трассировки отладочных сообщений.

Как и libctools, эту библиотеку нужно инициализировать и финализировать (здесь обязательно). Для этого используются функции из cpptools.hpp .

Целевые конфигурации

Любые, на которых работают компиляторы C++11 и выше. В настоящее время (конец 2014) нет идеального компилятора, который умеет C++11 на 100%. И такая ситуация, по видимому, сохранится ещё на несколько лет. Плюс иногда нужно работать не с самыми свежими платформами. Поэтому для целей практики решено ввести ограничения на минимально-поддерживаемые версии компиляторов:

  • Microsoft Visual Studio 2010 (примечательна тем, что поддерживает Windows XP) и выше;
  • Gcc 4.7 и выше - TODO;
  • Clang 3.4 и выше - TODO.

Большая часть замечаний из аналогичной секции libctools применима и здесь.

Зависимости

См. аналогичную секцию libctools.

Сборка

Как и для libctools, существует 4 варианта использования библиотеки.

Дополнительно следует отметитить, что для бессборочного метода нужно указать пути для поиска заголовочных файлов include, build_info/include, libctools/include, libctools/build_info/include и линковать все модули из src, libctools/src и подкаталогов src и libctools/src (если таковые нужны).

Если при сборке определён идентификатор CPT_BOOST_SUPPORT, то библиотека будет поддерживать работу с boost. Поддержка boost в настоящее время находится в зачаточном состоянии. Библиотеку boost должен предоставлять внешний проект, который использует libcpptools.

Тестирование

Смотри подкаталог tests.

TODO

Сборка тестов с MS VC++2010

Show on old repository browser