aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/Foundation/include/Poco/StreamUtil.h
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:45:01 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:01 +0300
commit2d37894b1b037cf24231090eda8589bbb44fb6fc (patch)
treebe835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/libs/poco/Foundation/include/Poco/StreamUtil.h
parent718c552901d703c502ccbefdfc3c9028d608b947 (diff)
downloadydb-2d37894b1b037cf24231090eda8589bbb44fb6fc.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/StreamUtil.h')
-rw-r--r--contrib/libs/poco/Foundation/include/Poco/StreamUtil.h182
1 files changed, 91 insertions, 91 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/StreamUtil.h b/contrib/libs/poco/Foundation/include/Poco/StreamUtil.h
index 2190797919..79c94f5494 100644
--- a/contrib/libs/poco/Foundation/include/Poco/StreamUtil.h
+++ b/contrib/libs/poco/Foundation/include/Poco/StreamUtil.h
@@ -1,92 +1,92 @@
+//
+// StreamUtil.h
+//
+// Library: Foundation
+// Package: Streams
+// Module: StreamUtil
+//
+// Stream implementation support.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Foundation_StreamUtil_INCLUDED
+#define Foundation_StreamUtil_INCLUDED
+
+
+#include "Poco/Foundation.h"
+
+
+// poco_ios_init
+//
+// This is a workaround for a bug in the Dinkumware
+// implementation of iostreams.
+//
+// Calling basic_ios::init() multiple times for the
+// same basic_ios instance results in a memory leak
+// caused by the ios' locale being allocated more than
+// once, each time overwriting the old pointer.
+// This usually occurs in the following scenario:
+//
+// class MyStreamBuf: public std::streambuf
+// {
+// ...
+// };
+//
+// class MyIOS: public virtual std::ios
+// {
+// public:
+// MyIOS()
+// {
+// init(&_buf);
+// }
+// protected:
+// MyStreamBuf _buf;
+// };
+//
+// class MyIStream: public MyIOS, public std::istream
+// {
+// ...
+// };
+//
+// In this scenario, std::ios::init() is called twice
+// (the first time by the MyIOS constructor, the second
+// time by the std::istream constructor), resulting in
+// two locale objects being allocated, the pointer second
+// one overwriting the pointer to the first one and thus
+// causing a memory leak.
//
-// StreamUtil.h
-//
-// Library: Foundation
-// Package: Streams
-// Module: StreamUtil
-//
-// Stream implementation support.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Foundation_StreamUtil_INCLUDED
-#define Foundation_StreamUtil_INCLUDED
-
-
-#include "Poco/Foundation.h"
-
-
-// poco_ios_init
-//
-// This is a workaround for a bug in the Dinkumware
-// implementation of iostreams.
-//
-// Calling basic_ios::init() multiple times for the
-// same basic_ios instance results in a memory leak
-// caused by the ios' locale being allocated more than
-// once, each time overwriting the old pointer.
-// This usually occurs in the following scenario:
-//
-// class MyStreamBuf: public std::streambuf
-// {
-// ...
-// };
-//
-// class MyIOS: public virtual std::ios
-// {
-// public:
-// MyIOS()
-// {
-// init(&_buf);
-// }
-// protected:
-// MyStreamBuf _buf;
-// };
-//
-// class MyIStream: public MyIOS, public std::istream
-// {
-// ...
-// };
-//
-// In this scenario, std::ios::init() is called twice
-// (the first time by the MyIOS constructor, the second
-// time by the std::istream constructor), resulting in
-// two locale objects being allocated, the pointer second
-// one overwriting the pointer to the first one and thus
-// causing a memory leak.
-//
-// The workaround is to call init() only once for each
-// stream object - by the istream, ostream or iostream
-// constructor, and not calling init() in ios-derived
-// base classes.
-//
-// Some stream implementations, however, require that
-// init() is called in the MyIOS constructor.
-// Therefore we replace each call to init() with
-// the poco_ios_init macro defined below.
-
-
-#if !defined(POCO_IOS_INIT_HACK)
- // Microsoft Visual Studio with Dinkumware STL (but not STLport)
-# if defined(_MSC_VER) && (!defined(_STLP_MSVC) || defined(_STLP_NO_OWN_IOSTREAMS))
-# define POCO_IOS_INIT_HACK 1
- // QNX with Dinkumware but not GNU C++ Library
-# elif defined(__QNX__) && !defined(__GLIBCPP__)
-# define POCO_IOS_INIT_HACK 1
-# endif
-#endif
-
-
-#if defined(POCO_IOS_INIT_HACK)
-# define poco_ios_init(buf)
-#else
-# define poco_ios_init(buf) init(buf)
-#endif
-
-
-#endif // Foundation_StreamUtil_INCLUDED
+// The workaround is to call init() only once for each
+// stream object - by the istream, ostream or iostream
+// constructor, and not calling init() in ios-derived
+// base classes.
+//
+// Some stream implementations, however, require that
+// init() is called in the MyIOS constructor.
+// Therefore we replace each call to init() with
+// the poco_ios_init macro defined below.
+
+
+#if !defined(POCO_IOS_INIT_HACK)
+ // Microsoft Visual Studio with Dinkumware STL (but not STLport)
+# if defined(_MSC_VER) && (!defined(_STLP_MSVC) || defined(_STLP_NO_OWN_IOSTREAMS))
+# define POCO_IOS_INIT_HACK 1
+ // QNX with Dinkumware but not GNU C++ Library
+# elif defined(__QNX__) && !defined(__GLIBCPP__)
+# define POCO_IOS_INIT_HACK 1
+# endif
+#endif
+
+
+#if defined(POCO_IOS_INIT_HACK)
+# define poco_ios_init(buf)
+#else
+# define poco_ios_init(buf) init(buf)
+#endif
+
+
+#endif // Foundation_StreamUtil_INCLUDED