diff --git a/configure.ac b/configure.ac index f2a6a6f3..e0dc5246 100644 --- a/configure.ac +++ b/configure.ac @@ -292,59 +292,6 @@ AS_IF([test "x$with_api" = xwindows], AM_CONDITIONAL([ONUNIX], [test "x$with_api" = xposix]) AM_CONDITIONAL([ONWINDOWS], [test "x$with_api" = xwindows]) -# Check for data model -AC_CHECK_SIZEOF([char]) -AC_CHECK_SIZEOF([short]) -AC_CHECK_SIZEOF([int]) -AC_CHECK_SIZEOF([long]) -AC_CHECK_SIZEOF([long long]) -AC_CHECK_SIZEOF([void *]) -AC_CHECK_SIZEOF([off_t]) - -case $ac_cv_sizeof_char-$ac_cv_sizeof_short-$ac_cv_sizeof_int-$ac_cv_sizeof_long-$ac_cv_sizeof_long_long-$ac_cv_sizeof_void_p-$ac_cv_sizeof_off_t in - 1-2-4-4-*-4-*) - # Most of today's 32 bit systems. - print_data_model="ILP32" - ac_cv_sizeof_WORD=$ac_cv_sizeof_short - ac_cv_sizeof_LONG=$ac_cv_sizeof_long - AC_DEFINE(ILP32, , [Compiling for ILP32 data model]) - # We need INT64. - AS_IF([test $ac_cv_sizeof_long_long -ne 8], - [AC_MSG_FAILURE([64-bit integers are not available])]) - ;; - 1-2-4-4-8-8-*) - # Microsoft Windows (X64/IA-64). - print_data_model="LLP64" - ac_cv_sizeof_WORD=$ac_cv_sizeof_int - ac_cv_sizeof_LONG=$ac_cv_sizeof_long_long - AC_DEFINE(LLP64, , [Compiling for LLP64 data model]) - ;; - 1-2-4-8-*-8-*) - # Most Unix and Unix-like systems, e.g., Solaris, Linux and Mac OS X. - print_data_model="LP64" - ac_cv_sizeof_WORD=$ac_cv_sizeof_int - ac_cv_sizeof_LONG=$ac_cv_sizeof_long - AC_DEFINE(LP64, , [Compiling for LP64 data model]) - ;; - *) - AC_MSG_FAILURE([Cannot recognize the data model used in the compiler]) - ;; -esac -# Our basic assumption: -# sizeof(off_t) >= sizeof(LONG) >= sizeof(void *) >= sizeof(int) -# >= sizeof(WORD) >= sizeof(char) == 1. -flag=: -$flag && test $ac_cv_sizeof_off_t -lt $ac_cv_sizeof_LONG && flag=false -$flag && test $ac_cv_sizeof_LONG -lt $ac_cv_sizeof_void_p && flag=false -$flag && test $ac_cv_sizeof_void_p -lt $ac_cv_sizeof_int && flag=false -$flag && test $ac_cv_sizeof_int -lt $ac_cv_sizeof_WORD && flag=false -$flag && test $ac_cv_sizeof_WORD -lt $ac_cv_sizeof_char && flag=false -$flag && test $ac_cv_sizeof_char -ne 1 && flag=false -AS_IF([$flag], [], [AC_MSG_FAILURE([Basic assumption sizeof(off_t) >= sizeof(LONG) >= sizeof(void *) >= sizeof(int) >= sizeof(WORD) >= sizeof(char) == 1 does not hold.])]) -# sizeof(off_t) <= 4 means files must <= 2 GB. -AS_IF([test $ac_cv_sizeof_off_t -le 4], [AC_MSG_WARN([Large files more than 2 GB are not supported])]) -AC_MSG_NOTICE([The data model is $print_data_model]) - # Check for gmp AC_ARG_WITH([gmp], [AS_HELP_STRING([--with-gmp@<:@=DIR@:>@], @@ -975,15 +922,7 @@ if test "$my_test_COMPILEFLAGS" != set; then # Use -march=native if available. AX_CHECK_COMPILE_FLAG([-march=native], [COMPILEFLAGS="$COMPILEFLAGS -march=native"], - [if test "x$print_data_model" = xILP32; then - if test "x$print_cpu" = xPentium; then - COMPILEFLAGS="$COMPILEFLAGS -march=i586" - elif test "x$print_cpu" = 'xPentium Pro'; then - COMPILEFLAGS="$COMPILEFLAGS -march=i686" - elif test "x$print_cpu" = xOpteron; then - COMPILEFLAGS="$COMPILEFLAGS -march=opteron" - fi - fi], + [], [-Werror]) fi # Profiling option. @@ -1191,7 +1130,7 @@ manoutputdir=$(eval "echo $mandir") manoutputdir=$(eval "echo $manoutputdir") echo "FORM $VERSION" echo -echo "Compiling for: $print_cpu $print_os ($print_data_model $print_api)" +echo "Compiling for: $print_cpu $print_os ($print_api)" echo echo "Optionally linked libraries:" atleastone=no @@ -1390,11 +1329,6 @@ fi if test $atleastone = no; then echo " " fi -if test $ac_cv_sizeof_off_t -le 4; then - echo - echo "***CAUTION*** Large files more than 2 GB will be" - echo "not supported." -fi if test "x$thread_clock_ok" = xno; then s="none" if test "x$build_tform" = xyes && test "x$build_tvorm" = xyes; then diff --git a/sources/argument.c b/sources/argument.c index 395dd880..6a97f3c1 100644 --- a/sources/argument.c +++ b/sources/argument.c @@ -53,14 +53,15 @@ need to insert a different value (C->lhs[level][2]). */ -WORD execarg(PHEAD WORD *term, WORD level) +int execarg(PHEAD WORD *term, WORD level) { GETBIDENTITY WORD *t, *r, *m, *v; WORD *start, *stop, *rstop, *r1, *r2 = 0, *r3 = 0, *r4, *r5, *r6, *r7, *r8, *r9; WORD *mm, *mstop, *rnext, *rr, *factor, type, ngcd, nq; CBUF *C = cbuf+AM.rbufnum, *CC = cbuf+AT.ebufnum; - WORD i, j, k, oldnumlhs = AR.Cnumlhs, count, action = 0, olddefer = AR.DeferFlag; + WORD i, j, k, oldnumlhs = AR.Cnumlhs, count, olddefer = AR.DeferFlag; + int action = 0; WORD oldnumrhs = CC->numrhs, size, pow, jj; LONG oldcpointer = CC->Pointer - CC->Buffer, oldppointer = AT.pWorkPointer, lp; WORD *oldwork = AT.WorkPointer, *oldwork2, scale, renorm; @@ -1766,7 +1767,7 @@ oneterm:; #[ execterm : */ -WORD execterm(PHEAD WORD *term, WORD level) +int execterm(PHEAD WORD *term, WORD level) { GETBIDENTITY CBUF *C = cbuf+AM.rbufnum; @@ -2534,7 +2535,7 @@ WORD FindArg(PHEAD WORD *a) * If par == 1 it inserts in the cache defined with the FactorCache statement */ -WORD InsertArg(PHEAD WORD *argin, WORD *argout,int par) +int InsertArg(PHEAD WORD *argin, WORD *argout,int par) { CBUF *C; WORD *a, i, bufnum; diff --git a/sources/compiler.c b/sources/compiler.c index 8788c684..00855ea6 100644 --- a/sources/compiler.c +++ b/sources/compiler.c @@ -267,32 +267,30 @@ LONG insubexpbuffers = 0; subexpbuffers = (SUBBUF *)Malloc1(256*sizeof(SUBBUF),"subexpbuffers");\ topsubexpbuffers = subexpbuffers+256; } insubexpbuffers = 0; } -#if defined(ILP32) - -#define PUTNUMBER128(t,n) { if ( n >= 16384 ) { \ +#if BITSINWORD == 32 + #define PUTNUMBER128(t,n) { if ( n >= 2097152 ) { \ + *t++ = ((n/128)/128)/128; *t++ = ((n/128)/128)%128; *t++ = (n/128)%128; *t++ = n%128; } \ + else if ( n >= 16384 ) { \ *t++ = n/(128*128); *t++ = (n/128)%128; *t++ = n%128; } \ else if ( n >= 128 ) { *t++ = n/128; *t++ = n%128; } \ else *t++ = n; } -#define PUTNUMBER100(t,n) { if ( n >= 10000 ) { \ + #define PUTNUMBER100(t,n) { if ( n >= 1000000 ) { \ + *t++ = ((n/100)/100)/100; *t++ = ((n/100)/100)%100; *t++ = (n/100)%100; *t++ = n%100; } \ + else if ( n >= 10000 ) { \ *t++ = n/10000; *t++ = (n/100)%100; *t++ = n%100; } \ else if ( n >= 100 ) { *t++ = n/100; *t++ = n%100; } \ else *t++ = n; } - -#elif ( defined(LLP64) || defined(LP64) ) - -#define PUTNUMBER128(t,n) { if ( n >= 2097152 ) { \ - *t++ = ((n/128)/128)/128; *t++ = ((n/128)/128)%128; *t++ = (n/128)%128; *t++ = n%128; } \ - else if ( n >= 16384 ) { \ +#elif BITSINWORD == 16 + #define PUTNUMBER128(t,n) { if ( n >= 16384 ) { \ *t++ = n/(128*128); *t++ = (n/128)%128; *t++ = n%128; } \ else if ( n >= 128 ) { *t++ = n/128; *t++ = n%128; } \ else *t++ = n; } -#define PUTNUMBER100(t,n) { if ( n >= 1000000 ) { \ - *t++ = ((n/100)/100)/100; *t++ = ((n/100)/100)%100; *t++ = (n/100)%100; *t++ = n%100; } \ - else if ( n >= 10000 ) { \ + #define PUTNUMBER100(t,n) { if ( n >= 10000 ) { \ *t++ = n/10000; *t++ = (n/100)%100; *t++ = n%100; } \ else if ( n >= 100 ) { *t++ = n/100; *t++ = n%100; } \ else *t++ = n; } - +#else + #error Only 64-bit and 32-bit platforms are supported. #endif /* @@ -2243,7 +2241,7 @@ int CodeFactors(SBYTE *tokens) WORD GenerateFactors(WORD n,WORD inc) { - WORD subexp; + int subexp; int i, error = 0; SBYTE *s; SBYTE *tokenbuffer = (SBYTE *)Malloc1(8*n*sizeof(SBYTE),"GenerateFactors"); diff --git a/sources/declare.h b/sources/declare.h index 951def5f..36a92c25 100644 --- a/sources/declare.h +++ b/sources/declare.h @@ -384,19 +384,19 @@ TP=T+1;while(TP= 0 ) return x; + if ( x >= 0 ) return (unsigned int)x; return(-((unsigned int)x)); } static inline UWORD WordAbs(WORD x) { - if ( x >= 0 ) return x; + if ( x >= 0 ) return (UWORD)x; return(-((UWORD)x)); } static inline ULONG LongAbs(LONG x) { - if ( x >= 0 ) return x; + if ( x >= 0 ) return (ULONG)x; return(-((ULONG)x)); } @@ -411,7 +411,7 @@ static inline ULONG LongAbs(LONG x) static inline int UnsignedToInt(unsigned int x) { extern void TerminateImpl(int, const char*, int, const char*); - if ( x <= INT_MAX ) return(x); + if ( x <= INT_MAX ) return((int)x); if ( x >= (unsigned int)INT_MIN ) return((int)(x - (unsigned int)INT_MIN) + INT_MIN); Terminate(1); @@ -421,7 +421,7 @@ static inline int UnsignedToInt(unsigned int x) static inline WORD UWordToWord(UWORD x) { extern void TerminateImpl(int, const char*, int, const char*); - if ( x <= WORD_MAX_VALUE ) return(x); + if ( x <= WORD_MAX_VALUE ) return((WORD)x); if ( x >= (UWORD)WORD_MIN_VALUE ) return((WORD)(x - (UWORD)WORD_MIN_VALUE) + WORD_MIN_VALUE); Terminate(1); @@ -431,7 +431,7 @@ static inline WORD UWordToWord(UWORD x) static inline LONG ULongToLong(ULONG x) { extern void TerminateImpl(int, const char*, int, const char*); - if ( x <= LONG_MAX_VALUE ) return(x); + if ( x <= LONG_MAX_VALUE ) return((LONG)x); if ( x >= (ULONG)LONG_MIN_VALUE ) return((LONG)(x - (ULONG)LONG_MIN_VALUE) + LONG_MIN_VALUE); Terminate(1); @@ -517,172 +517,170 @@ extern INDEXENTRY *NextFileIndex(POSITION *); extern WORD *PasteTerm(PHEAD WORD,WORD *,WORD *,WORD,WORD); extern UBYTE *StrCopy(UBYTE *,UBYTE *); extern UBYTE *WrtPower(UBYTE *,WORD); -extern WORD AccumGCD(PHEAD UWORD *,WORD *,UWORD *,WORD); +extern int AccumGCD(PHEAD UWORD *,WORD *,UWORD *,WORD); extern void AddArgs(PHEAD WORD *,WORD *,WORD *); -extern WORD AddCoef(PHEAD WORD **,WORD **); -extern WORD AddLong(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); -extern WORD AddPLon(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); -extern WORD AddPoly(PHEAD WORD **,WORD **); -extern WORD AddRat(PHEAD UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); +extern int AddCoef(PHEAD WORD **,WORD **); +extern int AddLong(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); +extern int AddPLon(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); +extern int AddPoly(PHEAD WORD **,WORD **); +extern int AddRat(PHEAD UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); extern void AddToLine(UBYTE *); -extern WORD AddWild(PHEAD WORD,WORD,WORD); -extern WORD BigLong(UWORD *,WORD,UWORD *,WORD); -extern WORD BinomGen(PHEAD WORD *,WORD,WORD **,WORD,WORD,WORD,WORD,WORD,UWORD *,WORD); -extern WORD CheckWild(PHEAD WORD,WORD,WORD,WORD *); -extern WORD Chisholm(PHEAD WORD *,WORD); -extern WORD CleanExpr(WORD); +extern int AddWild(PHEAD WORD,WORD,WORD); +extern int BigLong(UWORD *,WORD,UWORD *,WORD); +extern int BinomGen(PHEAD WORD *,WORD,WORD **,WORD,WORD,WORD,WORD,WORD,UWORD *,WORD); +extern int CheckWild(PHEAD WORD,WORD,WORD,WORD *); +extern int Chisholm(PHEAD WORD *,WORD); +extern int CleanExpr(WORD); extern void CleanUp(WORD); extern void ClearWild(PHEAD0); -extern WORD CompareFunctions(WORD *,WORD *); -extern WORD Commute(WORD *,WORD *); +extern int CompareFunctions(WORD *,WORD *); +extern int Commute(WORD *,WORD *); extern WORD DetCommu(WORD *); extern WORD DoesCommu(WORD *); extern int CompArg(WORD *,WORD *); extern WORD CompCoef(WORD *, WORD *); -extern WORD CompGroup(PHEAD WORD,WORD **,WORD *,WORD *,WORD); +extern int CompGroup(PHEAD WORD,WORD **,WORD *,WORD *,WORD); extern WORD Compare1(PHEAD WORD *,WORD *,WORD); extern WORD CountDo(WORD *,WORD *); extern WORD CountFun(WORD *,WORD *); extern WORD DimensionSubterm(WORD *); extern WORD DimensionTerm(WORD *); extern WORD DimensionExpression(PHEAD WORD *); -extern WORD Deferred(PHEAD WORD *,WORD); -extern WORD DeleteStore(WORD); +extern int Deferred(PHEAD WORD *,WORD); +extern int DeleteStore(WORD); extern WORD DetCurDum(PHEAD WORD *); extern void DetVars(WORD *,WORD); -extern WORD Distribute(DISTRIBUTE *,WORD); -extern WORD DivLong(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *,UWORD *,WORD *); -extern WORD DivRat(PHEAD UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); -extern WORD Divvy(PHEAD UWORD *,WORD *,UWORD *,WORD); -extern WORD DoDelta(WORD *); -extern WORD DoDelta3(PHEAD WORD *,WORD); -extern WORD TestPartitions(WORD *, PARTI *); -extern WORD DoPartitions(PHEAD WORD *,WORD); +extern int Distribute(DISTRIBUTE *,WORD); +extern int DivLong(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *,UWORD *,WORD *); +extern int DivRat(PHEAD UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); +extern int Divvy(PHEAD UWORD *,WORD *,UWORD *,WORD); +extern int DoDelta(WORD *); +extern int DoDelta3(PHEAD WORD *,WORD); +extern int TestPartitions(WORD *, PARTI *); +extern int DoPartitions(PHEAD WORD *,WORD); extern int CoCanonicalize(UBYTE *); extern int DoCanonicalize(PHEAD WORD *, WORD *); -extern WORD GenTopologies(PHEAD WORD *,WORD); -extern WORD GenDiagrams(PHEAD WORD *,WORD); +extern int GenTopologies(PHEAD WORD *,WORD); +extern int GenDiagrams(PHEAD WORD *,WORD); extern int DoTopologyCanonicalize(PHEAD WORD *,WORD,WORD,WORD *); extern int DoShattering(PHEAD WORD *,WORD *,WORD *,WORD); -extern WORD GenerateTopologies(PHEAD WORD,WORD,WORD,WORD); -extern WORD DoTableExpansion(WORD *,WORD); -extern WORD DoDistrib(PHEAD WORD *,WORD); -extern WORD DoShuffle(WORD *,WORD,WORD,WORD); -extern WORD DoPermutations(PHEAD WORD *,WORD); +extern int GenerateTopologies(PHEAD WORD,WORD,WORD,WORD); +extern int DoTableExpansion(WORD *,WORD); +extern int DoDistrib(PHEAD WORD *,WORD); +extern int DoShuffle(WORD *,WORD,WORD,WORD); +extern int DoPermutations(PHEAD WORD *,WORD); extern int Shuffle(WORD *, WORD *, WORD *); extern int FinishShuffle(WORD *); -extern WORD DoStuffle(WORD *,WORD,WORD,WORD); +extern int DoStuffle(WORD *,WORD,WORD,WORD); extern int Stuffle(WORD *, WORD *, WORD *); extern int FinishStuffle(WORD *); extern WORD *StuffRootAdd(WORD *, WORD *, WORD *); -extern WORD TestUse(WORD *,WORD); +extern int TestUse(WORD *,WORD); extern DBASE *FindTB(UBYTE *); extern int CheckTableDeclarations(DBASE *); -extern WORD Apply(WORD *,WORD); +extern void Apply(WORD *,WORD); extern int ApplyExec(WORD *,int,WORD); -extern WORD ApplyReset(WORD); -extern WORD TableReset(void); +extern void ApplyReset(WORD); +extern void TableReset(void); extern void ReWorkT(WORD *,WORD *,WORD); extern WORD GetIfDollarNum(WORD *, WORD *); extern int FindVar(WORD *,WORD *); -extern WORD DoIfStatement(PHEAD WORD *,WORD *); -extern WORD DoOnePow(PHEAD WORD *,WORD,WORD,WORD *,WORD *,WORD,WORD *); +extern int DoIfStatement(PHEAD WORD *,WORD *); +extern int DoOnePow(PHEAD WORD *,WORD,WORD,WORD *,WORD *,WORD,WORD *); extern void DoRevert(WORD *,WORD *); -extern WORD DoSumF1(PHEAD WORD *,WORD *,WORD,WORD); -extern WORD DoSumF2(PHEAD WORD *,WORD *,WORD,WORD); -extern WORD DoTheta(PHEAD WORD *); +extern int DoSumF1(PHEAD WORD *,WORD *,WORD,WORD); +extern int DoSumF2(PHEAD WORD *,WORD *,WORD,WORD); +extern int DoTheta(PHEAD WORD *); extern LONG EndSort(PHEAD WORD *,int); -extern WORD EntVar(WORD,UBYTE *,WORD,WORD,WORD,WORD); -extern WORD EpfCon(PHEAD WORD *,WORD *,WORD,WORD); -extern WORD EpfFind(PHEAD WORD *,WORD *); +extern int EntVar(WORD,UBYTE *,WORD,WORD,WORD,WORD); +extern int EpfCon(PHEAD WORD *,WORD *,WORD,WORD); +extern int EpfFind(PHEAD WORD *,WORD *); extern WORD EpfGen(WORD,WORD *,WORD *,WORD *,WORD); -extern WORD EqualArg(WORD *,WORD,WORD); -extern WORD Evaluate(UBYTE **); +extern int EqualArg(WORD *,WORD,WORD); extern int Factorial(PHEAD WORD,UWORD *,WORD *); extern int Bernoulli(WORD,UWORD *,WORD *); extern int FactorIn(PHEAD WORD *,WORD); extern int FactorInExpr(PHEAD WORD *,WORD); -extern WORD FindAll(PHEAD WORD *,WORD *,WORD,WORD *); +extern int FindAll(PHEAD WORD *,WORD *,WORD,WORD *); extern WORD FindMulti(PHEAD WORD *,WORD *); -extern WORD FindOnce(PHEAD WORD *,WORD *); -extern WORD FindOnly(PHEAD WORD *,WORD *); -extern WORD FindRest(PHEAD WORD *,WORD *); -extern WORD FindSpecial(WORD *); +extern int FindOnce(PHEAD WORD *,WORD *); +extern int FindOnly(PHEAD WORD *,WORD *); +extern int FindRest(PHEAD WORD *,WORD *); +extern void FindSpecial(WORD *); extern WORD FindrNumber(WORD,VARRENUM *); extern void FiniLine(void); -extern WORD FiniTerm(PHEAD WORD *,WORD *,WORD *,WORD,WORD); -extern WORD FlushOut(POSITION *,FILEHANDLE *,int); +extern int FiniTerm(PHEAD WORD *,WORD *,WORD *,WORD,WORD); +extern int FlushOut(POSITION *,FILEHANDLE *,int); extern void FunLevel(PHEAD WORD *); extern void AdjustRenumScratch(PHEAD0); extern void GarbHand(void); -extern WORD GcdLong(PHEAD UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); -extern WORD LcmLong(PHEAD UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); +extern int GcdLong(PHEAD UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); +extern int LcmLong(PHEAD UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); extern void GCD(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); extern ULONG GCD2(ULONG,ULONG); -extern WORD Generator(PHEAD WORD *,WORD); -extern WORD GetBinom(UWORD *,WORD *,WORD,WORD); +extern int Generator(PHEAD WORD *,WORD); +extern int GetBinom(UWORD *,WORD *,WORD,WORD); extern WORD GetFromStore(WORD *,POSITION *,RENUMBER,WORD *,WORD); -extern WORD GetLong(UBYTE *,UWORD *,WORD *); +extern int GetLong(UBYTE *,UWORD *,WORD *); extern WORD GetMoreTerms(WORD *); -extern WORD GetMoreFromMem(WORD *,WORD **); +extern int GetMoreFromMem(WORD *,WORD **); extern WORD GetOneTerm(PHEAD WORD *,FILEHANDLE *,POSITION *,int); extern RENUMBER GetTable(WORD,POSITION *,WORD); extern WORD GetTerm(PHEAD WORD *); -extern WORD Glue(PHEAD WORD *,WORD *,WORD *,WORD); -extern WORD InFunction(PHEAD WORD *,WORD *); +extern int Glue(PHEAD WORD *,WORD *,WORD *,WORD); +extern int InFunction(PHEAD WORD *,WORD *); extern void IniLine(WORD); -extern WORD IniVars(void); -extern void Initialize(void); -extern WORD InsertTerm(PHEAD WORD *,WORD,WORD,WORD *,WORD *,WORD); +extern void IniVars(void); +extern int InsertTerm(PHEAD WORD *,WORD,WORD,WORD *,WORD *,WORD); extern void LongToLine(UWORD *,WORD); -extern WORD MakeDirty(WORD *,WORD *,WORD); +extern int MakeDirty(WORD *,WORD *,WORD); extern void MarkDirty(WORD *,WORD); extern void PolyFunDirty(PHEAD WORD *); extern void PolyFunClean(PHEAD WORD *); -extern WORD MakeModTable(void); -extern WORD MatchE(PHEAD WORD *,WORD *,WORD *,WORD); +extern int MakeModTable(void); +extern int MatchE(PHEAD WORD *,WORD *,WORD *,WORD); extern int MatchCy(PHEAD WORD *,WORD *,WORD *,WORD); extern int FunMatchCy(PHEAD WORD *,WORD *,WORD *,WORD); extern int FunMatchSy(PHEAD WORD *,WORD *,WORD *,WORD); extern int MatchArgument(PHEAD WORD *,WORD *); -extern WORD MatchFunction(PHEAD WORD *,WORD *,WORD *); -extern WORD MergePatches(WORD); -extern WORD MesCerr(char *, UBYTE *); -extern WORD MesComp(char *, UBYTE *, UBYTE *); -extern WORD Modulus(WORD *); +extern int MatchFunction(PHEAD WORD *,WORD *,WORD *); +extern int MergePatches(WORD); +extern int MesCerr(char *, UBYTE *); +extern int MesComp(char *, UBYTE *, UBYTE *); +extern int Modulus(WORD *); extern void MoveDummies(PHEAD WORD *,WORD); -extern WORD MulLong(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); -extern WORD MulRat(PHEAD UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); -extern WORD Mully(PHEAD UWORD *,WORD *,UWORD *,WORD); -extern WORD MultDo(PHEAD WORD *,WORD *); -extern WORD NewSort(PHEAD0); -extern WORD ExtraSymbol(WORD,WORD,WORD,WORD *,WORD *); -extern WORD Normalize(PHEAD WORD *); -extern WORD BracketNormalize(PHEAD WORD *); +extern int MulLong(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); +extern int MulRat(PHEAD UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); +extern int Mully(PHEAD UWORD *,WORD *,UWORD *,WORD); +extern int MultDo(PHEAD WORD *,WORD *); +extern int NewSort(PHEAD0); +extern int ExtraSymbol(WORD,WORD,WORD,WORD *,WORD *); +extern int Normalize(PHEAD WORD *); +extern int BracketNormalize(PHEAD WORD *); extern void DropCoefficient(PHEAD WORD *); extern void DropSymbols(PHEAD WORD *); extern int PutInside(PHEAD WORD *, WORD *); -extern WORD OpenTemp(void); +extern void OpenTemp(void); extern void Pack(UWORD *,WORD *,UWORD *,WORD ); extern LONG PasteFile(PHEAD WORD,WORD *,POSITION *,WORD **,RENUMBER,WORD *,WORD); -extern WORD Permute(PERM *,WORD); -extern WORD PermuteP(PERMP *,WORD); -extern WORD PolyFunMul(PHEAD WORD *); -extern WORD PopVariables(void); -extern WORD PrepPoly(PHEAD WORD *,WORD); -extern WORD Processor(void); -extern WORD Product(UWORD *,WORD *,WORD); +extern int Permute(PERM *,WORD); +extern int PermuteP(PERMP *,WORD); +extern int PolyFunMul(PHEAD WORD *); +extern int PopVariables(void); +extern int PrepPoly(PHEAD WORD *,WORD); +extern int Processor(void); +extern int Product(UWORD *,WORD *,WORD); extern void PrtLong(UWORD *,WORD,UBYTE *); extern void PrtTerms(void); extern void PrintDeprecation(const char *,const char *); extern void PrintRunningTime(void); extern LONG GetRunningTime(void); -extern WORD PutBracket(PHEAD WORD *); +extern int PutBracket(PHEAD WORD *); extern LONG PutIn(FILEHANDLE *,POSITION *,WORD *,WORD **,int); -extern WORD PutInStore(INDEXENTRY *,WORD); +extern int PutInStore(INDEXENTRY *,WORD); extern WORD PutOut(PHEAD WORD *,POSITION *,FILEHANDLE *,WORD); extern UWORD Quotient(UWORD *,WORD *,WORD); -extern WORD RaisPow(PHEAD UWORD *,WORD *,UWORD); +extern int RaisPow(PHEAD UWORD *,WORD *,UWORD); extern void RaisPowCached (PHEAD WORD, WORD, UWORD **, WORD *); extern WORD RaisPowMod (WORD, WORD, WORD); extern int NormalModulus(UWORD *,WORD *); @@ -690,41 +688,41 @@ extern int MakeInverses(void); extern int GetModInverses(WORD,WORD,WORD *,WORD *); extern int GetLongModInverses(PHEAD UWORD *, WORD, UWORD *, WORD, UWORD *, WORD *, UWORD *, WORD *); extern void RatToLine(UWORD *,WORD); -extern WORD RatioFind(PHEAD WORD *,WORD *); -extern WORD RatioGen(PHEAD WORD *,WORD *,WORD,WORD); +extern int RatioFind(PHEAD WORD *,WORD *); +extern int RatioGen(PHEAD WORD *,WORD *,WORD,WORD); extern WORD ReNumber(PHEAD WORD *); extern WORD ReadSnum(UBYTE **); extern WORD Remain10(UWORD *,WORD *); extern WORD Remain4(UWORD *,WORD *); -extern WORD ResetScratch(void); -extern WORD ResolveSet(PHEAD WORD *,WORD *,WORD *); -extern WORD RevertScratch(void); -extern WORD ScanFunctions(PHEAD WORD *,WORD *,WORD); +extern int ResetScratch(void); +extern int ResolveSet(PHEAD WORD *,WORD *,WORD *); +extern int RevertScratch(void); +extern int ScanFunctions(PHEAD WORD *,WORD *,WORD); extern void SeekScratch(FILEHANDLE *,POSITION *); extern void SetEndScratch(FILEHANDLE *,POSITION *); extern void SetEndHScratch(FILEHANDLE *,POSITION *); -extern WORD SetFileIndex(void); -extern WORD Sflush(FILEHANDLE *); -extern WORD Simplify(PHEAD UWORD *,WORD *,UWORD *,WORD *); -extern WORD SortWild(WORD *,WORD); +extern int SetFileIndex(void); +extern int Sflush(FILEHANDLE *); +extern int Simplify(PHEAD UWORD *,WORD *,UWORD *,WORD *); +extern int SortWild(WORD *,WORD); extern FILE *LocateBase(char **,char **,char *); extern LONG SplitMerge(PHEAD WORD **,LONG); -extern WORD StoreTerm(PHEAD WORD *); +extern int StoreTerm(PHEAD WORD *); extern void SubPLon(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *); extern void Substitute(PHEAD WORD *,WORD *,WORD); -extern WORD SymFind(PHEAD WORD *,WORD *); -extern WORD SymGen(PHEAD WORD *,WORD *,WORD,WORD); +extern int SymFind(PHEAD WORD *,WORD *); +extern int SymGen(PHEAD WORD *,WORD *,WORD,WORD); extern WORD Symmetrize(PHEAD WORD *,WORD *,WORD,WORD,WORD); extern int FullSymmetrize(PHEAD WORD *,int); -extern WORD TakeModulus(UWORD *,WORD *,UWORD *,WORD,WORD); -extern WORD TakeNormalModulus(UWORD *,WORD *,UWORD *,WORD,WORD); +extern int TakeModulus(UWORD *,WORD *,UWORD *,WORD,WORD); +extern int TakeNormalModulus(UWORD *,WORD *,UWORD *,WORD,WORD); extern void TalToLine(UWORD); -extern WORD TenVec(PHEAD WORD *,WORD *,WORD,WORD); -extern WORD TenVecFind(PHEAD WORD *,WORD *); -extern WORD TermRenumber(WORD *,RENUMBER,WORD); +extern int TenVec(PHEAD WORD *,WORD *,WORD,WORD); +extern int TenVecFind(PHEAD WORD *,WORD *); +extern int TermRenumber(WORD *,RENUMBER,WORD); extern void TestDrop(void); extern void PutInVflags(WORD); -extern WORD TestMatch(PHEAD WORD *,WORD *); +extern int TestMatch(PHEAD WORD *,WORD *); extern WORD TestSub(PHEAD WORD *,WORD); extern LONG TimeCPU(WORD); extern LONG TimeChildren(WORD); @@ -733,47 +731,46 @@ extern LONG Timer(int); extern int GetTimerInfo(LONG **,LONG **); extern void WriteTimerInfo(LONG *,LONG *); extern LONG GetWorkerTimes(void); -extern WORD ToStorage(EXPRESSIONS,POSITION *); +extern int ToStorage(EXPRESSIONS,POSITION *); extern void TokenToLine(UBYTE *); -extern WORD Trace4(PHEAD WORD *,WORD *,WORD,WORD); -extern WORD Trace4Gen(PHEAD TRACES *,WORD); -extern WORD Trace4no(WORD,WORD *,TRACES *); -extern WORD TraceFind(PHEAD WORD *,WORD *); -extern WORD TraceN(PHEAD WORD *,WORD *,WORD,WORD); -extern WORD TraceNgen(PHEAD TRACES *,WORD); +extern int Trace4(PHEAD WORD *,WORD *,WORD,WORD); +extern int Trace4Gen(PHEAD TRACES *,WORD); +extern int Trace4no(WORD,WORD *,TRACES *); +extern int TraceFind(PHEAD WORD *,WORD *); +extern int TraceN(PHEAD WORD *,WORD *,WORD,WORD); +extern int TraceNgen(PHEAD TRACES *,WORD); extern WORD TraceNno(WORD,WORD *,TRACES *); -extern WORD Traces(PHEAD WORD *,WORD *,WORD,WORD); +extern int Traces(PHEAD WORD *,WORD *,WORD,WORD); extern WORD Trick(WORD *,TRACES *); -extern WORD TryDo(PHEAD WORD *,WORD *,WORD); +extern int TryDo(PHEAD WORD *,WORD *,WORD); extern void UnPack(UWORD *,WORD,WORD *,WORD *); -extern WORD VarStore(UBYTE *,WORD,WORD,WORD); +extern int VarStore(UBYTE *,WORD,WORD,WORD); extern WORD WildFill(PHEAD WORD *,WORD *,WORD *); -extern WORD WriteAll(void); -extern WORD WriteOne(UBYTE *,int,int,WORD); +extern int WriteAll(void); +extern int WriteOne(UBYTE *,int,int,WORD); extern void WriteArgument(WORD *); -extern WORD WriteExpression(WORD *,LONG); -extern WORD WriteInnerTerm(WORD *,WORD); +extern int WriteExpression(WORD *,LONG); +extern int WriteInnerTerm(WORD *,WORD); extern void WriteLists(void); extern void WriteSetup(void); extern void WriteStats(POSITION *,WORD,WORD); -extern WORD WriteSubTerm(WORD *,WORD); -extern WORD WriteTerm(WORD *,WORD *,WORD,WORD,WORD); -extern WORD execarg(PHEAD WORD *,WORD); -extern WORD execterm(PHEAD WORD *,WORD); +extern int WriteSubTerm(WORD *,WORD); +extern int WriteTerm(WORD *,WORD *,WORD,WORD,WORD); +extern int execarg(PHEAD WORD *,WORD); +extern int execterm(PHEAD WORD *,WORD); extern void SpecialCleanup(PHEAD0); extern void SetMods(void); extern void UnSetMods(void); /*---------------------------------------------------------------------*/ -extern WORD DoExecute(WORD,WORD); +extern int DoExecute(WORD,WORD); extern void SetScratch(FILEHANDLE *,POSITION *); extern void Warning(char *); extern void HighWarning(char *); extern int SpareTable(TABLES); extern UBYTE *strDup1(UBYTE *,char *); -extern void *Malloc(LONG); extern void *Malloc1(LONG,const char *); extern int DoTail(int,UBYTE **); extern int OpenInput(void); @@ -1037,7 +1034,7 @@ extern WORD *TakeArgContent(PHEAD WORD *, WORD *); extern WORD *MakeInteger(PHEAD WORD *,WORD *,WORD *); extern WORD *MakeMod(PHEAD WORD *,WORD *,WORD *); extern WORD FindArg(PHEAD WORD *); -extern WORD InsertArg(PHEAD WORD *,WORD *,int); +extern int InsertArg(PHEAD WORD *,WORD *,int); extern int CleanupArgCache(PHEAD WORD); extern int ArgSymbolMerge(WORD *, WORD *); extern int ArgDotproductMerge(WORD *, WORD *); @@ -1137,7 +1134,6 @@ extern int CoOn(UBYTE *); extern int CoOnce(UBYTE *); extern int CoOnly(UBYTE *); extern int CoOptimizeOption(UBYTE *); -extern int CoOptimize(UBYTE *); extern int CoPolyFun(UBYTE *); extern int CoPolyRatFun(UBYTE *); extern int CoPrint(UBYTE *); @@ -1277,28 +1273,10 @@ extern void AddPotModdollar(WORD); extern int Optimize(WORD, int); extern int ClearOptimize(void); -extern int LoadOpti(WORD); -extern int PutObject(WORD *,int); -extern void CleanOptiBuffer(void); -extern int PrintOptima(WORD); -extern int FindScratchName(void); -extern WORD MaxPowerOpti(LONG); -extern WORD HuntNumFactor(LONG,WORD *,int); -extern WORD HuntFactor(LONG,WORD *,int); -extern void HuntPairs(LONG,WORD); -extern void HuntBrackets(LONG); -extern int AddToOpti(WORD *,int); -extern LONG TestNewSca(LONG,WORD *,WORD *); -extern void NormOpti(WORD *); -extern void SortOpti(LONG); -extern void SplitOpti(WORD **,LONG); -extern void CombiOpti(void); extern int TakeLongRoot(UWORD *,WORD *,WORD); extern int TakeRatRoot(UWORD *,WORD *,WORD); extern int MakeRational(WORD ,WORD , WORD *, WORD *); extern int MakeLongRational(PHEAD UWORD *,WORD ,UWORD *,WORD ,UWORD *,WORD *); -extern void HuntPowers(LONG,WORD); -extern void HuntNumBrackets(LONG); extern void ClearTableTree(TABLES); extern int InsTableTree(TABLES,WORD *); extern void RedoTableTree(TABLES,int); @@ -1392,7 +1370,6 @@ extern int ExistsObject(DBASE *,MLONG,char *); extern int DeleteObject(DBASE *,MLONG,char *); extern int WriteObject(DBASE *,MLONG,char *,char *,MLONG); extern MLONG AddObject(DBASE *,MLONG,char *,char *); -extern int Cleanup(DBASE *); extern DBASE *NewDbase(char *,MLONG); extern void FreeTableBase(DBASE *); extern int ComposeTableNames(DBASE *); @@ -1458,7 +1435,7 @@ extern int IniSortBlocks(int); extern int UpdateSortBlocks(int); extern int TreatIndexEntry(PHEAD LONG); extern WORD GetTerm2(PHEAD WORD *); -extern void SetHideFiles(void); +extern void SetHideFiles(void); #endif @@ -1517,16 +1494,16 @@ extern UWORD iranf(PHEAD UWORD); extern void iniwranf(PHEAD0); extern UBYTE *PreRandom(UBYTE *); -extern WORD *PolyNormPoly (PHEAD WORD); +extern WORD *PolyNormPoly(PHEAD WORD); extern WORD *EvaluateGcd(PHEAD WORD *); -extern int TreatPolyRatFun(PHEAD WORD *); +extern int TreatPolyRatFun(PHEAD WORD *); -extern WORD ReadSaveHeader(void); -extern WORD ReadSaveIndex(FILEINDEX *); -extern WORD ReadSaveExpression(UBYTE *,UBYTE *,LONG *,LONG *); +extern int ReadSaveHeader(void); +extern LONG ReadSaveIndex(FILEINDEX *); +extern LONG ReadSaveExpression(UBYTE *,UBYTE *,LONG *,LONG *); extern UBYTE *ReadSaveTerm32(UBYTE *,UBYTE *,UBYTE **,UBYTE *,UBYTE *,int); -extern WORD ReadSaveVariables(UBYTE *,UBYTE *,LONG *,LONG *,INDEXENTRY *,LONG *); -extern WORD WriteStoreHeader(WORD); +extern LONG ReadSaveVariables(UBYTE *,UBYTE *,LONG *,LONG *,INDEXENTRY *,LONG *); +extern LONG WriteStoreHeader(WORD); extern void InitRecovery(void); extern int CheckRecoveryFile(void); @@ -1551,39 +1528,39 @@ extern void ExprStatus(EXPRESSIONS); extern void iniTools(void); extern int TestTerm(WORD *); -extern WORD RunTransform(PHEAD WORD *term, WORD *params); -extern WORD RunEncode(PHEAD WORD *fun, WORD *args, WORD *info); -extern WORD RunDecode(PHEAD WORD *fun, WORD *args, WORD *info); -extern WORD RunReplace(PHEAD WORD *fun, WORD *args, WORD *info); -extern WORD RunImplode(WORD *fun, WORD *args); -extern WORD RunExplode(PHEAD WORD *fun, WORD *args); +extern int RunTransform(PHEAD WORD *term, WORD *params); +extern int RunEncode(PHEAD WORD *fun, WORD *args, WORD *info); +extern int RunDecode(PHEAD WORD *fun, WORD *args, WORD *info); +extern int RunReplace(PHEAD WORD *fun, WORD *args, WORD *info); +extern int RunImplode(WORD *fun, WORD *args); +extern int RunExplode(PHEAD WORD *fun, WORD *args); extern int TestArgNum(int n, int totarg, WORD *args); extern WORD PutArgInScratch(WORD *arg,UWORD *scrat); extern UBYTE *ReadRange(UBYTE *s, WORD *out, int par); -extern int FindRange(PHEAD WORD *,WORD *,WORD *,WORD); -extern WORD RunPermute(PHEAD WORD *fun, WORD *args, WORD *info); -extern WORD RunReverse(PHEAD WORD *fun, WORD *args); -extern WORD RunCycle(PHEAD WORD *fun, WORD *args, WORD *info); -extern WORD RunAddArg(PHEAD WORD *fun, WORD *args); -extern WORD RunMulArg(PHEAD WORD *fun, WORD *args); -extern WORD RunIsLyndon(PHEAD WORD *fun, WORD *args, int par); +extern int FindRange(PHEAD WORD *,WORD *,WORD *,WORD); +extern int RunPermute(PHEAD WORD *fun, WORD *args, WORD *info); +extern int RunReverse(PHEAD WORD *fun, WORD *args); +extern int RunCycle(PHEAD WORD *fun, WORD *args, WORD *info); +extern int RunAddArg(PHEAD WORD *fun, WORD *args); +extern int RunMulArg(PHEAD WORD *fun, WORD *args); +extern int RunIsLyndon(PHEAD WORD *fun, WORD *args, int par); extern WORD RunToLyndon(PHEAD WORD *fun, WORD *args, int par); -extern WORD RunDropArg(PHEAD WORD *fun, WORD *args); -extern WORD RunSelectArg(PHEAD WORD *fun, WORD *args); -extern WORD RunDedup(PHEAD WORD *fun, WORD *args); -extern WORD RunZtoHArg(PHEAD WORD *fun, WORD *args); -extern WORD RunHtoZArg(PHEAD WORD *fun, WORD *args); +extern int RunDropArg(PHEAD WORD *fun, WORD *args); +extern int RunSelectArg(PHEAD WORD *fun, WORD *args); +extern int RunDedup(PHEAD WORD *fun, WORD *args); +extern int RunZtoHArg(PHEAD WORD *fun, WORD *args); +extern int RunHtoZArg(PHEAD WORD *fun, WORD *args); extern int NormPolyTerm(PHEAD WORD *); extern WORD ComparePoly(WORD *, WORD *, WORD); extern int ConvertToPoly(PHEAD WORD *, WORD *,WORD *,WORD); extern int LocalConvertToPoly(PHEAD WORD *, WORD *, WORD,WORD); extern int ConvertFromPoly(PHEAD WORD *, WORD *, WORD, WORD, WORD, WORD); -extern WORD FindSubterm(WORD *); -extern WORD FindLocalSubterm(PHEAD WORD *, WORD); +extern int FindSubterm(WORD *); +extern int FindLocalSubterm(PHEAD WORD *, WORD); extern void PrintSubtermList(int,int); extern void PrintExtraSymbol(int,WORD *,int); -extern WORD FindSubexpression(WORD *); +extern int FindSubexpression(WORD *); extern void UpdateMaxSize(void); @@ -1601,16 +1578,10 @@ extern int IniFbuffer(WORD); extern void IniFbufs(void); extern int GCDfunction(PHEAD WORD *,WORD); extern WORD *GCDfunction3(PHEAD WORD *,WORD *); -extern WORD *GCDfunction4(PHEAD WORD *,WORD *); extern int ReadPolyRatFun(PHEAD WORD *); extern int FromPolyRatFun(PHEAD WORD *, WORD **, WORD **); -extern void PRFnormalize(PHEAD WORD *); -extern WORD *PRFadd(PHEAD WORD *, WORD *); extern WORD *PolyDiv(PHEAD WORD *,WORD *,char *); -extern WORD *PolyGCD(PHEAD WORD *,WORD *); -extern WORD *PolyAdd(PHEAD WORD *,WORD *); extern void GCDclean(PHEAD WORD *, WORD *); -extern int RatFunNormalize(PHEAD WORD *); extern WORD *TakeSymbolContent(PHEAD WORD *,WORD *); extern int GCDterms(PHEAD WORD *,WORD *,WORD *); extern WORD *PutExtraSymbols(PHEAD WORD *,WORD,int *); @@ -1672,7 +1643,6 @@ extern int DoPreOpenDictionary(UBYTE *s); extern void RemoveDictionary(DICTIONARY *dict); extern void UnSetDictionary(void); extern int SetDictionaryOptions(UBYTE *options); -extern int SelectDictionary(UBYTE *name,UBYTE *options); extern int AddToDictionary(DICTIONARY *dict,UBYTE *left,UBYTE *right); extern int AddDictionary(UBYTE *name); extern int FindDictionary(UBYTE *name); @@ -1701,9 +1671,6 @@ extern WORD GetFromSpectator(WORD *,WORD); extern void FlushSpectators(void); extern WORD *PreGCD(PHEAD WORD *, WORD *,int); -extern WORD *FindCommonVariables(PHEAD int,int); -extern void AddToSymbolList(PHEAD WORD); -extern int AddToListPoly(PHEAD0); extern int InvPoly(PHEAD WORD *,WORD,WORD); extern int ReadFromScratch(FILEHANDLE *,POSITION *,UBYTE *,POSITION *); @@ -1728,7 +1695,6 @@ extern UBYTE *SkipName(UBYTE *); extern UBYTE *ConstructName(UBYTE *,UBYTE); extern int DoSetUserFlag(UBYTE *); extern int DoClearUserFlag(UBYTE *); -extern int DoUserFlag(UBYTE *,int); VERTEX *CreateVertex(MODEL *); UBYTE *ReadParticle(UBYTE *, VERTEX *,MODEL *, int); @@ -1744,11 +1710,11 @@ int CoCreateAllLoops(UBYTE *); int CoCreateAllPaths(UBYTE *); int CoCreateAll(UBYTE *); -WORD AllLoops(PHEAD WORD *,WORD); +int AllLoops(PHEAD WORD *,WORD); LONG StartLoops(PHEAD WORD *,WORD,LONG,WORD,WORD *,WORD,WORD *,WORD); LONG GenLoops(PHEAD WORD *,WORD,LONG,WORD,WORD *,WORD,WORD *,WORD); void LoopOutput(PHEAD WORD *,WORD,WORD *,WORD); -WORD AllPaths(PHEAD WORD *,WORD); +int AllPaths(PHEAD WORD *,WORD); LONG GenPaths(PHEAD WORD *,WORD,LONG,WORD,WORD *,WORD,WORD *,WORD); void PathOutput(PHEAD WORD *,WORD,WORD *,WORD); @@ -1759,7 +1725,6 @@ void SetupMZVTables(void); void SetupMPFTables(void); void ClearMZVTables(void); int EvaluateEuler(PHEAD WORD *,WORD,WORD); -int EvaluateMZVhalf(PHEAD WORD *,WORD,WORD); int EvaluateSqrt(PHEAD WORD *,WORD,WORD); int CoEvaluate(UBYTE *); int PrintFloat(WORD *fun,int numdigits); @@ -1768,8 +1733,8 @@ int CoToFloat(UBYTE *); int ToRat(PHEAD WORD *,WORD); int ToFloat(PHEAD WORD *,WORD); WORD FloatFunToRat(PHEAD UWORD *,WORD *); -WORD AddWithFloat(PHEAD WORD **,WORD **); -WORD MergeWithFloat(PHEAD WORD **,WORD **); +int AddWithFloat(PHEAD WORD **,WORD **); +int MergeWithFloat(PHEAD WORD **,WORD **); void ClearfFloat(void); int TestFloat(WORD *); SBYTE *ReadFloat(SBYTE *); diff --git a/sources/diagrams.c b/sources/diagrams.c index f240f657..68354878 100644 --- a/sources/diagrams.c +++ b/sources/diagrams.c @@ -347,12 +347,12 @@ int DoCanonicalize(PHEAD WORD *term, WORD *params) #ifdef OLDTOPO -WORD GenTopologies(PHEAD WORD *term,WORD level) +int GenTopologies(PHEAD WORD *term,WORD level) { WORD *t1, *tt1, *tstop, *t, *tt; WORD *oldworkpointer = AT.WorkPointer; WORD option1 = 0, option2 = 0, setoption = -1; - WORD retval; + int retval; /* We have to go through the testing procedure again, because there could diff --git a/sources/diawrap.cc b/sources/diawrap.cc index 4c40e4ba..c6d4ddb4 100644 --- a/sources/diawrap.cc +++ b/sources/diawrap.cc @@ -729,7 +729,7 @@ Bool ProcessTopology(EGraph *eg, void *ti) // #] ProcessTopology : // #[ GenDiagrams : -WORD GenDiagrams(PHEAD WORD *term, WORD level) +int GenDiagrams(PHEAD WORD *term, WORD level) { Model *model; MODEL *m; @@ -959,7 +959,7 @@ int processVertex(TOPOTYPE *TopoInf, int pointsremaining, int level) #define TOPO_MAXVERT 10 -WORD GenTopologies(PHEAD WORD *term, WORD level) +int GenTopologies(PHEAD WORD *term, WORD level) { Options *opt = new Options; int nlegs, nloops, i, identical; diff --git a/sources/execute.c b/sources/execute.c index 80ff8429..8877359d 100644 --- a/sources/execute.c +++ b/sources/execute.c @@ -44,7 +44,7 @@ par == 0 after .sort */ -WORD CleanExpr(WORD par) +int CleanExpr(WORD par) { GETIDENTITY WORD j, n, i; @@ -208,10 +208,11 @@ WORD CleanExpr(WORD par) */ -WORD PopVariables(void) +int PopVariables(void) { GETIDENTITY - WORD i, j, retval; + WORD i, j; + int retval; UBYTE *s; retval = CleanExpr(1); @@ -612,10 +613,10 @@ restart:; #[ DoExecute : */ -WORD DoExecute(WORD par, WORD skip) +int DoExecute(WORD par, WORD skip) { GETIDENTITY - WORD RetCode = 0; + int RetCode = 0; int i, oldmultithreaded = AS.MultiThreaded; #ifdef PARALLELCODE int j; @@ -1108,7 +1109,7 @@ if ( AC.SwitchInArray > 0 ) { 15-oct-1991 */ -WORD PutBracket(PHEAD WORD *termin) +int PutBracket(PHEAD WORD *termin) { GETBIDENTITY WORD *t, *t1, *b, i, j, *lastfun; diff --git a/sources/findpat.c b/sources/findpat.c index 026c6532..17538e85 100644 --- a/sources/findpat.c +++ b/sources/findpat.c @@ -58,7 +58,7 @@ to any of these sets. */ -WORD FindOnly(PHEAD WORD *term, WORD *pattern) +int FindOnly(PHEAD WORD *term, WORD *pattern) { GETBIDENTITY WORD *t, *m; @@ -416,7 +416,7 @@ EndLoop:; */ -WORD FindOnce(PHEAD WORD *term, WORD *pattern) +int FindOnce(PHEAD WORD *term, WORD *pattern) { GETBIDENTITY WORD *t, *m; @@ -1067,7 +1067,7 @@ WORD FindMulti(PHEAD WORD *term, WORD *pattern) */ -WORD FindRest(PHEAD WORD *term, WORD *pattern) +int FindRest(PHEAD WORD *term, WORD *pattern) { GETBIDENTITY WORD *t, *m, *tt, wild, regular; diff --git a/sources/float.c b/sources/float.c index 9f2ad055..10d24ad5 100644 --- a/sources/float.c +++ b/sources/float.c @@ -1413,7 +1413,7 @@ int ToRat(PHEAD WORD *term, WORD level) #[ AddWithFloat : */ -WORD AddWithFloat(PHEAD WORD **ps1, WORD **ps2) +int AddWithFloat(PHEAD WORD **ps1, WORD **ps2) { GETBIDENTITY SORTING *S = AT.SS; @@ -1534,11 +1534,12 @@ WORD AddWithFloat(PHEAD WORD **ps1, WORD **ps2) does this as well. */ -WORD MergeWithFloat(PHEAD WORD **interm1, WORD **interm2) +int MergeWithFloat(PHEAD WORD **interm1, WORD **interm2) { GETBIDENTITY WORD *coef1, *coef2, size1, size2, *fun1, *fun2, *fun3, *tt; - WORD sign3,j,jj, *t1, *t2, i, *term1 = *interm1, *term2 = *interm2, retval = 0; + WORD sign3,j,jj, *t1, *t2, i, *term1 = *interm1, *term2 = *interm2; + int retval = 0; coef1 = term1+*term1; size1 = coef1[-1]; coef1 -= ABS(size1); coef2 = term2+*term2; size2 = coef2[-1]; coef2 -= ABS(size2); if ( AT.SortFloatMode == 3 ) { diff --git a/sources/form3.h b/sources/form3.h index dec835a6..f5719006 100644 --- a/sources/form3.h +++ b/sources/form3.h @@ -59,8 +59,6 @@ #ifdef LINUX32 #define UNIX #define LINUX -#define ILP32 -#define SIZEOF_LONG_LONG 8 #define _FILE_OFFSET_BITS 64 #define WITHZLIB #define WITHGMP @@ -70,7 +68,6 @@ #ifdef LINUX64 #define UNIX #define LINUX -#define LP64 #define WITHZLIB #define WITHGMP #define WITHPOSIXCLOCK @@ -79,15 +76,12 @@ #ifdef APPLE32 #define UNIX -#define ILP32 -#define SIZEOF_LONG_LONG 8 #define _FILE_OFFSET_BITS 64 #define WITHZLIB #endif #ifdef APPLE64 #define UNIX -#define LP64 #define WITHZLIB #define WITHGMP #define WITHPOSIXCLOCK @@ -98,19 +92,11 @@ #ifdef CYGWIN32 #define UNIX -#define ILP32 -#define SIZEOF_LONG_LONG 8 #endif #ifdef _MSC_VER #define WINDOWS #define _CRT_SECURE_NO_WARNINGS -#if defined(_WIN64) -#define LLP64 -#elif defined(_WIN32) -#define ILP32 -#define SIZEOF_LONG_LONG 8 -#endif #endif /* @@ -204,103 +190,49 @@ #error UNIX or WINDOWS must be defined! #endif -/* - * Data model. ILP32 or LLP64 or LP64 must be defined. - * - * Here we define basic types WORD, LONG and their unsigned versions - * UWORD and ULONG. LONG must be double size of WORD. Their actual types - * are system-dependent. BITSINWORD and BITSINLONG are also defined. - * INT16, INT32 (also INT64 and INT128 if available) are used for - * system independent saved expressions (store.c). - */ -#if defined(ILP32) - -typedef short WORD; -typedef long LONG; -typedef unsigned short UWORD; -typedef unsigned long ULONG; -#define BITSINWORD 16 -#define BITSINLONG 32 -#define INT16 short -#define INT32 int -#undef INT64 -#undef INT128 - -#ifdef SIZEOF_LONG_LONG -#if SIZEOF_LONG_LONG == 8 -#define INT64 long long -#endif -#endif - -#ifndef INT64 -#error INT64 is not available! -#endif - -#define WORD_MIN_VALUE SHRT_MIN -#define WORD_MAX_VALUE SHRT_MAX -#define LONG_MIN_VALUE LONG_MIN -#define LONG_MAX_VALUE LONG_MAX - -#elif defined(LLP64) - -typedef int WORD; -typedef long long LONG; -typedef unsigned int UWORD; -typedef unsigned long long ULONG; -#define BITSINWORD 32 -#define BITSINLONG 64 -#define INT16 short -#define INT32 int -#define INT64 long long -#undef INT128 - -#define WORD_MIN_VALUE INT_MIN -#define WORD_MAX_VALUE INT_MAX -#define LONG_MIN_VALUE LLONG_MIN -#define LONG_MAX_VALUE LLONG_MAX - -#elif defined(LP64) - -typedef int WORD; -typedef long LONG; -typedef unsigned int UWORD; -typedef unsigned long ULONG; -#define BITSINWORD 32 -#define BITSINLONG 64 -#define INT16 short -#define INT32 int -#define INT64 long -#undef INT128 - -#define WORD_MIN_VALUE INT_MIN -#define WORD_MAX_VALUE INT_MAX -#define LONG_MIN_VALUE LONG_MIN -#define LONG_MAX_VALUE LONG_MAX - +#include + +#if UINTPTR_MAX == UINT64_MAX + typedef int32_t WORD; + typedef int64_t LONG; + typedef uint32_t UWORD; + typedef uint64_t ULONG; + #define BITSINWORD 32 + #define BITSINLONG 64 + #define WORD_MIN_VALUE INT32_MIN + #define WORD_MAX_VALUE INT32_MAX + #define LONG_MIN_VALUE INT64_MIN + #define LONG_MAX_VALUE INT64_MAX +#elif UINTPTR_MAX == UINT32_MAX + typedef int16_t WORD; + typedef int32_t LONG; + typedef uint16_t UWORD; + typedef uint32_t ULONG; + #define BITSINWORD 16 + #define BITSINLONG 32 + #define WORD_MIN_VALUE INT16_MIN + #define WORD_MAX_VALUE INT16_MAX + #define LONG_MIN_VALUE INT32_MIN + #define LONG_MAX_VALUE INT32_MAX #else -#error ILP32 or LLP64 or LP64 must be defined! + #error Can not detect if this is a 32-bit or 64-bit platform. #endif STATIC_ASSERT(sizeof(WORD) * 8 == BITSINWORD); STATIC_ASSERT(sizeof(LONG) * 8 == BITSINLONG); STATIC_ASSERT(sizeof(WORD) * 2 == sizeof(LONG)); STATIC_ASSERT(sizeof(LONG) >= sizeof(int *)); -STATIC_ASSERT(sizeof(INT16) == 2); -STATIC_ASSERT(sizeof(INT32) == 4); -STATIC_ASSERT(sizeof(INT64) == 8); -#ifdef INT128 -STATIC_ASSERT(sizeof(INT128) == 16); -#endif - -#if BITSINWORD == 32 -#define WORDSIZE32 1 -#endif +STATIC_ASSERT(sizeof(LONG) >= sizeof(int *)); +STATIC_ASSERT(sizeof(int *) >= sizeof(int)); +STATIC_ASSERT(sizeof(int) >= sizeof(WORD)); +STATIC_ASSERT(sizeof(WORD) >= sizeof(char)); +STATIC_ASSERT(sizeof(char) == 1); typedef signed char SBYTE; typedef unsigned char UBYTE; typedef unsigned int UINT; typedef ULONG RLONG; /* Used in reken.c. */ -typedef INT64 MLONG; /* See commentary in minos.h. */ +typedef int64_t MLONG; /* See commentary in minos.h. */ /* * NOTE: we don't use the standard _Bool (or C++ bool) because its size is * implementation-dependent and messes up the traditional PADXXX macros. @@ -473,6 +405,8 @@ template struct calc { #include "declare.h" #include "variable.h" +STATIC_ASSERT(sizeof(off_t) >= sizeof(LONG)); + /* * The interface to file routines for UNIX or non-UNIX (Windows). */ diff --git a/sources/fsizes.h b/sources/fsizes.h index 6fa740ac..f2da8dbd 100644 --- a/sources/fsizes.h +++ b/sources/fsizes.h @@ -42,31 +42,34 @@ old value was WILDOFFSET 200000100 be careful with old .sav files!!! */ -#ifdef WORDSIZE32 -#define MAXPOWER 500000000 -#define MAXVARIABLES 200000050 -#define MAXDOLLARVARIABLES 1000000000L -#define WILDOFFSET 400000100 -#define MAXINNAMETREE 2000000000 -#define MAXDUMMIES 100000000 -#define WORKBUFFER 40000000 -#define MAXTER 40000 -#define HALFMAX 0x10000 -#define MAXSUBEXPRESSIONS 0x1FFFFFF -#define MAXFILESTREAMSIZE 1024 +#if BITSINWORD == 32 + #define MAXPOWER 500000000 + #define MAXVARIABLES 200000050 + #define MAXDOLLARVARIABLES 1000000000L + #define WILDOFFSET 400000100 + #define MAXINNAMETREE 2000000000 + #define MAXDUMMIES 100000000 + #define WORKBUFFER 40000000 + #define MAXTER 40000 + #define HALFMAX 0x10000 + #define MAXSUBEXPRESSIONS 0x1FFFFFF + #define MAXFILESTREAMSIZE 1024 +#elif BITSINWORD == 16 + #define MAXPOWER 10000 + #define MAXVARIABLES 8050 + #define MAXDOLLARVARIABLES 32000 + #define WILDOFFSET 6100 + #define MAXINNAMETREE 32768 + #define MAXDUMMIES 1000 + #define WORKBUFFER 10000000 + #define MAXTER 10000 + #define HALFMAX 0x100 + #define MAXSUBEXPRESSIONS 0x3FFF + #define MAXFILESTREAMSIZE 1048576 #else -#define MAXPOWER 10000 -#define MAXVARIABLES 8050 -#define MAXDOLLARVARIABLES 32000 -#define WILDOFFSET 6100 -#define MAXINNAMETREE 32768 -#define MAXDUMMIES 1000 -#define WORKBUFFER 10000000 -#define MAXTER 10000 -#define HALFMAX 0x100 -#define MAXSUBEXPRESSIONS 0x3FFF -#define MAXFILESTREAMSIZE 1048576 + #error Only 64-bit and 32-bit platforms are supported. #endif + #define MAXENAME 16 #define MAXSAVEFUNCTION 16384 @@ -101,27 +104,30 @@ #define NUMTABLEENTRIES 1000 #define COMPILERBUFFER 20000 -#ifdef WORDSIZE32 -#ifdef WITHPTHREADS -#define SMALLBUFFER 300000000L -#define SMALLOVERFLOW 600000000L -#define TERMSSMALL 3000000L -#define LARGEBUFFER 1500000000L -#define SCRATCHSIZE 500000000L -#else -#define SMALLBUFFER 150000000L -#define SMALLOVERFLOW 300000000L -#define TERMSSMALL 2000000L -#define LARGEBUFFER 800000000L -#define SCRATCHSIZE 500000000L -#endif +#if BITSINWORD == 32 + #ifdef WITHPTHREADS + #define SMALLBUFFER 300000000L + #define SMALLOVERFLOW 600000000L + #define TERMSSMALL 3000000L + #define LARGEBUFFER 1500000000L + #define SCRATCHSIZE 500000000L + #else + #define SMALLBUFFER 150000000L + #define SMALLOVERFLOW 300000000L + #define TERMSSMALL 2000000L + #define LARGEBUFFER 800000000L + #define SCRATCHSIZE 500000000L + #endif +#elif BITSINWORD == 16 + #define SMALLBUFFER 10000000L + #define SMALLOVERFLOW 20000000L + #define TERMSSMALL 100000L + #define LARGEBUFFER 50000000L + #define SCRATCHSIZE 50000000L #else -#define SMALLBUFFER 10000000L -#define SMALLOVERFLOW 20000000L -#define TERMSSMALL 100000L -#define LARGEBUFFER 50000000L -#define SCRATCHSIZE 50000000L + #error Only 64-bit and 32-bit platforms are supported. #endif + #define MAXPATCHES 256 #define MAXFPATCHES 256 #define SORTIOSIZE 200000L @@ -158,12 +164,14 @@ #define THREADSCRATCHSIZE 100000L #define THREADSCRATCHOUTSIZE 2500000L -#ifdef WORDSIZE32 -#define MAXTABLECOMBUF 100000000000L -#define MAXCOMBUFRHS 1000000000L +#if BITSINWORD == 32 + #define MAXTABLECOMBUF 100000000000L + #define MAXCOMBUFRHS 1000000000L +#elif BITSINWORD == 16 + #define MAXTABLECOMBUF 1000000L + #define MAXCOMBUFRHS 32500L #else -#define MAXTABLECOMBUF 1000000L -#define MAXCOMBUFRHS 32500L + #error Only 64-bit and 32-bit platforms are supported. #endif #define NUMSTORECACHES 4 diff --git a/sources/function.c b/sources/function.c index 0a5753ad..cdc5563e 100644 --- a/sources/function.c +++ b/sources/function.c @@ -48,7 +48,7 @@ function */ -WORD MakeDirty(WORD *term, WORD *x, WORD par) +int MakeDirty(WORD *term, WORD *x, WORD par) { WORD *next, *n; if ( !par ) { @@ -370,7 +370,7 @@ WORD Symmetrize(PHEAD WORD *func, WORD *Lijst, WORD ngroups, WORD gsize, 1 if they are OK. */ -WORD CompGroup(PHEAD WORD type, WORD **args, WORD *a1, WORD *a2, WORD num) +int CompGroup(PHEAD WORD type, WORD **args, WORD *a1, WORD *a2, WORD num) { GETBIDENTITY WORD *t1, *t2, i1, i2, n, k; @@ -515,7 +515,7 @@ int FullSymmetrize(PHEAD WORD *fun, int type) >0 -> must have right number of arguments */ -WORD SymGen(PHEAD WORD *term, WORD *params, WORD num, WORD level) +int SymGen(PHEAD WORD *term, WORD *params, WORD num, WORD level) { GETBIDENTITY WORD *t, *r, *m; @@ -630,7 +630,7 @@ NextGroup:; */ -WORD SymFind(PHEAD WORD *term, WORD *params) +int SymFind(PHEAD WORD *term, WORD *params) { GETBIDENTITY WORD *t, *r, *m; @@ -823,7 +823,7 @@ int ChainOut(PHEAD WORD *term, WORD funnum) ?a,?b give a match that later turns out to be useless. */ -WORD MatchFunction(PHEAD WORD *pattern, WORD *interm, WORD *wilds) +int MatchFunction(PHEAD WORD *pattern, WORD *interm, WORD *wilds) { GETBIDENTITY WORD *m, *t, *r, i; @@ -1613,7 +1613,7 @@ endoloop:; function. This will take care of whatever happens in MatchE etc. */ -WORD ScanFunctions(PHEAD WORD *inpat, WORD *inter, WORD par) +int ScanFunctions(PHEAD WORD *inpat, WORD *inter, WORD par) { GETBIDENTITY WORD i, *m, *t, *r, sym, psym; diff --git a/sources/if.c b/sources/if.c index f1f6f625..3a9823a0 100644 --- a/sources/if.c +++ b/sources/if.c @@ -277,7 +277,7 @@ int FindVar(WORD *v, WORD *term) Note that the whole setup asks for recursions. */ -WORD DoIfStatement(PHEAD WORD *ifcode, WORD *term) +int DoIfStatement(PHEAD WORD *ifcode, WORD *term) { GETBIDENTITY WORD *ifstop, *ifp; diff --git a/sources/lus.c b/sources/lus.c index a52f82c1..8aae0fc7 100644 --- a/sources/lus.c +++ b/sources/lus.c @@ -647,7 +647,7 @@ int SortTheList(int *slist, int num) To facilitate this we copy the relevant arguments into the workspace. */ -WORD AllLoops(PHEAD WORD *term,WORD level) +int AllLoops(PHEAD WORD *term,WORD level) { CBUF *C = cbuf+AM.rbufnum; WORD vcode = C->lhs[level][2]; /* The input function */ @@ -1120,7 +1120,7 @@ void LoopOutput(PHEAD WORD *term, WORD level, WORD *loop, WORD nloop) given in advance. This endfun can occur only twice. */ -WORD AllPaths(PHEAD WORD *term,WORD level) +int AllPaths(PHEAD WORD *term,WORD level) { CBUF *C = cbuf+AM.rbufnum; WORD endcode = C->lhs[level][2]; /* The endpoint function */ diff --git a/sources/message.c b/sources/message.c index 788296ba..bb28e44b 100644 --- a/sources/message.c +++ b/sources/message.c @@ -821,7 +821,7 @@ int MesCall(char *s) #[ MesCerr : */ -WORD MesCerr(char *s, UBYTE *t) +int MesCerr(char *s, UBYTE *t) { UBYTE *u, c; WORD i = 11; @@ -840,7 +840,7 @@ WORD MesCerr(char *s, UBYTE *t) #[ MesComp : */ -WORD MesComp(char *s, UBYTE *p, UBYTE *q) +int MesComp(char *s, UBYTE *p, UBYTE *q) { UBYTE c; c = *++q; *q = 0; diff --git a/sources/minos.c b/sources/minos.c index 2e4358a7..f3b014c8 100644 --- a/sources/minos.c +++ b/sources/minos.c @@ -295,13 +295,11 @@ int ReadIndex(DBASE *d) Allocate the pieces one by one (makes it easier to give it back) */ if ( d->info.numberofindexblocks <= 0 ) return(0); -#ifndef WORDSIZE32 if ( sizeof(INDEXBLOCK)*d->info.numberofindexblocks > MAXINDEXSIZE ) { MesPrint("We need more than %ld bytes for the index.\n",MAXINDEXSIZE); MesPrint("The file %s may not be a proper database\n",d->name); return(-1); } -#endif size = sizeof(INDEXBLOCK *)*d->info.numberofindexblocks; if ( ( ib = (INDEXBLOCK **)Malloc1(size,"tb,index") ) == 0 ) return(-1); for ( i = 0; i < d->info.numberofindexblocks; i++ ) { diff --git a/sources/minos.h b/sources/minos.h index d79e110d..faab2791 100644 --- a/sources/minos.h +++ b/sources/minos.h @@ -59,19 +59,21 @@ typedef long MLONG; */ -#define MAXBASES 16 -#ifdef WORDSIZE32 -#define NUMOBJECTS 1024 -#define MAXINDEXSIZE 1000000000L -#define NAMETABLESIZE 1008 -#define ELEMENTSIZE 256 +#if BITSINWORD == 32 + #define NUMOBJECTS 1024 + #define MAXINDEXSIZE 1000000000L + #define NAMETABLESIZE 1008 + #define ELEMENTSIZE 256 +#elif BITSINWORD == 16 + #define NUMOBJECTS 100 + #define MAXINDEXSIZE 33000000L + #define NAMETABLESIZE 1008 + #define ELEMENTSIZE 128 #else -#define NUMOBJECTS 100 -#define MAXINDEXSIZE 33000000L -#define NAMETABLESIZE 1008 -#define ELEMENTSIZE 128 + #error Only 64-bit and 32-bit platforms are supported. #endif + int minosread(FILE *f,char *buffer,MLONG size); int minoswrite(FILE *f,char *buffer,MLONG size); diff --git a/sources/names.c b/sources/names.c index 8dfdeb57..7e00fef1 100644 --- a/sources/names.c +++ b/sources/names.c @@ -554,7 +554,7 @@ int GetVar(UBYTE *name, WORD *type, WORD *number, int wantedtype, int par) #[ EntVar : */ -WORD EntVar(WORD type, UBYTE *name, WORD x, WORD y, WORD z, WORD d) +int EntVar(WORD type, UBYTE *name, WORD x, WORD y, WORD z, WORD d) { switch ( type ) { case CSYMBOL: diff --git a/sources/normal.c b/sources/normal.c index 4e99ae16..09321b26 100644 --- a/sources/normal.c +++ b/sources/normal.c @@ -51,7 +51,7 @@ void RatToFloat(mpf_t result, UWORD *formrat, int ratsize); #[ CompareFunctions : */ -WORD CompareFunctions(WORD *fleft,WORD *fright) +int CompareFunctions(WORD *fleft,WORD *fright) { WORD k, kk; if ( AC.properorderflag ) { @@ -115,7 +115,7 @@ WORD CompareFunctions(WORD *fleft,WORD *fright) of such funny functions. */ -WORD Commute(WORD *fleft, WORD *fright) +int Commute(WORD *fleft, WORD *fright) { WORD fun1, fun2; if ( *fleft == DOLLAREXPRESSION || *fright == DOLLAREXPRESSION ) return(0); @@ -190,7 +190,7 @@ WORD Commute(WORD *fleft, WORD *fright) */ -WORD Normalize(PHEAD WORD *term) +int Normalize(PHEAD WORD *term) { /* #[ Declarations : @@ -216,7 +216,8 @@ WORD Normalize(PHEAD WORD *term) WORD *n_coef, ncoef; /* Accumulator for the coefficient */ WORD *n_llnum, *lnum, nnum; WORD *termout, oldtoprhs = 0, subtype; - WORD ReplaceType, ReplaceVeto = 0, didcontr, regval = 0; + WORD ReplaceType, ReplaceVeto = 0, didcontr; + int regval = 0; WORD *ReplaceSub; WORD *fillsetexp; CBUF *C = cbuf+AT.ebufnum; @@ -4193,7 +4194,7 @@ regularratfun:; #[ ExtraSymbol : */ -WORD ExtraSymbol(WORD sym, WORD pow, WORD nsym, WORD *ppsym, WORD *ncoef) +int ExtraSymbol(WORD sym, WORD pow, WORD nsym, WORD *ppsym, WORD *ncoef) { WORD *m, i; i = nsym; @@ -4255,7 +4256,7 @@ WORD ExtraSymbol(WORD sym, WORD pow, WORD nsym, WORD *ppsym, WORD *ncoef) #[ DoTheta : */ -WORD DoTheta(PHEAD WORD *t) +int DoTheta(PHEAD WORD *t) { GETBIDENTITY WORD k, *r1, *r2, *tstop, type; @@ -4352,7 +4353,7 @@ WORD DoTheta(PHEAD WORD *t) #[ DoDelta : */ -WORD DoDelta(WORD *t) +int DoDelta(WORD *t) { WORD k, *r1, *r2, *tstop, isnum, isnum2, type = *t; if ( AC.BracketNormalize ) return(-1); @@ -5268,7 +5269,7 @@ int TestFunFlag(PHEAD WORD *tfun) #[ BracketNormalize : */ -WORD BracketNormalize(PHEAD WORD *term) +int BracketNormalize(PHEAD WORD *term) { WORD *stop = term+*term-3, *t, *tt, *tstart, *r; WORD *oldwork = AT.WorkPointer; diff --git a/sources/notation.c b/sources/notation.c index a05ba287..78271160 100644 --- a/sources/notation.c +++ b/sources/notation.c @@ -770,9 +770,10 @@ int ConvertFromPoly(PHEAD WORD *term, WORD *outterm, WORD from, WORD to, WORD of Notice that in TFORM we should be in sequential mode. */ -WORD FindSubterm(WORD *subterm) +int FindSubterm(WORD *subterm) { - WORD old[5], *ss, *term, number; + WORD old[5], *ss, *term; + int number; CBUF *C = cbuf + AM.sbufnum; LONG oldCpointer; term = subterm-1; @@ -839,9 +840,10 @@ WORD FindSubterm(WORD *subterm) Notice that in TFORM we should be in sequential mode. */ -WORD FindLocalSubterm(PHEAD WORD *subterm, WORD startebuf) +int FindLocalSubterm(PHEAD WORD *subterm, WORD startebuf) { - WORD old[5], *ss, *term, number, i, j, *t1, *t2; + WORD old[5], *ss, *term, i, j, *t1, *t2; + int number; CBUF *C = cbuf + AT.ebufnum; term = subterm-1; ss = subterm+subterm[1]; @@ -1091,9 +1093,10 @@ void PrintExtraSymbol(int num, WORD *terms,int par) Notice that in TFORM we should be in sequential mode. */ -WORD FindSubexpression(WORD *subexpr) +int FindSubexpression(WORD *subexpr) { - WORD *term, number; + WORD *term; + int number; CBUF *C = cbuf + AM.sbufnum; LONG oldCpointer; diff --git a/sources/opera.c b/sources/opera.c index 1d4e84d1..ed55d9c4 100644 --- a/sources/opera.c +++ b/sources/opera.c @@ -55,7 +55,7 @@ */ -WORD EpfFind(PHEAD WORD *term, WORD *params) +int EpfFind(PHEAD WORD *term, WORD *params) { GETBIDENTITY WORD *t, *m, *r, n1 = 0, n2, min = -1, count, fac; @@ -209,7 +209,7 @@ WORD EpfFind(PHEAD WORD *term, WORD *params) */ -WORD EpfCon(PHEAD WORD *term, WORD *params, WORD num, WORD level) +int EpfCon(PHEAD WORD *term, WORD *params, WORD num, WORD level) { GETBIDENTITY WORD *kron, *perm, *termout, *tstop, size2; @@ -415,11 +415,12 @@ WORD Trick(WORD *in, TRACES *t) */ -WORD Trace4no(WORD number, WORD *kron, TRACES *t) +int Trace4no(WORD number, WORD *kron, TRACES *t) { WORD i; WORD *p, *m; - WORD retval, *stop, oldsign; + WORD *stop, oldsign; + int retval; if ( !t->sgn ) { /* Startup */ if ( ( number < 0 ) || ( number & 1 ) ) return(0); if ( number <= 2 ) { @@ -691,13 +692,14 @@ NextE4: if ( t->lc4 < 0 ) goto NextE3; */ -WORD Trace4(PHEAD WORD *term, WORD *params, WORD num, WORD level) +int Trace4(PHEAD WORD *term, WORD *params, WORD num, WORD level) { GETBIDENTITY TRACES *t; WORD *p, *m, number, i; WORD *OldW; WORD j, minimum, minimum2, *min, *stopper; + int ret; OldW = AT.WorkPointer; if ( AN.numtracesctack >= AN.intracestack ) { number = AN.intracestack + 2; @@ -815,10 +817,10 @@ WORD Trace4(PHEAD WORD *term, WORD *params, WORD num, WORD level) Now the trace is in normal order */ } - number = Trace4Gen(BHEAD t,number); + ret = Trace4Gen(BHEAD t,number); AT.WorkPointer = OldW; AN.numtracesctack--; - return(number); + return(ret); } /* @@ -853,7 +855,7 @@ WORD Trace4(PHEAD WORD *term, WORD *params, WORD num, WORD level) */ -WORD Trace4Gen(PHEAD TRACES *t, WORD number) +int Trace4Gen(PHEAD TRACES *t, WORD number) { GETBIDENTITY WORD *termout, *stop; @@ -1379,12 +1381,13 @@ WORD TraceNno(WORD number, WORD *kron, TRACES *t) #[ TraceN : WORD TraceN(term,params,num,level) */ -WORD TraceN(PHEAD WORD *term, WORD *params, WORD num, WORD level) +int TraceN(PHEAD WORD *term, WORD *params, WORD num, WORD level) { GETBIDENTITY TRACES *t; WORD *p, *m, number, i; WORD *OldW; + int ret; if ( params[3] != GAMMA1 ) { MLOCK(ErrorMessageLock); MesPrint("Gamma5 not allowed in n-trace"); @@ -1426,10 +1429,10 @@ WORD TraceN(PHEAD WORD *term, WORD *params, WORD num, WORD level) t->termp = term; t->factor = params[4]; t->allsign = params[5]; - number = TraceNgen(BHEAD t,number); + ret = TraceNgen(BHEAD t,number); AT.WorkPointer = OldW; AN.numtracesctack--; - return(number); + return(ret); } /* @@ -1443,7 +1446,7 @@ WORD TraceN(PHEAD WORD *term, WORD *params, WORD num, WORD level) */ -WORD TraceNgen(PHEAD TRACES *t, WORD number) +int TraceNgen(PHEAD TRACES *t, WORD number) { GETBIDENTITY WORD *termout, *stop; @@ -1828,7 +1831,7 @@ WORD TraceNgen(PHEAD TRACES *t, WORD number) */ -WORD Traces(PHEAD WORD *term, WORD *params, WORD num, WORD level) +int Traces(PHEAD WORD *term, WORD *params, WORD num, WORD level) { GETBIDENTITY switch ( AT.TMout[2] ) { /* Subtype gives dimension */ @@ -1850,7 +1853,7 @@ WORD Traces(PHEAD WORD *term, WORD *params, WORD num, WORD level) #[ TraceFind : WORD TraceFind(term,params) */ -WORD TraceFind(PHEAD WORD *term, WORD *params) +int TraceFind(PHEAD WORD *term, WORD *params) { GETBIDENTITY WORD *p, *m, *to; @@ -1960,7 +1963,7 @@ F7: if ( AT.TMout[3] == GAMMA7 ) (AT.TMout[4])++; is applied (SR is the reversed string). */ -WORD Chisholm(PHEAD WORD *term, WORD level) +int Chisholm(PHEAD WORD *term, WORD level) { GETBIDENTITY WORD *t, *r, *m, *s, *tt, *rr; @@ -2175,7 +2178,7 @@ NextK:; #[ TenVecFind : WORD TenVecFind(term,params) */ -WORD TenVecFind(PHEAD WORD *term, WORD *params) +int TenVecFind(PHEAD WORD *term, WORD *params) { GETBIDENTITY WORD *t, *w, *m, *tstop; @@ -2309,7 +2312,7 @@ WORD TenVecFind(PHEAD WORD *term, WORD *params) #[ TenVec : WORD TenVec(term,params,num,level) */ -WORD TenVec(PHEAD WORD *term, WORD *params, WORD num, WORD level) +int TenVec(PHEAD WORD *term, WORD *params, WORD num, WORD level) { GETBIDENTITY WORD *t, *m, *w, *termout, *tstop, *outlist, *ou, *ww, *mm; diff --git a/sources/parallel.h b/sources/parallel.h index 54493b46..272ea7a4 100644 --- a/sources/parallel.h +++ b/sources/parallel.h @@ -125,16 +125,15 @@ extern "C" { # define PF_COMM MPI_COMM_WORLD # define PF_BYTE MPI_BYTE # define PF_INT MPI_INT -# if defined(ILP32) -# define PF_WORD MPI_SHORT -# define PF_LONG MPI_LONG -# elif defined(LLP64) -# define PF_WORD MPI_INT -# define PF_LONG MPI_LONG_LONG_INT -# elif defined(LP64) -# define PF_WORD MPI_INT -# define PF_LONG MPI_LONG -# endif +#if BITSINWORD == 32 +# define PF_WORD MPI_INT32_T +# define PF_LONG MPI_INT64_T +#elif BITSINWORD == 16 +# define PF_WORD MPI_INT16_T +# define PF_LONG MPI_INT32_T +#else +# error Can not detect if this is a 32-bit or 64-bit platform. +#endif /* #] macros & definitions : diff --git a/sources/pattern.c b/sources/pattern.c index 86f88819..7a7ffc20 100644 --- a/sources/pattern.c +++ b/sources/pattern.c @@ -94,11 +94,12 @@ are errors that occur in TFORM only and that may indicate problems. */ -WORD TestMatch(PHEAD WORD *term, WORD *level) +int TestMatch(PHEAD WORD *term, WORD *level) { GETBIDENTITY WORD *ll, *m, *w, *llf, *OldWork, *StartWork, *ww, *mm, *t, *OldTermBuffer = 0; - WORD power = 0, match = 0, i, msign = 0, ll2; + WORD power = 0, i, msign = 0, ll2; + int match = 0; int numdollars = 0, protosize, oldallnumrhs; CBUF *C = cbuf+AM.rbufnum, *CC; AT.idallflag = 0; @@ -1166,7 +1167,7 @@ EndLoop:; exponent, denominator. -WORD FindSpecial(WORD *term) +void FindSpecial(WORD *term) { WORD *t; WORD *tstop; @@ -1187,14 +1188,13 @@ WORD FindSpecial(WORD *term) } t += *t; } while ( t < tstop ); } - return(0); } #] FindSpecial : #[ FindAll : WORD FindAll(term,pattern,level,par) */ -WORD FindAll(PHEAD WORD *term, WORD *pattern, WORD level, WORD *par) +int FindAll(PHEAD WORD *term, WORD *pattern, WORD level, WORD *par) { GETBIDENTITY WORD *t, *m, *r, *mm, rnum; diff --git a/sources/proces.c b/sources/proces.c index e290de9d..00de4b2e 100644 --- a/sources/proces.c +++ b/sources/proces.c @@ -61,10 +61,11 @@ WORD printscratch[2]; * return on the spot by calling Terminate. */ -WORD Processor(void) +int Processor(void) { GETIDENTITY - WORD *term, *t, i, retval = 0, size; + WORD *term, *t, i, size; + int retval = 0; EXPRESSIONS e; POSITION position; WORD last, LastExpression, fromspectator; @@ -2171,7 +2172,7 @@ EndTest2:; * Special attention should be given to nested functions! */ -WORD InFunction(PHEAD WORD *term, WORD *termout) +int InFunction(PHEAD WORD *term, WORD *termout) { GETBIDENTITY WORD *m, *t, *r, *rr, sign = 1, oldncmod; @@ -2741,8 +2742,8 @@ wrongtype:; * @return Normal conventions (OK = 0). */ -WORD InsertTerm(PHEAD WORD *term, WORD replac, WORD extractbuff, WORD *position, WORD *termout, - WORD tepos) +int InsertTerm(PHEAD WORD *term, WORD replac, WORD extractbuff, WORD *position, WORD *termout, + WORD tepos) { GETBIDENTITY WORD *m, *t, *r, i, l2, j; @@ -3064,7 +3065,7 @@ WORD *PasteTerm(PHEAD WORD number, WORD *accum, WORD *position, WORD times, WORD * @param tepos the position of the subterm in term to be replaced */ -WORD FiniTerm(PHEAD WORD *term, WORD *accum, WORD *termout, WORD number, WORD tepos) +int FiniTerm(PHEAD WORD *term, WORD *accum, WORD *termout, WORD number, WORD tepos) { GETBIDENTITY WORD *m, *t, *r, i, numacc, l2, ipp; @@ -3263,11 +3264,12 @@ static LONG debugcounter = 0; * sorting routines. */ -WORD Generator(PHEAD WORD *term, WORD level) +int Generator(PHEAD WORD *term, WORD level) { GETBIDENTITY WORD replac, *accum, *termout, *t, i, j, tepos, applyflag = 0, *StartBuf; - WORD *a, power, power1, DumNow = AR.CurDum, oldtoprhs, oldatoprhs, retnorm, extractbuff; + WORD *a, power, power1, DumNow = AR.CurDum, oldtoprhs, oldatoprhs, extractbuff; + int ret; int *RepSto = AN.RepPoint, iscopy = 0; CBUF *C = cbuf+AM.rbufnum, *CC = cbuf + AT.ebufnum, *CCC = cbuf + AT.aebufnum; LONG posisub, oldcpointer, oldacpointer; @@ -3293,8 +3295,8 @@ WORD Generator(PHEAD WORD *term, WORD level) Renormalize: AN.PolyNormFlag = 0; AN.idfunctionflag = 0; - if ( ( retnorm = Normalize(BHEAD term) ) != 0 ) { - if ( retnorm > 0 ) { + if ( ( ret = Normalize(BHEAD term) ) != 0 ) { + if ( ret > 0 ) { if ( AT.WorkPointer < term + *term ) AT.WorkPointer = term + *term; goto ReStart; } @@ -3376,25 +3378,25 @@ SkipCount: level++; if ( PutBracket(BHEAD term) ) return(-1); AN.RepPoint = RepSto; *AT.WorkPointer = 0; - i = StoreTerm(BHEAD termout); + ret = StoreTerm(BHEAD termout); AT.WorkPointer = termout; CC->numrhs = oldtoprhs; CC->Pointer = CC->Buffer + oldcpointer; CCC->numrhs = oldatoprhs; CCC->Pointer = CCC->Buffer + oldacpointer; - return(i); + return(ret); } else { if ( AT.WorkPointer < term + *term ) AT.WorkPointer = term + *term; if ( AT.WorkPointer >= AT.WorkTop ) goto OverWork; *AT.WorkPointer = 0; AN.RepPoint = RepSto; - i = StoreTerm(BHEAD term); + ret = StoreTerm(BHEAD term); CC->numrhs = oldtoprhs; CC->Pointer = CC->Buffer + oldcpointer; CCC->numrhs = oldatoprhs; CCC->Pointer = CCC->Buffer + oldacpointer; - return(i); + return(ret); } } i = C->lhs[level][0]; @@ -3780,14 +3782,14 @@ SkipCount: level++; level = C->lhs[level][2]; break; case TYPETERM: - retnorm = execterm(BHEAD term,level); + ret = execterm(BHEAD term,level); AN.RepPoint = RepSto; AR.CurDum = DumNow; CC->numrhs = oldtoprhs; CC->Pointer = CC->Buffer + oldcpointer; CCC->numrhs = oldatoprhs; CCC->Pointer = CCC->Buffer + oldacpointer; - return(retnorm); + return(ret); case TYPEDETCURDUM: AT.WorkPointer = term + *term; AR.CurDum = DetCurDum(BHEAD term); @@ -4614,8 +4616,8 @@ AutoGen: i = *AT.TMout; char freezestring[] = "freeze<-xxxx"; #endif -WORD DoOnePow(PHEAD WORD *term, WORD power, WORD nexp, WORD * accum, - WORD *aa, WORD level, WORD *freeze) +int DoOnePow(PHEAD WORD *term, WORD power, WORD nexp, WORD * accum, + WORD *aa, WORD level, WORD *freeze) { GETBIDENTITY POSITION oldposition, startposition; @@ -4835,7 +4837,7 @@ PowCall2:; * multiplying term by term we call Generator again. */ -WORD Deferred(PHEAD WORD *term, WORD level) +int Deferred(PHEAD WORD *term, WORD level) { GETBIDENTITY POSITION startposition; @@ -4963,7 +4965,7 @@ DefCall:; * inside a function or dollar variable. */ -WORD PrepPoly(PHEAD WORD *term,WORD par) +int PrepPoly(PHEAD WORD *term,WORD par) { GETBIDENTITY WORD count = 0, i, jcoef, ncoef; @@ -5351,12 +5353,13 @@ endofit:; * @return Normal conventions (OK = 0). */ -WORD PolyFunMul(PHEAD WORD *term) +int PolyFunMul(PHEAD WORD *term) { GETBIDENTITY WORD *t, *fun1, *fun2, *t1, *t2, *m, *w, *ww, *tt1, *tt2, *tt4, *arg1, *arg2; WORD *tstop, i, dirty = 0, OldPolyFunPow = AR.PolyFunPow, minp1, minp2; - WORD n1, n2, i1, i2, l1, l2, l3, l4, action = 0, noac = 0, retval = 0; + WORD n1, n2, i1, i2, l1, l2, l3, l4, action = 0, noac = 0; + int retval = 0; if ( AR.PolyFunType == 2 && AR.PolyFunExp == 1 ) { WORD pow = 0, pow1; t = term + 1; t1 = term + *term; t1 -= ABS(t1[-1]); diff --git a/sources/ratio.c b/sources/ratio.c index 3444ff4b..7d673479 100644 --- a/sources/ratio.c +++ b/sources/ratio.c @@ -59,7 +59,7 @@ */ -WORD RatioFind(PHEAD WORD *term, WORD *params) +int RatioFind(PHEAD WORD *term, WORD *params) { GETBIDENTITY WORD *t, *m, *r; @@ -167,7 +167,7 @@ We have to revise the code for the second case. */ -WORD RatioGen(PHEAD WORD *term, WORD *params, WORD num, WORD level) +int RatioGen(PHEAD WORD *term, WORD *params, WORD num, WORD level) { GETBIDENTITY WORD *t, *m; @@ -317,8 +317,8 @@ WORD RatioGen(PHEAD WORD *term, WORD *params, WORD num, WORD level) */ -WORD BinomGen(PHEAD WORD *term, WORD level, WORD **tstops, WORD x1, WORD x2, - WORD pow1, WORD pow2, WORD sign, UWORD *coef, WORD ncoef) +int BinomGen(PHEAD WORD *term, WORD level, WORD **tstops, WORD x1, WORD x2, + WORD pow1, WORD pow2, WORD sign, UWORD *coef, WORD ncoef) { GETBIDENTITY WORD *t, *r; @@ -392,7 +392,7 @@ WORD BinomGen(PHEAD WORD *term, WORD level, WORD **tstops, WORD x1, WORD x2, */ -WORD DoSumF1(PHEAD WORD *term, WORD *params, WORD replac, WORD level) +int DoSumF1(PHEAD WORD *term, WORD *params, WORD replac, WORD level) { GETBIDENTITY WORD *termout, *t, extractbuff = AT.TMbuff; @@ -458,7 +458,7 @@ WORD DoSumF1(PHEAD WORD *term, WORD *params, WORD replac, WORD level) */ -WORD Glue(PHEAD WORD *term1, WORD *term2, WORD *sub, WORD insert) +int Glue(PHEAD WORD *term1, WORD *term2, WORD *sub, WORD insert) { GETBIDENTITY UWORD *coef; @@ -517,7 +517,7 @@ WORD Glue(PHEAD WORD *term1, WORD *term2, WORD *sub, WORD insert) #[ DoSumF2 : */ -WORD DoSumF2(PHEAD WORD *term, WORD *params, WORD replac, WORD level) +int DoSumF2(PHEAD WORD *term, WORD *params, WORD replac, WORD level) { GETBIDENTITY WORD *termout, *t, *from, *sub, *to, extractbuff = AT.TMbuff; diff --git a/sources/reken.c b/sources/reken.c index 7e4b58df..2b454ff7 100644 --- a/sources/reken.c +++ b/sources/reken.c @@ -123,7 +123,7 @@ void UnPack(UWORD *a, WORD na, WORD *denom, WORD *numer) */ -WORD Mully(PHEAD UWORD *a, WORD *na, UWORD *b, WORD nb) +int Mully(PHEAD UWORD *a, WORD *na, UWORD *b, WORD nb) { GETBIDENTITY UWORD *d, *e; @@ -169,7 +169,7 @@ WORD Mully(PHEAD UWORD *a, WORD *na, UWORD *b, WORD nb) */ -WORD Divvy(PHEAD UWORD *a, WORD *na, UWORD *b, WORD nb) +int Divvy(PHEAD UWORD *a, WORD *na, UWORD *b, WORD nb) { GETBIDENTITY UWORD *d,*e; @@ -207,7 +207,7 @@ WORD Divvy(PHEAD UWORD *a, WORD *na, UWORD *b, WORD nb) #[ AddRat : WORD AddRat(a,na,b,nb,c,nc) */ -WORD AddRat(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) +int AddRat(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) { GETBIDENTITY UWORD *d, *e, *f, *g; @@ -375,7 +375,7 @@ WORD AddRat(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) */ -WORD MulRat(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) +int MulRat(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) { WORD i; WORD sgn = 1; @@ -497,10 +497,11 @@ WORD MulRat(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) */ -WORD DivRat(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) +int DivRat(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) { GETBIDENTITY WORD i, j; + int ret; UWORD *xd,*xe,xx; if ( !nb ) { MLOCK(ErrorMessageLock); @@ -511,10 +512,10 @@ WORD DivRat(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) j = i = (nb >= 0)? nb: -nb; xd = b; xe = b + i; do { xx = *xd; *xd++ = *xe; *xe++ = xx; } while ( --j > 0 ); - j = MulRat(BHEAD a,na,b,nb,c,nc); + ret = MulRat(BHEAD a,na,b,nb,c,nc); xd = b; xe = b + i; do { xx = *xd; *xd++ = *xe; *xe++ = xx; } while ( --i > 0 ); - return(j); + return(ret); } /* @@ -527,7 +528,7 @@ WORD DivRat(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) */ -WORD Simplify(PHEAD UWORD *a, WORD *na, UWORD *b, WORD *nb) +int Simplify(PHEAD UWORD *a, WORD *na, UWORD *b, WORD *nb) { GETBIDENTITY UWORD *x1,*x2,*x3; @@ -644,7 +645,7 @@ WORD Simplify(PHEAD UWORD *a, WORD *na, UWORD *b, WORD *nb) the GCD of the numerators divided by the GCD of the denominators */ -WORD AccumGCD(PHEAD UWORD *a, WORD *na, UWORD *b, WORD nb) +int AccumGCD(PHEAD UWORD *a, WORD *na, UWORD *b, WORD nb) { GETBIDENTITY WORD nna,nnb,numa,numb,dena,denb,numc,denc; @@ -702,7 +703,7 @@ int TakeRatRoot(UWORD *a, WORD *n, WORD power) */ -WORD AddLong(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) +int AddLong(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) { WORD sgn, res; if ( na < 0 ) { @@ -747,7 +748,7 @@ WORD AddLong(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) c can be a or b. */ -WORD AddPLon(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) +int AddPLon(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) { UWORD carry = 0, e, nd = 0; while ( na && nb ) { @@ -838,7 +839,7 @@ void SubPLon(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) */ -WORD MulLong(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) +int MulLong(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) { WORD sgn = 1; UWORD i, *ic, *ia; @@ -941,7 +942,7 @@ WORD MulLong(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) */ -WORD BigLong(UWORD *a, WORD na, UWORD *b, WORD nb) +int BigLong(UWORD *a, WORD na, UWORD *b, WORD nb) { a += na; b += nb; @@ -969,8 +970,8 @@ WORD BigLong(UWORD *a, WORD na, UWORD *b, WORD nb) */ -WORD DivLong(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, - WORD *nc, UWORD *d, WORD *nd) +int DivLong(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, + WORD *nc, UWORD *d, WORD *nd) { WORD sgna = 1, sgnb = 1, ne, nf, ng, nh; WORD i, ni; @@ -1225,7 +1226,7 @@ WORD DivLong(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, The method that is used works with a bitdecomposition of b. */ -WORD RaisPow(PHEAD UWORD *a, WORD *na, UWORD b) +int RaisPow(PHEAD UWORD *a, WORD *na, UWORD b) { GETBIDENTITY WORD i, nu; @@ -1582,7 +1583,7 @@ int GetLongModInverses(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *ia, WO */ -WORD Product(UWORD *a, WORD *na, WORD b) +int Product(UWORD *a, WORD *na, WORD b) { WORD i, sgn = 1; RLONG t, u; @@ -1771,7 +1772,7 @@ void PrtLong(UWORD *a, WORD na, UBYTE *s) is accumulated. */ -WORD GetLong(UBYTE *s, UWORD *a, WORD *na) +int GetLong(UBYTE *s, UWORD *a, WORD *na) { /* UWORD digit; @@ -1988,7 +1989,7 @@ void GCD(UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) #[ Old Routine : */ -WORD GcdLong(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) +int GcdLong(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) { GETBIDENTITY if ( !na || !nb ) { @@ -2273,7 +2274,7 @@ WORD GcdLong(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) of GCDMAX. */ -WORD GcdLong(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) +int GcdLong(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) { GETBIDENTITY UWORD x,y,z; @@ -2664,7 +2665,7 @@ newtrick:; #[ GetBinom : WORD GetBinom(a,na,i1,i2) */ -WORD GetBinom(UWORD *a, WORD *na, WORD i1, WORD i2) +int GetBinom(UWORD *a, WORD *na, WORD i1, WORD i2) { GETIDENTITY WORD j, k, l; @@ -2698,9 +2699,9 @@ WORD GetBinom(UWORD *a, WORD *na, WORD i1, WORD i2) in c. c is allowed to be equal to a. */ -WORD LcmLong(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) +int LcmLong(PHEAD UWORD *a, WORD na, UWORD *b, WORD nb, UWORD *c, WORD *nc) { - WORD error = 0; + int error = 0; UWORD *d = NumberMalloc("LcmLong"); UWORD *e = NumberMalloc("LcmLong"); UWORD *f = NumberMalloc("LcmLong"); @@ -3099,7 +3100,7 @@ WORD CompCoef(WORD *term1, WORD *term2) */ -WORD Modulus(WORD *term) +int Modulus(WORD *term) { WORD *t; WORD n1; @@ -3146,7 +3147,7 @@ WORD Modulus(WORD *term) This may not be a good idea. To be checked. */ -WORD TakeModulus(UWORD *a, WORD *na, UWORD *cmodvec, WORD ncmod, WORD par) +int TakeModulus(UWORD *a, WORD *na, UWORD *cmodvec, WORD ncmod, WORD par) { GETIDENTITY UWORD *c, *d, *e, *f, *g, *h; @@ -3318,7 +3319,7 @@ WORD TakeModulus(UWORD *a, WORD *na, UWORD *cmodvec, WORD ncmod, WORD par) added by Jan [01-09-2010] */ -WORD TakeNormalModulus (UWORD *a, WORD *na, UWORD *c, WORD nc, WORD par) +int TakeNormalModulus (UWORD *a, WORD *na, UWORD *c, WORD nc, WORD par) { WORD n; WORD nhalfc; @@ -3360,7 +3361,7 @@ WORD TakeNormalModulus (UWORD *a, WORD *na, UWORD *c, WORD nc, WORD par) #[ MakeModTable : WORD MakeModTable() */ -WORD MakeModTable(void) +int MakeModTable(void) { LONG size, i, j, n; n = ABS(AC.ncmod); diff --git a/sources/reshuf.c b/sources/reshuf.c index bae74c8f..1b428b7f 100644 --- a/sources/reshuf.c +++ b/sources/reshuf.c @@ -1041,7 +1041,7 @@ WORD DimensionExpression(PHEAD WORD *expr) #[ MultDo : */ -WORD MultDo(PHEAD WORD *term, WORD *pattern) +int MultDo(PHEAD WORD *term, WORD *pattern) { GETBIDENTITY WORD *t, *r, i; @@ -1069,7 +1069,7 @@ WORD MultDo(PHEAD WORD *term, WORD *pattern) #[ TryDo : */ -WORD TryDo(PHEAD WORD *term, WORD *pattern, WORD level) +int TryDo(PHEAD WORD *term, WORD *pattern, WORD level) { GETBIDENTITY WORD *t, *r, *m, i, j; @@ -1116,7 +1116,7 @@ WORD TryDo(PHEAD WORD *term, WORD *pattern, WORD level) because there is no knowing how long the field will be. */ -WORD DoDistrib(PHEAD WORD *term, WORD level) +int DoDistrib(PHEAD WORD *term, WORD level) { GETBIDENTITY WORD *t, *m, *r = 0, *stop, *tstop, *termout, *endhead, *starttail, *parms; @@ -1376,7 +1376,7 @@ redok: while ( arg[j] == 1 && j >= 0 ) { j--; k++; } Returns 1 if the arguments in the field are identical. */ -WORD EqualArg(WORD *parms, WORD num1, WORD num2) +int EqualArg(WORD *parms, WORD num1, WORD num2) { WORD *t1, *t2; WORD i; @@ -1402,7 +1402,7 @@ WORD EqualArg(WORD *parms, WORD num1, WORD num2) #[ DoDelta3 : */ -WORD DoDelta3(PHEAD WORD *term, WORD level) +int DoDelta3(PHEAD WORD *term, WORD level) { GETBIDENTITY WORD *t, *m, *m1, *m2, *stopper, *tstop, *termout, *dels, *taken; @@ -1604,7 +1604,7 @@ nextk:; arguments there will be no action. */ -WORD TestPartitions(WORD *tfun, PARTI *parti) +int TestPartitions(WORD *tfun, PARTI *parti) { WORD *tnext = tfun + tfun[1]; WORD *t, *tt; @@ -1719,7 +1719,7 @@ WORD TestPartitions(WORD *tfun, PARTI *parti) if we keep needing it. */ -WORD DoPartitions(PHEAD WORD *term, WORD level) +int DoPartitions(PHEAD WORD *term, WORD level) { WORD x, i, j, im, *fun, ndiff, siz, tensorflag = 0; PARTI part = AT.partitions; @@ -2004,7 +2004,7 @@ div2: if ( Factorial(BHEAD n, cfac, &nfac) ) Terminate(-1); all permutations of the args. This should always fit! */ -WORD DoPermutations(PHEAD WORD *term, WORD level) +int DoPermutations(PHEAD WORD *term, WORD level) { PERMP perm; WORD *oldworkpointer = AT.WorkPointer, *termout = AT.WorkPointer; @@ -2092,7 +2092,7 @@ WORD DoPermutations(PHEAD WORD *term, WORD level) groups (0,1) also cause double terms. */ -WORD DoShuffle(WORD *term, WORD level, WORD fun, WORD option) +int DoShuffle(WORD *term, WORD level, WORD fun, WORD option) { GETIDENTITY SHvariables SHback, *SH = &(AN.SHvar); @@ -2484,7 +2484,7 @@ int FinishShuffle(WORD *fini) need to know n1, n2, minval. */ -WORD DoStuffle(WORD *term, WORD level, WORD fun, WORD option) +int DoStuffle(WORD *term, WORD level, WORD fun, WORD option) { GETIDENTITY SHvariables SHback, *SH = &(AN.SHvar); diff --git a/sources/sch.c b/sources/sch.c index 13316eb9..b04aad51 100644 --- a/sources/sch.c +++ b/sources/sch.c @@ -1539,7 +1539,7 @@ UBYTE *specfunnames[NUMSPECS] = { , (UBYTE *)"invfac" }; */ -WORD WriteSubTerm(WORD *sterm, WORD first) +int WriteSubTerm(WORD *sterm, WORD first) { UBYTE buffer[80]; UBYTE *Out, closepar[2] = { (UBYTE)')', 0}; @@ -1948,7 +1948,7 @@ WORD WriteSubTerm(WORD *sterm, WORD first) */ -WORD WriteInnerTerm(WORD *term, WORD first) +int WriteInnerTerm(WORD *term, WORD first) { WORD *t, *s, *s1, *s2, n, i, pow; #ifdef WITHFLOAT @@ -2145,7 +2145,7 @@ WORD WriteInnerTerm(WORD *term, WORD first) */ -WORD WriteTerm(WORD *term, WORD *lbrac, WORD first, WORD prtf, WORD br) +int WriteTerm(WORD *term, WORD *lbrac, WORD first, WORD prtf, WORD br) { WORD *t, *stopper, *b, n; int oldIsFortran90 = AC.IsFortran90, i; @@ -2467,7 +2467,7 @@ WrtTmes: t = term; */ -WORD WriteExpression(WORD *terms, LONG ltot) +int WriteExpression(WORD *terms, LONG ltot) { WORD *stopper; WORD first, btot; @@ -2498,7 +2498,7 @@ WORD WriteExpression(WORD *terms, LONG ltot) Writes all expressions that should be written */ -WORD WriteAll(void) +int WriteAll(void) { GETIDENTITY WORD lbrac, first; @@ -2724,7 +2724,7 @@ WORD WriteAll(void) Writes one expression from the preprocessor */ -WORD WriteOne(UBYTE *name, int alreadyinline, int nosemi, WORD plus) +int WriteOne(UBYTE *name, int alreadyinline, int nosemi, WORD plus) { GETIDENTITY WORD number; diff --git a/sources/sort.c b/sources/sort.c index b54bed72..cb4a2bfc 100644 --- a/sources/sort.c +++ b/sources/sort.c @@ -611,7 +611,7 @@ void WriteStats(POSITION *plspace, WORD par, WORD checkLogType) * @return Regular convention (OK -> 0) */ -WORD NewSort(PHEAD0) +int NewSort(PHEAD0) { GETBIDENTITY SORTING *S, **newFS; @@ -1347,7 +1347,7 @@ LONG PutIn(FILEHANDLE *file, POSITION *position, WORD *buffer, WORD **take, int * @param fi The filesystem (or its cache) to which the patch should be written */ -WORD Sflush(FILEHANDLE *fi) +int Sflush(FILEHANDLE *fi) { LONG size, RetCode; #ifdef WITHZLIB @@ -1795,7 +1795,7 @@ WORD PutOut(PHEAD WORD *term, POSITION *position, FILEHANDLE *fi, WORD ncomp) * @return Regular conventions (OK -> 0). */ -WORD FlushOut(POSITION *position, FILEHANDLE *fi, int compr) +int FlushOut(POSITION *position, FILEHANDLE *fi, int compr) { GETIDENTITY LONG size, RetCode; @@ -2009,7 +2009,7 @@ WORD FlushOut(POSITION *position, FILEHANDLE *fi, int compr) * The resulting term is left in *ps1. */ -WORD AddCoef(PHEAD WORD **ps1, WORD **ps2) +int AddCoef(PHEAD WORD **ps1, WORD **ps2) { GETBIDENTITY SORTING *S = AT.SS; @@ -2138,7 +2138,7 @@ WORD AddCoef(PHEAD WORD **ps1, WORD **ps2) * @return If zero the terms cancel. Otherwise the new term is in *ps1. */ -WORD AddPoly(PHEAD WORD **ps1, WORD **ps2) +int AddPoly(PHEAD WORD **ps1, WORD **ps2) { GETBIDENTITY SORTING *S = AT.SS; @@ -3724,7 +3724,7 @@ void GarbHand(void) * */ -WORD MergePatches(WORD par) +int MergePatches(WORD par) { GETIDENTITY SORTING *S = AT.SS; @@ -4507,7 +4507,7 @@ PatCall2:; * @return Regular return conventions (OK -> 0) */ -WORD StoreTerm(PHEAD WORD *term) +int StoreTerm(PHEAD WORD *term) { GETBIDENTITY SORTING *S = AT.SS; @@ -4720,11 +4720,12 @@ void StageSort(FILEHANDLE *fout) * @return Normal conventions (OK -> 0) */ -WORD SortWild(WORD *w, WORD nw) +int SortWild(WORD *w, WORD nw) { GETIDENTITY WORD *v, *s, *m, k, i; - WORD *pScrat, *stop, *sv, error = 0; + WORD *pScrat, *stop, *sv; + int error = 0; pScrat = AT.WorkPointer; if ( ( AT.WorkPointer + 8 * AM.MaxWildcards ) >= AT.WorkTop ) { MLOCK(ErrorMessageLock); diff --git a/sources/startup.c b/sources/startup.c index a47899fd..88bee280 100644 --- a/sources/startup.c +++ b/sources/startup.c @@ -204,7 +204,7 @@ static void PrintHeader(int with_full_info) #ifdef WINDOWS PrintDeprecation("the native Windows version", "issues/623"); #endif -#ifdef ILP32 +#if BITSINWORD == 16 PrintDeprecation("the 32-bit version", "issues/624"); #endif #ifdef WITHMPI @@ -1351,7 +1351,7 @@ void StartMore(void) This routine initializes the parameters that may change during the run. */ -WORD IniVars(void) +void IniVars(void) { #ifdef WITHPTHREADS GETIDENTITY @@ -1575,7 +1575,6 @@ WORD IniVars(void) AC.cbufnum = AM.rbufnum; /* Select the default compiler buffer */ AC.HideLevel = 0; AP.PreAssignFlag = 0; - return(0); } /* diff --git a/sources/store.c b/sources/store.c index 25367442..2fcdd15f 100644 --- a/sources/store.c +++ b/sources/store.c @@ -45,7 +45,7 @@ */ -WORD OpenTemp(void) +void OpenTemp(void) { GETIDENTITY if ( AR.outfile->handle >= 0 ) { @@ -53,7 +53,6 @@ WORD OpenTemp(void) AR.outfile->POposition = AR.outfile->filesize; AR.outfile->POfill = AR.outfile->PObuffer; } - return(0); } /* @@ -187,7 +186,7 @@ void SetScratch(FILEHANDLE *f, POSITION *position) */ -WORD RevertScratch(void) +int RevertScratch(void) { GETIDENTITY FILEHANDLE *f; @@ -232,7 +231,7 @@ WORD RevertScratch(void) */ -WORD ResetScratch(void) +int ResetScratch(void) { GETIDENTITY FILEHANDLE *f; @@ -770,7 +769,7 @@ int CoLoad(UBYTE *inp) If par > 0 we have to remove the expressions from the namelists. */ -WORD DeleteStore(WORD par) +int DeleteStore(WORD par) { GETIDENTITY char *s; @@ -871,7 +870,7 @@ WORD DeleteStore(WORD par) */ -WORD PutInStore(INDEXENTRY *ind, WORD num) +int PutInStore(INDEXENTRY *ind, WORD num) { GETIDENTITY INDEXENTRY *newind; @@ -1519,7 +1518,7 @@ WORD GetMoreTerms(WORD *term) */ -WORD GetMoreFromMem(WORD *term, WORD **tpoin) +int GetMoreFromMem(WORD *term, WORD **tpoin) { GETIDENTITY WORD *t, *r, *m, *h, *tstop, i, j, inc, same; @@ -2014,7 +2013,7 @@ void DetVars(WORD *term, WORD par) */ -WORD ToStorage(EXPRESSIONS e, POSITION *length) +int ToStorage(EXPRESSIONS e, POSITION *length) { GETIDENTITY WORD *w, i, j; @@ -2318,7 +2317,7 @@ INDEXENTRY *NextFileIndex(POSITION *indexpos) * @return = 0 everything okay, != 0 an error occurred */ -WORD SetFileIndex(void) +int SetFileIndex(void) { GETIDENTITY int i, j = sizeof(FILEINDEX)/(sizeof(LONG)); @@ -2367,7 +2366,7 @@ WORD SetFileIndex(void) things work.... */ -WORD VarStore(UBYTE *s, WORD n, WORD name, WORD namesize) +int VarStore(UBYTE *s, WORD n, WORD name, WORD namesize) { GETIDENTITY UBYTE *t, *u; @@ -2425,7 +2424,7 @@ WORD VarStore(UBYTE *s, WORD n, WORD name, WORD namesize) */ -WORD TermRenumber(WORD *term, RENUMBER renumber, WORD nexpr) +int TermRenumber(WORD *term, RENUMBER renumber, WORD nexpr) { WORD *stopper; /*!!! @@ -3521,13 +3520,6 @@ void ExprStatus(EXPRESSIONS e) #[ Flip : */ -#ifndef INT16 -#error "INT16 not defined!" -#endif -#ifndef INT32 -#error "INT32 not defined!" -#endif - /** * Flips the endianness. This function will be called via function pointers. * See struct O_const and ReadSaveHeader(). @@ -3558,36 +3550,36 @@ static void FlipN(UBYTE *p, int length) */ static void Flip16(UBYTE *p) { - INT16 in = *((INT16 *)p); - INT16 out = (INT16)( (((in) >> 8) & 0x00FF) | (((in) << 8) & 0xFF00) ); - *((INT16 *)p) = out; + uint16_t in = *((uint16_t *)p); + uint16_t out = (uint16_t)( (((in) >> 8) & UINT16_C(0x00FF)) | (((in) << 8) & UINT16_C(0xFF00)) ); + *((uint16_t *)p) = out; } /** @see Flip16() */ static void Flip32(UBYTE *p) { - INT32 in = *((INT32 *)p); - INT32 out = - ( (((in) >> 24) & 0x000000FF) | (((in) >> 8) & 0x0000FF00) | \ - (((in) << 8) & 0x00FF0000) | (((in) << 24) & 0xFF000000) ); - *((INT32 *)p) = out; + uint32_t in = *((uint32_t *)p); + uint32_t out = + ( (((in) >> 24) & UINT32_C(0x000000FF)) | (((in) >> 8) & UINT32_C(0x0000FF00)) | \ + (((in) << 8) & UINT32_C(0x00FF0000)) | (((in) << 24) & UINT32_C(0xFF000000)) ); + *((uint32_t *)p) = out; } /** @see Flip16() */ -#ifdef INT64 +#ifdef UINT64_C static void Flip64(UBYTE *p) { - INT64 in = *((INT64 *)p); - INT64 out = - ( (((in) >> 56) & (INT64)0x00000000000000FFLL) | (((in) >> 40) & (INT64)0x000000000000FF00LL) | \ - (((in) >> 24) & (INT64)0x0000000000FF0000LL) | (((in) >> 8) & (INT64)0x00000000FF000000LL) | \ - (((in) << 8) & (INT64)0x000000FF00000000LL) | (((in) << 24) & (INT64)0x0000FF0000000000LL) | \ - (((in) << 40) & (INT64)0x00FF000000000000LL) | (((in) << 56) & (INT64)0xFF00000000000000LL) ); - *((INT64 *)p) = out; + uint64_t in = *((uint64_t *)p); + uint64_t out = + ( (((in) >> 56) & UINT64_C(0x00000000000000FF)) | (((in) >> 40) & UINT64_C(0x000000000000FF00)) | \ + (((in) >> 24) & UINT64_C(0x0000000000FF0000)) | (((in) >> 8) & UINT64_C(0x00000000FF000000)) | \ + (((in) << 8) & UINT64_C(0x000000FF00000000)) | (((in) << 24) & UINT64_C(0x0000FF0000000000)) | \ + (((in) << 40) & UINT64_C(0x00FF000000000000)) | (((in) << 56) & UINT64_C(0xFF00000000000000)) ); + *((uint64_t *)p) = out; } #else static void Flip64(UBYTE *p) { FlipN(p, 8); } -#endif /* INT64 */ +#endif /* UINT64_C */ /** @see Flip16() */ static void Flip128(UBYTE *p) { FlipN(p, 16); } @@ -3650,28 +3642,28 @@ static void ResizeDataLE(UBYTE *src, int slen, UBYTE *dst, int dlen) */ static void Resize16t16(UBYTE *src, UBYTE *dst) { - *((INT16 *)dst) = *((INT16 *)src); + *((int16_t *)dst) = *((int16_t *)src); } /** @see Resize16t16() */ static void Resize16t32(UBYTE *src, UBYTE *dst) { - INT16 in = *((INT16 *)src); - INT32 out = (INT32)in; - *((INT32 *)dst) = out; + int16_t in = *((int16_t *)src); + int32_t out = (int32_t)in; + *((int32_t *)dst) = out; } /** @see Resize16t16() */ -#ifdef INT64 +#ifdef INT64_C static void Resize16t64(UBYTE *src, UBYTE *dst) { - INT16 in = *((INT16 *)src); - INT64 out = (INT64)in; - *((INT64 *)dst) = out; + int16_t in = *((int16_t *)src); + int64_t out = (int64_t)in; + *((int64_t *)dst) = out; } #else static void Resize16t64(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 2, dst, 8); } -#endif /* INT64 */ +#endif /* INT64_C */ /** @see Resize16t16() */ static void Resize16t128(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 2, dst, 16); } @@ -3679,33 +3671,33 @@ static void Resize16t128(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 2, dst, 16 /** @see Resize16t16() */ static void Resize32t32(UBYTE *src, UBYTE *dst) { - *((INT32 *)dst) = *((INT32 *)src); + *((int32_t *)dst) = *((int32_t *)src); } /** @see Resize16t16() */ -#ifdef INT64 +#ifdef INT64_C static void Resize32t64(UBYTE *src, UBYTE *dst) { - INT32 in = *((INT32 *)src); - INT64 out = (INT64)in; - *((INT64 *)dst) = out; + int32_t in = *((int32_t *)src); + int64_t out = (int64_t)in; + *((int64_t *)dst) = out; } #else static void Resize32t64(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 4, dst, 8); } -#endif /* INT64 */ +#endif /* INT64_C */ /** @see Resize16t16() */ static void Resize32t128(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 4, dst, 16); } /** @see Resize16t16() */ -#ifdef INT64 +#ifdef INT64_C static void Resize64t64(UBYTE *src, UBYTE *dst) { - *((INT64 *)dst) = *((INT64 *)src); + *((int64_t *)dst) = *((int64_t *)src); } #else static void Resize64t64(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 8, dst, 8); } -#endif /* INT64 */ +#endif /* INT64_C */ /** @see Resize16t16() */ static void Resize64t128(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 8, dst, 16); } @@ -3716,10 +3708,10 @@ static void Resize128t128(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 16, dst, /** @see Resize16t16() */ static void Resize32t16(UBYTE *src, UBYTE *dst) { - INT32 in = *((INT32 *)src); - INT16 out = (INT16)in; + int32_t in = *((int32_t *)src); + int16_t out = (int16_t)in; if ( in > (1<<15)-1 || in < -(1<<15)+1 ) AO.resizeFlag |= 1; - *((INT16 *)dst) = out; + *((int16_t *)dst) = out; } /** @@ -3730,56 +3722,56 @@ static void Resize32t16(UBYTE *src, UBYTE *dst) */ static void Resize32t16NC(UBYTE *src, UBYTE *dst) { - INT32 in = *((INT32 *)src); - INT16 out = (INT16)in; - *((INT16 *)dst) = out; + int32_t in = *((int32_t *)src); + int16_t out = (int16_t)in; + *((int16_t *)dst) = out; } -#ifdef INT64 +#ifdef INT64_C /** @see Resize16t16() */ static void Resize64t16(UBYTE *src, UBYTE *dst) { - INT64 in = *((INT64 *)src); - INT16 out = (INT16)in; + int64_t in = *((int64_t *)src); + int16_t out = (int16_t)in; if ( in > (1<<15)-1 || in < -(1<<15)+1 ) AO.resizeFlag |= 1; - *((INT16 *)dst) = out; + *((int16_t *)dst) = out; } /** @see Resize32t16NC() */ static void Resize64t16NC(UBYTE *src, UBYTE *dst) { - INT64 in = *((INT64 *)src); - INT16 out = (INT16)in; - *((INT16 *)dst) = out; + int64_t in = *((int64_t *)src); + int16_t out = (int16_t)in; + *((int16_t *)dst) = out; } #else /** @see Resize16t16() */ static void Resize64t16(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 8, dst, 2); } /** @see Resize32t16NC() */ static void Resize64t16NC(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 8, dst, 2); } -#endif /* INT64 */ +#endif /* INT64_C */ -#ifdef INT64 +#ifdef INT64_C /** @see Resize16t16() */ static void Resize64t32(UBYTE *src, UBYTE *dst) { - INT64 in = *((INT64 *)src); - INT32 out = (INT32)in; - if ( in > ((INT64)1<<31)-1 || in < -((INT64)1<<31)+1 ) AO.resizeFlag |= 1; - *((INT32 *)dst) = out; + int64_t in = *((int64_t *)src); + int32_t out = (int32_t)in; + if ( in > (INT64_C(1)<<31)-1 || in < -(INT64_C(1)<<31)+1 ) AO.resizeFlag |= 1; + *((int32_t *)dst) = out; } /** @see Resize32t16NC() */ static void Resize64t32NC(UBYTE *src, UBYTE *dst) { - INT64 in = *((INT64 *)src); - INT32 out = (INT32)in; - *((INT32 *)dst) = out; + int64_t in = *((int64_t *)src); + int32_t out = (int32_t)in; + *((int32_t *)dst) = out; } #else /** @see Resize16t16() */ static void Resize64t32(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 8, dst, 4); } /** @see Resize32t16NC() */ static void Resize64t32NC(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 8, dst, 4); } -#endif /* INT64 */ +#endif /* INT64_C */ /** @see Resize16t16() */ static void Resize128t16(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 16, dst, 2); } @@ -3812,14 +3804,14 @@ static void Resize128t64NC(UBYTE *src, UBYTE *dst) { AO.ResizeData(src, 16, dst, */ static void CheckPower32(UBYTE *p) { - if ( *((INT32 *)p) < -MAXPOWER ) { + if ( *((int32_t *)p) < -MAXPOWER ) { AO.powerFlag |= 0x01; - *((INT32 *)p) = -MAXPOWER; + *((int32_t *)p) = -MAXPOWER; } - p += sizeof(INT32); - if ( *((INT32 *)p) > MAXPOWER ) { + p += sizeof(int32_t); + if ( *((int32_t *)p) > MAXPOWER ) { AO.powerFlag |= 0x02; - *((INT32 *)p) = MAXPOWER; + *((int32_t *)p) = MAXPOWER; } } @@ -3832,13 +3824,13 @@ static void CheckPower32(UBYTE *p) */ static void RenumberVec32(UBYTE *p) { -/* INT32 wildoffset = *((INT32 *)AO.SaveHeader.wildoffset); */ +/* int32_t wildoffset = *((int32_t *)AO.SaveHeader.wildoffset); */ void *dummy = (void *)AO.SaveHeader.wildoffset; /* to remove a warning about strict-aliasing rules in gcc */ - INT32 wildoffset = *(INT32 *)dummy; - INT32 in = *((INT32 *)p); + int32_t wildoffset = *(int32_t *)dummy; + int32_t in = *((int32_t *)p); in = in + 2*wildoffset; in = in - 2*WILDOFFSET; - *((INT32 *)p) = in; + *((int32_t *)p) = in; } /* @@ -3862,14 +3854,14 @@ static void RenumberVec32(UBYTE *p) static void ResizeCoeff32(UBYTE **bout, UBYTE *bend, UBYTE *top) { int i; - INT32 sign; - INT32 *in, *p; - INT32 *out = (INT32 *)*bout; - INT32 *end = (INT32 *)bend; + int32_t sign; + int32_t *in, *p; + int32_t *out = (int32_t *)*bout; + int32_t *end = (int32_t *)bend; if ( sizeof(WORD) == 2 ) { /* 4 -> 2 */ - INT32 len = (end - 1 - out) / 2; + int32_t len = (end - 1 - out) / 2; int zeros = 2; p = out + len - 1; @@ -3902,41 +3894,41 @@ static void ResizeCoeff32(UBYTE **bout, UBYTE *bend, UBYTE *top) } else { /* 2 -> 4 */ - INT32 len = (end - 1 - out) / 2; + int32_t len = (end - 1 - out) / 2; if ( len == 1 ) { - *out = *(unsigned INT16 *)out; + *out = *(uint16_t *)out; ++out; - *out = *(unsigned INT16 *)out; + *out = *(uint16_t *)out; ++out; ++out; } else { p = out; - *out = *(unsigned INT16 *)out; + *out = *(uint16_t *)out; in = out + 1; for ( i = 1; i < len; ++i ) { /* shift */ - *out = (unsigned INT32)(*(unsigned INT16 *)out) - + ((unsigned INT32)(*(unsigned INT16 *)in) << 16); + *out = (uint32_t)(*(uint16_t *)out) + + ((uint32_t)(*(uint16_t *)in) << 16); ++in; if ( ++i == len ) break; /* copy */ ++out; - *out = *(unsigned INT16 *)in; + *out = *(uint16_t *)in; ++in; } ++out; - *out = *(unsigned INT16 *)in; + *out = *(uint16_t *)in; ++in; for ( i = 1; i < len; ++i ) { /* shift */ - *out = (unsigned INT32)(*(unsigned INT16 *)out) - + ((unsigned INT32)(*(unsigned INT16 *)in) << 16); + *out = (uint32_t)(*(uint16_t *)out) + + ((uint32_t)(*(uint16_t *)in) << 16); ++in; if ( ++i == len ) break; /* copy */ ++out; - *out = *(unsigned INT16 *)in; + *out = *(uint16_t *)in; ++in; } ++out; @@ -3945,7 +3937,7 @@ static void ResizeCoeff32(UBYTE **bout, UBYTE *bend, UBYTE *top) ++out; } - if ( out > (INT32 *)top ) { + if ( out > (int32_t *)top ) { MesPrint("Error in resizing coefficient!"); } @@ -3969,7 +3961,7 @@ static void ResizeCoeff32(UBYTE **bout, UBYTE *bend, UBYTE *top) * @param handle specifies open file to which header will be written * @return = 0 everything okay, != 0 an error occurred */ -WORD WriteStoreHeader(WORD handle) +LONG WriteStoreHeader(WORD handle) { /* template of the STOREHEADER */ static STOREHEADER sh = { @@ -4062,7 +4054,7 @@ static unsigned int CompactifySizeof(unsigned int size) * @return = 0 everything okay, != 0 an error occurred */ -WORD ReadSaveHeader(void) +int ReadSaveHeader(void) { /* Read-only tables of function pointers for conversions. */ static void (*flipJumpTable[4])(UBYTE *) = @@ -4180,7 +4172,7 @@ WORD ReadSaveHeader(void) * point to allocated, big enough memory. * @return = 0 everything okay, != 0 an error occurred */ -WORD ReadSaveIndex(FILEINDEX *fileind) +LONG ReadSaveIndex(FILEINDEX *fileind) { /* do we need some translation for the FILEINDEX? */ if ( AO.transFlag ) { @@ -4366,7 +4358,7 @@ WORD ReadSaveIndex(FILEINDEX *fileind) * variable structure * @return = 0 everything okay, != 0 an error occurred */ -WORD ReadSaveVariables(UBYTE *buffer, UBYTE *top, LONG *size, LONG *outsize,\ +LONG ReadSaveVariables(UBYTE *buffer, UBYTE *top, LONG *size, LONG *outsize,\ INDEXENTRY *ind, LONG *stage) { /* do we need some translation for the variables? */ @@ -4738,11 +4730,11 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t GETIDENTITY UBYTE *boutbuf; - INT32 len, j, id; - INT32 *r, *t, *coeff, *end, *newtermsize, *rend; - INT32 *newsubtermp; - INT32 *in = (INT32 *)bin; - INT32 *out = (INT32 *)*bout; + int32_t len, j, id; + int32_t *r, *t, *coeff, *end, *newtermsize, *rend; + int32_t *newsubtermp; + int32_t *in = (int32_t *)bin; + int32_t *out = (int32_t *)*bout; /* if called recursively the term is already decompressed in buffer. is this the case? */ @@ -4751,16 +4743,16 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t len = *out; end = out + len; r = in + 1; - rend = (INT32 *)boutend; + rend = (int32_t *)boutend; coeff = end - ABS(*(end-1)); - newtermsize = (INT32 *)*bout; + newtermsize = (int32_t *)*bout; out = newtermsize + 1; } else { /* do decompression of necessary. always return if the space in the buffer is not sufficient */ - INT32 rbuf; - r = (INT32 *)AR.CompressBuffer; + int32_t rbuf; + r = (int32_t *)AR.CompressBuffer; rbuf = *r; len = j = *in; /* first copy from AR.CompressBuffer if necessary */ @@ -4777,7 +4769,7 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t ++out; *r++ = len; while ( ++j <= 0 ) { - INT32 bb = *r++; + int32_t bb = *r++; *out++ = bb; } j = *in++; @@ -4811,14 +4803,14 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t } /* second copy from input buffer */ while ( --j >= 0 ) { - INT32 bb = *in++; + int32_t bb = *in++; *r++ = *out++ = bb; } rend = r; - r = (INT32 *)AR.CompressBuffer + 1; + r = (int32_t *)AR.CompressBuffer + 1; coeff = end - ABS(*(end-1)); - newtermsize = (INT32 *)*bout; + newtermsize = (int32_t *)*bout; out = newtermsize + 1; } @@ -4836,10 +4828,10 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t ++out; ++r; /* symbol number */ /* if exponent is too big, rewrite as exponent function */ if ( ABS(*out) >= MAXPOWER ) { - INT32 *a, *b; - INT32 n; - INT32 num = *(out-1); - INT32 exp = *out; + int32_t *a, *b; + int32_t n; + int32_t num = *(out-1); + int32_t exp = *out; coeff += 9; end += 9; t += 9; @@ -4876,11 +4868,11 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t ++out; ++r; /* if exponent is too big, rewrite as exponent function */ if ( ABS(*out) >= MAXPOWER ) { - INT32 *a, *b; - INT32 n; - INT32 num1 = *(out-2); - INT32 num2 = *(out-1); - INT32 exp = *out; + int32_t *a, *b; + int32_t n; + int32_t num1 = *(out-2); + int32_t num2 = *(out-1); + int32_t exp = *out; coeff += 17; end += 17; t += 17; @@ -4926,9 +4918,9 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t } } else if ( id == INDEX ) { -/* INT32 vectoroffset = -2 * *((INT32 *)AO.SaveHeader.wildoffset); */ +/* int32_t vectoroffset = -2 * *((int32_t *)AO.SaveHeader.wildoffset); */ void *dummy = (void *)AO.SaveHeader.wildoffset; /* to remove a warning about strict-aliasing rules in gcc */ - INT32 vectoroffset = -2 * *((INT32 *)dummy); + int32_t vectoroffset = -2 * *((int32_t *)dummy); while ( out < t ) { /* if there is a vector, renumber it */ if ( *out < vectoroffset ) { @@ -4954,9 +4946,9 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t out = t; } else if ( id == GAMMA || id == LEVICIVITA || (id >= FUNCTION && AO.tensorList[id]) ) { -/* INT32 vectoroffset = -2 * *((INT32 *)AO.SaveHeader.wildoffset); */ +/* int32_t vectoroffset = -2 * *((int32_t *)AO.SaveHeader.wildoffset); */ void *dummy = (void *)AO.SaveHeader.wildoffset; /* to remove a warning about strict-aliasing rules in gcc */ - INT32 vectoroffset = -2 * *((INT32 *)dummy); + int32_t vectoroffset = -2 * *((int32_t *)dummy); while ( out < t ) { /* if there is a vector as an argument, renumber it */ if ( *out < vectoroffset ) { @@ -4966,7 +4958,7 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t } } else if ( id >= FUNCTION ) { - INT32 *argEnd; + int32_t *argEnd; UBYTE *newbin; ++out; ++r; /* dirty flags */ @@ -4986,9 +4978,9 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t if ( sizeof(WORD) == 2 ) { /* resize if needed */ if ( *out > (1<<15)-1 || *out < -(1<<15)+1 ) { - INT32 *a, *b; - INT32 n; - INT32 num = *out; + int32_t *a, *b; + int32_t n; + int32_t num = *out; coeff += 6; end += 6; argEnd += 6; @@ -5042,14 +5034,14 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t } else { /* long arguments */ - INT32 *newargsize = out; + int32_t *newargsize = out; argEnd = out + *out; ++out; ++r; ++out; ++r; /* dirty flags */ while ( out < argEnd ) { - INT32 *keepsizep = out + *out; - INT32 lenbuf = *out; - INT32 **ppp = &out; /* to avoid a compiler warning */ + int32_t *keepsizep = out + *out; + int32_t lenbuf = *out; + int32_t **ppp = &out; /* to avoid a compiler warning */ /* recursion */ newbin = ReadSaveTerm32((UBYTE *)r, binend, (UBYTE **)ppp, (UBYTE *)rend, top, 1); r += lenbuf; @@ -5059,9 +5051,9 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t /* if the term done by recursion has changed in size, we need to move the rest of the data accordingly */ if ( out > keepsizep ) { - INT32 *a, *b; - INT32 n; - INT32 extention = out - keepsizep; + int32_t *a, *b; + int32_t n; + int32_t extention = out - keepsizep; a = r; b = out; n = rend - r; @@ -5072,9 +5064,9 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t t += extention; } else if ( out < keepsizep ) { - INT32 *a, *b; - INT32 n; - INT32 extention = keepsizep - out; + int32_t *a, *b; + int32_t n; + int32_t extention = keepsizep - out; a = keepsizep; b = out; n = rend - r; @@ -5112,7 +5104,7 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t return ( bin ); } - *newtermsize = (INT32 *)*bout - newtermsize; + *newtermsize = (int32_t *)*bout - newtermsize; return ( (UBYTE *)in ); } @@ -5143,7 +5135,7 @@ ReadSaveTerm32(UBYTE *bin, UBYTE *binend, UBYTE **bout, UBYTE *boutend, UBYTE *t * @param outsize number of written bytes * @return = 0 everything okay, != 0 an error occurred */ -WORD ReadSaveExpression(UBYTE *buffer, UBYTE *top, LONG *size, LONG *outsize) +LONG ReadSaveExpression(UBYTE *buffer, UBYTE *top, LONG *size, LONG *outsize) { if ( AO.transFlag ) { UBYTE *in, *end, *out, *outend, *p; diff --git a/sources/symmetr.c b/sources/symmetr.c index cb051870..54bea747 100644 --- a/sources/symmetr.c +++ b/sources/symmetr.c @@ -53,10 +53,11 @@ non-commuting objects are involved. */ -WORD MatchE(PHEAD WORD *pattern, WORD *fun, WORD *inter, WORD par) +int MatchE(PHEAD WORD *pattern, WORD *fun, WORD *inter, WORD par) { GETBIDENTITY - WORD *m, *t, *r, i, retval; + WORD *m, *t, *r, i; + int retval; WORD *mstop, *tstop, j, newvalue, newfun; WORD fixvec[MAXMATCH],wcvec[MAXMATCH],fixind[MAXMATCH],wcind[MAXMATCH]; WORD tfixvec[MAXMATCH],tfixind[MAXMATCH]; @@ -142,8 +143,8 @@ WORD MatchE(PHEAD WORD *pattern, WORD *fun, WORD *inter, WORD par) else return(1); } /* newter = instart; */ - i = ScanFunctions(BHEAD newpat,inter,par); - return(i); + retval = ScanFunctions(BHEAD newpat,inter,par); + return(retval); } /* Now the recursion @@ -440,7 +441,7 @@ NoCaseB: m = AN.WildValue; hit in the assignment of wildcards though. */ -WORD Permute(PERM *perm, WORD first) +int Permute(PERM *perm, WORD first) { WORD *s, c, i, j; if ( first ) { @@ -474,7 +475,7 @@ WORD Permute(PERM *perm, WORD first) Like Permute, but works on an array of pointers */ -WORD PermuteP(PERMP *perm, WORD first) +int PermuteP(PERMP *perm, WORD first) { WORD **s, *c, i, j; if ( first ) { @@ -506,7 +507,7 @@ WORD PermuteP(PERMP *perm, WORD first) #[ Distribute : */ -WORD Distribute(DISTRIBUTE *d, WORD first) +int Distribute(DISTRIBUTE *d, WORD first) { WORD *to, *from, *inc, *from2, i, j; if ( first ) { diff --git a/sources/tables.c b/sources/tables.c index aab3b592..d87ffb02 100644 --- a/sources/tables.c +++ b/sources/tables.c @@ -331,7 +331,7 @@ int FindTableTree(TABLES T, WORD *tp, int inc) #[ DoTableExpansion : */ -WORD DoTableExpansion(WORD *term, WORD level) +int DoTableExpansion(WORD *term, WORD level) { GETIDENTITY WORD *t, *tstop, *stopper, *termout, *m, *mm, *tp, *r, xx; @@ -1411,10 +1411,11 @@ finishup:; We need the arguments of TestUse to see for which tables it is to be done */ -WORD TestUse(WORD *term, WORD level) +int TestUse(WORD *term, WORD level) { WORD *tstop, *t, *m, *tstart, tabnum; - WORD *funs, numfuns, error = 0; + WORD *funs, numfuns; + int error = 0; TABLES T; LONG i; CBUF *C = cbuf+AM.rbufnum; @@ -1977,7 +1978,7 @@ inc: j = t[1]; #[ Apply : */ -WORD Apply(WORD *term, WORD level) +void Apply(WORD *term, WORD level) { WORD *funs, numfuns; TABLES T; @@ -2014,7 +2015,6 @@ WORD Apply(WORD *term, WORD level) Note that we actually gain one space. */ ReWorkT(term,funs,numfuns); - return(0); } /* @@ -2253,7 +2253,7 @@ int ApplyExec(WORD *term, int maxtogo, WORD level) #[ ApplyReset : */ -WORD ApplyReset(WORD level) +void ApplyReset(WORD level) { WORD *funs, numfuns; TABLES T; @@ -2281,7 +2281,6 @@ WORD ApplyReset(WORD level) } } } - return(0); } /* @@ -2289,7 +2288,7 @@ WORD ApplyReset(WORD level) #[ TableReset : */ -WORD TableReset(void) +void TableReset(void) { TABLES T; int i; @@ -2299,7 +2298,6 @@ WORD TableReset(void) functions[i].tabl = T->spare; } } - return(0); } /* diff --git a/sources/tools.c b/sources/tools.c index 39993589..cffa3491 100644 --- a/sources/tools.c +++ b/sources/tools.c @@ -2208,97 +2208,16 @@ void iniTools(void) /* #] iniTools : - #[ Malloc : + #[ Malloc1 : - Malloc routine with built in error checking. - This saves lots of messages. + Malloc routine with built in error checking, + and a more detailed error message. + Gives the user some idea of what is happening. */ + #ifdef MALLOCDEBUG -char *dummymessage = "Malloc"; INILOCK(MallocLock) #endif - -void *Malloc(LONG size) -{ - void *mem; -#ifdef MALLOCDEBUG - char *t, *u; - int i; - LOCK(MallocLock); -/* MLOCK(ErrorMessageLock); */ - if ( size == 0 ) { - MesPrint("Asking for 0 bytes in Malloc"); - } -#endif - if ( ( size & 7 ) != 0 ) { size = size - ( size&7 ) + 8; } -#ifdef MALLOCDEBUG - size += 2*BANNER; -#endif - mem = (void *)M_alloc(size); - if ( mem == 0 ) { -#ifndef MALLOCDEBUG - MLOCK(ErrorMessageLock); -#endif - Error0("No memory!"); -#ifndef MALLOCDEBUG - MUNLOCK(ErrorMessageLock); -#else -/* MUNLOCK(ErrorMessageLock); */ -#endif -#ifdef MALLOCDEBUG - UNLOCK(MallocLock); -#endif - Terminate(-1); - } -#ifdef MALLOCDEBUG - mallocsizes[nummalloclist] = size; - mallocstrings[nummalloclist] = dummymessage; - malloclist[nummalloclist++] = mem; - if ( filelist ) MesPrint("Mem0 at 0x%x, %l bytes",mem,size); - { - int i = nummalloclist-1; - while ( --i >= 0 ) { - if ( (char *)mem < (((char *)malloclist[i]) + mallocsizes[i]) - && (char *)(malloclist[i]) < ((char *)mem + size) ) { - if ( filelist ) MesPrint("This memory overlaps with the block at 0x%x" - ,malloclist[i]); - } - } - } - t = (char *)mem; - u = t + size; - for ( i = 0; i < (int)BANNER; i++ ) { *t++ = FILLVALUE; *--u = FILLVALUE; } - mem = (void *)t; - { - int j = nummalloclist-1, i; - while ( --j >= 0 ) { - t = (char *)(malloclist[j]); - u = t + mallocsizes[j]; - for ( i = 0; i < (int)BANNER; i++ ) { - u--; - if ( *t != FILLVALUE || *u != FILLVALUE ) { - MesPrint("Writing outside memory for %s",malloclist[i]); -/* MUNLOCK(ErrorMessageLock); */ - UNLOCK(MallocLock); - Terminate(-1); - } - t--; - } - } - } -/* MUNLOCK(ErrorMessageLock); */ - UNLOCK(MallocLock); -#endif - return(mem); -} - -/* - #] Malloc : - #[ Malloc1 : - - Malloc with more detailed error message. - Gives the user some idea of what is happening. -*/ void *Malloc1(LONG size, const char *messageifwrong) { diff --git a/sources/topowrap.cc b/sources/topowrap.cc index 1a3e47ef..804021c4 100644 --- a/sources/topowrap.cc +++ b/sources/topowrap.cc @@ -120,7 +120,7 @@ int GenerateVertices(TOPOTYPE *TopoInf, int pointsremaining, int level) nvert is the number of elements in vert. */ -WORD GenerateTopologies(PHEAD WORD nloops, WORD nlegs, WORD setvert, WORD setmax) +int GenerateTopologies(PHEAD WORD nloops, WORD nlegs, WORD setvert, WORD setmax) { TOPOTYPE TopoInf; int i, points, identical = 0; diff --git a/sources/transform.c b/sources/transform.c index f97a8a35..8dfd47fe 100644 --- a/sources/transform.c +++ b/sources/transform.c @@ -729,7 +729,7 @@ illsize: MesPrint("&Illegal value for base in encode/decode transformation") */ -WORD RunTransform(PHEAD WORD *term, WORD *params) +int RunTransform(PHEAD WORD *term, WORD *params) { WORD *t, *tstop, *w, *m, *out, *in, *tt, retval; WORD *fun, *args, *info, *infoend, *onetransform, *funs, *endfun; @@ -979,7 +979,7 @@ abortlyndon:; first or work with an array of pointers. */ -WORD RunEncode(PHEAD WORD *fun, WORD *args, WORD *info) +int RunEncode(PHEAD WORD *fun, WORD *args, WORD *info) { WORD base, *f, *funstop, *fun1, *t, size1, size2, size3, *arg; int num, num1, num2, n, i, i1, i2; @@ -1166,7 +1166,7 @@ WORD RunEncode(PHEAD WORD *fun, WORD *args, WORD *info) #[ RunDecode : */ -WORD RunDecode(PHEAD WORD *fun, WORD *args, WORD *info) +int RunDecode(PHEAD WORD *fun, WORD *args, WORD *info) { WORD base, num, num1, num2, n, *f, *funstop, *fun1, size1, size2, size3, *t; WORD i1, i2, i, sig; @@ -1336,7 +1336,7 @@ WORD RunDecode(PHEAD WORD *fun, WORD *args, WORD *info) The output is at first written after fun and in the end overwrites fun. */ -WORD RunReplace(PHEAD WORD *fun, WORD *args, WORD *info) +int RunReplace(PHEAD WORD *fun, WORD *args, WORD *info) { int n = 0, i, dirty = 0, totarg, nfix, nwild, ngeneral; WORD *t, *tt, *u, *tstop, *info1, *infoend, *oldwork = AT.WorkPointer; @@ -1814,7 +1814,7 @@ nextt:; Note that we restrict ourselves to short integers and/or single symbols */ -WORD RunImplode(WORD *fun, WORD *args) +int RunImplode(WORD *fun, WORD *args) { GETIDENTITY WORD *tt, *tstop, totarg, arg1, arg2, num1, num2, i1, n; @@ -2015,7 +2015,7 @@ WORD RunImplode(WORD *fun, WORD *args) #[ RunExplode : */ -WORD RunExplode(PHEAD WORD *fun, WORD *args) +int RunExplode(PHEAD WORD *fun, WORD *args) { WORD arg1, arg2, num1, num2, *tt, *tstop, totarg, *tonew, *newfun; WORD *ff, *f; @@ -2129,7 +2129,7 @@ OverWork:; #[ RunPermute : */ -WORD RunPermute(PHEAD WORD *fun, WORD *args, WORD *info) +int RunPermute(PHEAD WORD *fun, WORD *args, WORD *info) { WORD *tt, totarg, *tstop, arg1, arg2, n, num, i, *f, *f1, *f2, *infostop; WORD *in, *iw, withdollar; @@ -2356,7 +2356,7 @@ OverWork:; #[ RunReverse : */ -WORD RunReverse(PHEAD WORD *fun, WORD *args) +int RunReverse(PHEAD WORD *fun, WORD *args) { WORD *tt, totarg, *tstop, arg1, arg2, n, num, i, *f, *f1, *f2, i1, i2; if ( *args != ARGRANGE ) { @@ -2443,7 +2443,7 @@ OverWork:; #[ RunDedup : */ -WORD RunDedup(PHEAD WORD *fun, WORD *args) +int RunDedup(PHEAD WORD *fun, WORD *args) { WORD *tt, totarg, *tstop, arg1, arg2, n, i, j,k, *f, *f1, *f2, *fd, *fstart; if ( *args != ARGRANGE ) { @@ -2532,7 +2532,7 @@ WORD RunDedup(PHEAD WORD *fun, WORD *args) #[ RunCycle : */ -WORD RunCycle(PHEAD WORD *fun, WORD *args, WORD *info) +int RunCycle(PHEAD WORD *fun, WORD *args, WORD *info) { WORD *tt, totarg, *tstop, arg1, arg2, n, num, i, j, *f, *f1, *f2, x, ncyc, cc; if ( *args != ARGRANGE ) { @@ -2684,7 +2684,7 @@ OverWork:; #[ RunAddArg : */ -WORD RunAddArg(PHEAD WORD *fun, WORD *args) +int RunAddArg(PHEAD WORD *fun, WORD *args) { WORD *tt, totarg, *tstop, arg1, arg2, n, num, *f, *f1, *f2; WORD scribble[10+ARGHEAD]; @@ -2771,7 +2771,7 @@ WORD RunAddArg(PHEAD WORD *fun, WORD *args) #[ RunMulArg : */ -WORD RunMulArg(PHEAD WORD *fun, WORD *args) +int RunMulArg(PHEAD WORD *fun, WORD *args) { WORD *t, totarg, *tstop, arg1, arg2, n, *f, nb, *m, i, *w; WORD *scratch, argbuf[20], argsize, *where, *newterm; @@ -2910,7 +2910,7 @@ WORD RunMulArg(PHEAD WORD *fun, WORD *args) the numbers of the arguments in the range. */ -WORD RunIsLyndon(PHEAD WORD *fun, WORD *args, int par) +int RunIsLyndon(PHEAD WORD *fun, WORD *args, int par) { WORD *tt, totarg, *tstop, arg1, arg2, arg, num, *f, n, i; /* WORD *f1; */ @@ -3100,7 +3100,7 @@ OverWork:; #[ RunDropArg : */ -WORD RunDropArg(PHEAD WORD *fun, WORD *args) +int RunDropArg(PHEAD WORD *fun, WORD *args) { WORD *t, *tstop, *f, totarg, arg1, arg2, n; @@ -3126,7 +3126,7 @@ WORD RunDropArg(PHEAD WORD *fun, WORD *args) #[ RunSelectArg : */ -WORD RunSelectArg(PHEAD WORD *fun, WORD *args) +int RunSelectArg(PHEAD WORD *fun, WORD *args) { WORD *t, *tstop, *f, *tt, totarg, arg1, arg2, n; @@ -3154,9 +3154,10 @@ WORD RunSelectArg(PHEAD WORD *fun, WORD *args) #[ RunZtoHArg : */ -WORD RunZtoHArg(PHEAD WORD *fun, WORD *args) +int RunZtoHArg(PHEAD WORD *fun, WORD *args) { - WORD *tt, totarg, *tstop, arg1, arg2, n, i, *f, *f1, sign = 0; + WORD *tt, totarg, *tstop, arg1, arg2, n, i, *f, *f1; + int sign = 0; WORD *t, *t1, *t2, *t3; if ( *args != ARGRANGE ) { MLOCK(ErrorMessageLock); @@ -3209,9 +3210,10 @@ WORD RunZtoHArg(PHEAD WORD *fun, WORD *args) #[ RunHtoZArg : */ -WORD RunHtoZArg(PHEAD WORD *fun, WORD *args) +int RunHtoZArg(PHEAD WORD *fun, WORD *args) { - WORD *tt, totarg, *tstop, arg1, arg2, n, i, *f, *f1, *f2, sign = 0; + WORD *tt, totarg, *tstop, arg1, arg2, n, i, *f, *f1, *f2; + int sign = 0; WORD *t, *t1, *t2; if ( *args != ARGRANGE ) { MLOCK(ErrorMessageLock); diff --git a/sources/wildcard.c b/sources/wildcard.c index b0c2a563..b7d88f9f 100644 --- a/sources/wildcard.c +++ b/sources/wildcard.c @@ -1358,7 +1358,7 @@ ss10: *m++ = *t++; substituted. This is ready for further wildcard substitutions. */ -WORD ResolveSet(PHEAD WORD *from, WORD *to, WORD *subs) +int ResolveSet(PHEAD WORD *from, WORD *to, WORD *subs) { GETBIDENTITY WORD *m, *s, *w, j, i, ii, i3, flag, num; @@ -1541,7 +1541,7 @@ void ClearWild(PHEAD0) */ -WORD AddWild(PHEAD WORD oldnumber, WORD type, WORD newnumber) +int AddWild(PHEAD WORD oldnumber, WORD type, WORD newnumber) { GETBIDENTITY WORD *w, *m, n, k, i = -1; @@ -1788,11 +1788,12 @@ DEBUG(MesPrint("Thread %w(f): w=(%d,%d,%d,%d)(%d)",mm[0],mm[1],mm[2],mm[3],C->nu or-ed with EATTENSOR which is at least 8192. */ -WORD CheckWild(PHEAD WORD oldnumber, WORD type, WORD newnumber, WORD *newval) +int CheckWild(PHEAD WORD oldnumber, WORD type, WORD newnumber, WORD *newval) { GETBIDENTITY WORD *w, *m, *s, n, old2, inset; - WORD n2, oldval, dirty, i, j, notflag = 0, retblock = 0; + WORD n2, oldval, dirty, i, j; + int notflag = 0, retblock = 0; CBUF *C = cbuf+AT.ebufnum; WORD eattensor = type & EATTENSOR; type = type & ~EATTENSOR;