-
Notifications
You must be signed in to change notification settings - Fork 3
/
README.txt
215 lines (152 loc) · 8.73 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
cint 5.18.00 (CINT is pronounced "C-int")
| | |
| | +- Patch level (changed almost weekly at each release)
| +- Minor version (changed at DLL binary incompatibility)
+- Major version (major architecture change)
Author Masaharu Goto
Copyright(c) 1995~2010 Masaharu Goto ([email protected])
Mailing list [email protected]
Note: Search 'Installation' for installation instruction.
====== CINT ABSTRACT =======================================================
"cint" is a C/C++ interpreter which has following features.
* Support K&R-C, ANSI-C, ANSI-C++
Cint has 80-90% coverage on K&R-C, ANSI-C and C++ language constructs.
(Multiple inheritance, virtual function, function overloading, operator
overloading, default parameter, template, etc..) Cint is solid enough
to interpret its own source code.
Cint is not aimed to be a 100% ANSI/ISO compliant C++ language processor.
It rather is a portable script language environment which is close enough
to the standard C++.
* Handling Huge C/C++ source code
Cint can handle huge C/C++ source code. This has been a problem for other
C++ interpreter. Cint is quick in loading source files. Cint can interpret
its own over 60,000 lines source code.
* Interpretation & Native Code Execution can be mixed
Depending on speed and interactiveness requirement, you can mix Native
Code execution and interpretation. "makecint" makes it possible to
encapsulate arbitrary C/C++ object as a precompiled library. Precompiled
library can be configured as a Dynamic Link Library. Access between
interpreted code and precompiled code can be done seamlessly in both
direction.
* Single-Language solution
Cint/makecint is a Single-Language environment. It works with any
ANSI-C/C++ compiler to provide the interpreter environment on top of it.
* Bridge between serious programmers and other professionals
Cint is meant to be a bridging tool between software and non-software
professionals. C++ looks rather easy under the interpreter environment.
It helps non-software professionals to talk in the same language to
their software counterpart. Today's System-On-Silicon evolution demands
integration and standardization of design tools in software, hardware, IC
and system design processes. Cint is a key enabling technology to this
critical issue.
* Dynamic C++
Cint is dynamic. It can process C++ statements from command line,
dynamically define/erase class definition and functions, load/unload
source files and Dynamic Link Library. Extended Run Time Type
Identification mechanism is provided. This will allow you to explore
unthinkable way of using C++.
* Built-in Debugger, class browser
Cint has a built-in debugger with an extensive capability to debug
complex C++ execution flow. Text base class browser is a part of the
debugger capability.
* Portability
CINT works on number of Operating Systems.
HP-UX, Linux, SunOS, Solaris, AIX, Alpha-OSF, IRIX, FreeBSD, NetBSD,
NEC EWS4800, NewsOS, BeBox, Windows-NT ,Windows-9x, MS-DOS, MacOS,
NextStep, Convex. Porting should be easy. Refer to platform/README.
What about OS2, VxWorks, etc...?
* CINT users spread world wide
Many people world-wide are using Cint. Many C/C++ libraries have
been encapsulated. CERN and Fermi-Lab choose Cint as front-end command
processor and script interpreter for "ROOT" Object Oriented Software
Framework. The ROOT/CINT framework will be used in Large Hadron
Collider(LHC) research project beyond 2020.
* More applications
We have done, so far, following integration.
ROOT/CINT framework: Next generation C++ Object Oriented Framework
WildC++ interpreter: CINT + Tcl/Tk
CINTOCX : CINT + VisualBasic
There are unlimited opportunity of CINT integration. To list up a few,
Cint3D : CINT, openGL, DirectModel, VRML integration for 3D
VeriCint : CINT + Verilog-XL simulator connected by PLI and TCP/IP
MathCint : CINT + Math library + Digital Filter Design tool, etc
CintSQL : CINT + Database connection
CintWin32 : CINT + Win32 API
Your contribution will be greatly appreciated.
License: ===================================================================
See file COPYING in this directory for the licensing terms.
Getting the latest package =================================================
The source code package is available,
see http://root.cern.ch/twiki/bin/view/ROOT/CINT
CINT mailing list ==========================================================
Send request to '[email protected]' containing following line for
subscription.
subscribe cint [preferred mail address]
Archive for CINT mailing list can be accessed as follows.
http://root.cern.ch/root/cinttalk/AboutCint.html
Installation: ==============================================================
See http://root.cern.ch/twiki/bin/view/ROOT/CINT
Setting up environment variable:(UNIX) ======================================
After installation you need to set environment variables. If you installed
cint under '/usr/local/cint', for example
ksh/bsh/bash CINTSYSDIR=/usr/local/cint
PATH=$PATH:$CINTSYSDIR
MANPATH=$MANPATH:$CINTSYSDIR/doc
export PATH CINTSYSDIR MANPATH
csh setenv CINTSYSDIR /usr/local/cint
setenv PATH ($PATH $CINTSYSDIR)
setenv MANPATH ($MANPATH $CINTSYSDIR/doc)
You may need to set following variable too
bash LD_LIBRARY_PATH=.:$CINTSYSDIR:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
Now you can use 'cint'(interpreter itself) and 'makecint'(compile utility).
$ cint <options> <[file1].c [file2].c [shl].sl ...> [main].c
$ makecint <-o|-dl> <[obj]|[shl].sl> -H [src].h -C++ [src].C
Caution ====================================================================
Cint creates temp-files in /tmp, /usr/tmp, \temp or windows\temp
directory. Those files are automatically removed in normal situation but
sometimes left unremoved by accident. Check /tmp and /usr/tmp regulary
to remove garbage. Temp-files are named *_cint.
Documentation ==============================================================
$CINTSYSDIR/doc/cint.txt # cint manual
$CINTSYSDIR/doc/makecint.txt # makecint manual
$CINTSYSDIR/doc/limitati.txt # cint syntax limitation
$CINTSYSDIR/doc/limitnum.txt # cint quantitive limitation
$CINTSYSDIR/doc/ref.txt # cint special feature, ERTTI API
$CINTSYSDIR/doc/cintapi.txt # cint API
$CINTSYSDIR/doc/bytecode.txt # cint incremental bytecode compiler
Demo =======================================================================
You can find demonstration programs in $CINTSYSDIR/demo/ directory.
These programs can be referred as programming examples. Please read README
file under there. Makecint examples are found in $CINTSYSDIR/demo/makecint
directory.
It is highly recommended to start with those demo programs.
Contributers ==============================================================
The Author would like to thank Fons Rademakers and Rene Brun in CERN
for jointly develop ping ROOT-CINT framework system. Their invaluable advice
has been improving cint. They ported CINT on 10 different UNIX platforms.
Philippe Canal in Fermi-Lab contributes to many enhancements and bug fixes.
Axel Naumann from CERN contributes to the build system and the update
to use the Reflex in memory database and many other contributions.
Stefan Roiser from CERN was the initial developer of the Reflex package.
Scott Snyder provided the initial implementaton of template support.
Osamu Kotanigawa is giving great advice on Windows-NT Visual C++ and
Borland C++ porting. He created src/vcstrm.cxx and src/bcstrm.cxx. His
contribution improved CINT in many aspects.
Jacek Holeczek refined DLL schemes on IBM AIX. He wrote platform/aix*
and platform/aixMakefileBaseAdd.
Dibyendu Majumdar in U.K. ported CINT on MS-DOS using DJGPP.
Kiyoshi Yamamoto, in CQ publishing company, is giving me opportunity to
write a book and articles about CINT.
Masa Habu in HP Cupertino suggested usefulness of C++ interpreter in 1992
when CINT was only a C interpreter.
Junichi Mizoguchi in Agilent Technologies Japan created a base concept
of makecint by his automated software test execution environment.
And many thanks to people in Agilent Technologies Japan Hachioji-site.
The Author ===============================================================
Masaharu Goto
Please contact the author for bugs and requests by sending an e-mail to
[email protected]. You can also send message to '[email protected]'
or '[email protected]' for generic questions.
Bugs are tend to be fixed very quickly. (Normally 1-2 days.)