What is CINT?
CINT is an interpreter for C and C++ code. It is useful e.g. for situations where rapid development is more important than execution time. Using an interpreter the compile and link cycle is dramatically reduced facilitating rapid development. CINT makes C/C++ programming enjoyable even for part-time programmers.
CINT is written in C++ itself, with slightly less than 400,000 lines of code. It is used in production by several companies in the banking, integrated devices, and even gaming environment, and of course by ROOT [1], making it the default interpreter for a large number of high energy physicists all over the world.
Features
CINT covers most of ANSI C (mostly before C99) and ISO C++ 2003. A CINT script can call compiled classes/functions and compiled code can make callbacks to CINT interpreted functions. Utilities like makecint and rootcint automate the process of embedding compiled C/C++ library code as shared objects (as Dynamic Link Library, DLL, or shared library, .so). Source files and shared objects can be dynamically loaded/unloaded without stopping the CINT process. CINT offers a gdb like debugging environment for interpreted programs.
Download
CINT is free software in terms of charge and freedom of utilization: it is licensed under the X11/MIT license. See the included COPYING [2] for details.
The source of CINT 5.18.00 from 2010-07-02 is available here (tar.gz, 2MB) [3].
CINT 5.16.19 from 2007-03-19 is available via anonymous ftp:
- Source package for all platforms (2MB) [4] (with bash configure script for most of the platforms)
- Binary package for Windows (2MB) [5].
To build the source package do:
$ tar xfz cint-5.16.19-source.tar.gz $ cd cint-5.16.19 $ ./configure $ gmake
The current sources of CINT can be downloaded via subversion. From a bash shell (the $ is meant to denote the shell prompt), run
$ svn co http://root.cern.ch/svn/root/branches/v5-34-00-patches/cint [6] cint $ cd cint
Once you have the sources you can simply update them by running svn up.
You can also download a certain version of CINT using subversion:
$ svn co http://root.cern.ch/svn/cint/tags/v5-16-19 [7] cint-v5.16.19 $ cd cint-v5.16.19
You can build CINT from these sources by running
$ ./configure $ make -j2
For windows you will need to install the cygwin [8] package to build CINT from sources.
Before downloading check the release notes [9] of the latest version.
Portability
CINT works on number of operating systems. Linux, HP-UX, SunOS, Solaris, AIX, Alpha-OSF, IRIX, FreeBSD, NetBSD, NEC EWS4800, NewsOS, BeBox, HI-UX, Windows-NT/95/98/Me, MS-DOS, MacOS, VMS, NextStep, Convex have all been reported as working at some point in time; Linux, Windows, MacOS and Solaris are actively developed. A number of compilers is supported, i.e. GCC, Microsoft Visual C++, Intel's ICC, HP-CC/aCC, Sun-CC/CC5, IBM-xlC, Compac-cxx, SGI-CC, Borland-C++, Symantec-C++, DJGPP, cygwin-GCC.
The ROOT System
The ROOT system [10] embeds CINT to be able to execute C++ scripts and C++ command line input. CINT also provides extensive RTTI capabilities to ROOT. See the following chapters on how CINT is used in ROOT:
- Adding Your own Classes to ROOT [11]
- CINT as Dictionary Generator [12]
- CINT as Command Line and Macro Interpreter [13]
The Authors
CINT is developed by Masaharu Goto [14], who works for Agilent Technologies, Philippe Canal and Paul Russo at Fermilab [15], and Leandro Franco, Diego Marcos, and Axel Naumann from CERN [16].
Limitations
CINT implements a very large subset of C++, but has also some differences and limitations [17].
CINT Mailing List
root-cint@cern.ch [18] is the CINT mailing list. To join the mailing list do the following:
- If you don't have a CERN account, create a light weight CERN account [19].
- Add yourself to the root-cint mailing list [20], by clicking on the "Members" tab and then on the "Add me" button.
- To remove yourself from the mailing list click on the "Remove me" button on the same above "Members" page.
For more detailed CINT information see below:
- README [23]: features, license condition, installation, etc...
- Releases Notes [9]: current revision, recent changes
- ChangeLog [24]: Subversion changes
- FAQ [25]
- Cint man page [26]: command line options, debugger commands
- Reference [27]: reference manual in alphabetical order
- Commands [28]
- Bytecode compiler [29]
- CINT API [30]
- Error messages [31]
- Limitations (concepts, ISO compatibility) [17]
- Limitations (sizes, lengths) [32]
- Makecint [33]: utility for embedding C/C++ library - reference manual
- Adding External Libraries [34]: embedding C/C++ library - user guide

External References
A few random pointers concerning CINT:
- Louis Höfler has compiled a summary on how to build CINT on Windows [35].
- Chris Brody implemented a CINT interface to libevent [36]: http://code.google.com/p/event-hpp [37]
- The Computer Language Benchmarks Game [38] has tested CINT: http://shootout.alioth.debian.org/u32/compare.php?lang=cint [39]
- CINT is used in a computer game's AI engine: http://emergency4.com [40]
- There is a nice how-to on building an error-checking C++ editor [41] with Scintilla and CINT.
| Attachment | Size |
|---|---|
| cint-5.18.00.tgz [3] | 2.04 MB |
