Commit Graph

154 Commits

Author SHA1 Message Date
Sylvain Pion 8573fe26ce Rename CGALi to internal. 2009-08-24 17:10:04 +00:00
Sylvain Pion 927b432b39 typo : mecanism -> mechanism. 2009-08-10 15:57:03 +00:00
Sylvain Pion 1948ac7df0 Add more information about make_array().
It's potentially removable, actually, apart from VC++ being too buggy as usual.
2009-08-04 15:03:23 +00:00
Laurent Rineau ac0017572a Fix a problem reported by a user and discussed on CGAL-develop:
Laurent Rineau (GeometryFactory) wrote:
> On Wednesday 29 July 2009 14:05:41 Sylvain Pion wrote:
>> Laurent Rineau (GeometryFactory) wrote:
>>> One GF customer reported the following issue:
>>>
>>> "For 64bit compilation, we get the disturbing warning
>>>
>>> ..\Third_Party_Libraries\CGAL\include\CGAL/Handle.h(90) : warning C4311:
>>> 'reinterpret_cast' : pointer truncation from 'CGAL::Rep *const ' to
>>> 'unsigned long'
>>>
>>> which looks like a real 64bit issue."
>>>
>>> and he is right. Here is the code:
>>>
>>> inline
>>> bool
>>> identical(const Handle &h1, const Handle &h2)
>>> { return reinterpret_cast<unsigned long>(h1.PTR) ==
>>>          reinterpret_cast<unsigned long>(h2.PTR); }
>>>
>>>
>>> "unsigned long" is not the right type! On 32 bits machine, that type is
>>> too long, and on x64 under Windows, that type is too short!
>> Indeed...
>>
>>> See http://en.wikipedia.org/wiki/LLP64#Specific_data_models
>>>
>>> We need uintptr_t from C99, because that type is defined as the fastest
>>> unsigned integral type that is convertible from void pointers and
>>> comvertible to void pointers, without truncation.
>>>
>>> However, that type is not yet in the C++ norm, and some platforms may not
>>> have it. We will probably need some macro stuff:
>>>   - use C++0x if possible,
>>>   - fallback to plain C99 headers,
>>>   - then fallback to platform specific typedefs.
>>>
>>> Is that the correct solution?
>> For the identical() function above, why don't we simply compare
>> the pointers without doing the casts to unsigned long at all ?
>>
>> Nevertheless, the problem exists in the id() function (and this
>> function is probably less useful...).
>> What about returning std::ptrdiff_t with {return h.PTR -
>> static_cast<Ref*>(0);} ?
> 
> Yes. That might be a good cross-platform solution for id(). I will commit that 
> in the trunk. And identical() will be a.id()==b.id().

Why not just h1.PTR == h2.PTR for identical() ?


So, let's go and break the trunk! ;-)
I have a least compiled and run test/Kernel_23/Lazy_kernel.cpp
2009-07-29 13:27:47 +00:00
Sylvain Pion 6335879bb6 Properties. 2009-07-20 08:52:20 +00:00
Andreas Fabri 1fcaf88533 Suppress warning 2009-07-07 15:56:20 +00:00
Andreas Fabri ffe2933f8c fix warning number 2009-07-06 09:30:22 +00:00
Andreas Fabri 8292c85884 Suppress warning 547 for VC++ 2009-07-05 18:56:20 +00:00
Sébastien Loriot 4104106c84 Work around for intel compiler 11 EDG and Dispatch_or_drop_output_iterator non-variadic case 2009-07-02 13:53:52 +00:00
Laurent Rineau bc6974d68d A probably temporarily fix for Intel Compiler (EDG frontend). 2009-07-01 15:42:50 +00:00
Sébastien Loriot ac1b06a265 add 1 parameter version of Dispatch_*_iterator in non-variadic case 2009-05-05 21:05:58 +00:00
Sylvain Pion 916ba2c342 Consistent naming :
Iterators_tuple   -> Iterator_tuple
Value_types_tuple -> Value_type_tuple
2009-05-05 07:38:27 +00:00
Sylvain Pion 64ed32dc80 Add missing CGALi:: . 2009-05-03 18:30:27 +00:00
Sylvain Pion b75a57f5b8 g++ 4.3 has variadics but not deleted functions. 2009-04-30 21:18:13 +00:00
Sébastien Loriot 8ea30fa091 Expand the non-variadic version of Dispatch_*_output_iterator and Is_in_tuple for up to 7 parameters 2009-04-30 17:28:55 +00:00
Sylvain Pion f0ed774e37 Move CGAL::array to namespace CGAL::cpp0x, like tuple. 2009-04-30 14:03:52 +00:00
Sylvain Pion 6792be2fa7 Move tuple & co under the sub-namespace CGAL::cpp0x, to avoid name clashes
(e.g. for make_tuple() already used for Triple/Quadruple).
2009-04-30 13:32:03 +00:00
Sylvain Pion a4c173d9dd Add Is_in_tuple<>, Dispatch_or_drop_output_iterator<> and Dispatch_output_iterator<>. 2009-04-29 20:48:45 +00:00
Sylvain Pion 2eb44d3596 tuple compatibility layer. 2009-04-29 19:45:41 +00:00
Sylvain Pion a29850cb8d Add comment 2009-04-21 18:00:27 +00:00
Sylvain Pion f55c8e9a2f Renaming before documenting: Default_argument -> Default. 2009-04-10 21:55:24 +00:00
Sylvain Pion 560452cf04 I'm told this fixes the test-suite.
-- 
Sylvain, aka mail2svncommitconverter
2009-03-05 20:41:46 +00:00
Sylvain Pion da0da4cbc6 Add functions iterator_to and s_iterator_to that construct an iterator from
a reference to an object supposedly stored in a Compact_container.
This is inspired from Boost.Intrusive:
http://www.boost.org/doc/libs/1_38_0/doc/html/intrusive/obtaining_iterators_from_values.html
2009-03-03 02:47:23 +00:00
Andreas Fabri f64b5e9e2c Undo of Rev 46756 and 46737 2008-11-25 17:17:06 +00:00
Sylvain Pion 6f5963131b Fix comment. 2008-11-21 16:47:39 +00:00
Sylvain Pion 8eab7e07dd Split <CGAL/assertions.h> in 2 files, by moving the assertion behaviour
changing functions to a separate header, not included by default
(<CGAL/assertions_behaviour.h>).  The motivation is to hide the enum
values with risky names (ABORT, EXIT, CONTINUE) to a header file which
is most probably not used by any user (or very few).
(breaks backward compatibility for an expected very few, for the sake
of erasing random surprises for "many" ?)
2008-11-21 16:42:02 +00:00
Andreas Fabri 0f9ed11e99 Turn operator== into a member function 2008-11-08 11:35:40 +00:00
Andreas Fabri 06f25ea9e6 turn operator==(Filter_iterator, Filter_iterator) into a member function 2008-11-07 09:47:54 +00:00
Andreas Fabri e354f7ce4d Include boost header file, as we use a boost macro 2008-10-13 14:18:24 +00:00
Andreas Fabri f4e89cf427 suppress VC++ warning 2008-10-13 13:11:05 +00:00
Sylvain Pion 4aa1cb057a Remove my email adress from header files. 2008-10-11 20:21:08 +00:00
Sylvain Pion 6aba449434 Replace Nef's custom Object_handle by CGAL::Object.
There were some differences :
- CGAL::Object has no template constructor, so using make_object() was required.
- CGAL::Object had no comparison with NULL to check emptyness.  I added
  such comparison operators to CGAL::Object as *deprecated*.
2008-09-09 16:03:25 +00:00
Sylvain Pion a565db4da9 Apply std::remove_reference *before* std::remove_cv... 2008-08-28 12:38:14 +00:00
Sylvain Pion d79048ab40 Add comment. 2008-08-27 17:31:06 +00:00
Sylvain Pion 7aa01562bd typo 2008-08-27 15:36:24 +00:00
Sylvain Pion 8865f7ea4f Use C++0x rvalue references in Object, Handle_for, MP_Float and Quotient. 2008-08-27 14:19:18 +00:00
Sylvain Pion 44c185f1f4 Rename boost::array to CGAL::array. 2008-08-26 13:15:21 +00:00
Sylvain Pion 53f5c9679b Add a using directive "using std::array" in namespace CGAL to import either:
- C++0x's std:array from <array>
- TR1's std::tr1::array from <tr1/array>
- boost::array from <boost/array.hpp>
Motivation : GCC's std::array is faster than boost::array.

Move CGALi:make_array to namespace CGAL.

Document CGAL::array.
2008-08-26 13:08:16 +00:00
Sylvain Pion f615d84fe0 Add new function CGAL::indeterminate() to help generate an indeterminate
in template context.
2008-08-22 16:06:53 +00:00
Sylvain Pion e829727e6a Add overloads of the handy functions:
bool are_sorted(const T & a, const T & b, const T & c)
  bool are_strictly_sorted(const T & a, const T & b, const T & c)
  bool are_ordered(const T & a, const T & b, const T & c)
  bool are_strictly_ordered(const T & a, const T & b, const T & c)
with a Compare functor as last argument.
2008-08-12 15:22:47 +00:00
Sylvain Pion 25051d8809 Move CGAL::copy_n() from the obsolete <CGAL/copy_n.h> to <CGAL/algorithm.h>. 2008-08-12 12:51:15 +00:00
Sylvain Pion c1389c006d Add a couple of handy functions:
bool are_sorted(const T & a, const T & b, const T & c)
  bool are_strictly_sorted(const T & a, const T & b, const T & c)
  bool are_ordered(const T & a, const T & b, const T & c)
  bool are_strictly_ordered(const T & a, const T & b, const T & c)
2008-08-12 12:43:20 +00:00
Sylvain Pion 0c34dc2525 - Refine CGAL_AND or CGAL_OR to make sure they work when the second argument is a bool.
- Add CGAL_AND_3 and CGAL_OR_3 for 3-arguments boolean operations.
2008-08-12 11:23:34 +00:00
Sylvain Pion 449195eb9d Add CGAL_AND() and CGAL_OR() macros, which do the same as && and || but propagate Uncertain-ty.
(for compilers that support statement expressions, like GCC).

Add Uncertain::is_same() to help in the test-suite.
2008-08-12 10:50:39 +00:00
Sylvain Pion 0b58aac0d4 Add certainly_not() and possibly_not() (more expressive and maybe faster), and
simplify the implementation of certainly() and possibly().
2008-08-12 08:26:00 +00:00
Sylvain Pion 34be1f4a81 Introduce a macro CGAL_NO_UNCERTAIN_CONVERSION_OPERATOR to restrict the automatic
conversion operator.
Update the test-suite to work in this setting on Leopard (assert macro restrictions).
2008-08-11 08:24:31 +00:00
Sylvain Pion aff1bf74aa Replace CGAL::Interval_nt<>::number_of_failures() by a CGAL_PROFILER() counter. 2008-08-06 13:16:04 +00:00
Sylvain Pion 5641a7fe20 Fix the FIXME : improved operator== 2008-08-04 15:42:10 +00:00
Sylvain Pion 8828ebec1c - The default constructor of Uncertain now initializes to T(),
not indeterminate.
- Add some examples in the manual.
2008-08-04 15:12:59 +00:00
Sylvain Pion 0c65a5a092 - It is not possible to use the CONTINUE mode in set_error_behaviour().
- Various formatting fixes.
- Mark the assertion_fail and similar functions as CGAL_NORETURN.
2008-07-31 09:50:28 +00:00