1 /* Copyright (C) 2011 The glibmm Development Team 2 * 3 * This library is free software; you can redistribute it and/or 4 * modify it under the terms of the GNU Lesser General Public 5 * License as published by the Free Software Foundation; either 6 * version 2.1 of the License, or (at your option) any later version. 7 * 8 * This library is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * Lesser General Public License for more details. 12 * 13 * You should have received a copy of the GNU Lesser General Public 14 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 15 */ 16 17 #include <glibmm/arrayhandle.h> 18 19 namespace Glib 20 { 21 ~ArrayHandle()22ArrayHandle<bool, Container_Helpers::TypeTraits<bool>>::~ArrayHandle() noexcept 23 { 24 if (parray_ && ownership_ != Glib::OWNERSHIP_NONE) 25 { 26 if (ownership_ != Glib::OWNERSHIP_SHALLOW) 27 { 28 // Deep ownership: release each container element. 29 const CType* const pend = parray_ + size_; 30 for (const CType* p = parray_; p != pend; ++p) 31 Tr::release_c_type(*p); 32 } 33 g_free(const_cast<CType*>(parray_)); 34 } 35 } 36 37 } // namespace Glib 38