This library contains code that extends and simplifies different operations
for C++ language based programs
| Name | Size | Rev. | Time | Author | Log Message |
|---|---|---|---|---|---|
| 90 | e19dc07fe76a | 2015-04-10 02:40:33 | s.gusarov | Added .hgeol file | |
| 344 | 3acb2de6cde5 | 2023-02-26 05:38:50 | Sergey Gusarov <laborer2008@gmail.com> | Copy file_property.rc.template before... | |
| 201 | bc940b7c65c7 | 2020-01-10 00:16:06 | Sergey Gusarov | Fixed ctools URL | |
| 157 | f3744fa7f254 | 2024-03-03 11:46:37 | Sergey Gusarov <laborer2008@gmail.com> | Documented and checked all cmake buil... | |
| 0 | 3953608804eb | 2014-10-26 02:26:32 | s.gusarov | Added project tree | |
| 4.57 k | f3744fa7f254 | 2024-03-03 11:46:37 | Sergey Gusarov <laborer2008@gmail.com> | Documented and checked all cmake buil... | |
| 16.33 k | 8f1fd35449d9 | 2014-12-08 03:04:24 | laborer2008 | Added license to scripts | |
| 620 | 35cbc97bbe9e | 2020-01-10 00:11:56 | Sergey Gusarov | New repo hosting on OSDN | |
| 6.62 k | 35cbc97bbe9e | 2020-01-10 00:11:56 | Sergey Gusarov | New repo hosting on OSDN | |
| 34f215437462 | 2014-11-03 09:55:07 | s.gusarov | Now library (with libctools) can be b... | ||
| c2fd1130d9aa | 2023-02-26 05:41:44 | Sergey Gusarov <laborer2008@gmail.com> | Removed redundant namespace for template | ||
| 377 | 20db04aa9ba3 | 2022-08-30 17:19:03 | Sergey Gusarov <laborer2008@gmail.com> | Added android ndk build script | |
| 362 | e9b440edc404 | 2018-10-10 12:58:24 | Sergey Gusarov | Some PEP-8 fixes | |
| 360 | e9b440edc404 | 2018-10-10 12:58:24 | Sergey Gusarov | Some PEP-8 fixes | |
| 360 | e9b440edc404 | 2018-10-10 12:58:24 | Sergey Gusarov | Some PEP-8 fixes | |
| 357 | e9b440edc404 | 2018-10-10 12:58:24 | Sergey Gusarov | Some PEP-8 fixes | |
| 357 | e9b440edc404 | 2018-10-10 12:58:24 | Sergey Gusarov | Some PEP-8 fixes | |
| 357 | e9b440edc404 | 2018-10-10 12:58:24 | Sergey Gusarov | Some PEP-8 fixes | |
| 357 | e9b440edc404 | 2018-10-10 12:58:24 | Sergey Gusarov | Some PEP-8 fixes | |
| 3f8a61dc76f5 | 2022-08-27 03:38:21 | Sergey Gusarov <laborer2008@gmail.com> | Added C++20 draft standard | ||
| a1485867803a | 2022-08-30 18:07:47 | Sergey Gusarov <laborer2008@gmail.com> | Code style fixes | ||
| 460 | 593599e8fce1 | 2022-08-26 22:27:47 | Sergey Gusarov <laborer2008@gmail.com> | Subrepo update Googletest updated to ... | |
| c56dfd3d9daa | 2023-02-26 05:17:38 | Sergey Gusarov <laborer2008@gmail.com> | Use ctools template for file_property.rc | ||
| c830cab7bbab | 2017-12-11 04:12:20 | Sergey Gusarov | Added empty timer.cpp This fixes link... | ||
| 7c9201994e2f | 2024-02-13 05:16:22 | Sergey Gusarov <laborer2008@gmail.com> | Bumped tests/cmake_minimum_required d... |
Библиотека для упрощения и расширения различных операций в программах на языке C++. Для выполнения низкоуровневых операций полагается полностью на libctools.
Макросы и определения экспортируемые библиотекой имеют префикс CPT. Все переменные, константы и функции располагаются в пространстве имён cpptools.
Планируется:
libctools находится в интерфейсе этой библиотеки. Тем самым формируется иерархия утилит со сходным назначением, но выполненных на разных языках и в разной парадигме. Тем не менее, активное использование libctools не рекомендуется из-за нарушения парадигмы C++. Ситуация полностью аналогична присутствию заголовочных файлов libc в исходном коде на C++. Они не запрещены, а просто не рекомендуются. И многие программисты их используют от случая к случаю. Предлагается часть таких обращений к libc заменить на обращения к libctools.
Из libctools рекомендуется использовать:
Препроцессор и всё что с ним связано (там где возникает в этом потребность). И все изменения связанные с препроцессором вносить в ту библиотеку, тем самым оставляя эту библиотеку максимально свободной от препроцессорных определений;
Код связанный с обработкой различных системных ситуаций и обращению к операционной системе. Например:
Современные операционные системы имеют, как правило, С-интерфейс. Поэтому без использования парадигм C на уровне сопряжения с кодом C++ не обойтись. Применение libctools в таких случаях позволяет реализовать повторное использование кода;
Механизмы и возможности временно отсутствующие в C++ коде (например, из-за недостатка времени на разработку), как fallback (запасное решение). Например, речь можно вести о развитой системе логирования и трассировки отладочных сообщений.
Как и libctools, эту библиотеку нужно инициализировать и финализировать (здесь обязательно). Для этого используются функции из cpptools.hpp .
Любые, на которых работают компиляторы C++11 и выше. В настоящее время (конец 2014) нет идеального компилятора, который умеет C++11 на 100%. И такая ситуация, по видимому, сохранится ещё на несколько лет. Плюс иногда нужно работать не с самыми свежими платформами. Поэтому для целей практики решено ввести ограничения на минимально-поддерживаемые версии компиляторов:
Большая часть замечаний из аналогичной секции 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.
Сборка тестов с MS VC++2010