LCOV - code coverage report
Current view: top level - /usr/include/xsd/cxx/tree - containers.txx (source / functions) Coverage Total Hit
Test: mu2edaq.info.cleaned Lines: 0.0 % 75 0
Test Date: 2026-07-30 01:56:44 Functions: 0.0 % 23 0

            Line data    Source code
       1              : // file      : xsd/cxx/tree/containers.txx
       2              : // copyright : Copyright (c) 2005-2017 Code Synthesis Tools CC
       3              : // license   : GNU GPL v2 + exceptions; see accompanying LICENSE file
       4              : 
       5              : #include <ostream>
       6              : 
       7              : #ifdef XSD_CXX11
       8              : #  include <utility> // std::move
       9              : #endif
      10              : 
      11              : #include <xsd/cxx/tree/bits/literals.hxx>
      12              : 
      13              : namespace xsd
      14              : {
      15              :   namespace cxx
      16              :   {
      17              :     namespace tree
      18              :     {
      19              :       // one
      20              :       //
      21              :       template<typename T>
      22            0 :       one<T, false>::
      23              :       ~one ()
      24              :       {
      25            0 :         delete x_;
      26            0 :       }
      27              : 
      28              :       template<typename T>
      29            0 :       one<T, false>::
      30              :       one (container* c)
      31            0 :           : x_ (0), container_ (c)
      32              :       {
      33            0 :       }
      34              : 
      35              :       template<typename T>
      36            0 :       one<T, false>::
      37              :       one (const T& x, container* c)
      38            0 :           : x_ (0), container_ (c)
      39              :       {
      40            0 :         set (x);
      41            0 :       }
      42              : 
      43              :       template<typename T>
      44              :       one<T, false>::
      45              :       one (XSD_AUTO_PTR<T> x, container* c)
      46              :           : x_ (0), container_ (c)
      47              :       {
      48              : #ifdef XSD_CXX11
      49              :         set (std::move (x));
      50              : #else
      51              :         set (x);
      52              : #endif
      53              :       }
      54              : 
      55              :       template<typename T>
      56            0 :       one<T, false>::
      57              :       one (const one<T, false>& x, flags f, container* c)
      58            0 :           : x_ (0), container_ (c)
      59              :       {
      60            0 :         if (x.present ())
      61            0 :           set (x.get (), f);
      62            0 :       }
      63              : 
      64              :       template<typename T>
      65            0 :       one<T, false>& one<T, false>::
      66              :       operator= (const one<T, false>& x)
      67              :       {
      68            0 :         if (this == &x)
      69            0 :           return *this;
      70              : 
      71            0 :         if (x.present ())
      72            0 :           set (x.get ());
      73              :         else
      74              :         {
      75            0 :           delete x_;
      76            0 :           x_ = 0;
      77              :         }
      78              : 
      79            0 :         return *this;
      80              :       }
      81              : 
      82              :       template<typename T>
      83            0 :       void one<T, false>::
      84              :       set (const T& x, flags f)
      85              :       {
      86              :         // We always do a fresh copy because T may not be x's
      87              :         // dynamic type.
      88              :         //
      89            0 :         T* r (x._clone (f, container_));
      90              : 
      91            0 :         delete x_;
      92            0 :         x_ = r;
      93            0 :       }
      94              : 
      95              :       template<typename T>
      96            0 :       void one<T, false>::
      97              :       set (XSD_AUTO_PTR<T> x)
      98              :       {
      99            0 :         T* r (0);
     100              : 
     101            0 :         if (x.get () != 0)
     102              :         {
     103            0 :           if (x->_container () != container_)
     104            0 :             x->_container (container_);
     105              : 
     106            0 :           r = x.release ();
     107              :         }
     108              : 
     109            0 :         delete x_;
     110            0 :         x_ = r;
     111            0 :       }
     112              : 
     113              :       // optional
     114              :       //
     115              :       template <typename T>
     116            0 :       optional<T, false>::
     117              :       ~optional ()
     118              :       {
     119            0 :         delete x_;
     120            0 :       }
     121              : 
     122              :       template <typename T>
     123            0 :       optional<T, false>::
     124              :       optional (container* c)
     125            0 :           : x_ (0), container_ (c)
     126              :       {
     127            0 :       }
     128              : 
     129              :       template <typename T>
     130              :       optional<T, false>::
     131              :       optional (const T& x, container* c)
     132              :           : x_ (0), container_ (c)
     133              :       {
     134              :         set (x);
     135              :       }
     136              : 
     137              :       template <typename T>
     138              :       optional<T, false>::
     139              :       optional (XSD_AUTO_PTR<T> x, container* c)
     140              :           : x_ (0), container_ (c)
     141              :       {
     142              : #ifdef XSD_CXX11
     143              :         set (std::move (x));
     144              : #else
     145              :         set (x);
     146              : #endif
     147              :       }
     148              : 
     149              :       template <typename T>
     150            0 :       optional<T, false>::
     151              :       optional (const optional<T, false>& x, flags f, container* c)
     152            0 :           : x_ (0), container_ (c)
     153              :       {
     154            0 :         if (x)
     155            0 :           set (*x, f);
     156            0 :       }
     157              : 
     158              :       template <typename T>
     159              :       optional<T, false>& optional<T, false>::
     160              :       operator= (const T& x)
     161              :       {
     162              :         if (x_ == &x)
     163              :           return *this;
     164              : 
     165              :         set (x);
     166              : 
     167              :         return *this;
     168              :       }
     169              : 
     170              :       template <typename T>
     171            0 :       optional<T, false>& optional<T, false>::
     172              :       operator= (const optional<T, false>& x)
     173              :       {
     174            0 :         if (this == &x)
     175            0 :           return *this;
     176              : 
     177            0 :         if (x)
     178            0 :           set (*x);
     179              :         else
     180            0 :           reset ();
     181              : 
     182            0 :         return *this;
     183              :       }
     184              : 
     185              :       template <typename T>
     186            0 :       void optional<T, false>::
     187              :       set (const T& x, flags f)
     188              :       {
     189              :         // We always do a fresh copy because T may not be x's
     190              :         // dynamic type.
     191              :         //
     192            0 :         T* r (x._clone (f, container_));
     193              : 
     194            0 :         delete x_;
     195            0 :         x_ = r;
     196            0 :       }
     197              : 
     198              :       template <typename T>
     199            0 :       void optional<T, false>::
     200              :       set (XSD_AUTO_PTR<T> x)
     201              :       {
     202            0 :         T* r (0);
     203              : 
     204            0 :         if (x.get () != 0)
     205              :         {
     206            0 :           if (x->_container () != container_)
     207            0 :             x->_container (container_);
     208              : 
     209            0 :           r = x.release ();
     210              :         }
     211              : 
     212            0 :         delete x_;
     213            0 :         x_ = r;
     214            0 :       }
     215              : 
     216              :       template <typename T>
     217            0 :       void optional<T, false>::
     218              :       reset ()
     219              :       {
     220            0 :         delete x_;
     221            0 :         x_ = 0;
     222            0 :       }
     223              : 
     224              :       template <typename T>
     225            0 :       void optional<T, false>::
     226              :       true_ ()
     227              :       {
     228            0 :       }
     229              : 
     230              : 
     231              :       // optional
     232              :       //
     233              :       template <typename T>
     234              :       optional<T, true>::
     235              :       optional (const T& y, container*)
     236              :           : present_ (false)
     237              :       {
     238              :         set (y);
     239              :       }
     240              : 
     241              :       template <typename T>
     242              :       optional<T, true>::
     243              :       optional (const optional<T, true>& y, flags, container*)
     244              :           : present_ (false)
     245              :       {
     246              :         if (y)
     247              :           set (*y);
     248              :       }
     249              : 
     250              :       template <typename T>
     251              :       optional<T, true>& optional<T, true>::
     252              :       operator= (const T& y)
     253              :       {
     254              :         if (&x_ == &y)
     255              :           return *this;
     256              : 
     257              :         set (y);
     258              : 
     259              :         return *this;
     260              :       }
     261              : 
     262              :       template <typename T>
     263              :       optional<T, true>& optional<T, true>::
     264              :       operator= (const optional<T, true>& y)
     265              :       {
     266              :         if (this == &y)
     267              :           return *this;
     268              : 
     269              :         if (y)
     270              :           set (*y);
     271              :         else
     272              :           reset ();
     273              : 
     274              :         return *this;
     275              :       }
     276              : 
     277              :       template <typename T>
     278              :       void optional<T, true>::
     279              :       true_ ()
     280              :       {
     281              :       }
     282              : 
     283              :       template <typename C, typename T, bool fund>
     284              :       std::basic_ostream<C>&
     285              :       operator<< (std::basic_ostream<C>& os, const optional<T, fund>& x)
     286              :       {
     287              :         if (x)
     288              :           os << *x;
     289              :         else
     290              :           os << bits::not_present<C> ();
     291              : 
     292              :         return os;
     293              :       }
     294              :     }
     295              :   }
     296              : }
        

Generated by: LCOV version 2.0-1