Commit Graph

77 Commits

Author SHA1 Message Date
rdb 90cc8fe385 Fix building with SIMPLE_THREADS=1 2018-10-16 22:15:36 +02:00
rdb 670047b4b0 dtoolbase: enable use of std::atomic_flag, also on macOS 2018-09-04 12:02:13 +02:00
rdb 079a7495f2 Fix macOS build by providing missing std::copysign 2018-07-31 10:47:16 +02:00
rdb ad3ab3ad21 Define stable ordering for WeakPointerTo for use as map/set key
Currently, the WeakPointerTo comparison operators compare the raw pointers, but this is not useful as it may cause a false equality if one weak pointer in the comparison is expired and points to memory that has since been reused.

Instead, we can define a comparison based on the control block pointer, which exists since the new weak pointer implementation in 0bb81a43c9.  This is implemented in the owner_before method, matching C++11 std::weak_ptr semantics.

I would now recommend deprecating most comparison operators of WeakPointerTo or redefining them to make more sense, ie. comparing equal if they (once) referred to the same object and not if they simply point to the same memory address.  This has not yet been done, though code that uses the comparison operators has been fixed in this commit.

Overloads of std::owner_less have been provided for creating a map or set with Weak(Const)PointerTo keys.
2018-07-30 17:27:09 +02:00
Sam Edwards b2bfb31114 general: Remove `using std::*` from headers
Also remove most `using namespace std;` statements. The only one that remains is in py_panda.h.

Closes #350
Closes #335
2018-06-14 16:04:49 +02:00
rdb e27cb2dec3 parser-inc: provide various more STL headers and definitions
This cuts down on various warnings generated by interrogate.
2018-06-04 20:44:14 +02:00
Sam Edwards 5e82671084 general: Do away with TYPENAME macro 2018-06-03 16:36:34 -06:00
rdb e0245d2777 First step towards eliminating `using namespace std;` (#335) 2018-06-03 20:32:23 +02:00
rdb 190c553c57 dtool_config.h: remove some macros for ancient C++ compilers 2018-05-30 23:15:24 +02:00
Sam Edwards 0ce9dc98b1 general: Move inclusion of checkPandaVersion.h to dtoolbase
This includes it everywhere, meaning developers no longer must
remember to include it in each metalib init file.
2018-05-26 18:39:24 -06:00
rdb 9fad3dba60 general: remove macros for compatibility with non-C++11 compilers
Now that we require MSVC 2015, we no longer need all this nonsense, so we can write cleaner code.
2018-05-23 23:33:05 +02:00
rdb 8a98bf42a3 general: enable use of tie and tuple on macOS (from TR1, for now) 2018-05-05 23:09:39 +02:00
Sam Edwards 9852ada792 dtoolbase: Change export macros to EXP*_DTOOL_DTOOLBASE
This is for consistency with `panda`, which follows this format.
2018-03-25 13:17:52 -06:00
Sam Edwards a4c1b44371 dtoolbase: Remove EXPORT_TEMPLATES define
As of f69354d9fa, this is just always
expected on all platforms. If it's not defined,
TemplateClass<X>::_type_handle won't link correctly with some compilers
(e.g. Clang) and the lack of 'extern template class' will result in
duplicated code in any case. In short, turning it off causes problems.

makepanda also always turns this on, so it doesn't represent any
optional feature or autodetected platform-specific behavior anyway.
2018-03-20 14:36:19 -04:00
rdb fa1c480508 general: clean up use of override keyword 2017-07-03 12:56:23 +02:00
rdb f57a3f9cde Hack to remove build warning on MSVC 2010
Fixes LP #1700329
2017-07-03 11:13:02 +02:00
rdb a66b497f2b We no longer support GCC 4.6. Version 4.8+ is recommended.
Ubuntu Precise users can install GCC 4.8 from the ppa:ubuntu-toolchain-r/test repository.
CentOS 5/6 users can install devtoolset-2 or later.
2017-06-12 19:47:54 +02:00
rdb 88e963b936 Fix compilation errors in GCC 4.6 and 4.8 2017-06-09 20:36:45 +02:00
rdb 2acde88695 New alignment code to hopefully fix the alignment issues 2017-02-10 03:01:32 +01:00
rdb a15d84dbeb Fix compile errors and warnings in MSVC 2010 / GCC 4.6 2017-01-12 15:18:48 +01:00
rdb e60d1e292e Make better use of C++ rules for implicit generation; allow PointerTo and some mutex impls to be static initialised 2017-01-12 12:34:15 +01:00
rdb 41d26284d7 Fix various compilation issues on Mac.
Work around bugs in Apple Clang that ships with XCode 4 with C++11 by disabling constexpr
Use move() instead of std::move()
It also looks like we'll have to continue using pystub for tools that use libp3interrogatedb for now.
2017-01-08 17:17:56 -05:00
rdb 816b2ac3ba C++11 polyfills. This should fix Snow Leopard build. 2017-01-05 23:26:13 +01:00
tobspr 0fcfb8e372 New file headers, new comment style 2016-02-17 17:47:48 +01:00
rdb caa03c53dd Interrogate cppparser improvements, C++11/14/17 additions:
* Support trailing return type.
 * Ignore C++14 digit separators.
 * Parse C++14 binary number representations.
 * Support "using"-style type aliases.
 * Support decltype and auto with "new".
 * Remove silly "long float" and "long long float".
 * Support default visibility with class inheritance.
 * Remove -longlong hack since C++11 supports long long natively.
 * Support unary plus operator.
 * Preserve bitfield definitions.
 * Support constructor inits using braces.
 * Support override/final specifiers.
 * Ignore [[attributes]] in certain cases
 * Add support for typeid() in expressions
 * Parse (but ignore) lambda expressions
 * Differentiate between casts, add const_cast/reinterpret_cast
 * Support thread_local variables.
2016-02-16 01:18:51 +01:00
tobspr a9e18f9d24 Improve Vector implementations: - Remove unecessary assignment operators - Add normalize() method - Use properties for certain swizzle masks - Add constexpr where appropriate 2016-01-03 22:02:00 +01:00
rdb 920210c999 Fix the vast majority of Interrogate parse issues and warnings, add support for inline namespace and constexpr 2015-10-16 14:57:40 +02:00
rdb ca37b6b6c0 Fix VC2015 compile errors, allow selecting any WinSDK/MSVC version. All experimental, still. 2015-10-05 02:12:46 +02:00
rdb 30a26bc530 Match up interrogate standard typedefs better with gcc/msvc standard typedefs 2015-09-30 16:07:37 +02:00
rdb 75019784f4 Changes to inlining so we can use FORCE_INLINING in gcc as well 2015-07-27 15:39:46 +02:00
rdb f69354d9fa Explicit template instantiation on gcc/clang, implement cfsworks' suggestion of moving compiler-specific stuff out of pandasymbols.h et al 2015-06-03 13:36:04 +02:00
rdb 01cd4fcbd5 Fix compile error on clang when C++11 support is disabled 2015-02-07 18:15:56 +01:00
rdb 028c09add5 Implicit cast string to InternalName in c++, also optimize for string literals 2015-02-07 16:43:25 +01:00
rdb 0a64bdb33b Fix MouseRecorder & let PandaNode inherit from TypedWritableReferenceCount 2015-01-24 16:12:04 +01:00
rdb af15797a25 Many, many performance optimizations and enhancements 2015-01-07 19:30:01 +01:00
rdb e8905b840c Use C++11 move semantics to dramatically improve PointerTo performance 2015-01-02 15:25:58 +01:00
rdb 31a71c990d Fix issues with OS X 10.9 compilation, fix issues uncovered by clang 2014-10-12 18:45:37 +00:00
rdb e98618b105 Only use constexpr when the compiler conforms to C++11 2014-07-21 15:41:31 +00:00
rdb dba717fe83 GCC 4.7 enables constexpr, not 4.6 2014-07-17 16:18:04 +00:00
rdb 1be0fb5169 Add atomic adjust impl that uses GCC intrinsics. Also, make use of "constexpr" when available. 2014-07-17 13:11:06 +00:00
rdb cc3bae7e76 Big interrogate cleanup, new extension system, add __iter__ support, add buffer protocol support 2013-09-17 10:11:43 +00:00
David Rose 59ec701a26 build once more with the Tau profiler 2011-09-06 17:29:30 +00:00
rdb 319b8c4cb1 More stuff related to extensions 2011-01-03 08:25:13 +00:00
David Rose 494d61083e avoid compiler warnings from HAVE_BLAH_H conflicts by renaming macros 2009-08-21 15:40:05 +00:00
David Rose fb9c56432a we are now using the modified BSD license 2008-05-28 18:37:20 +00:00
David Rose 65dc53a585 oops, compile properly in O4 2007-06-29 19:09:45 +00:00
David Rose 385e7be325 still more meminfo fixes 2007-06-29 15:53:27 +00:00
David Rose d52eb37b14 move some low-level mem tracking into MemoryHook, more mem tracking fixes 2007-06-29 01:39:09 +00:00
David Rose fe97acf7cb integrate thread_yield in appropriate places 2007-06-26 13:01:16 +00:00
David Rose 5f1b029f42 NeverFreeMemory 2007-06-14 23:15:14 +00:00