This library contains code that extends and simplifies different operations
for C++ language based programs
Revisión | 3953608804eb1597938fe143f02dedb8ea555ee8 (tree) |
---|---|
Tiempo | 2014-10-26 02:26:32 |
Autor | s.gusarov |
Commiter | s.gusarov |
Added project tree
@@ -0,0 +1,3 @@ | ||
1 | +pymisc = [hg]http://rhodecode.stc-brn.ru/s.gusarov/pymisc | |
2 | +cmake/libcmake_tools = [hg]http://rhodecode.stc-brn.ru/s.gusarov/libcmake_tools | |
3 | +libctools = [hg]http://rhodecode.stc-brn.ru/s.gusarov/libctools |
@@ -0,0 +1,3 @@ | ||
1 | +0000000000000000000000000000000000000000 cmake/libcmake_tools | |
2 | +fcbf6ccd15d5608805d40175783eee214d7f6cc6 libctools | |
3 | +4f2347c2530c317b08be918ecf3119f7c63ee514 pymisc |
@@ -0,0 +1,19 @@ | ||
1 | +#!/usr/bin/env python3 | |
2 | + | |
3 | +# This script quickly creates a backup archive with proper name | |
4 | + | |
5 | +import os | |
6 | +import subprocess | |
7 | +import sys | |
8 | + | |
9 | +sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'pymisc')) | |
10 | +import common_pack | |
11 | +import fs | |
12 | + | |
13 | +__author__ = 'Sergey Gusarov' | |
14 | + | |
15 | +def main(): | |
16 | + subprocess.check_call(os.path.join(fs.getScriptDir(), 'scripts', 'cleanall.py'), shell = True) | |
17 | + common_pack.pack() | |
18 | + | |
19 | +main() |
@@ -0,0 +1,69 @@ | ||
1 | +============================================================================== | |
2 | +Репозиторий `libcpptools <http://rhodecode.stc-brn.ru/s.gusarov/libcpptools>`_ | |
3 | +============================================================================== | |
4 | + | |
5 | +Общие сведения | |
6 | +-------------- | |
7 | + | |
8 | +Библиотека для упрощения и расширения различных операций в программах на языке C++. | |
9 | +Для выполнения низкоуровневых операций полагается полностью на libctools_. | |
10 | + | |
11 | +Состав | |
12 | +------ | |
13 | + | |
14 | +* Расширенная поддержка исключений; | |
15 | +* Аттрибуты классов. | |
16 | + | |
17 | +Использование | |
18 | +------------- | |
19 | + | |
20 | +libctools_ находится в интерфейсе этой библиотеки. Тем самым формируется иерархия | |
21 | +утилит со сходным назначением, но выполненных на разных языках и в разной парадигме. | |
22 | +Тем не менее, активное использование libctools_ не рекомендуется из-за нарушения парадигмы C++. | |
23 | +Ситуация полностью аналогична присутствию заголовочных файлов libc в исходном коде на C++. | |
24 | +Они не запрещены, а просто не рекомендуются. И многие программисты их используют от случая | |
25 | +к случаю. Предлагается часть таких обращений к libc заменить на обращения к libctools. | |
26 | + | |
27 | +Из libctools_ рекомендуется использовать: | |
28 | + | |
29 | +* Препроцессор и всё что с ним связано (там где возникает в этом потребность). | |
30 | + И все изменения связанные с препроцессором вносить в ту библиотеку, тем самым оставляя эту | |
31 | + библиотеку максимально свободной от препроцессорных определений; | |
32 | +* Код связанный с обработкой различных системных ситуаций и обращению к операционной системе. | |
33 | + Например: | |
34 | + | |
35 | + - Загрузка/выгрузка динамических библиотек; | |
36 | + - Получение иерархии вызовов (stack trace); | |
37 | + - Обработка аварийных ситуаций (posix signals, access violation). | |
38 | + | |
39 | + Современные операционные системы имеют, как правило, С-интерфейс. Поэтому без использования | |
40 | + парадигм C на уровне сопряжения с кодом C++ не обойтись. Применение libctools_ в таких | |
41 | + случаях позволяет реализовать повторное использование кода. | |
42 | +* Механизмы и возможности временно отсутствующие в C++ коде (например, из-за недостатка времени | |
43 | + на разработку), как fallback (запасное решение). Например, речь можно вести | |
44 | + о развитой системе логирования и трассировки отладочных сообщений. | |
45 | + | |
46 | + | |
47 | +Целевые конфигурации | |
48 | +-------------------- | |
49 | + | |
50 | +Любые, на которых работают компиляторы C++11 и выше. | |
51 | +Большая часть замечаний из аналогичной секции libctools_ применима и здесь. | |
52 | + | |
53 | +Сборка | |
54 | +------ | |
55 | + | |
56 | +Существует 2 варианта использования: | |
57 | + | |
58 | +* Сборка не осуществляется. Сборкой должен заниматься тот проект, | |
59 | + который использует эту библиотеку. Для этого он должен указать пути для поиска заголовочных файлов | |
60 | + include и libctools/include и линковать все модули из src, libctools/src, libctools/src/os (если таковые нужны). | |
61 | +* Сборка осуществляется с использованием cmake_ . | |
62 | + | |
63 | +Тестирование | |
64 | +------------ | |
65 | + | |
66 | +Смотри подкаталог tests. | |
67 | + | |
68 | +.. _libctools : http://rhodecode.stc-brn.ru/s.gusarov/libctools | |
69 | +.. _cmake : http://www.cmake.org |
@@ -0,0 +1,33 @@ | ||
1 | +#!/usr/bin/env python3 | |
2 | + | |
3 | +# Manual cleaning of all generated files | |
4 | + | |
5 | +import os | |
6 | +import subprocess | |
7 | +import sys | |
8 | + | |
9 | +sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'pymisc')) | |
10 | +import fs | |
11 | + | |
12 | +__author__ = 'Sergey Gusarov' | |
13 | + | |
14 | +def main(): | |
15 | + scriptDir = fs.getScriptDir() | |
16 | + parentDir = os.path.join(scriptDir, '..') | |
17 | + pymiscDir = os.path.join(parentDir, 'pymisc') | |
18 | + buildDir = os.path.join(scriptDir, 'build') | |
19 | + testsBuildDir = os.path.join(scriptDir, 'tests', 'build') | |
20 | + | |
21 | + subprocess.check_call(os.path.join(pymiscDir, 'internal', 'cleanall.py'), shell = True) | |
22 | + | |
23 | + fs.removeFile(os.path.join(parentDir, 'libctools_readme.pdf')) | |
24 | + fs.removeFile(os.path.join(parentDir, 'tests', 'tests_readme.pdf')) | |
25 | + | |
26 | + for j in ['debug', 'release']: | |
27 | + dirToClean = os.path.join(testsBuildDir, j) | |
28 | + fs.cleanDir(dirToClean) | |
29 | + | |
30 | + dirToClean = os.path.join(buildDir, j) | |
31 | + fs.cleanDir(dirToClean) | |
32 | + | |
33 | +main() |
@@ -0,0 +1,25 @@ | ||
1 | +#!/usr/bin/env python3 | |
2 | + | |
3 | +# Wrapper above cppcheck utility | |
4 | + | |
5 | +import os | |
6 | +import sys | |
7 | + | |
8 | +sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'pymisc')) | |
9 | +import cppcheck | |
10 | +import fs | |
11 | + | |
12 | +__author__ = 'Sergey Gusarov' | |
13 | + | |
14 | +def main(): | |
15 | + parentRepoDir = os.path.join(fs.getScriptDir(), '..') | |
16 | + | |
17 | + includeDirs = [] | |
18 | + includeDirs.append(os.path.join(parentRepoDir, 'include')) | |
19 | + | |
20 | + for i in ['src']: | |
21 | + checkDir = os.path.join(parentRepoDir, i) | |
22 | + print('\nCheck \'' + i + '\' directory') | |
23 | + cppcheck.run(checkDir, includeDirs) | |
24 | + | |
25 | +main() |