+ Fixes
[opsoft.git] / silentbob / README
blob07a415a82561593a33b3028af96ef2aaf73ef015
4                 SILENT BOB
6 Main ideas of SilentBob
8 Preprocessor, which is described above, is called "THE_TT" and placed in
9 appropriate file...
10 Actually it's quite simple: it removes all "extras" from C/C++ source. It
11 removes/minimizes all variants of C code notations, removes all extra space
12 symbols and comments, adds additional spaces where it's necessary (for
13 example, before brackets). THE_TT allows to take some part of code and
14 exactly (about 99%) tell you what is it, using minimum of checks.
15 All it works quite fast (for example, 1.6 GHz processor, 256 Mb of RAM - works
16 excellent), which allows to do some interesting things. As far as I know,
17 such kind of code usually is written only to compilers and isn't used for
18 other things, what, as for my view, isn't good enough.
20 Next SilentBob's level - "t_op", "what_is_this" and alike functions. First of
21 them simply allows to enumerate all "operators" of source code, second -
22 checks, what kind of operator do we met. Actually, "what_is_this" isn't
23 quite enough for all, so some additional functions exists... Now, THE_TT and
24 t_op are two separate parts of program. In future I plan to unite them...
26 It took from me for about one month to develop current version (1.0-rc1) and
27 two months for testing, finding out bugs, etc.
29 LYRICS
30 ("life story", "blog" )
32 SilentBob was written one dark night, when one Siberian fellow tried to
33 understand how sys_poll system call works. After some time of digging the
34 sources and several tanks of drinked beer, this fellow understood, that
35 abilities of Gvim only isn't quite enough. Some tricks was made - they helped
36 a little, but this wasn't the solution.
37 Then, some other popular programs was used. After several tries fellow
38 understood, that he received the access to function he needs. But only one
39 function. If you take into account, that such calls, let's say, not only one
40 in program - you can imaging fellows indignation.
43     Version 1.5
44  - added -j N for --cgrep --grep --make-ctags --call-tags. Tags creation code (--make-ctags) is rewritten for new
45 engine (sblib/TT.cxx). gclib library was minimized to size needed only for SilentBob. Of course, you are able to 
46 download gclib2 separately.
48     Version 1.4
49  - Bug fixes. Bugs are caught, fryed and worn out
50  - Removed support for ./tags file from exuberant-ctags. Now the project is autonomous and doesn't need it.
51  - Added heapsort and [working] variant with paralleling.
52  - All libs are in the one heap now
56     HOW to USE:
57 Files for SilentBob are given as parameters or as file with filelist (every file is in the new line)
58 and option -L, i.e. -L <file with filelist>.
60  -- Creating filelist:
61 $ bob --cfiles
63 $ bob -f
65  -- Creating file ./tags
66 $ bob --make-ctags
68 $ bob -c
69 You may specify -j N --make-ctags, where N is the num of CPUs
70 *  templates are not indexed
71 ** There is test option "--lang cpp" for C++. This option make Bob to use "C++" mode.
72    In this mode global variables are not indexed. To search global vars in C++ code it's recommended
73    to use --cgrep option.
75 If you have plugins installed (not from deb package), you may add for these options (--cfiles и --make-ctags) --perl or --python accordingly for Perl and Python, but this fitch is testing...
76 $ bob [--perl | --python] --files
77 $ bob [--perl | --python] --make-ctags
78 Created tag file is supported only by Vim, but you may use directly SilentBob to work with it.
80  -- Creating ./call_tags file
81 $ bob <filelist> --call-tags
82 It creates tags file. But instead of start points of function it will be written where they are called.
83 You may rename it to ./tags, run Vi and go throw _functions_call_points with a plain usual command
84         :tag
86  -- Call-trees
87 ./call_tags needed.
89   -- Simple
90 $ bob <the name of function> [--depth N]
91 Where N is the maximum level (for huge projects).
93   -- The reverse
94 $ bob -u <the name of function> [--depth N]
95 Сorrectness for C++ code functions is not guaranteed.
97   -- Search in operators :
98 $ bob <filelist> --cgrep op1,op2...
99 Where op1 and op2 are required parts of _one operator_. I.e. to search the place of checking T variable
100 you may use, for example:
101 $ bob -L ./cfiles --cgrep if,T
102 Using -ts option (it may be used at once c>./tags) you may get tags-formatted output.
104  -- Access to tags
105 $ bob --tags <function1> <function2> ... <functionN>
106 Where function1..functionN are needed symbol from ./tags file
107 The code if all listed functions will be reflected after this call
109  -- Plugins
110 $ bob --plugins-info
111 (list of plugins with id)
112 $ bob --plugin <id>
114 And also there are many another tasty things, not listed here.
116                 Other information
117 We need responses about working with Bob on another platforms.
118 Any thoughts on:
119     Oleg Puchinin <graycardinalster@gmail.com>
121 Thanks for your attention.
122 Oleg.
124 Translation to English: Evgeniy Ivanov <lolkaantimat Angry_DOG gmail BIGdot com>