Re: svn commit: r777603 - in /stdcxx/branches/4.2.x: etc/config/src/ src/

View: New views
3 Messages — Rating Filter:   Alert me  

Parent Message unknown Re: svn commit: r777603 - in /stdcxx/branches/4.2.x: etc/config/src/ src/

by Martin Sebor-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

faridz@... wrote:
> Author: faridz
> Date: Fri May 22 16:30:22 2009
> New Revision: 777603
>
> URL: http://svn.apache.org/viewvc?rev=777603&view=rev
> Log:
> 2009-05-22  Farid Zaripov  <faridz@...>
>
> * etc/config/src/DOMAIN_ERROR_DTOR.cpp: New configuration test checking for domain_error dtor

Why do we need this and the other tests?

I'm pretty sure you know this but just for completeness:

Unlike their base class, std::exception, which is normally defined
in the language support library (i.e., the C++ runtime), such as
libsupc++ with gcc, std::domain_error and the rest of the classes
below as well as most other C++ Standard Library classes (most
notoriously iostreams and locales) are defined in the C++ Standard
Library, such as libstdc++ with gcc. Programs that link with stdcxx
must only link with the language runtime and must avoid linking with
the rest of the C++ Standard Library that comes with the compiler
(for gcc, this is done by using the gcc command to link rather than
g++).

If there is a compiler that we need _RWSTD_NO_DOMAIN_ERROR_DTOR for,
won't we also need a macro for every single one of the rest of C++
Standard Library polymorphic classes such as std::ios_base?

> * etc/config/src/INVALID_ARGUMENT_DTOR.cpp: Same for invalid_argument.
> * etc/config/src/LENGTH_ERROR_DTOR.cpp: Same for length_error.
> * etc/config/src/LOGIC_ERROR_DTOR.cpp: Same for logic_error.
> * etc/config/src/OUT_OF_RANGE_DTOR.cpp: Same for out_of_range.
> * etc/config/src/OVERFLOW_ERROR_DTOR.cpp: Same for overflow_error.
> * etc/config/src/RANGE_ERROR_DTOR.cpp: Same for range_error.
> * etc/config/src/RUNTIME_ERROR_DTOR.cpp: Same for runtime_error.
> * etc/config/src/UNDERFLOW_ERROR_DTOR.cpp: Same for underflow_error.
> * src/domain_error.cpp: Define dtor if it is not defined in libc only.

Are you sure you meant libc above? No libc that I know of defines
C++ classes.

What platform is this for?

Martin


> * src/invalid_argument.cpp: Ditto.
> * src/length_error.cpp: Ditto.
> * src/logic_error.cpp: Ditto.
> * src/out_of_range.cpp: Ditto.
> * src/overflow_error.cpp: Ditto.
> * src/range_error.cpp: Ditto.
> * src/runtime_error.cpp: Ditto.
> * src/underflow_error.cpp: Ditto.
>
> Added:
>     stdcxx/branches/4.2.x/etc/config/src/DOMAIN_ERROR_DTOR.cpp   (with props)
>     stdcxx/branches/4.2.x/etc/config/src/INVALID_ARGUMENT_DTOR.cpp   (with props)
>     stdcxx/branches/4.2.x/etc/config/src/LENGTH_ERROR_DTOR.cpp   (with props)
>     stdcxx/branches/4.2.x/etc/config/src/LOGIC_ERROR_DTOR.cpp   (with props)
>     stdcxx/branches/4.2.x/etc/config/src/OUT_OF_RANGE_DTOR.cpp   (with props)
>     stdcxx/branches/4.2.x/etc/config/src/OVERFLOW_ERROR_DTOR.cpp   (with props)
>     stdcxx/branches/4.2.x/etc/config/src/RANGE_ERROR_DTOR.cpp   (with props)
>     stdcxx/branches/4.2.x/etc/config/src/RUNTIME_ERROR_DTOR.cpp   (with props)
>     stdcxx/branches/4.2.x/etc/config/src/UNDERFLOW_ERROR_DTOR.cpp   (with props)
> Modified:
>     stdcxx/branches/4.2.x/src/domain_error.cpp
>     stdcxx/branches/4.2.x/src/invalid_argument.cpp
>     stdcxx/branches/4.2.x/src/length_error.cpp
>     stdcxx/branches/4.2.x/src/logic_error.cpp
>     stdcxx/branches/4.2.x/src/out_of_range.cpp
>     stdcxx/branches/4.2.x/src/overflow_error.cpp
>     stdcxx/branches/4.2.x/src/range_error.cpp
>     stdcxx/branches/4.2.x/src/runtime_error.cpp
>     stdcxx/branches/4.2.x/src/underflow_error.cpp
>
> Added: stdcxx/branches/4.2.x/etc/config/src/DOMAIN_ERROR_DTOR.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/etc/config/src/DOMAIN_ERROR_DTOR.cpp?rev=777603&view=auto
> ==============================================================================
> --- stdcxx/branches/4.2.x/etc/config/src/DOMAIN_ERROR_DTOR.cpp (added)
> +++ stdcxx/branches/4.2.x/etc/config/src/DOMAIN_ERROR_DTOR.cpp Fri May 22 16:30:22 2009
> @@ -0,0 +1,40 @@
> +// checking for domain_error dtor
> +
> +/***************************************************************************
> + *
> + * Licensed to the Apache Software  Foundation (ASF) under one or more
> + * contributor  license agreements.  See  the NOTICE  file distributed
> + * with  this  work  for  additional information  regarding  copyright
> + * ownership.   The ASF  licenses this  file to  you under  the Apache
> + * License, Version  2.0 (the  License); you may  not use  this file
> + * except in  compliance with the License.   You may obtain  a copy of
> + * the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the  License is distributed on an  "AS IS" BASIS,
> + * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
> + * implied.   See  the License  for  the  specific language  governing
> + * permissions and limitations under the License.
> + *
> + * Copyright 1999-2007 Rogue Wave Software, Inc.
> + *
> + **************************************************************************/
> +
> +#if 0   // guard invalid preprocessor symbol below
> +   // establish a dependency on RUNTIME_IN_STD.cpp
> +#  ifndef _RWSTD_NO_RUNTIME_IN_STD
> +#  endif   // _RWSTD_NO_RUNTIME_IN_STD
> +#endif   // 0
> +
> +#define TEST_DTOR
> +#define bad_alloc domain_error
> +#define main      test_domain_error_dtor
> +#include "BAD_ALLOC_ASSIGNMENT.cpp"
> +#undef main
> +
> +int main (int argc, char *argv[])
> +{
> +    return test_domain_error_dtor (argc, argv);
> +}
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/DOMAIN_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/DOMAIN_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:keywords = Id
>
> Added: stdcxx/branches/4.2.x/etc/config/src/INVALID_ARGUMENT_DTOR.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/etc/config/src/INVALID_ARGUMENT_DTOR.cpp?rev=777603&view=auto
> ==============================================================================
> --- stdcxx/branches/4.2.x/etc/config/src/INVALID_ARGUMENT_DTOR.cpp (added)
> +++ stdcxx/branches/4.2.x/etc/config/src/INVALID_ARGUMENT_DTOR.cpp Fri May 22 16:30:22 2009
> @@ -0,0 +1,40 @@
> +// checking for invalid_argument dtor
> +
> +/***************************************************************************
> + *
> + * Licensed to the Apache Software  Foundation (ASF) under one or more
> + * contributor  license agreements.  See  the NOTICE  file distributed
> + * with  this  work  for  additional information  regarding  copyright
> + * ownership.   The ASF  licenses this  file to  you under  the Apache
> + * License, Version  2.0 (the  License); you may  not use  this file
> + * except in  compliance with the License.   You may obtain  a copy of
> + * the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the  License is distributed on an  "AS IS" BASIS,
> + * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
> + * implied.   See  the License  for  the  specific language  governing
> + * permissions and limitations under the License.
> + *
> + * Copyright 1999-2007 Rogue Wave Software, Inc.
> + *
> + **************************************************************************/
> +
> +#if 0   // guard invalid preprocessor symbol below
> +   // establish a dependency on RUNTIME_IN_STD.cpp
> +#  ifndef _RWSTD_NO_RUNTIME_IN_STD
> +#  endif   // _RWSTD_NO_RUNTIME_IN_STD
> +#endif   // 0
> +
> +#define TEST_DTOR
> +#define bad_alloc invalid_argument
> +#define main      test_invalid_argument_dtor
> +#include "BAD_ALLOC_ASSIGNMENT.cpp"
> +#undef main
> +
> +int main (int argc, char *argv[])
> +{
> +    return test_invalid_argument_dtor (argc, argv);
> +}
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/INVALID_ARGUMENT_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/INVALID_ARGUMENT_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:keywords = Id
>
> Added: stdcxx/branches/4.2.x/etc/config/src/LENGTH_ERROR_DTOR.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/etc/config/src/LENGTH_ERROR_DTOR.cpp?rev=777603&view=auto
> ==============================================================================
> --- stdcxx/branches/4.2.x/etc/config/src/LENGTH_ERROR_DTOR.cpp (added)
> +++ stdcxx/branches/4.2.x/etc/config/src/LENGTH_ERROR_DTOR.cpp Fri May 22 16:30:22 2009
> @@ -0,0 +1,40 @@
> +// checking for length_error dtor
> +
> +/***************************************************************************
> + *
> + * Licensed to the Apache Software  Foundation (ASF) under one or more
> + * contributor  license agreements.  See  the NOTICE  file distributed
> + * with  this  work  for  additional information  regarding  copyright
> + * ownership.   The ASF  licenses this  file to  you under  the Apache
> + * License, Version  2.0 (the  License); you may  not use  this file
> + * except in  compliance with the License.   You may obtain  a copy of
> + * the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the  License is distributed on an  "AS IS" BASIS,
> + * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
> + * implied.   See  the License  for  the  specific language  governing
> + * permissions and limitations under the License.
> + *
> + * Copyright 1999-2007 Rogue Wave Software, Inc.
> + *
> + **************************************************************************/
> +
> +#if 0   // guard invalid preprocessor symbol below
> +   // establish a dependency on RUNTIME_IN_STD.cpp
> +#  ifndef _RWSTD_NO_RUNTIME_IN_STD
> +#  endif   // _RWSTD_NO_RUNTIME_IN_STD
> +#endif   // 0
> +
> +#define TEST_DTOR
> +#define bad_alloc length_error
> +#define main      test_length_error_dtor
> +#include "BAD_ALLOC_ASSIGNMENT.cpp"
> +#undef main
> +
> +int main (int argc, char *argv[])
> +{
> +    return test_length_error_dtor (argc, argv);
> +}
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/LENGTH_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/LENGTH_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:keywords = Id
>
> Added: stdcxx/branches/4.2.x/etc/config/src/LOGIC_ERROR_DTOR.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/etc/config/src/LOGIC_ERROR_DTOR.cpp?rev=777603&view=auto
> ==============================================================================
> --- stdcxx/branches/4.2.x/etc/config/src/LOGIC_ERROR_DTOR.cpp (added)
> +++ stdcxx/branches/4.2.x/etc/config/src/LOGIC_ERROR_DTOR.cpp Fri May 22 16:30:22 2009
> @@ -0,0 +1,40 @@
> +// checking for logic_error dtor
> +
> +/***************************************************************************
> + *
> + * Licensed to the Apache Software  Foundation (ASF) under one or more
> + * contributor  license agreements.  See  the NOTICE  file distributed
> + * with  this  work  for  additional information  regarding  copyright
> + * ownership.   The ASF  licenses this  file to  you under  the Apache
> + * License, Version  2.0 (the  License); you may  not use  this file
> + * except in  compliance with the License.   You may obtain  a copy of
> + * the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the  License is distributed on an  "AS IS" BASIS,
> + * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
> + * implied.   See  the License  for  the  specific language  governing
> + * permissions and limitations under the License.
> + *
> + * Copyright 1999-2007 Rogue Wave Software, Inc.
> + *
> + **************************************************************************/
> +
> +#if 0   // guard invalid preprocessor symbol below
> +   // establish a dependency on RUNTIME_IN_STD.cpp
> +#  ifndef _RWSTD_NO_RUNTIME_IN_STD
> +#  endif   // _RWSTD_NO_RUNTIME_IN_STD
> +#endif   // 0
> +
> +#define TEST_DTOR
> +#define bad_alloc logic_error
> +#define main      test_logic_error_dtor
> +#include "BAD_ALLOC_ASSIGNMENT.cpp"
> +#undef main
> +
> +int main (int argc, char *argv[])
> +{
> +    return test_logic_error_dtor (argc, argv);
> +}
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/LOGIC_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/LOGIC_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:keywords = Id
>
> Added: stdcxx/branches/4.2.x/etc/config/src/OUT_OF_RANGE_DTOR.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/etc/config/src/OUT_OF_RANGE_DTOR.cpp?rev=777603&view=auto
> ==============================================================================
> --- stdcxx/branches/4.2.x/etc/config/src/OUT_OF_RANGE_DTOR.cpp (added)
> +++ stdcxx/branches/4.2.x/etc/config/src/OUT_OF_RANGE_DTOR.cpp Fri May 22 16:30:22 2009
> @@ -0,0 +1,40 @@
> +// checking for out_of_range dtor
> +
> +/***************************************************************************
> + *
> + * Licensed to the Apache Software  Foundation (ASF) under one or more
> + * contributor  license agreements.  See  the NOTICE  file distributed
> + * with  this  work  for  additional information  regarding  copyright
> + * ownership.   The ASF  licenses this  file to  you under  the Apache
> + * License, Version  2.0 (the  License); you may  not use  this file
> + * except in  compliance with the License.   You may obtain  a copy of
> + * the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the  License is distributed on an  "AS IS" BASIS,
> + * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
> + * implied.   See  the License  for  the  specific language  governing
> + * permissions and limitations under the License.
> + *
> + * Copyright 1999-2007 Rogue Wave Software, Inc.
> + *
> + **************************************************************************/
> +
> +#if 0   // guard invalid preprocessor symbol below
> +   // establish a dependency on RUNTIME_IN_STD.cpp
> +#  ifndef _RWSTD_NO_RUNTIME_IN_STD
> +#  endif   // _RWSTD_NO_RUNTIME_IN_STD
> +#endif   // 0
> +
> +#define TEST_DTOR
> +#define bad_alloc out_of_range
> +#define main      test_out_of_range_dtor
> +#include "BAD_ALLOC_ASSIGNMENT.cpp"
> +#undef main
> +
> +int main (int argc, char *argv[])
> +{
> +    return test_out_of_range_dtor (argc, argv);
> +}
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/OUT_OF_RANGE_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/OUT_OF_RANGE_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:keywords = Id
>
> Added: stdcxx/branches/4.2.x/etc/config/src/OVERFLOW_ERROR_DTOR.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/etc/config/src/OVERFLOW_ERROR_DTOR.cpp?rev=777603&view=auto
> ==============================================================================
> --- stdcxx/branches/4.2.x/etc/config/src/OVERFLOW_ERROR_DTOR.cpp (added)
> +++ stdcxx/branches/4.2.x/etc/config/src/OVERFLOW_ERROR_DTOR.cpp Fri May 22 16:30:22 2009
> @@ -0,0 +1,40 @@
> +// checking for overflow_error dtor
> +
> +/***************************************************************************
> + *
> + * Licensed to the Apache Software  Foundation (ASF) under one or more
> + * contributor  license agreements.  See  the NOTICE  file distributed
> + * with  this  work  for  additional information  regarding  copyright
> + * ownership.   The ASF  licenses this  file to  you under  the Apache
> + * License, Version  2.0 (the  License); you may  not use  this file
> + * except in  compliance with the License.   You may obtain  a copy of
> + * the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the  License is distributed on an  "AS IS" BASIS,
> + * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
> + * implied.   See  the License  for  the  specific language  governing
> + * permissions and limitations under the License.
> + *
> + * Copyright 1999-2007 Rogue Wave Software, Inc.
> + *
> + **************************************************************************/
> +
> +#if 0   // guard invalid preprocessor symbol below
> +   // establish a dependency on RUNTIME_IN_STD.cpp
> +#  ifndef _RWSTD_NO_RUNTIME_IN_STD
> +#  endif   // _RWSTD_NO_RUNTIME_IN_STD
> +#endif   // 0
> +
> +#define TEST_DTOR
> +#define bad_alloc overflow_error
> +#define main      test_overflow_error_dtor
> +#include "BAD_ALLOC_ASSIGNMENT.cpp"
> +#undef main
> +
> +int main (int argc, char *argv[])
> +{
> +    return test_overflow_error_dtor (argc, argv);
> +}
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/OVERFLOW_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/OVERFLOW_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:keywords = Id
>
> Added: stdcxx/branches/4.2.x/etc/config/src/RANGE_ERROR_DTOR.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/etc/config/src/RANGE_ERROR_DTOR.cpp?rev=777603&view=auto
> ==============================================================================
> --- stdcxx/branches/4.2.x/etc/config/src/RANGE_ERROR_DTOR.cpp (added)
> +++ stdcxx/branches/4.2.x/etc/config/src/RANGE_ERROR_DTOR.cpp Fri May 22 16:30:22 2009
> @@ -0,0 +1,40 @@
> +// checking for range_error dtor
> +
> +/***************************************************************************
> + *
> + * Licensed to the Apache Software  Foundation (ASF) under one or more
> + * contributor  license agreements.  See  the NOTICE  file distributed
> + * with  this  work  for  additional information  regarding  copyright
> + * ownership.   The ASF  licenses this  file to  you under  the Apache
> + * License, Version  2.0 (the  License); you may  not use  this file
> + * except in  compliance with the License.   You may obtain  a copy of
> + * the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the  License is distributed on an  "AS IS" BASIS,
> + * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
> + * implied.   See  the License  for  the  specific language  governing
> + * permissions and limitations under the License.
> + *
> + * Copyright 1999-2007 Rogue Wave Software, Inc.
> + *
> + **************************************************************************/
> +
> +#if 0   // guard invalid preprocessor symbol below
> +   // establish a dependency on RUNTIME_IN_STD.cpp
> +#  ifndef _RWSTD_NO_RUNTIME_IN_STD
> +#  endif   // _RWSTD_NO_RUNTIME_IN_STD
> +#endif   // 0
> +
> +#define TEST_DTOR
> +#define bad_alloc range_error
> +#define main      test_range_error_dtor
> +#include "BAD_ALLOC_ASSIGNMENT.cpp"
> +#undef main
> +
> +int main (int argc, char *argv[])
> +{
> +    return test_range_error_dtor (argc, argv);
> +}
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/RANGE_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/RANGE_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:keywords = Id
>
> Added: stdcxx/branches/4.2.x/etc/config/src/RUNTIME_ERROR_DTOR.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/etc/config/src/RUNTIME_ERROR_DTOR.cpp?rev=777603&view=auto
> ==============================================================================
> --- stdcxx/branches/4.2.x/etc/config/src/RUNTIME_ERROR_DTOR.cpp (added)
> +++ stdcxx/branches/4.2.x/etc/config/src/RUNTIME_ERROR_DTOR.cpp Fri May 22 16:30:22 2009
> @@ -0,0 +1,40 @@
> +// checking for runtime_error dtor
> +
> +/***************************************************************************
> + *
> + * Licensed to the Apache Software  Foundation (ASF) under one or more
> + * contributor  license agreements.  See  the NOTICE  file distributed
> + * with  this  work  for  additional information  regarding  copyright
> + * ownership.   The ASF  licenses this  file to  you under  the Apache
> + * License, Version  2.0 (the  License); you may  not use  this file
> + * except in  compliance with the License.   You may obtain  a copy of
> + * the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the  License is distributed on an  "AS IS" BASIS,
> + * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
> + * implied.   See  the License  for  the  specific language  governing
> + * permissions and limitations under the License.
> + *
> + * Copyright 1999-2007 Rogue Wave Software, Inc.
> + *
> + **************************************************************************/
> +
> +#if 0   // guard invalid preprocessor symbol below
> +   // establish a dependency on RUNTIME_IN_STD.cpp
> +#  ifndef _RWSTD_NO_RUNTIME_IN_STD
> +#  endif   // _RWSTD_NO_RUNTIME_IN_STD
> +#endif   // 0
> +
> +#define TEST_DTOR
> +#define bad_alloc runtime_error
> +#define main      test_runtime_error_dtor
> +#include "BAD_ALLOC_ASSIGNMENT.cpp"
> +#undef main
> +
> +int main (int argc, char *argv[])
> +{
> +    return test_runtime_error_dtor (argc, argv);
> +}
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/RUNTIME_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/RUNTIME_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:keywords = Id
>
> Added: stdcxx/branches/4.2.x/etc/config/src/UNDERFLOW_ERROR_DTOR.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/etc/config/src/UNDERFLOW_ERROR_DTOR.cpp?rev=777603&view=auto
> ==============================================================================
> --- stdcxx/branches/4.2.x/etc/config/src/UNDERFLOW_ERROR_DTOR.cpp (added)
> +++ stdcxx/branches/4.2.x/etc/config/src/UNDERFLOW_ERROR_DTOR.cpp Fri May 22 16:30:22 2009
> @@ -0,0 +1,40 @@
> +// checking for underflow_error dtor
> +
> +/***************************************************************************
> + *
> + * Licensed to the Apache Software  Foundation (ASF) under one or more
> + * contributor  license agreements.  See  the NOTICE  file distributed
> + * with  this  work  for  additional information  regarding  copyright
> + * ownership.   The ASF  licenses this  file to  you under  the Apache
> + * License, Version  2.0 (the  License); you may  not use  this file
> + * except in  compliance with the License.   You may obtain  a copy of
> + * the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the  License is distributed on an  "AS IS" BASIS,
> + * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
> + * implied.   See  the License  for  the  specific language  governing
> + * permissions and limitations under the License.
> + *
> + * Copyright 1999-2007 Rogue Wave Software, Inc.
> + *
> + **************************************************************************/
> +
> +#if 0   // guard invalid preprocessor symbol below
> +   // establish a dependency on RUNTIME_IN_STD.cpp
> +#  ifndef _RWSTD_NO_RUNTIME_IN_STD
> +#  endif   // _RWSTD_NO_RUNTIME_IN_STD
> +#endif   // 0
> +
> +#define TEST_DTOR
> +#define bad_alloc underflow_error
> +#define main      test_underflow_error_dtor
> +#include "BAD_ALLOC_ASSIGNMENT.cpp"
> +#undef main
> +
> +int main (int argc, char *argv[])
> +{
> +    return test_underflow_error_dtor (argc, argv);
> +}
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/UNDERFLOW_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: stdcxx/branches/4.2.x/etc/config/src/UNDERFLOW_ERROR_DTOR.cpp
> ------------------------------------------------------------------------------
>     svn:keywords = Id
>
> Modified: stdcxx/branches/4.2.x/src/domain_error.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/domain_error.cpp?rev=777603&r1=777602&r2=777603&view=diff
> ==============================================================================
> --- stdcxx/branches/4.2.x/src/domain_error.cpp (original)
> +++ stdcxx/branches/4.2.x/src/domain_error.cpp Fri May 22 16:30:22 2009
> @@ -32,6 +32,8 @@
>  
>  _RWSTD_NAMESPACE (std) {
>  
> +#ifdef _RWSTD_NO_DOMAIN_ERROR_DTOR
> +
>  // outlined to avoid generating a vtable in each translation unit
>  // that uses the class
>  /* virtual */ domain_error::
> @@ -40,4 +42,6 @@
>      // no-op
>  }
>  
> +#endif   // _RWSTD_NO_DOMAIN_ERROR_DTOR
> +
>  }   // namespace std
>
> Modified: stdcxx/branches/4.2.x/src/invalid_argument.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/invalid_argument.cpp?rev=777603&r1=777602&r2=777603&view=diff
> ==============================================================================
> --- stdcxx/branches/4.2.x/src/invalid_argument.cpp (original)
> +++ stdcxx/branches/4.2.x/src/invalid_argument.cpp Fri May 22 16:30:22 2009
> @@ -32,6 +32,8 @@
>  
>  _RWSTD_NAMESPACE (std) {
>  
> +#ifdef _RWSTD_NO_INVALID_ARGUMENT_DTOR
> +
>  // outlined to avoid generating a vtable in each translation unit
>  // that uses the class
>  /* virtual */ invalid_argument::
> @@ -40,4 +42,6 @@
>      // no-op
>  }
>  
> +#endif   // _RWSTD_NO_INVALID_ARGUMENT_DTOR
> +
>  }   // namespace std
>
> Modified: stdcxx/branches/4.2.x/src/length_error.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/length_error.cpp?rev=777603&r1=777602&r2=777603&view=diff
> ==============================================================================
> --- stdcxx/branches/4.2.x/src/length_error.cpp (original)
> +++ stdcxx/branches/4.2.x/src/length_error.cpp Fri May 22 16:30:22 2009
> @@ -32,6 +32,8 @@
>  
>  _RWSTD_NAMESPACE (std) {
>  
> +#ifdef _RWSTD_NO_LENGTH_ERROR_DTOR
> +
>  // outlined to avoid generating a vtable in each translation unit
>  // that uses the class
>  /* virtual */ length_error::
> @@ -40,4 +42,6 @@
>      // no-op
>  }
>  
> +#endif   // _RWSTD_NO_LENGTH_ERROR_DTOR
> +
>  }   // namespace std
>
> Modified: stdcxx/branches/4.2.x/src/logic_error.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/logic_error.cpp?rev=777603&r1=777602&r2=777603&view=diff
> ==============================================================================
> --- stdcxx/branches/4.2.x/src/logic_error.cpp (original)
> +++ stdcxx/branches/4.2.x/src/logic_error.cpp Fri May 22 16:30:22 2009
> @@ -32,6 +32,8 @@
>  
>  _RWSTD_NAMESPACE (std) {
>  
> +#ifdef _RWSTD_NO_LOGIC_ERROR_DTOR
> +
>  // outlined to avoid generating a vtable in each translation unit
>  // that uses the class
>  /* virtual */ logic_error::
> @@ -40,4 +42,6 @@
>      // no-op
>  }
>  
> +#endif   // _RWSTD_NO_LOGIC_ERROR_DTOR
> +
>  }   // namespace std
>
> Modified: stdcxx/branches/4.2.x/src/out_of_range.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/out_of_range.cpp?rev=777603&r1=777602&r2=777603&view=diff
> ==============================================================================
> --- stdcxx/branches/4.2.x/src/out_of_range.cpp (original)
> +++ stdcxx/branches/4.2.x/src/out_of_range.cpp Fri May 22 16:30:22 2009
> @@ -32,6 +32,8 @@
>  
>  _RWSTD_NAMESPACE (std) {
>  
> +#ifdef _RWSTD_NO_OUT_OF_RANGE_DTOR
> +
>  // outlined to avoid generating a vtable in each translation unit
>  // that uses the class
>  /* virtual */ out_of_range::
> @@ -40,4 +42,6 @@
>      // no-op
>  }
>  
> +#endif   // _RWSTD_NO_OUT_OF_RANGE_DTOR
> +
>  }   // namespace std
>
> Modified: stdcxx/branches/4.2.x/src/overflow_error.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/overflow_error.cpp?rev=777603&r1=777602&r2=777603&view=diff
> ==============================================================================
> --- stdcxx/branches/4.2.x/src/overflow_error.cpp (original)
> +++ stdcxx/branches/4.2.x/src/overflow_error.cpp Fri May 22 16:30:22 2009
> @@ -32,6 +32,8 @@
>  
>  _RWSTD_NAMESPACE (std) {
>  
> +#ifdef _RWSTD_NO_OVERFLOW_ERROR_DTOR
> +
>  // outlined to avoid generating a vtable in each translation unit
>  // that uses the class
>  /* virtual */ overflow_error::
> @@ -40,4 +42,6 @@
>      // no-op
>  }
>  
> +#endif   // _RWSTD_NO_OVERFLOW_ERROR_DTOR
> +
>  }   // namespace std
>
> Modified: stdcxx/branches/4.2.x/src/range_error.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/range_error.cpp?rev=777603&r1=777602&r2=777603&view=diff
> ==============================================================================
> --- stdcxx/branches/4.2.x/src/range_error.cpp (original)
> +++ stdcxx/branches/4.2.x/src/range_error.cpp Fri May 22 16:30:22 2009
> @@ -32,6 +32,8 @@
>  
>  _RWSTD_NAMESPACE (std) {
>  
> +#ifdef _RWSTD_NO_RANGE_ERROR_DTOR
> +
>  // outlined to avoid generating a vtable in each translation unit
>  // that uses the class
>  /* virtual */ range_error::
> @@ -40,4 +42,6 @@
>      // no-op
>  }
>  
> +#endif   // _RWSTD_NO_RANGE_ERROR_DTOR
> +
>  }   // namespace std
>
> Modified: stdcxx/branches/4.2.x/src/runtime_error.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/runtime_error.cpp?rev=777603&r1=777602&r2=777603&view=diff
> ==============================================================================
> --- stdcxx/branches/4.2.x/src/runtime_error.cpp (original)
> +++ stdcxx/branches/4.2.x/src/runtime_error.cpp Fri May 22 16:30:22 2009
> @@ -32,6 +32,8 @@
>  
>  _RWSTD_NAMESPACE (std) {
>  
> +#ifdef _RWSTD_NO_RUNTIME_ERROR_DTOR
> +
>  // outlined to avoid generating a vtable in each translation unit
>  // that uses the class
>  /* virtual */ runtime_error::
> @@ -40,4 +42,6 @@
>      // no-op
>  }
>  
> +#endif   // _RWSTD_NO_RUNTIME_ERROR_DTOR
> +
>  }   // namespace std
>
> Modified: stdcxx/branches/4.2.x/src/underflow_error.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/underflow_error.cpp?rev=777603&r1=777602&r2=777603&view=diff
> ==============================================================================
> --- stdcxx/branches/4.2.x/src/underflow_error.cpp (original)
> +++ stdcxx/branches/4.2.x/src/underflow_error.cpp Fri May 22 16:30:22 2009
> @@ -32,6 +32,8 @@
>  
>  _RWSTD_NAMESPACE (std) {
>  
> +#ifdef _RWSTD_NO_UNDERFLOW_ERROR_DTOR
> +
>  // outlined to avoid generating a vtable in each translation unit
>  // that uses the class
>  /* virtual */ underflow_error::
> @@ -40,4 +42,6 @@
>      // no-op
>  }
>  
> +#endif   // _RWSTD_NO_UNDERFLOW_ERROR_DTOR
> +
>  }   // namespace std
>
>


Parent Message unknown Re: svn commit: r777603 - in /stdcxx/branches/4.2.x: etc/config/src/ src/

by Farid Zaripov-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> Why do we need this and the other tests?

  I've got the MSVC 10.0 beta recently and I prepairing the stdcxx
for this compiler.

> I'm pretty sure you know this but just for completeness:
>
[...]
>
> If there is a compiler that we need _RWSTD_NO_DOMAIN_ERROR_DTOR for,
> won't we also need a macro for every single one of the rest of C++
> Standard Library polymorphic classes such as std::ios_base?

  Actually, the MSVC 10.0 beta libc contains dtor's for std::length_error
and std::logic_error only (at least in 15s configuration which I've tested).
It is still beta for now, but I believe that these dtors will go to the
release.

  Or should I fill the bug report to Microsoft on that issue?

Best Regards,
Farid Zaripov


Re: svn commit: r777603 - in /stdcxx/branches/4.2.x: etc/config/src/ src/

by Martin Sebor-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Farid Zaripov wrote:

>> Why do we need this and the other tests?
>
>   I've got the MSVC 10.0 beta recently and I prepairing the stdcxx
> for this compiler.
>
>> I'm pretty sure you know this but just for completeness:
>>
> [...]
>> If there is a compiler that we need _RWSTD_NO_DOMAIN_ERROR_DTOR for,
>> won't we also need a macro for every single one of the rest of C++
>> Standard Library polymorphic classes such as std::ios_base?
>
>   Actually, the MSVC 10.0 beta libc contains dtor's for std::length_error
> and std::logic_error only (at least in 15s configuration which I've tested).
> It is still beta for now, but I believe that these dtors will go to the
> release.
>
>   Or should I fill the bug report to Microsoft on that issue?

That would be great, thanks! With dtors for arbitrary C++ Standard
Library in their libc there's no way to build/use a third party
implementation such as stdcxx. Imagine one of the dtors doing
something to the class, e.g.:

     class length_error: runtime_error {   // MSVC 10 definition
         char* data;
     public:
         virtual ~length_error () { delete[] data; }
         // ...
     }

Martin

>
> Best Regards,
> Farid Zaripov
>