summaryrefslogtreecommitdiff
path: root/misc/uClibc++/include/uClibc++/string_iostream
diff options
context:
space:
mode:
Diffstat (limited to 'misc/uClibc++/include/uClibc++/string_iostream')
-rw-r--r--misc/uClibc++/include/uClibc++/string_iostream196
1 files changed, 103 insertions, 93 deletions
diff --git a/misc/uClibc++/include/uClibc++/string_iostream b/misc/uClibc++/include/uClibc++/string_iostream
index 4ef3b600c..46a9893c1 100644
--- a/misc/uClibc++/include/uClibc++/string_iostream
+++ b/misc/uClibc++/include/uClibc++/string_iostream
@@ -1,21 +1,21 @@
-/* Copyright (C) 2004 Garrett A. Kajmowicz
-
- This file is part of the uClibc++ Library.
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
+/* Copyright (C) 2004 Garrett A. Kajmowicz
+ *
+ * This file is part of the uClibc++ Library.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
#include <istream>
#include <ostream>
@@ -31,114 +31,124 @@
#pragma GCC visibility push(default)
-namespace std{
-
-
+extern "C++"
+{
+namespace std
+{
template<class charT, class traits, class Allocator> _UCXXEXPORT basic_ostream<charT, traits>&
- operator<<(basic_ostream<charT, traits>& os, const basic_string<charT,traits,Allocator>& str)
+ operator<<(basic_ostream<charT, traits>& os, const basic_string<charT,traits,Allocator>& str)
{
- return os.write(str.data(), str.length());
+ return os.write(str.data(), str.length());
}
template<class charT, class traits, class Allocator> _UCXXEXPORT basic_istream<charT,traits>&
- operator>>(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str)
+ operator>>(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str)
{
-
- typename basic_istream<charT, traits>::sentry s(is);
- if(s == false){
- return is;
- }
-
- str.clear();
-
- typename basic_istream<charT, traits>::int_type c;
- typename Allocator::size_type n = is.width();
- bool exitnow = false;
- if(n == 0){
- n = str.max_size();
- }
-
-// //Clear out preliminary spaces first
-// c = is.get();
-// while(isspace(c)){
-// c = is.get();
-// }
+ typename basic_istream<charT, traits>::sentry s(is);
+ if(s == false)
+ {
+ return is;
+ }
+
+ str.clear();
+
+ typename basic_istream<charT, traits>::int_type c;
+ typename Allocator::size_type n = is.width();
+ bool exitnow = false;
+ if (n == 0)
+ {
+ n = str.max_size();
+ }
+
+// //Clear out preliminary spaces first
+// c = is.get();
+// while(isspace(c)){
+// c = is.get();
+// }
//
-// is.putback(c);
-
- do{
- c = is.get();
- if(c == traits::eof() || isspace(c) || n == 0){
- is.putback(c);
- exitnow = true;
- }else{
- str.append(1, traits::to_char_type(c) );
- --n;
- }
- }while(exitnow == false);
- return is;
+// is.putback(c);
+
+ do
+ {
+ c = is.get();
+ if(c == traits::eof() || isspace(c) || n == 0)
+ {
+ is.putback(c);
+ exitnow = true;
+ }
+ else
+ {
+ str.append(1, traits::to_char_type(c) );
+ --n;
+ }
+ }
+ while(exitnow == false);
+
+ return is;
}
template<class charT, class traits, class Allocator> _UCXXEXPORT basic_istream<charT,traits>&
- getline(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str, charT delim)
+ getline(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str, charT delim)
{
- typename basic_istream<charT,traits>::sentry s(is);
- if(s == false){
- return is;
- }
-
- str.erase();
-
- streamsize i = 0;
- typename basic_istream<charT,traits>::int_type c_i;
- charT c;
- unsigned int n = str.max_size();
- for(i=0;i<n;++i){
- c_i=is.get();
- if(c_i == traits::eof() ){
- return is;
- }
- c = traits::to_char_type(c_i);
- if(c == delim){
- return is;
- }
- str.append(1, c);
- }
- return is;
+ typename basic_istream<charT,traits>::sentry s(is);
+ if (s == false)
+ {
+ return is;
+ }
+
+ str.erase();
+
+ streamsize i = 0;
+ typename basic_istream<charT,traits>::int_type c_i;
+ charT c;
+ unsigned int n = str.max_size();
+ for (i = 0; i < n; ++i)
+ {
+ c_i=is.get();
+ if (c_i == traits::eof() )
+ {
+ return is;
+ }
+
+ c = traits::to_char_type(c_i);
+ if (c == delim)
+ {
+ return is;
+ }
+
+ str.append(1, c);
+ }
+ return is;
}
template<class charT, class traits, class Allocator> _UCXXEXPORT basic_istream<charT,traits>&
- getline(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str)
+ getline(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str)
{
- return getline(is, str, '\n');
+ return getline(is, str, '\n');
}
-
#ifdef __UCLIBCXX_EXPAND_STRING_CHAR__
#ifndef __UCLIBCXX_COMPILE_STRING__
-
#ifdef __UCLIBCXX_EXPAND_ISTREAM_CHAR__
template<> _UCXXEXPORT basic_istream<char, char_traits<char> >& operator>>(
- basic_istream<char,char_traits<char> >& is,
- basic_string<char, char_traits<char>, allocator<char> >& str);
+ basic_istream<char,char_traits<char> >& is,
+ basic_string<char, char_traits<char>, allocator<char> >& str);
#endif
-
#ifdef __UCLIBCXX_EXPAND_OSTREAM_CHAR__
template<> _UCXXEXPORT basic_ostream<char, char_traits<char> >&
- operator<<(basic_ostream<char, char_traits<char> >& os,
- const basic_string<char,char_traits<char>, std::allocator<char> >& str);
+ operator<<(basic_ostream<char, char_traits<char> >& os,
+ const basic_string<char,char_traits<char>, std::allocator<char> >& str);
#endif
-
#endif
#endif
-
-}
+} // namespace
+} // extern "C++"
#pragma GCC visibility pop