Maxim Integrated / Mbed OS MAXREFDES155#

Dependencies:   MaximInterface

Committer:
IanBenzMaxim
Date:
Fri Feb 24 11:23:12 2017 -0600
Revision:
0:33d4e66780c0
Initial commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IanBenzMaxim 0:33d4e66780c0 1 // Tencent is pleased to support the open source community by making RapidJSON available.
IanBenzMaxim 0:33d4e66780c0 2 //
IanBenzMaxim 0:33d4e66780c0 3 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
IanBenzMaxim 0:33d4e66780c0 4 //
IanBenzMaxim 0:33d4e66780c0 5 // Licensed under the MIT License (the "License"); you may not use this file except
IanBenzMaxim 0:33d4e66780c0 6 // in compliance with the License. You may obtain a copy of the License at
IanBenzMaxim 0:33d4e66780c0 7 //
IanBenzMaxim 0:33d4e66780c0 8 // http://opensource.org/licenses/MIT
IanBenzMaxim 0:33d4e66780c0 9 //
IanBenzMaxim 0:33d4e66780c0 10 // Unless required by applicable law or agreed to in writing, software distributed
IanBenzMaxim 0:33d4e66780c0 11 // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
IanBenzMaxim 0:33d4e66780c0 12 // CONDITIONS OF ANY KIND, either express or implied. See the License for the
IanBenzMaxim 0:33d4e66780c0 13 // specific language governing permissions and limitations under the License.
IanBenzMaxim 0:33d4e66780c0 14
IanBenzMaxim 0:33d4e66780c0 15 #ifndef RAPIDJSON_OSTREAMWRAPPER_H_
IanBenzMaxim 0:33d4e66780c0 16 #define RAPIDJSON_OSTREAMWRAPPER_H_
IanBenzMaxim 0:33d4e66780c0 17
IanBenzMaxim 0:33d4e66780c0 18 #include "stream.h"
IanBenzMaxim 0:33d4e66780c0 19 #include <iosfwd>
IanBenzMaxim 0:33d4e66780c0 20
IanBenzMaxim 0:33d4e66780c0 21 #ifdef __clang__
IanBenzMaxim 0:33d4e66780c0 22 RAPIDJSON_DIAG_PUSH
IanBenzMaxim 0:33d4e66780c0 23 RAPIDJSON_DIAG_OFF(padded)
IanBenzMaxim 0:33d4e66780c0 24 #endif
IanBenzMaxim 0:33d4e66780c0 25
IanBenzMaxim 0:33d4e66780c0 26 RAPIDJSON_NAMESPACE_BEGIN
IanBenzMaxim 0:33d4e66780c0 27
IanBenzMaxim 0:33d4e66780c0 28 //! Wrapper of \c std::basic_ostream into RapidJSON's Stream concept.
IanBenzMaxim 0:33d4e66780c0 29 /*!
IanBenzMaxim 0:33d4e66780c0 30 The classes can be wrapped including but not limited to:
IanBenzMaxim 0:33d4e66780c0 31
IanBenzMaxim 0:33d4e66780c0 32 - \c std::ostringstream
IanBenzMaxim 0:33d4e66780c0 33 - \c std::stringstream
IanBenzMaxim 0:33d4e66780c0 34 - \c std::wpstringstream
IanBenzMaxim 0:33d4e66780c0 35 - \c std::wstringstream
IanBenzMaxim 0:33d4e66780c0 36 - \c std::ifstream
IanBenzMaxim 0:33d4e66780c0 37 - \c std::fstream
IanBenzMaxim 0:33d4e66780c0 38 - \c std::wofstream
IanBenzMaxim 0:33d4e66780c0 39 - \c std::wfstream
IanBenzMaxim 0:33d4e66780c0 40
IanBenzMaxim 0:33d4e66780c0 41 \tparam StreamType Class derived from \c std::basic_ostream.
IanBenzMaxim 0:33d4e66780c0 42 */
IanBenzMaxim 0:33d4e66780c0 43
IanBenzMaxim 0:33d4e66780c0 44 template <typename StreamType>
IanBenzMaxim 0:33d4e66780c0 45 class BasicOStreamWrapper {
IanBenzMaxim 0:33d4e66780c0 46 public:
IanBenzMaxim 0:33d4e66780c0 47 typedef typename StreamType::char_type Ch;
IanBenzMaxim 0:33d4e66780c0 48 BasicOStreamWrapper(StreamType& stream) : stream_(stream) {}
IanBenzMaxim 0:33d4e66780c0 49
IanBenzMaxim 0:33d4e66780c0 50 void Put(Ch c) {
IanBenzMaxim 0:33d4e66780c0 51 stream_.put(c);
IanBenzMaxim 0:33d4e66780c0 52 }
IanBenzMaxim 0:33d4e66780c0 53
IanBenzMaxim 0:33d4e66780c0 54 void Flush() {
IanBenzMaxim 0:33d4e66780c0 55 stream_.flush();
IanBenzMaxim 0:33d4e66780c0 56 }
IanBenzMaxim 0:33d4e66780c0 57
IanBenzMaxim 0:33d4e66780c0 58 // Not implemented
IanBenzMaxim 0:33d4e66780c0 59 char Peek() const { RAPIDJSON_ASSERT(false); return 0; }
IanBenzMaxim 0:33d4e66780c0 60 char Take() { RAPIDJSON_ASSERT(false); return 0; }
IanBenzMaxim 0:33d4e66780c0 61 size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
IanBenzMaxim 0:33d4e66780c0 62 char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
IanBenzMaxim 0:33d4e66780c0 63 size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; }
IanBenzMaxim 0:33d4e66780c0 64
IanBenzMaxim 0:33d4e66780c0 65 private:
IanBenzMaxim 0:33d4e66780c0 66 BasicOStreamWrapper(const BasicOStreamWrapper&);
IanBenzMaxim 0:33d4e66780c0 67 BasicOStreamWrapper& operator=(const BasicOStreamWrapper&);
IanBenzMaxim 0:33d4e66780c0 68
IanBenzMaxim 0:33d4e66780c0 69 StreamType& stream_;
IanBenzMaxim 0:33d4e66780c0 70 };
IanBenzMaxim 0:33d4e66780c0 71
IanBenzMaxim 0:33d4e66780c0 72 typedef BasicOStreamWrapper<std::ostream> OStreamWrapper;
IanBenzMaxim 0:33d4e66780c0 73 typedef BasicOStreamWrapper<std::wostream> WOStreamWrapper;
IanBenzMaxim 0:33d4e66780c0 74
IanBenzMaxim 0:33d4e66780c0 75 #ifdef __clang__
IanBenzMaxim 0:33d4e66780c0 76 RAPIDJSON_DIAG_POP
IanBenzMaxim 0:33d4e66780c0 77 #endif
IanBenzMaxim 0:33d4e66780c0 78
IanBenzMaxim 0:33d4e66780c0 79 RAPIDJSON_NAMESPACE_END
IanBenzMaxim 0:33d4e66780c0 80
IanBenzMaxim 0:33d4e66780c0 81 #endif // RAPIDJSON_OSTREAMWRAPPER_H_