2008-04-16 Johannes Schmid <jhs@gnome.org>
[anjuta-git-plugin.git] / tagmanager / include / tm_tagmanager.h
blob828d341f868d56aa6548c5387ceb4021c9322ba0
1 /*
3 * Copyright (c) 2001-2002, Biswapesh Chattopadhyay
5 * This source code is released for free distribution under the terms of the
6 * GNU General Public License.
8 */
10 #ifndef TM_TAGMANAGER_H
11 #define TM_TAGMANAGER_H
13 // DEBUG. FIXME REMOVE
14 //#define TM_DEBUG
17 #include "tm_tag.h"
18 #include "tm_symbol.h"
19 #include "tm_file_entry.h"
20 #include "tm_workspace.h"
21 #include "tm_work_object.h"
22 #include "tm_source_file.h"
23 #include "tm_project.h"
27 /*! \mainpage Introduction
28 \section Introduction
29 TagManager is a library and a set of utility programs which can be integrated into
30 Integrated Development Environments to provide features such as code completion,
31 calltips, etc. Tag Manager is based on <a href="http://ctags.sourceforge.net">
32 Exuberent Ctags</a> with some added features.
33 \section Licence
34 TagManager is <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a>,
35 licenced under the <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>. You can only
36 use it with free software (GPL compatible) projects. This is chiefly because it uses
37 code from ctags which is under GPL. I plan to replace the ctags part with a custom parser
38 in the future in which case it will be placed under LGPL. If you want to use it with
39 a commercial project, feel free to contribute a C/C++/Java parser.
40 \section Hacking
41 TagManager is tested to work on Linux. You need a basic GNOME 1.4 installation and
42 the auto tools (autoconf, automake, etc) if you want to configure it to your taste.
43 <a href="http://anjuta.sourceforge.net/">Anjuta</a> 0.1.7 or above is recommended
44 if you want to hack on the sources. If you simply plan to use it, only GLib is required.
45 \section Installation
46 TagManager can be installed using the standard UNIX method, i.e.:
48 -# tar zxvf TagManager-[Version].tar.gz
49 -# cd TagManager-[Version]
50 -# ./configure [configure options]
51 -# make
53 Currently, 'make install' will not do anything since TagManager is meant to be
54 included statically in projects. This might change in the future.
55 \section Usage
56 I have tried to make the API as simple as possible. Memory allocation/deallocation
57 is mostly automatic, so you shouldn't have to directly malloc() or free()
58 anything. The API is pseudo-OO, similar is structure to the GTK+ API. This document
59 provides a good reference to the API. However, if you want to see real-world usage
60 of the API, then the utility programs are the best place to start. Currently, there
61 are three such programs in the 'tests' subdirectory, namely tm_tag_print.c,
62 tm_project_test.c and tm_global_tags.c. It might be a good idea if you go through the
63 code for these programs once before starting to use the tag manager library.
64 \section Limitations
65 Currently, only C, C++ and Java are supported. Adding other languages should be easy
66 but I did not require them so they are missing. Tag Manager is also MT-unsafe - this is
67 a deliberate design decision since making it MT-safe did not seem to be very useful
68 to me and it slows things down. Previous versions has rudimentary code to support MT
69 operations but they have been removed since version 0.5.
72 /*! \file
73 Include this file in all programs using the tag manager library. Including this
74 automatically includes all the necessary files, namely, tm_tag.h, tm_source_file.h
75 , tm_project.h and tm_workspace.h
78 #endif /* TM_TAGMANAGER_H */