stdcxx-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From se...@apache.org
Subject svn commit: r569737 - /incubator/stdcxx/trunk/tests/regress/21.string.stdcxx-162.cpp
Date Sat, 25 Aug 2007 22:13:19 GMT
Author: sebor
Date: Sat Aug 25 15:13:17 2007
New Revision: 569737

URL: http://svn.apache.org/viewvc?rev=569737&view=rev
Log:
2007-08-25  Martin Sebor  <sebor@roguewave.com>

	* 21.string.stdcxx-162.cpp: Added a regression test for STDCXX-162.

Added:
    incubator/stdcxx/trunk/tests/regress/21.string.stdcxx-162.cpp   (with props)

Added: incubator/stdcxx/trunk/tests/regress/21.string.stdcxx-162.cpp
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/regress/21.string.stdcxx-162.cpp?rev=569737&view=auto
==============================================================================
--- incubator/stdcxx/trunk/tests/regress/21.string.stdcxx-162.cpp (added)
+++ incubator/stdcxx/trunk/tests/regress/21.string.stdcxx-162.cpp Sat Aug 25 15:13:17 2007
@@ -0,0 +1,72 @@
+/************************************************************************
+*
+* 21.string.stdcxx-175.cpp - regression test for STDCXX-162
+*
+* https://issues.apache.org/jira/browse/STDCXX-162
+*
+* $Id$
+*
+***************************************************************************
+*
+* 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.
+*
+**************************************************************************/
+
+#include <cassert>
+#include <string>
+
+#ifdef _RWSTD_POSIX_THREADS
+#  include <pthread.h>
+#  define MUTEX   pthread_mutex_t
+#elif _RWSTD_SOLARIS_THREADS
+#  include <thread.h>
+#  define MUTEX   thr_mutex_t
+#endif   // _RWSTD_POSIX_THREADS
+
+int main ()
+{
+    typedef std::char_traits<char> Traits;
+    typedef std::allocator<char> Allocator;
+    typedef __rw::__string_ref<char, Traits, Allocator> strref;
+
+    struct SmallRef {
+        int ref_count;
+        std::string::size_type capacity;
+        std::string::size_type size;
+    };
+
+    // verify that the reference-counted string body isn't bigger
+    // than the struct above
+    assert (sizeof (strref) <= sizeof (SmallRef));
+
+#ifdef MUTEX
+
+    struct LargeRef {
+        MUTEX                  mutex;
+        int                    ref_count;
+        std::string::size_type capacity;
+        std::string::size_type size;
+    };
+
+    // verify that the reference-counted string body is smaller
+    // than the struct containing a full-blown mutex object above
+    assert (sizeof (strref) < sizeof (LargeRef));
+
+#endif   // MUTEX
+
+    return 0;
+}

Propchange: incubator/stdcxx/trunk/tests/regress/21.string.stdcxx-162.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/tests/regress/21.string.stdcxx-162.cpp
------------------------------------------------------------------------------
    svn:keywords = Id



Mime
View raw message