• R/O
  • SSH

libcpptools: Commit

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


Commit MetaInfo

Revision3953608804eb1597938fe143f02dedb8ea555ee8 (tree)
Time2014-10-26 02:26:32
Authors.gusarov
Commiters.gusarov

Log Message

Added project tree

Change Summary

Incremental Difference

diff -r 000000000000 -r 3953608804eb .hgsub
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgsub Sat Oct 25 21:26:32 2014 +0400
@@ -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
diff -r 000000000000 -r 3953608804eb .hgsubstate
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgsubstate Sat Oct 25 21:26:32 2014 +0400
@@ -0,0 +1,3 @@
1+0000000000000000000000000000000000000000 cmake/libcmake_tools
2+fcbf6ccd15d5608805d40175783eee214d7f6cc6 libctools
3+4f2347c2530c317b08be918ecf3119f7c63ee514 pymisc
diff -r 000000000000 -r 3953608804eb pack.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pack.py Sat Oct 25 21:26:32 2014 +0400
@@ -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()
diff -r 000000000000 -r 3953608804eb readme.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/readme.rst Sat Oct 25 21:26:32 2014 +0400
@@ -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
diff -r 000000000000 -r 3953608804eb scripts/cleanall.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/cleanall.py Sat Oct 25 21:26:32 2014 +0400
@@ -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()
diff -r 000000000000 -r 3953608804eb scripts/cppcheck_start.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/cppcheck_start.py Sat Oct 25 21:26:32 2014 +0400
@@ -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()
Show on old repository browser