]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/src/c++11/cow-string-inst.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / src / c++11 / cow-string-inst.cc
index 6f2e5c46233f067e8a1d38f237f9873340633fe0..14a9a99b4605cabee0f2bfe487dbbb842914907b 100644 (file)
@@ -1,6 +1,6 @@
 // Reference-counted COW string instantiations -*- C++ -*-
 
-// Copyright (C) 2014-2017 Free Software Foundation, Inc.
+// Copyright (C) 2014-2024 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
 #define _GLIBCXX_USE_CXX11_ABI 0
 #include "string-inst.cc"
 
-#include <istream>
-#include <ostream>
-
 #if ! _GLIBCXX_USE_DUAL_ABI
 # error This file should not be compiled for this configuration.
 #endif
 
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-_GLIBCXX_BEGIN_NAMESPACE_VERSION
-
-  // These came from c++98/misc-inst.cc, repeat them for COW string
-  // string related to iostreams.
-  template
-    basic_istream<char>&
-    operator>>(basic_istream<char>&, string&);
-  template
-    basic_ostream<char>&
-    operator<<(basic_ostream<char>&, const string&);
-  template
-    basic_istream<char>&
-    getline(basic_istream<char>&, string&, char);
-  template
-    basic_istream<char>&
-    getline(basic_istream<char>&, string&);
-
-_GLIBCXX_END_NAMESPACE_VERSION
-} // namespace
-
-#ifdef  _GLIBCXX_USE_C99_STDINT_TR1
 #include <random>
-#if defined __i386__ || defined __x86_64__
-# include <cpuid.h>
-#endif
-#include <cstdio>
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
   void
   random_device::_M_init(const std::string& token)
-  {
-    const char *fname = token.c_str();
-
-    if (token == "default")
-      {
-#if (defined __i386__ || defined __x86_64__) && defined _GLIBCXX_X86_RDRAND
-       unsigned int eax, ebx, ecx, edx;
-       // Check availability of cpuid and, for now at least, also the
-       // CPU signature for Intel's
-       if (__get_cpuid_max(0, &ebx) > 0 && ebx == signature_INTEL_ebx)
-         {
-           __cpuid(1, eax, ebx, ecx, edx);
-           if (ecx & bit_RDRND)
-             {
-               _M_file = nullptr;
-               return;
-             }
-         }
-#endif
-
-       fname = "/dev/urandom";
-      }
-    else if (token != "/dev/urandom" && token != "/dev/random")
-    fail:
-      std::__throw_runtime_error(__N("random_device::"
-                                    "random_device(const std::string&)"));
-
-    _M_file = static_cast<void*>(std::fopen(fname, "rb"));
-    if (!_M_file)
-      goto fail;
-  }
+  { _M_init(token.c_str(), token.length()); }
 
   void
   random_device::_M_init_pretr1(const std::string& token)
-  {
-    unsigned long __seed = 5489UL;
-    if (token != "mt19937")
-      {
-       const char* __nptr = token.c_str();
-       char* __endptr;
-       __seed = std::strtoul(__nptr, &__endptr, 0);
-       if (*__nptr == '\0' || *__endptr != '\0')
-         std::__throw_runtime_error(__N("random_device::random_device"
-                                        "(const std::string&)"));
-      }
-    _M_mt.seed(__seed);
-  }
+  { _M_init(token.c_str(), token.length()); }
 } // namespace
-#endif