Mercurial > octave-nkf
view src/Makefile.am @ 15896:57be060d7672 classdef
Implement full object construction and superclass references.
* libinterp/octave-value/ov-classdef.h (cdef_object_rep::subsref): Add class
context argument.
(cdef_object_rep::ctor_list): New class member.
(cdef_object_rep::mark_for_construction, cdef_object_rep::is_constructed_for,
cdef_object_rep::is_partially_constructed_for,
cdef_object_rep::mark_as_constructed, cdef_object_rep::is_constructed,
cdef_object::mark_for_construction, cdef_object::is_constructed_for,
cdef_object::is_partially_constructed_for, cdef_object::mark_as_constructed,
cdef_object:is_constructed): New methods to manipulate the new ctor_list
class member.
(cdef_object_rep::cdef_object_rep (const cdef_object_rep&)): New copy
constructor.
(cdef_class::cdef_class_rep (std::string, std::list<cdef_class>)): New
utility constructor.
(cdef_class (std::string, std::list<cdef_class>)): Likewise.
(cdef_class::cdef_class_rep::implicit_ctor_list): New class member.
(cdef_method::cdef_method_rep::is_constructor, cdef_method::is_construcror):
New methods.
(cdef_method::get_function): Likewise.
(cdef_package::cdef_package_rep::subsref): Remove method.
(octave_classdef::get_object_ref): New method.
(to_cdef_ref): New function.
* libinterp/octave-value/ov-classdef.cc (is_superclass): Add max_depth argument.
(is_direct_superclass): New utility function.
(get_class_context): Add bool and std::string return values, as new reference
arguments. Add overload without any arguments.
(check_access): Check for valid class context when required.
(make_class): Remove super_name_list argument. Do not set SuperClasses
explicitly, use new cdef_class constructor instead.
(octave_classdef::subsref): Change skip variable to size_t (avoids compilation
warning). Call cdef_object::subsref with additional class context argument.
(class octave_classdef_superclass_ref): New utility class.
(F__superclass_reference__): Use it.
(cdef_object_rep::subsref): Add class context argument.
(cdef_object_rep::mark_for_construction): New method.
(handle_cdef_object::~handle_cdef_object, value_cdef_object::~value_cdef_object,
cdef_class::cdef_class_rep::subsref_meta, cdef_class::make_meta_class): Use gnulib::printf explicitly.
(cdef_class::cdef_class_rep (std::string, std::list<cdef_class>)): New
constructor.
(class ctor_analyzer): New utility class.
(cdef_class::cdef_class_rep::install_method): Use it to analyze constructors
and detect explicit superclass constructor calls.
(cdef_class::cdef_class_rep::initialize_object): Call
cdef_object::mark_for_construction.
(cdef_class::cdef_class_rep::run_constructor): Run all implicit superclass
constructors first.
(cdef_class::cdef_class_rep::construct): Call cdef_object::mark_as_constructed.
(cdef_class::make_meta_class): Remove snamelist variable.
(cdef_property::cdef_property_rep::get_value,
cdef_property::cdef_property_rep::set_value): Check if object is partially
constructed for the property-defining class.
(cdef_method::cdef_method_rep::is_constructor): New method.
(cdef_package::cdef_package_rep::subsref): Delete method.
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Thu, 03 Jan 2013 21:01:11 -0500 |
parents | 1ca9beb2a194 |
children | 0cbac4d3a81c |
line wrap: on
line source
# Makefile for Octave's src directory # # Copyright (C) 1993-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/>. include $(top_srcdir)/build-aux/common.mk ## Search local directories before those specified by the user. AM_CPPFLAGS = \ -I$(top_srcdir)/liboctave/array \ -I$(top_srcdir)/liboctave/cruft/misc \ -I$(top_srcdir)/liboctave/numeric \ -I$(top_srcdir)/liboctave/system \ -I$(top_srcdir)/liboctave/util \ -I$(top_srcdir)/libinterp \ -I$(top_builddir)/libinterp/interpfcn -I$(top_srcdir)/libinterp/interpfcn \ -I$(top_builddir)/libgnu -I$(top_srcdir)/libgnu AM_CFLAGS += $(WARN_CFLAGS) AM_CXXFLAGS += $(WARN_CXXFLAGS) EXTRA_DIST = \ mkoctfile.in.cc \ mkoctfile.in.sh \ octave-config.in.cc \ octave-config.in.sh DISTCLEANFILES = OCTAVE_BINARIES = \ octave \ octave-cli OCTAVE_CORE_LIBS = \ $(top_builddir)/libinterp/liboctinterp.la \ $(top_builddir)/liboctave/liboctave.la include ../libgui/link-deps.mk octave_cli_SOURCES = main-cli.cc octave_cli_LDADD = \ $(OCTAVE_CORE_LIBS) $(OCTAVE_LINK_DEPS) octave_cli_LDFLAGS = \ $(NO_UNDEFINED_LDFLAG) \ $(OCTAVE_LINK_OPTS) if AMCOND_BUILD_GUI octave_SOURCES = main.cc OCTAVE_GUI_LIBS = $(top_builddir)/libgui/liboctgui.la OCTAVE_GUI_CPPFLAGS = -I$(top_srcdir)/libgui/src else octave_SOURCES = main-cli.cc OCTAVE_GUI_LIBS = OCTAVE_GUI_CPPFLAGS = endif octave_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(OCTAVE_GUI_CPPFLAGS) octave_LDADD = \ $(OCTAVE_GUI_LIBS) \ $(OCTAVE_CORE_LIBS) \ $(OCTAVE_GUI_LINK_DEPS) octave_LDFLAGS = \ $(NO_UNDEFINED_LDFLAG) \ $(OCTAVE_GUI_LINK_OPTS) if AMCOND_BUILD_COMPILED_AUX_PROGRAMS bin_PROGRAMS = \ $(OCTAVE_BINARIES) \ mkoctfile \ octave-config mkoctfile_SOURCES = nodist_mkoctfile_SOURCES = mkoctfile.cc mkoctfile_LDADD = $(top_builddir)/libgnu/libgnu.la $(LIBS) octave_config_SOURCES = nodist_octave_config_SOURCES = octave-config.cc octave_config_LDADD = \ $(top_builddir)/libinterp/corefcn/libcorefcn.la \ $(top_builddir)/libgnu/libgnu.la \ $(LIBS) DISTCLEANFILES += mkoctfile.cc octave-config.cc else bin_PROGRAMS = \ $(OCTAVE_BINARIES) bin_SCRIPTS = \ mkoctfile \ octave-config endif if AMCOND_BUILD_COMPILED_AUX_PROGRAMS octave-config.cc: octave-config.in.cc Makefile @$(do_subst_default_vals) mkoctfile.cc: mkoctfile.in.cc Makefile @$(do_subst_config_vals) else octave-config: octave-config.in.sh Makefile @$(do_subst_default_vals) chmod a+rx $@ mkoctfile: mkoctfile.in.sh Makefile @$(do_subst_config_vals) chmod a+rx $@ endif install-exec-hook: make-version-links uninstall-local: remove-version-links make-version-links: cd $(DESTDIR)$(bindir) && \ for f in $(basename $(bin_PROGRAMS)); do \ mv $$f$(EXEEXT) $$f-$(version)$(EXEEXT) && \ $(LN_S) $$f-$(version)$(EXEEXT) $$f$(EXEEXT); \ done if ! AMCOND_BUILD_COMPILED_AUX_PROGRAMS cd $(DESTDIR)$(bindir) && \ for f in $(basename $(bin_SCRIPTS)); do \ mv $$f $$f-$(version) && \ $(LN_S) $$f-$(version) $$f; \ done endif remove-version-links: for f in $(basename $(bin_PROGRAMS)); do \ rm -f $(DESTDIR)$(bindir)/$$f-$(version)$(EXEEXT); \ done if ! AMCOND_BUILD_COMPILED_AUX_PROGRAMS for f in $(basename $(bin_SCRIPTS)); do \ rm -f $(DESTDIR)$(bindir)/$$f-$(version); \ done endif .PHONY: make-version-links remove-version-links CLEANFILES = \ $(bin_SCRIPTS)