X-Git-Url: https://ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=ginac%2Futils.h;h=ebfc9804314a789d6657609ac1b80a9942a03a0c;hb=da6a61ba2586263e46ade4b67dca121506c2bff9;hp=ae17f53ae34df211c07fd1a0f02c001a219b8e1e;hpb=22abfbe8c78e339188096a5bf749a7c2d4f0a368;p=ginac.git diff --git a/ginac/utils.h b/ginac/utils.h index ae17f53a..ebfc9804 100644 --- a/ginac/utils.h +++ b/ginac/utils.h @@ -4,7 +4,7 @@ * of any interest to the user of the library. */ /* - * GiNaC Copyright (C) 1999-2005 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2007 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -58,14 +58,18 @@ inline int compare_pointers(const T * a, const T * b) return 0; } -/** Rotate bits of unsigned value by one bit to the left. */ -inline unsigned rotate_left(unsigned n) -{ - return (n & 0x80000000U) ? (n << 1 | 0x00000001U) : (n << 1); -} +#if SIZEOF_VOID_P == SIZEOF_INT +typedef unsigned int p_int; +#elif SIZEOF_VOID_P == SIZEOF_LONG +typedef unsigned long p_int; +#elif SIZEOF_VOID_P == SIZEOF_LONG_LONG +typedef unsigned long long p_int; +#else +typedef unsigned long p_int; +#endif /** Truncated multiplication with golden ratio, for computing hash values. */ -inline unsigned golden_ratio_hash(unsigned n) +inline unsigned golden_ratio_hash(p_int n) { // This function works much better when fast arithmetic with at // least 64 significant bits is available. @@ -391,7 +395,7 @@ extern const ex _ex120; // Helper macros for class implementations (mostly useful for trivial classes) #define DEFAULT_CTOR(classname) \ -classname::classname() : inherited(TINFO_##classname) { setflag(status_flags::evaluated | status_flags::expanded); } +classname::classname() : inherited(&classname::tinfo_static) { setflag(status_flags::evaluated | status_flags::expanded); } #define DEFAULT_UNARCHIVE(classname) \ ex classname::unarchive(const archive_node &n, lst &sym_lst) \