Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
iterator114 linesDownload Raw Back to experimental
1// -*- C++ -*-2//===----------------------------- iterator -------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10#ifndef _LIBCUDACXX_EXPERIMENTAL_ITERATOR11#define _LIBCUDACXX_EXPERIMENTAL_ITERATOR12 13/*14namespace std {15  namespace experimental {16    inline namespace fundamentals_v2 {17 18    template <class DelimT, class charT = char, class traits = char_traits<charT>>19        class ostream_joiner {20        public:21         typedef charT                        char_type;22         typedef traits                       traits_type;23         typedef basic_ostream<charT, traits> ostream_type;24         typedef output_iterator_tag          iterator_category;25         typedef void                         value_type;26         typedef void                         difference_type;27         typedef void                         pointer;28         typedef void                         reference;29      30         ostream_joiner(ostream_type& s, const DelimT& delimiter);31         ostream_joiner(ostream_type& s, DelimT&& delimiter);32 33         template<typename T>  34         ostream_joiner& operator=(const T& value);35 36         ostream_joiner& operator*() noexcept;37         ostream_joiner& operator++() noexcept;38         ostream_joiner& operator++(int) noexcept;39   private:40      ostream_type* out_stream;   // exposition only 41      DelimT delim;               // exposition only 42      bool first_element;         // exposition only43   };44 45  template <class charT, class traits, class DelimT>46    ostream_joiner<decay_t<DelimT>, charT, traits>47    make_ostream_joiner(basic_ostream<charT, traits>& os, DelimT&& delimiter);48 49    } // inline namespace fundamentals_v250  } // namespace experimental51} // namespace std52 53*/54 55#include <experimental/__config>56 57#if _LIBCUDACXX_STD_VER > 1158 59#include <iterator>60 61_LIBCUDACXX_BEGIN_NAMESPACE_LFTS62 63template <class _Delim, class _CharT = char, class _Traits = char_traits<_CharT>>64class ostream_joiner {65public:66 67    typedef _CharT                               char_type;68    typedef _Traits                              traits_type;69    typedef basic_ostream<char_type,traits_type> ostream_type;70    typedef output_iterator_tag                  iterator_category;71    typedef void                                 value_type;72    typedef void                                 difference_type;73    typedef void                                 pointer;74    typedef void                                 reference;75 76    ostream_joiner(ostream_type& __os, _Delim&& __d)77        : __output_iter(_CUDA_VSTD::addressof(__os)), __delim(_CUDA_VSTD::move(__d)), __first(true) {}78        79    ostream_joiner(ostream_type& __os, const _Delim& __d)80        : __output_iter(_CUDA_VSTD::addressof(__os)), __delim(__d), __first(true) {}81    82 83    template<typename _Tp>84    ostream_joiner& operator=(const _Tp& __v)85    {86        if (!__first)87            *__output_iter << __delim;88        __first = false;89        *__output_iter << __v;90        return *this;91    }92 93    ostream_joiner& operator*()     noexcept { return *this; }94    ostream_joiner& operator++()    noexcept { return *this; }95    ostream_joiner& operator++(int) noexcept { return *this; }96 97private:98    ostream_type*   __output_iter;99    _Delim          __delim;100    bool            __first;101};102 103 104template <class _CharT, class _Traits, class _Delim>105ostream_joiner<__decay_t<_Delim>, _CharT, _Traits>106make_ostream_joiner(basic_ostream<_CharT, _Traits>& __os, _Delim && __d)107{ return ostream_joiner<__decay_t<_Delim>, _CharT, _Traits>(__os, _CUDA_VSTD::forward<_Delim>(__d)); }108 109_LIBCUDACXX_END_NAMESPACE_LFTS110 111#endif /* _LIBCUDACXX_STD_VER > 11 */112 113#endif // _LIBCUDACXX_EXPERIMENTAL_ITERATOR114 
codekingpro/portable-devtools · Team Ai