diff options
Diffstat (limited to 'CIAO/CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp')
-rw-r--r-- | CIAO/CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/CIAO/CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp b/CIAO/CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp deleted file mode 100644 index 40259a694f6..00000000000 --- a/CIAO/CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp +++ /dev/null @@ -1,153 +0,0 @@ -// file : CCF/CodeGenerationKit/IndentationImplanter.hpp -// author : Boris Kolpackov <boris@dre.vanderbilt.edu> -// cvs-id : $Id$ - -#ifndef CCF_CODE_GENERATION_KIT_INDENTATION_IMPLANTER -#define CCF_CODE_GENERATION_KIT_INDENTATION_IMPLANTER - -#include <ostream> - -#include "CCF/CodeGenerationKit/IndentationBuffer.hpp" - -namespace Indentation -{ - template <typename C> - class ToStreamBufAdapter : public std::basic_streambuf<C> - { - public: - typedef - typename std::basic_streambuf<C>::traits_type - traits_type; - - typedef - typename std::basic_streambuf<C>::char_type - char_type; - - typedef - typename std::basic_streambuf<C>::int_type - int_type; - - public: - ToStreamBufAdapter (Buffer<C>& b) - : buffer_ (b) - { - } - - virtual int_type - overflow (int_type c) - { - return buffer_.put (traits_type::to_char_type (c)); - } - - virtual int - sync () - { - return 0; - } - - private: - Buffer<C>& buffer_; - }; - - template <typename C> - class FromStreamBufAdapter : public Buffer<C> - { - public: - typedef - typename Buffer<C>::traits_type - traits_type; - - typedef - typename Buffer<C>::char_type - char_type; - - typedef - typename Buffer<C>::int_type - int_type; - - typedef - typename Buffer<C>::Exception - Exception; - - public: - FromStreamBufAdapter (std::basic_streambuf<C>& b) - : buffer_ (b) - { - } - - virtual int_type - put (char_type c) throw (Exception, ExH::System::Exception) - { - return buffer_.sputc (c); - } - - virtual void - unbuffer () throw (ExH::System::Exception) - { - try - { - if (buffer_.pubsync () == 0) return; - } - catch (std::ios_base::failure const&) - { - } - - throw Exception ("underlying std::streambuf::sync failed"); - } - - private: - std::basic_streambuf<C>& buffer_; - }; - - template <template <typename> class BufferType, typename C = char> - class Implanter - { - public: - Implanter (std::basic_ostream<C>& os) - : os_ (os), - prev_ (os_.rdbuf ()), - from_adapter_ (*prev_), - buffer_ (from_adapter_), - to_adapter_ (buffer_) - { - os_.rdbuf (&to_adapter_); - } - - template <typename Arg0> - Implanter (std::basic_ostream<C>& os, Arg0 a0) - : os_ (os), - prev_ (os_.rdbuf ()), - from_adapter_ (*prev_), - buffer_ (from_adapter_, a0), - to_adapter_ (buffer_) - { - os_.rdbuf (&to_adapter_); - } - - ~Implanter () - { - try - { - buffer_.unbuffer (); - } - catch (...) - { - // there is nothing I can do... - } - - os_.rdbuf (prev_); - } - - private: - std::basic_ostream<C>& os_; - std::basic_streambuf<C>* prev_; - - FromStreamBufAdapter<C> from_adapter_; - - BufferType<C> buffer_; - - ToStreamBufAdapter<C> to_adapter_; - }; -} - -#endif // CCF_CODE_GENERATION_KIT_INDENTATION_IMPLANTER |