Mercurial > octave-nkf
view libinterp/octave-value/ov-int32.h @ 15911:b18b7e560236 classdef
More flexible refcount to account for owned back-references.
* libinterp/octave-value/ov-classdef.h (cdef_object_rep::static_count,
cdef_object_rep::destroy): New virtual methods.
(cdef_object_rep::refcount): Use octave_idx_type as counter type.
(cdef_object_rep::release): New method.
(cdef_object::~cdef_object, cdef_object::cdef_object (cdef_object)):
Use it.
(cdef_class::cdef_class_rep::member_count): New member.
(cdef_class::cdef_class_rep::cdef_class_rep ()): Initialize it.
(cdef_class::cdef_class_rep::static_count,
cdef_class::cdef_class_rep::destroy): New methods.
(cdef_package::cdef_package_rep::member_count): New member.
(cdef_package::cdef_package_rep::cdef_package_rep ()): Initialize it.
(cdef_package::cdef_package_rep::static_count,
cdef_package::cdef_package_rep::destroy): New methods.
* libinterp/octave-value/ov-classdef.cc
(octave_classdef_proxy::~octave_classdef_proxy): Remove owned cdef_class
from all_classes.
(cdef_class::cdef_class_rep::cdef_class_rep (std::list<cdef_class>)):
Initialize member_count.
(cdef_class::cdef_class_rep::install_method,
cdef_class::cdef_class_rep::install_property): Increment member_count.
(cdef_package::cdef_package_rep::install_class,
cdef_package::cdef_package_rep::install_package): Likewise.
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Sun, 06 Jan 2013 22:22:13 -0500 |
parents | 2fc554ffbc28 |
children | d63878346099 |
line wrap: on
line source
/* Copyright (C) 2004-2012 John W. Eaton This file is part of Octave. Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see <http://www.gnu.org/licenses/>. */ #if !defined (octave_int32_h) #define octave_int32_h 1 #define OCTAVE_INT_T octave_int32 #define OCTAVE_VALUE_INT_MATRIX_T octave_int32_matrix #define OCTAVE_VALUE_INT_NDARRAY_EXTRACTOR_FUNCTION int32_array_value #define OCTAVE_VALUE_INT_SCALAR_T octave_int32_scalar #define OCTAVE_VALUE_INT_SCALAR_EXTRACTOR_FUNCTION int32_scalar_value #define OCTAVE_TYPE_PREDICATE_FUNCTION is_int32_type #define OCTAVE_INT_MX_CLASS mxINT32_CLASS #define OCTAVE_INT_BTYP btyp_int32 #include "ov-intx.h" #undef OCTAVE_INT_T #undef OCTAVE_VALUE_INT_MATRIX_T #undef OCTAVE_VALUE_INT_NDARRAY_EXTRACTOR_FUNCTION #undef OCTAVE_VALUE_INT_SCALAR_T #undef OCTAVE_VALUE_INT_SCALAR_EXTRACTOR_FUNCTION #undef OCTAVE_TYPE_PREDICATE_FUNCTION #undef OCTAVE_INT_MX_CLASS #undef OCTAVE_INT_BTYP #endif