| Karim BELABAS on Tue, 10 Sep 2002 17:14:11 +0200 (MEST) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: gnil |
On Tue, 10 Sep 2002, Bill Allombert wrote:
> On Tue, Sep 10, 2002 at 03:42:47PM +0200, Karim BELABAS wrote:
> > On Tue, 10 Sep 2002, Bill Allombert wrote:
> > > The magic gnil object is static in GP.
> >
> > No. It is global in the library.
> src/language/init.c read
> /* Variables statiques communes : */
> FILE *pari_outfile, *errfile, *logfile, *infile;
> GEN *polun, *polx;
> GEN gnil, gzero, gun, gdeux, ghalf, polvar, gi;
> GEN gpi=NULL, geuler=NULL, bernzone=NULL;
>
> which lead me to believed it was static.
>
> I suppose we need to fix paricom.h ?
>
> > What's wrong with
> >
> > GEN f(GEN x) { return gcmp0(x)? gnil: gun; }
>
> yellowpig% cat >test.c <<EOF
> #include<pari/pari.h>
> GEN f(GEN x) { return gcmp0(x)? gnil: gun; }
> EOF
> yellowpig% gcc test.c
> test.c: In function `f':
> test.c:2: `gnil' undeclared (first use in this function)
> test.c:2: (Each undeclared identifier is reported only once
> test.c:2: for each function it appears in.)
I forgot I had removed it from the public headers... [ it's declared in anal.h ]
(16:53) vintsy-karim% cat >test.c <<EOF
#include<pari/pari.h>
extern GEN gnil;
GEN f(GEN x) { return gcmp0(x)? gnil: gun; }
main(){}
EOF
(16:53) vintsy-karim% gcc test.c -lpari -lm
(16:53) vintsy-karim%
OK, yet another good reason to write a separate header file declaring "private"
exported symbols (and types), say paripriv.h [ still the stupid old 8.3 DOS
limit ]
Logic would be that
* paridecl.h contains only functions with documented API [ we'd
guarantee stability there ]
* paripriv.h contains undocumented stuff, for which we guarantee nothing.
pari.h would contain something like
#ifdef PARI_USE_PRIVATE
# include <paripriv.h>
#endif
So we could
1) remove all the "extern ..." declarations currently scattered everywhere
2) move all undocumented stuff from paridecl.h to paripriv.h [ or document
them immediately ]
3) start documenting things from paripriv.h and move them to paridecl.h
Cheers,
Karim.
P.S: Not sure whether paripriv.h should be a wrapper including a bunch of
individual header files, or monolithic like paridecl.h.
--
Karim Belabas Tel: (+33) (0)1 69 15 57 48
Dép. de Mathematiques, Bat. 425 Fax: (+33) (0)1 69 15 60 19
Université Paris-Sud Email: Karim.Belabas@math.u-psud.fr
F-91405 Orsay (France) http://www.math.u-psud.fr/~belabas/
--
PARI/GP Home Page: http://www.parigp-home.de/