mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-15 19:16:40 +01:00
rollback to 3428, before the mysterious removal of libs/* at 3431/3432
git-svn-id: svn://localhost/ardour2/branches/3.0@3435 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
9c0d7d72d7
commit
449aab3c46
2869 changed files with 1026749 additions and 0 deletions
10
libs/glibmm2/tools/m4/Makefile.am
Normal file
10
libs/glibmm2/tools/m4/Makefile.am
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
include $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment
|
||||
|
||||
EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_m4)
|
||||
|
||||
# Install the .m4, files:
|
||||
|
||||
tools_m4_includedir = $(libdir)/glibmm-2.4/proc/m4
|
||||
tools_m4_include_HEADERS = $(files_tools_m4)
|
||||
|
||||
433
libs/glibmm2/tools/m4/Makefile.in
Normal file
433
libs/glibmm2/tools/m4/Makefile.in
Normal file
|
|
@ -0,0 +1,433 @@
|
|||
# Makefile.in generated by automake 1.10 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(tools_m4_include_HEADERS) \
|
||||
$(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment
|
||||
subdir = tools/m4
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h \
|
||||
$(top_builddir)/glib/glibmmconfig.h \
|
||||
$(top_builddir)/gio/giommconfig.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||
am__installdirs = "$(DESTDIR)$(tools_m4_includedir)"
|
||||
tools_m4_includeHEADERS_INSTALL = $(INSTALL_HEADER)
|
||||
HEADERS = $(tools_m4_include_HEADERS)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
GIOMM_CFLAGS = @GIOMM_CFLAGS@
|
||||
GIOMM_LIBS = @GIOMM_LIBS@
|
||||
GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
|
||||
GLIBMM_LIBS = @GLIBMM_LIBS@
|
||||
GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
|
||||
GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
|
||||
GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
|
||||
GLIBMM_RELEASE = @GLIBMM_RELEASE@
|
||||
GLIBMM_VERSION = @GLIBMM_VERSION@
|
||||
GMMPROC_DIR = @GMMPROC_DIR@
|
||||
GREP = @GREP@
|
||||
GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
|
||||
GTHREAD_LIBS = @GTHREAD_LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
files_tools_m4 = base.m4 class_shared.m4 class_boxedtype.m4 class_boxedtype_static.m4 \
|
||||
class_generic.m4 class_gobject.m4 class_gtkobject.m4 \
|
||||
class_interface.m4 class_opaque_refcounted.m4 class_opaque_copyable.m4 \
|
||||
gerror.m4 \
|
||||
compare.m4 convert.m4 convert_base.m4 convert_gtkmm.m4 convert_atk.m4 convert_gdk.m4 \
|
||||
convert_glib.m4 convert_gtk.m4 convert_pango.m4 ctor.m4 doc.m4 enum.m4 list.m4 member.m4 \
|
||||
method.m4 property.m4 signal.m4 vfunc.m4
|
||||
|
||||
EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_m4)
|
||||
|
||||
# Install the .m4, files:
|
||||
tools_m4_includedir = $(libdir)/glibmm-2.4/proc/m4
|
||||
tools_m4_include_HEADERS = $(files_tools_m4)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/m4/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu tools/m4/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-tools_m4_includeHEADERS: $(tools_m4_include_HEADERS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(tools_m4_includedir)" || $(MKDIR_P) "$(DESTDIR)$(tools_m4_includedir)"
|
||||
@list='$(tools_m4_include_HEADERS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(tools_m4_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(tools_m4_includedir)/$$f'"; \
|
||||
$(tools_m4_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(tools_m4_includedir)/$$f"; \
|
||||
done
|
||||
|
||||
uninstall-tools_m4_includeHEADERS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(tools_m4_include_HEADERS)'; for p in $$list; do \
|
||||
f=$(am__strip_dir) \
|
||||
echo " rm -f '$(DESTDIR)$(tools_m4_includedir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(tools_m4_includedir)/$$f"; \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(HEADERS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(tools_m4_includedir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-tools_m4_includeHEADERS
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-tools_m4_includeHEADERS
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool ctags distclean distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip \
|
||||
install-tools_m4_includeHEADERS installcheck installcheck-am \
|
||||
installdirs maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags uninstall uninstall-am \
|
||||
uninstall-tools_m4_includeHEADERS
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
files_tools_m4 = base.m4 class_shared.m4 class_boxedtype.m4 class_boxedtype_static.m4 \
|
||||
class_generic.m4 class_gobject.m4 class_gtkobject.m4 \
|
||||
class_interface.m4 class_opaque_refcounted.m4 class_opaque_copyable.m4 \
|
||||
gerror.m4 \
|
||||
compare.m4 convert.m4 convert_base.m4 convert_gtkmm.m4 convert_atk.m4 convert_gdk.m4 \
|
||||
convert_glib.m4 convert_gtk.m4 convert_pango.m4 ctor.m4 doc.m4 enum.m4 list.m4 member.m4 \
|
||||
method.m4 property.m4 signal.m4 vfunc.m4
|
||||
|
||||
436
libs/glibmm2/tools/m4/base.m4
Normal file
436
libs/glibmm2/tools/m4/base.m4
Normal file
|
|
@ -0,0 +1,436 @@
|
|||
dnl $Id: base.m4 454 2007-10-12 19:58:00Z arminb $
|
||||
divert(-1)
|
||||
|
||||
dnl
|
||||
dnl The general convention is
|
||||
dnl _* are macros
|
||||
dnl __*__ are variables
|
||||
|
||||
dnl
|
||||
dnl rename several m4 builtins to avoid name clashes
|
||||
dnl
|
||||
|
||||
define(`_PREFIX_BUILTIN_ALIAS', `define(`m4_$1', defn(`$1'))')
|
||||
define(`_PREFIX_BUILTIN', `_PREFIX_BUILTIN_ALIAS(`$1')`'undefine(`$1')')
|
||||
|
||||
_PREFIX_BUILTIN(`builtin')
|
||||
_PREFIX_BUILTIN(`decr')
|
||||
_PREFIX_BUILTIN(`errprint')
|
||||
_PREFIX_BUILTIN(`esyscmd')
|
||||
_PREFIX_BUILTIN(`eval')
|
||||
_PREFIX_BUILTIN(`format')
|
||||
_PREFIX_BUILTIN(`incr')
|
||||
_PREFIX_BUILTIN(`index')
|
||||
_PREFIX_BUILTIN(`indir')
|
||||
_PREFIX_BUILTIN(`len')
|
||||
_PREFIX_BUILTIN(`maketemp')
|
||||
_PREFIX_BUILTIN(`syscmd')
|
||||
_PREFIX_BUILTIN(`substr')
|
||||
_PREFIX_BUILTIN(`sysval')
|
||||
_PREFIX_BUILTIN(`mkstemp')
|
||||
|
||||
dnl
|
||||
dnl More alternative names for m4 macros, not undefined (yet!).
|
||||
dnl
|
||||
|
||||
_PREFIX_BUILTIN_ALIAS(`changecom')
|
||||
_PREFIX_BUILTIN_ALIAS(`changequote')
|
||||
_PREFIX_BUILTIN_ALIAS(`define')
|
||||
_PREFIX_BUILTIN_ALIAS(`divert')
|
||||
_PREFIX_BUILTIN_ALIAS(`divnum')
|
||||
_PREFIX_BUILTIN_ALIAS(`ifdef')
|
||||
_PREFIX_BUILTIN_ALIAS(`ifelse')
|
||||
_PREFIX_BUILTIN_ALIAS(`include')
|
||||
_PREFIX_BUILTIN_ALIAS(`m4exit')
|
||||
_PREFIX_BUILTIN_ALIAS(`m4wrap')
|
||||
_PREFIX_BUILTIN_ALIAS(`patsubst')
|
||||
_PREFIX_BUILTIN_ALIAS(`popdef')
|
||||
_PREFIX_BUILTIN_ALIAS(`pushdef')
|
||||
_PREFIX_BUILTIN_ALIAS(`shift')
|
||||
_PREFIX_BUILTIN_ALIAS(`undefine')
|
||||
_PREFIX_BUILTIN_ALIAS(`undivert')
|
||||
_PREFIX_BUILTIN_ALIAS(`regexp')
|
||||
_PREFIX_BUILTIN_ALIAS(`translit')
|
||||
|
||||
dnl
|
||||
dnl Type Conversion Macros
|
||||
dnl
|
||||
|
||||
m4_include(convert.m4)
|
||||
|
||||
dnl
|
||||
dnl ----------------------- Utility Macros -------------------------
|
||||
dnl
|
||||
|
||||
dnl
|
||||
dnl Add a comma before the arg if any, do nothing otherwise
|
||||
dnl _COMMA_PREFIX(a) -> ,a
|
||||
dnl _COMMA_PREFIX() -> `'
|
||||
dnl
|
||||
define(`_COMMA_PREFIX', `m4_ifelse(m4_eval(m4_len(`$*') >= 1), 1, `,$*')')dnl
|
||||
|
||||
dnl
|
||||
dnl Add a comma after the arg if any, do nothing otherwise
|
||||
dnl _COMMA_SUFFIX(a) -> a,
|
||||
dnl _COMMA_SUFFIX() -> `'
|
||||
dnl
|
||||
define(`_COMMA_SUFFIX', `m4_ifelse(m4_eval(m4_len(`$*') >= 1), 1, `$*,')')dnl
|
||||
|
||||
|
||||
dnl
|
||||
dnl _UPPER(string)
|
||||
dnl uppercase a string
|
||||
define(`_UPPER',`m4_translit(`$*',`abcdefghijklmnopqrstuvwxyz',`ABCDEFGHIJKLMNOPQRSTUVWXYZ')')
|
||||
|
||||
dnl
|
||||
dnl _LOWER(string)
|
||||
dnl lower a string
|
||||
define(`_LOWER',`m4_translit(`$*',`ABCDEFGHIJKLMNOPQRSTUVWXYZ',`abcdefghijklmnopqrstuvwxyz')')
|
||||
|
||||
dnl
|
||||
dnl _QUOTE(macro)
|
||||
dnl If a macro generates an output with commas we need to protect it
|
||||
dnl from being broken down and interpreted
|
||||
define(`_QUOTE',``$*'')
|
||||
|
||||
dnl
|
||||
dnl _NUM(arglist)
|
||||
dnl count number of arguments
|
||||
define(`_NUM',`m4_ifelse(m4_len(`$*'),0,0,`$#')')
|
||||
|
||||
dnl
|
||||
dnl For handling of included macro files.
|
||||
dnl
|
||||
|
||||
dnl _PUSH(section_name)
|
||||
dnl Uses pushdef() to redefine the __DIV__ macro
|
||||
dnl so that it diverts ouput to the section_name,
|
||||
dnl or discards it (-1) if no section_name is given.
|
||||
dnl TODO: However, as far as I can tell, __DIV__ is not used anywhere. murrayc.
|
||||
define(`_PUSH',`pushdef(`__DIV__',divnum)m4_divert(m4_ifelse($1,,-1,__SEC_$1))dnl`'')
|
||||
|
||||
dnl _POP(section_name)
|
||||
dnl Uses popdef() to go back to the previous definition of the __DIV__ macro.
|
||||
define(`_POP',`m4_divert(__DIV__)popdef(`__DIV__')dnl`'')
|
||||
|
||||
dnl _SECTION(section_name):
|
||||
dnl m4_divert() sends subsequent output to the specified file:
|
||||
define(`_SECTION',`m4_divert(__SEC_$1)dnl')
|
||||
|
||||
dnl _IMPORT(section_name):
|
||||
define(`_IMPORT',`m4_undivert(__SEC_$1)dnl')
|
||||
|
||||
dnl _GET_TYPE_FUNC(GtkWidget) -> gtk_widget_get_type()
|
||||
dnl The funny `[A-Z]?' part of the regexp is to catch things like GdkGCFooBar.
|
||||
define(`_GET_TYPE_FUNC',`dnl
|
||||
m4_translit(m4_substr(m4_patsubst(`$1',`[A-Z]?[A-Z]',`_\&'),1),`[A-Z]',`[a-z]')_get_type()`'dnl
|
||||
')
|
||||
|
||||
dnl Define a new diversion
|
||||
dnl In m4, m4_divert() selects the output file to be used for subsequent text output.
|
||||
dnl 0 is the normal output. We define extra output files with _NEW_SECTION().
|
||||
dnl This macro seems to redefine __SEC_COUNT as __SEC_COUNT+1, and also
|
||||
dnl define __SEC_<the macro argument> as __SEC_COUNT.
|
||||
dnl So it just sets that section identifier to the next number.
|
||||
|
||||
define(`__SEC_COUNT__',0)
|
||||
|
||||
define(`_NEW_SECTION',`dnl
|
||||
define(`__SEC_COUNT__',m4_eval(__SEC_COUNT__+1))dnl
|
||||
define(`__SEC_$1',__SEC_COUNT__)dnl
|
||||
')
|
||||
|
||||
|
||||
changequote([,])
|
||||
define([__BT__],[changequote(,)`changequote(`,')])
|
||||
define([__FT__],[changequote(,)'changequote(`,')])
|
||||
changequote(`,')
|
||||
|
||||
changecom()
|
||||
|
||||
dnl
|
||||
dnl ----------------------- Main Headers -------------------------
|
||||
dnl
|
||||
|
||||
_NEW_SECTION(SECTION_HEADER_FIRST)dnl Before any generated code
|
||||
_NEW_SECTION(SECTION_HEADER1) dnl header up to the first namespace
|
||||
_NEW_SECTION(SECTION_HEADER2) dnl header after the first namespace
|
||||
_NEW_SECTION(SECTION_HEADER3) dnl header after the first namespace
|
||||
_NEW_SECTION(SECTION_PHEADER) dnl private header
|
||||
_NEW_SECTION(SECTION_CC_INCLUDES) dnl section for additional includes
|
||||
_NEW_SECTION(SECTION_SRC_CUSTOM) dnl user supplied implementation
|
||||
_NEW_SECTION(SECTION_ANONYMOUS_NAMESPACE) dnl built implementation in anonymous namespace
|
||||
_NEW_SECTION(SECTION_SRC_GENERATED) dnl built implementation
|
||||
_NEW_SECTION(SECTION_CLASS1) dnl decl to _CLASS
|
||||
_NEW_SECTION(SECTION_CLASS2) dnl _CLASS to end of class
|
||||
_NEW_SECTION(SECTION_CC) dnl section for methods (in current namespace)
|
||||
|
||||
_NEW_SECTION(SECTION_CC_IMPLEMENTS_INTERFACES) dnl Calls SomeBaseInterface::add_interface(get_type()).
|
||||
|
||||
dnl Virtual Functions and Default Signal Handlers (Very similar)
|
||||
_NEW_SECTION(SECTION_H_VFUNCS) dnl Declaration of vfunc hooks.
|
||||
_NEW_SECTION(SECTION_H_VFUNCS_CPPWRAPPER) dnl Convenience method, using C++ types, that just calls the vfunc.
|
||||
_NEW_SECTION(SECTION_H_DEFAULT_SIGNAL_HANDLERS) dnl Declaration of default signal handler' hooks.
|
||||
|
||||
_NEW_SECTION(SECTION_CC_DEFAULT_SIGNAL_HANDLERS)
|
||||
_NEW_SECTION(SECTION_CC_VFUNCS)
|
||||
_NEW_SECTION(SECTION_CC_VFUNCS_CPPWRAPPER) dnl Convenience method, using C++ types, that just calls the vfunc.
|
||||
|
||||
_NEW_SECTION(SECTION_PH_DEFAULT_SIGNAL_HANDLERS) dnl private class declaration
|
||||
_NEW_SECTION(SECTION_PH_VFUNCS) dnl private class declaration
|
||||
|
||||
_NEW_SECTION(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS) dnl private class implementation
|
||||
_NEW_SECTION(SECTION_PCC_VFUNCS) dnl private class implementation
|
||||
|
||||
_NEW_SECTION(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS) dnl gtk+ class_init function
|
||||
_NEW_SECTION(SECTION_PCC_CLASS_INIT_VFUNCS) dnl gtk+ class_init function
|
||||
|
||||
|
||||
dnl Signal Proxies:
|
||||
dnl _NEW_SECTION(SECTION_H_SIGNALPROXIES) dnl signal member objects
|
||||
_NEW_SECTION(SECTION_CC_SIGNALPROXIES) dnl signal member objects
|
||||
|
||||
dnl Property Proxies:
|
||||
dnl _NEW_SECTION(SECTION_H_PROPERTYPROXIES)
|
||||
_NEW_SECTION(SECTION_CC_PROPERTYPROXIES)
|
||||
|
||||
_NEW_SECTION(SECTION_CC_INITIALIZE_CLASS_EXTRA) dnl For instance, to initialize special member data from all constructors. Not commonly used.
|
||||
|
||||
dnl _NEW_SECTION(PROXY)
|
||||
dnl _NEW_SECTION(SECTION_PCC_OBJECT_INIT) dnl gtk+ object_init function
|
||||
|
||||
|
||||
_NEW_SECTION(SECTION_CHECK)
|
||||
_NEW_SECTION(SECTION_USR)
|
||||
|
||||
define(`_CHECK',`dnl
|
||||
_PUSH(SECTION_CHECK)
|
||||
$*
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl This macro is for including the config header before any code (such as
|
||||
dnl the #ifndef *_DISABLE_DEPRECATED in deprecated classes) is generated.
|
||||
define(`_CONFIGINCLUDE',`dnl
|
||||
_PUSH(SECTION_HEADER_FIRST)
|
||||
#include <$1>
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl Start of processing
|
||||
dnl
|
||||
dnl _START(filname, module,modulecanonical) .e.g _START(button, gtkmm, gtkmm)
|
||||
define(`_START',`dnl
|
||||
define(`__MODULE__',$2)dnl
|
||||
define(`__MODULE_CANONICAL__',$3)dnl
|
||||
define(`__HEADER_GUARD__',`_`'_UPPER(m4_translit(`$3`'_`'$1', `-', `_'))')dnl
|
||||
define(`__FILE__',$1)dnl
|
||||
define(`__DEPRECATION_GUARD__',`_UPPER($3)'`_DISABLE_DEPRECATED')dnl
|
||||
_SECTION(SECTION_HEADER1)
|
||||
')
|
||||
|
||||
dnl Start deprecation of individual methods:
|
||||
define(`_DEPRECATE_IFDEF_START',`dnl
|
||||
#ifndef __DEPRECATION_GUARD__'
|
||||
)
|
||||
|
||||
dnl end deprecation of individual methods:
|
||||
define(`_DEPRECATE_IFDEF_END',`dnl
|
||||
#endif // __DEPRECATION_GUARD__'
|
||||
)
|
||||
|
||||
dnl begin optional deprecation of whole class
|
||||
define(`_DEPRECATE_IFDEF_CLASS_START',`dnl
|
||||
ifdef(`__BOOL_DEPRECATED__',`dnl
|
||||
_DEPRECATE_IFDEF_START',`dnl
|
||||
')
|
||||
')
|
||||
|
||||
dnl end optional deprecation of whole class
|
||||
define(`_DEPRECATE_IFDEF_CLASS_END',`dnl
|
||||
ifdef(`__BOOL_DEPRECATED__',`dnl
|
||||
_DEPRECATE_IFDEF_END',`dnl
|
||||
')
|
||||
')
|
||||
|
||||
dnl This does all the work of assembling the final output
|
||||
dnl
|
||||
dnl _END()
|
||||
dnl
|
||||
define(`_END',`dnl
|
||||
m4_divert(0)dnl
|
||||
#S 0 dnl Marks the beginning of the header file.
|
||||
|
||||
// -*- c++ -*-
|
||||
// Generated by gtkmmproc -- DO NOT MODIFY!
|
||||
#ifndef __HEADER_GUARD__`'_H
|
||||
#define __HEADER_GUARD__`'_H
|
||||
|
||||
_IMPORT(SECTION_HEADER_FIRST)
|
||||
|
||||
_DEPRECATE_IFDEF_CLASS_START
|
||||
|
||||
m4_ifelse(__MODULE__,glibmm,,`dnl else
|
||||
#include <glibmm.h>
|
||||
')dnl
|
||||
_IMPORT(SECTION_HEADER1)
|
||||
_IMPORT(SECTION_HEADER2)
|
||||
_IMPORT(SECTION_HEADER3)
|
||||
|
||||
_DEPRECATE_IFDEF_CLASS_END
|
||||
|
||||
#endif /* __HEADER_GUARD__`'_H */
|
||||
|
||||
#S 1 dnl Marks the beginning of the private header file.
|
||||
|
||||
// -*- c++ -*-
|
||||
// Generated by gtkmmproc -- DO NOT MODIFY!
|
||||
#ifndef __HEADER_GUARD__`'_P_H
|
||||
#define __HEADER_GUARD__`'_P_H
|
||||
_DEPRECATE_IFDEF_CLASS_START
|
||||
_IMPORT(SECTION_PHEADER)
|
||||
_DEPRECATE_IFDEF_CLASS_END
|
||||
#endif /* __HEADER_GUARD__`'_P_H */
|
||||
|
||||
#S 2 dnl Marks the beginning of the source file.
|
||||
|
||||
// Generated by gtkmmproc -- DO NOT MODIFY!
|
||||
|
||||
_DEPRECATE_IFDEF_CLASS_START
|
||||
|
||||
#include <__MODULE__/__FILE__.h>
|
||||
#include <__MODULE__/private/__FILE__`'_p.h>
|
||||
|
||||
_IMPORT(SECTION_CC_INCLUDES)
|
||||
_IMPORT(SECTION_SRC_CUSTOM)
|
||||
|
||||
namespace
|
||||
{
|
||||
_IMPORT(SECTION_ANONYMOUS_NAMESPACE)
|
||||
} // anonymous namespace
|
||||
|
||||
_IMPORT(SECTION_SRC_GENERATED)
|
||||
_DEPRECATE_IFDEF_CLASS_END
|
||||
|
||||
m4_divert(-1)
|
||||
m4_undivert()
|
||||
')
|
||||
|
||||
define(`_NAMESPACE',`dnl
|
||||
_PUSH()
|
||||
m4_ifdef(`__NAMESPACE__',`dnl
|
||||
pushdef(`__NAMESPACE__',__NAMESPACE__`::'$1)
|
||||
pushdef(`__NAMESPACE_BEGIN__',__NAMESPACE_BEGIN__`
|
||||
|
||||
namespace '$1`
|
||||
{')
|
||||
pushdef(`__NAMESPACE_END__',`} // namespace '$1`
|
||||
|
||||
'__NAMESPACE_END__)
|
||||
',`dnl else
|
||||
pushdef(`__NAMESPACE__',$1)
|
||||
pushdef(`__NAMESPACE_BEGIN__',`namespace '$1`
|
||||
{')
|
||||
pushdef(`__NAMESPACE_END__',`} // namespace '$1)
|
||||
')dnl endif __NAMESPACE__
|
||||
_POP()
|
||||
')dnl enddef _NAMESPACE
|
||||
|
||||
define(`_END_NAMESPACE',`dnl
|
||||
_PUSH()
|
||||
popdef(`__NAMESPACE__')
|
||||
popdef(`__NAMESPACE_BEGIN__')
|
||||
popdef(`__NAMESPACE_END__')
|
||||
_POP()
|
||||
')dnl enddef _END_NAMESPACE
|
||||
|
||||
define(`_INCLUDE_FLAG',`__FLAG_$1_INCLUDE_`'_UPPER(m4_translit(`$2',`/.-',`___'))__')dnl
|
||||
|
||||
define(`_PH_INCLUDE',`dnl
|
||||
m4_ifdef(_INCLUDE_FLAG(PH,`$*'),,`dnl else
|
||||
define(_INCLUDE_FLAG(PH,`$*'))dnl
|
||||
_PUSH(SECTION_PHEADER)
|
||||
#include <$*>
|
||||
_POP()
|
||||
')dnl endif
|
||||
')dnl
|
||||
|
||||
define(`_CC_INCLUDE',`dnl
|
||||
m4_ifdef(_INCLUDE_FLAG(CC,`$*'),,`dnl else
|
||||
define(_INCLUDE_FLAG(CC,`$*'))dnl
|
||||
_PUSH(SECTION_CC_INCLUDES)
|
||||
#include <$*>
|
||||
_POP()
|
||||
')dnl endif
|
||||
')dnl
|
||||
|
||||
define(`_PINCLUDE', defn(`_PH_INCLUDE'))
|
||||
|
||||
# Put these, for instance, around gtkmmproc macros (_WRAP_SIGNAL)
|
||||
# to make the #ifndef appear around the generated code in both the .h
|
||||
# and .cc files.
|
||||
# e.g. _GTKMMPROC_H_AND_CC(#ifndef _SUN_CC_)
|
||||
# e.g. _GTKMMPROC_H_AND_CC(#endif //_SUN_CC_)
|
||||
# _GTKMMPROC_H_AND_CC(code)
|
||||
define(`_GTKMMPROC_H_AND_CC',`dnl
|
||||
$1
|
||||
_PUSH(SECTION_CC)
|
||||
$1
|
||||
|
||||
_POP()
|
||||
')dnl
|
||||
|
||||
# Same thing as _GTKMMPROC_H_AND_CC but for signals (_WRAP_SIGNAL)
|
||||
define(`_GTKMMPROC_SIGNAL_H_AND_CC',`dnl
|
||||
$1
|
||||
_PUSH(SECTION_ANONYMOUS_NAMESPACE)
|
||||
$1
|
||||
_POP()
|
||||
|
||||
$1
|
||||
_PUSH(SECTION_H_DEFAULT_SIGNAL_HANDLERS)
|
||||
$1
|
||||
_POP()
|
||||
|
||||
$1
|
||||
_PUSH(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS)
|
||||
$1
|
||||
_POP()
|
||||
|
||||
$1
|
||||
_PUSH(SECTION_CC_DEFAULT_SIGNAL_HANDLERS)
|
||||
$1
|
||||
_POP()
|
||||
|
||||
$1
|
||||
_PUSH(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS)
|
||||
$1
|
||||
_POP()
|
||||
|
||||
$1
|
||||
_PUSH(SECTION_CC_SIGNALPROXIES)
|
||||
$1
|
||||
_POP()
|
||||
')dnl
|
||||
|
||||
m4_include(class_shared.m4)
|
||||
m4_include(class_generic.m4)
|
||||
m4_include(class_gobject.m4)
|
||||
m4_include(class_gtkobject.m4)
|
||||
m4_include(class_boxedtype.m4)
|
||||
m4_include(class_boxedtype_static.m4)
|
||||
m4_include(class_interface.m4)
|
||||
m4_include(class_opaque_copyable.m4)
|
||||
m4_include(class_opaque_refcounted.m4)
|
||||
m4_include(gerror.m4)
|
||||
m4_include(signal.m4)
|
||||
m4_include(vfunc.m4)
|
||||
m4_include(method.m4)
|
||||
m4_include(member.m4)
|
||||
m4_include(compare.m4)
|
||||
m4_include(ctor.m4)
|
||||
m4_include(property.m4)
|
||||
m4_include(enum.m4)
|
||||
|
||||
_SECTION(SECTION_HEADER1)
|
||||
|
||||
218
libs/glibmm2/tools/m4/class_boxedtype.m4
Normal file
218
libs/glibmm2/tools/m4/class_boxedtype.m4
Normal file
|
|
@ -0,0 +1,218 @@
|
|||
dnl $Id: class_boxedtype.m4 413 2007-05-14 19:28:31Z murrayc $
|
||||
|
||||
dnl
|
||||
dnl _CLASS_BOXEDTYPE(Region, GdkRegion, gdk_region_new, gdk_region_copy, gdk_region_destroy)
|
||||
dnl
|
||||
|
||||
define(`_CLASS_BOXEDTYPE',`dnl
|
||||
_PUSH()
|
||||
dnl
|
||||
dnl Define the args for later macros
|
||||
define(`__CPPNAME__',`$1')
|
||||
define(`__CNAME__',`$2')
|
||||
define(`__BOXEDTYPE_FUNC_NEW',`$3')
|
||||
define(`__BOXEDTYPE_FUNC_COPY',`$4')
|
||||
define(`__BOXEDTYPE_FUNC_FREE',`$5')
|
||||
|
||||
define(`_CUSTOM_DEFAULT_CTOR',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_CUSTOM_DEFAULT_CTOR__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
|
||||
_POP()
|
||||
_SECTION(SECTION_CLASS2)
|
||||
') dnl End of _CLASS_BOXEDTYPE.
|
||||
|
||||
dnl Some of the Gdk types are unions - e.g. GdkEvent.
|
||||
define(`_CUSTOM_STRUCT_PROTOTYPE',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_CUSTOM_STRUCT_PROTOTYPE__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl
|
||||
dnl _END_CLASS_BOXEDTYPE()
|
||||
dnl denotes the end of a class
|
||||
dnl
|
||||
define(`_END_CLASS_BOXEDTYPE',`
|
||||
_SECTION(SECTION_HEADER1)
|
||||
ifdef(`__BOOL_CUSTOM_STRUCT_PROTOTYPE__',`dnl
|
||||
',`dnl
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
extern "C" { typedef struct _`'__CNAME__ __CNAME__; }
|
||||
#endif
|
||||
')dnl
|
||||
|
||||
_SECTION(SECTION_HEADER3)
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
/** @relates __NAMESPACE__::__CPPNAME__
|
||||
* @param lhs The left-hand side
|
||||
* @param rhs The right-hand side
|
||||
*/
|
||||
inline void swap(__CPPNAME__& lhs, __CPPNAME__& rhs)
|
||||
{ lhs.swap(rhs); }
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
namespace Glib
|
||||
{
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl else
|
||||
|
||||
/** A Glib::wrap() method for this object.
|
||||
*
|
||||
* @param object The C instance.
|
||||
* @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
|
||||
* @result A C++ instance that wraps this C instance.
|
||||
*
|
||||
* @relates __NAMESPACE__::__CPPNAME__
|
||||
*/
|
||||
__NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy = false);
|
||||
')dnl endif __BOOL_NO_WRAP_FUNCTION__
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
template <>
|
||||
class Value<__NAMESPACE__::__CPPNAME__> : public Glib::Value_Boxed<__NAMESPACE__::__CPPNAME__>
|
||||
{};
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
} // namespace Glib
|
||||
|
||||
_SECTION(SECTION_SRC_GENERATED)
|
||||
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl else
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
__NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy)
|
||||
{
|
||||
return __NAMESPACE__::__CPPNAME__`'(object, take_copy);
|
||||
}
|
||||
|
||||
} // namespace Glib
|
||||
')dnl endif
|
||||
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
dnl
|
||||
dnl The implementation:
|
||||
dnl
|
||||
|
||||
// static
|
||||
GType __CPPNAME__::get_type()
|
||||
{
|
||||
return _GET_TYPE_FUNC(__CNAME__);
|
||||
}
|
||||
|
||||
ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',`dnl
|
||||
',`dnl else
|
||||
__CPPNAME__::__CPPNAME__`'()
|
||||
:
|
||||
ifelse(__BOXEDTYPE_FUNC_NEW,NONE,`dnl
|
||||
gobject_ (0) // Allows creation of invalid wrapper, e.g. for output arguments to methods.
|
||||
',`dnl else
|
||||
gobject_ (__BOXEDTYPE_FUNC_NEW`'())
|
||||
')dnl
|
||||
{}
|
||||
')dnl endif __BOOL_CUSTOM_DEFAULT_CTOR__
|
||||
|
||||
__CPPNAME__::__CPPNAME__`'(const __CPPNAME__& other)
|
||||
:
|
||||
gobject_ ((other.gobject_) ? __BOXEDTYPE_FUNC_COPY`'(other.gobject_) : 0)
|
||||
{}
|
||||
|
||||
__CPPNAME__::__CPPNAME__`'(__CNAME__* gobject, bool make_a_copy)
|
||||
:
|
||||
// For BoxedType wrappers, make_a_copy is true by default. The static
|
||||
// BoxedType wrappers must always take a copy, thus make_a_copy = true
|
||||
// ensures identical behaviour if the default argument is used.
|
||||
gobject_ ((make_a_copy && gobject) ? __BOXEDTYPE_FUNC_COPY`'(gobject) : gobject)
|
||||
{}
|
||||
|
||||
__CPPNAME__& __CPPNAME__::operator=(const __CPPNAME__`'& other)
|
||||
{
|
||||
__CPPNAME__ temp (other);
|
||||
swap(temp);
|
||||
return *this;
|
||||
}
|
||||
|
||||
__CPPNAME__::~__CPPNAME__`'()
|
||||
{
|
||||
dnl This could be a free or an unref, we do not need to know.
|
||||
if(gobject_)
|
||||
__BOXEDTYPE_FUNC_FREE`'(gobject_);
|
||||
}
|
||||
|
||||
void __CPPNAME__::swap(__CPPNAME__& other)
|
||||
{
|
||||
__CNAME__ *const temp = gobject_;
|
||||
gobject_ = other.gobject_;
|
||||
other.gobject_ = temp;
|
||||
}
|
||||
|
||||
__CNAME__* __CPPNAME__::gobj_copy() const
|
||||
{
|
||||
return __BOXEDTYPE_FUNC_COPY`'(gobject_);
|
||||
}
|
||||
|
||||
_IMPORT(SECTION_CC)
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
_POP()
|
||||
dnl
|
||||
dnl
|
||||
dnl The actual class, e.g. Pango::FontDescription, declaration:
|
||||
dnl
|
||||
_IMPORT(SECTION_CLASS1)
|
||||
public:
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
typedef __CPPNAME__ CppObjectType;
|
||||
typedef __CNAME__ BaseObjectType;
|
||||
|
||||
static GType get_type() G_GNUC_CONST;
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',`dnl
|
||||
',`dnl else
|
||||
__CPPNAME__`'();
|
||||
')dnl
|
||||
|
||||
explicit __CPPNAME__`'(__CNAME__* gobject, bool make_a_copy = true);
|
||||
|
||||
__CPPNAME__`'(const __CPPNAME__& other);
|
||||
__CPPNAME__& operator=(const __CPPNAME__& other);
|
||||
|
||||
~__CPPNAME__`'();
|
||||
|
||||
void swap(__CPPNAME__& other);
|
||||
|
||||
///Provides access to the underlying C instance.
|
||||
__CNAME__* gobj() { return gobject_; }
|
||||
|
||||
///Provides access to the underlying C instance.
|
||||
const __CNAME__* gobj() const { return gobject_; }
|
||||
|
||||
///Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs.
|
||||
__CNAME__* gobj_copy() const;
|
||||
|
||||
protected:
|
||||
__CNAME__* gobject_;
|
||||
|
||||
private:
|
||||
_IMPORT(SECTION_CLASS2)
|
||||
')
|
||||
|
||||
169
libs/glibmm2/tools/m4/class_boxedtype_static.m4
Normal file
169
libs/glibmm2/tools/m4/class_boxedtype_static.m4
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
dnl $Id: class_boxedtype_static.m4 58 2003-12-14 11:53:04Z murrayc $
|
||||
|
||||
dnl
|
||||
dnl _CLASS_BOXEDTYPE_STATIC(TreeIter, GtkTreeIter)
|
||||
dnl
|
||||
define(`_CLASS_BOXEDTYPE_STATIC',`dnl
|
||||
_PUSH()
|
||||
dnl
|
||||
dnl Define the args for later macros
|
||||
define(`__CPPNAME__',`$1')
|
||||
define(`__CNAME__',`$2')
|
||||
|
||||
define(`_CUSTOM_DEFAULT_CTOR',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_CUSTOM_DEFAULT_CTOR__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
define(`_CUSTOM_CTOR_CAST',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_CUSTOM_CTOR_CAST__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
_POP()
|
||||
_SECTION(SECTION_CLASS2)
|
||||
') dnl End of _CLASS_BOXEDTYPE_STATIC.
|
||||
|
||||
dnl TreeIterBase shouldn't have a wrap() method - we'll custom implement them for TreeIter and TreeRow:
|
||||
define(`_NO_WRAP_FUNCTION',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_NO_WRAP_FUNCTION__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl
|
||||
dnl _END_CLASS_BOXEDTYPE_STATIC()
|
||||
dnl denotes the end of a class
|
||||
dnl
|
||||
define(`_END_CLASS_BOXEDTYPE_STATIC',`
|
||||
|
||||
_SECTION(SECTION_HEADER3)
|
||||
|
||||
namespace Glib
|
||||
{
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl else
|
||||
|
||||
/** @relates __NAMESPACE__::__CPPNAME__
|
||||
* @param object The C instance
|
||||
* @result A C++ instance that wraps this C instance.
|
||||
*/
|
||||
__NAMESPACE__::__CPPNAME__& wrap(__CNAME__* object);
|
||||
|
||||
/** @relates __NAMESPACE__::__CPPNAME__
|
||||
* @param object The C instance
|
||||
* @result A C++ instance that wraps this C instance.
|
||||
*/
|
||||
const __NAMESPACE__::__CPPNAME__& wrap(const __CNAME__* object);
|
||||
')dnl endif __BOOL_NO_WRAP_FUNCTION__
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
template <>
|
||||
class Value<__NAMESPACE__::__CPPNAME__> : public Glib::Value_Boxed<__NAMESPACE__::__CPPNAME__>
|
||||
{};
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
} // namespace Glib
|
||||
|
||||
_SECTION(SECTION_SRC_GENERATED)
|
||||
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl else
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
__NAMESPACE__::__CPPNAME__& wrap(__CNAME__* object)
|
||||
{
|
||||
return *reinterpret_cast<__NAMESPACE__::__CPPNAME__*>(object);
|
||||
}
|
||||
|
||||
const __NAMESPACE__::__CPPNAME__& wrap(const __CNAME__* object)
|
||||
{
|
||||
return *reinterpret_cast<const __NAMESPACE__::__CPPNAME__*>(object);
|
||||
}
|
||||
|
||||
} // namespace Glib
|
||||
')dnl endif __BOOL_NO_WRAP_FUNCTION__
|
||||
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
dnl
|
||||
dnl The implementation:
|
||||
dnl
|
||||
|
||||
dnl // static
|
||||
dnl const __CNAME__ __CPPNAME__::gobject_initializer_ = { 0, };
|
||||
dnl
|
||||
// static
|
||||
GType __CPPNAME__::get_type()
|
||||
{
|
||||
return _GET_TYPE_FUNC(__CNAME__);
|
||||
}
|
||||
|
||||
ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',,`dnl else
|
||||
__CPPNAME__::__CPPNAME__`'()
|
||||
{
|
||||
GLIBMM_INITIALIZE_STRUCT`'(gobject_, __CNAME__);
|
||||
}
|
||||
')dnl
|
||||
|
||||
ifdef(`__BOOL_CUSTOM_CTOR_CAST__',,`dnl else
|
||||
__CPPNAME__::__CPPNAME__`'(const __CNAME__* gobject)
|
||||
{
|
||||
if(gobject)
|
||||
gobject_ = *gobject;
|
||||
else
|
||||
GLIBMM_INITIALIZE_STRUCT`'(gobject_, __CNAME__);
|
||||
}
|
||||
')dnl
|
||||
|
||||
_IMPORT(SECTION_CC)
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
_POP()
|
||||
dnl
|
||||
dnl
|
||||
dnl The actual class, e.g. Gtk::TreeIter, declaration:
|
||||
dnl
|
||||
_IMPORT(SECTION_CLASS1)
|
||||
public:
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
typedef __CPPNAME__ CppObjectType;
|
||||
typedef __CNAME__ BaseObjectType;
|
||||
|
||||
static GType get_type() G_GNUC_CONST;
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',,`dnl else
|
||||
__CPPNAME__`'();
|
||||
')dnl
|
||||
|
||||
ifdef(`__BOOL_CUSTOM_CTOR_CAST__',,`dnl else
|
||||
explicit __CPPNAME__`'(const __CNAME__* gobject); // always takes a copy
|
||||
')dnl
|
||||
|
||||
///Provides access to the underlying C instance.
|
||||
__CNAME__* gobj() { return &gobject_; }
|
||||
|
||||
///Provides access to the underlying C instance.
|
||||
const __CNAME__* gobj() const { return &gobject_; }
|
||||
|
||||
protected:
|
||||
__CNAME__ gobject_;
|
||||
dnl static const __CNAME__ gobject_initializer_;
|
||||
|
||||
private:
|
||||
_IMPORT(SECTION_CLASS2)
|
||||
')
|
||||
|
||||
54
libs/glibmm2/tools/m4/class_generic.m4
Normal file
54
libs/glibmm2/tools/m4/class_generic.m4
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
dnl $Id: class_generic.m4 2 2003-01-07 16:59:16Z murrayc $
|
||||
|
||||
dnl
|
||||
dnl _CLASS_GENERIC(LayoutIter, PangoLayoutIter)
|
||||
dnl
|
||||
|
||||
define(`_CLASS_GENERIC',`dnl
|
||||
_PUSH()
|
||||
dnl
|
||||
dnl Define the args for later macros
|
||||
define(`__CPPNAME__',`$1')
|
||||
define(`__CNAME__',`$2')
|
||||
|
||||
_POP()
|
||||
_SECTION(SECTION_CLASS2)
|
||||
') dnl End of _CLASS_GENERIC.
|
||||
|
||||
|
||||
dnl
|
||||
dnl _END_CLASS_GENERIC()
|
||||
dnl denotes the end of a class
|
||||
dnl
|
||||
define(`_END_CLASS_GENERIC',`
|
||||
|
||||
_SECTION(SECTION_SRC_GENERATED)
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
dnl The implementation:
|
||||
|
||||
_IMPORT(SECTION_CC)
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
_POP()
|
||||
dnl
|
||||
dnl
|
||||
dnl The actual class, e.g. Pango::FontDescription, declaration:
|
||||
dnl
|
||||
_IMPORT(SECTION_CLASS1)
|
||||
public:
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
typedef __CPPNAME__ CppObjectType;
|
||||
typedef __CNAME__ BaseObjectType;
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
private:
|
||||
_IMPORT(SECTION_CLASS2)
|
||||
')
|
||||
|
||||
243
libs/glibmm2/tools/m4/class_gobject.m4
Normal file
243
libs/glibmm2/tools/m4/class_gobject.m4
Normal file
|
|
@ -0,0 +1,243 @@
|
|||
dnl $Id: class_gobject.m4 413 2007-05-14 19:28:31Z murrayc $
|
||||
|
||||
|
||||
define(`_CLASS_GOBJECT',`dnl
|
||||
_PUSH()
|
||||
dnl
|
||||
dnl Define the args for later macros
|
||||
define(`__CPPNAME__',`$1')
|
||||
define(`__CNAME__',`$2')
|
||||
define(`__CCAST__',`$3')
|
||||
define(`__BASE__',_LOWER(__CPPNAME__))
|
||||
define(`__CPPPARENT__',`$4')
|
||||
define(`__CPARENT__',`$5')
|
||||
define(`__PCAST__',`($5*)')
|
||||
|
||||
dnl Some C types, e.g. GdkWindow or GdkPixmap, are a typedef to their base type,
|
||||
dnl rather than the real instance type. That is really ugly, yes. We get around
|
||||
dnl the problem by supporting optional __REAL_* arguments to this macro.
|
||||
define(`__REAL_CNAME__',ifelse(`$6',,__CNAME__,`$6'))
|
||||
define(`__REAL_CPARENT__',ifelse(`$7',,__CPARENT__,`$7'))
|
||||
|
||||
|
||||
_POP()
|
||||
_SECTION(SECTION_CLASS2)
|
||||
') dnl end of _CLASS_GOBJECT
|
||||
|
||||
dnl Widget and Object, and some others, have custom-written destructor implementations:
|
||||
define(`_CUSTOM_DTOR',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_CUSTOM_DTOR__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl Gdk::Pixmap_Class::wrap_new() needs a custom implementation, in order
|
||||
dnl to create a Gdk::Bitmap object if appropriate. See comments there.
|
||||
define(`_CUSTOM_WRAP_NEW',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_CUSTOM_WRAP_NEW__',`1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl Gnome::Canvas::CanvasAA::CanvasAA() needs access to the
|
||||
dnl normally-private canvas_class_ member variable. See comments there.
|
||||
define(`_GMMPROC_PROTECTED_GCLASS',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_PROTECTED_GCLASS__',`1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl Some of the Gdk types are actually direct typedefs of their base type.
|
||||
dnl This means that 2 wrap functions would have the same argument.
|
||||
dnl define(`_NO_WRAP_FUNCTION',`dnl
|
||||
dnl _PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
dnl define(`__BOOL_NO_WRAP_FUNCTION__',`$1')
|
||||
dnl _POP()
|
||||
dnl ')
|
||||
|
||||
dnl
|
||||
dnl _CREATE_METHOD(args_type_and_name_hpp, args_type_and_name_cpp,args_name_only);
|
||||
dnl
|
||||
define(`_CREATE_METHOD',`
|
||||
static Glib::RefPtr<`'__CPPNAME__`'> create(`'$1`');
|
||||
_PUSH(SECTION_CC)
|
||||
Glib::RefPtr<`'__CPPNAME__`'> __CPPNAME__`'::create(`'$2`')
|
||||
{
|
||||
return Glib::RefPtr<`'__CPPNAME__`'>( new __CPPNAME__`'(`'$3`') );
|
||||
}
|
||||
_POP()
|
||||
')
|
||||
|
||||
|
||||
dnl
|
||||
dnl _END_CLASS_GOBJECT()
|
||||
dnl denotes the end of a class
|
||||
dnl
|
||||
define(`_END_CLASS_GOBJECT',`
|
||||
_SECTION(SECTION_HEADER1)
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl
|
||||
_STRUCT_PROTOTYPE()
|
||||
')dnl
|
||||
|
||||
__NAMESPACE_BEGIN__ class __CPPNAME__`'_Class; __NAMESPACE_END__
|
||||
_SECTION(SECTION_HEADER3)
|
||||
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl
|
||||
namespace Glib
|
||||
{
|
||||
/** A Glib::wrap() method for this object.
|
||||
*
|
||||
* @param object The C instance.
|
||||
* @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
|
||||
* @result A C++ instance that wraps this C instance.
|
||||
*
|
||||
* @relates __NAMESPACE__::__CPPNAME__
|
||||
*/
|
||||
Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__REAL_CNAME__`'* object, bool take_copy = false);
|
||||
}
|
||||
')dnl
|
||||
|
||||
|
||||
dnl
|
||||
dnl
|
||||
_SECTION(SECTION_PHEADER)
|
||||
|
||||
#include <glibmm/class.h>
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
_PH_CLASS_DECLARATION()
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
_SECTION(SECTION_SRC_GENERATED)
|
||||
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl else
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__REAL_CNAME__`'* object, bool take_copy)
|
||||
{
|
||||
return Glib::RefPtr<__NAMESPACE__::__CPPNAME__>( dynamic_cast<__NAMESPACE__::__CPPNAME__*> (Glib::wrap_auto ((GObject*)(object), take_copy)) );
|
||||
//We use dynamic_cast<> in case of multiple inheritance.
|
||||
}
|
||||
|
||||
} /* namespace Glib */
|
||||
')dnl endif
|
||||
|
||||
|
||||
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
|
||||
/* The *_Class implementation: */
|
||||
|
||||
_PCC_CLASS_IMPLEMENTATION()
|
||||
|
||||
m4_ifdef(`__BOOL_CUSTOM_WRAP_NEW__',,`dnl else
|
||||
Glib::ObjectBase* __CPPNAME__`'_Class::wrap_new(GObject* object)
|
||||
{
|
||||
return new __CPPNAME__`'((__CNAME__*)`'object);
|
||||
}
|
||||
|
||||
')dnl endif
|
||||
|
||||
/* The implementation: */
|
||||
|
||||
__CNAME__* __CPPNAME__::gobj_copy()
|
||||
{
|
||||
reference();
|
||||
return gobj();
|
||||
}
|
||||
|
||||
__CPPNAME__::__CPPNAME__`'(const Glib::ConstructParams& construct_params)
|
||||
:
|
||||
__CPPPARENT__`'(construct_params)
|
||||
{}
|
||||
|
||||
__CPPNAME__::__CPPNAME__`'(__CNAME__* castitem)
|
||||
:
|
||||
__CPPPARENT__`'(__PCAST__`'(castitem))
|
||||
{}
|
||||
|
||||
ifdef(`__BOOL_CUSTOM_DTOR__',`dnl
|
||||
',`dnl
|
||||
__CPPNAME__::~__CPPNAME__`'()
|
||||
{}
|
||||
|
||||
')dnl
|
||||
|
||||
|
||||
_CC_CLASS_IMPLEMENTATION()
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
_POP()
|
||||
dnl
|
||||
dnl The actual class, e.g. Gtk::Widget, declaration:
|
||||
dnl _IMPORT(SECTION_H_SIGNALPROXIES_CUSTOM)
|
||||
|
||||
_IMPORT(SECTION_CLASS1)
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
|
||||
public:
|
||||
typedef __CPPNAME__ CppObjectType;
|
||||
typedef __CPPNAME__`'_Class CppClassType;
|
||||
typedef __CNAME__ BaseObjectType;
|
||||
typedef __REAL_CNAME__`'Class BaseClassType;
|
||||
|
||||
m4_ifdef(`__BOOL_PROTECTED_GCLASS__',
|
||||
`protected:',`dnl else
|
||||
private:')dnl endif
|
||||
friend class __CPPNAME__`'_Class;
|
||||
static CppClassType `'__BASE__`'_class_;
|
||||
|
||||
private:
|
||||
// noncopyable
|
||||
__CPPNAME__`'(const __CPPNAME__&);
|
||||
__CPPNAME__& operator=(const __CPPNAME__&);
|
||||
|
||||
protected:
|
||||
explicit __CPPNAME__`'(const Glib::ConstructParams& construct_params);
|
||||
explicit __CPPNAME__`'(__CNAME__* castitem);
|
||||
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
public:
|
||||
virtual ~__CPPNAME__`'();
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
static GType get_type() G_GNUC_CONST;
|
||||
static GType get_base_type() G_GNUC_CONST;
|
||||
#endif
|
||||
|
||||
///Provides access to the underlying C GObject.
|
||||
__CNAME__* gobj() { return reinterpret_cast<__CNAME__*>(gobject_); }
|
||||
|
||||
///Provides access to the underlying C GObject.
|
||||
const __CNAME__* gobj() const { return reinterpret_cast<__CNAME__*>(gobject_); }
|
||||
|
||||
///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
|
||||
__CNAME__* gobj_copy();
|
||||
|
||||
private:
|
||||
_IMPORT(SECTION_CLASS2)
|
||||
|
||||
public:
|
||||
_H_VFUNCS_AND_SIGNALS()
|
||||
|
||||
')
|
||||
|
||||
228
libs/glibmm2/tools/m4/class_gtkobject.m4
Normal file
228
libs/glibmm2/tools/m4/class_gtkobject.m4
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
dnl $Id: class_gtkobject.m4 413 2007-05-14 19:28:31Z murrayc $
|
||||
|
||||
|
||||
|
||||
define(`_CLASS_GTKOBJECT',`dnl
|
||||
_PUSH()
|
||||
dnl
|
||||
dnl Define the args for later macros
|
||||
define(`__CPPNAME__',`$1')
|
||||
define(`__CNAME__',`$2')
|
||||
define(`__CCAST__',`$3')
|
||||
define(`__BASE__',_LOWER(__CPPNAME__))
|
||||
define(`__CPPPARENT__',`$4')
|
||||
define(`__CPARENT__',`$5')
|
||||
define(`__PCAST__',`($5*)')
|
||||
|
||||
dnl Some C types, e.g. GdkWindow or GdkPixmap, are a typedef to their base type,
|
||||
dnl rather than the real instance type. That is really ugly, yes. We get around
|
||||
dnl the problem by supporting optional __REAL_* arguments to this macro.
|
||||
define(`__REAL_CNAME__',ifelse(`$6',,__CNAME__,`$6'))
|
||||
define(`__REAL_CPARENT__',ifelse(`$7',,__CPARENT__,`$7'))
|
||||
|
||||
|
||||
dnl
|
||||
dnl ----------------------- Constructors -------------------------
|
||||
dnl
|
||||
|
||||
|
||||
_POP()
|
||||
_SECTION(SECTION_CLASS2)
|
||||
')dnl end of _CLASS_GTKOBJECT
|
||||
|
||||
dnl Widget and Object, and some others, have custom-written destructor implementations:
|
||||
define(`_CUSTOM_DTOR',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_CUSTOM_DTOR__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl Gtk::Object has a custom-written cast implementation:
|
||||
define(`_CUSTOM_CTOR_CAST',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_CUSTOM_CTOR_CAST__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl Top-level windows can not be manage()ed, so we should not use manage() in wrap_new().
|
||||
define(`_UNMANAGEABLE',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_UNMANAGEABLE__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl Optionally ifdef-out the whole .h and .cc files:
|
||||
define(`_IS_DEPRECATED',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_DEPRECATED__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl Gnome::Canvas::CanvasAA::CanvasAA() needs access to the
|
||||
dnl normally-private canvas_class_ member variable. See comments there.
|
||||
define(`_GMMPROC_PROTECTED_GCLASS',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_PROTECTED_GCLASS__',`1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
|
||||
dnl
|
||||
dnl _END_CLASS_GTKOBJECT()
|
||||
dnl denotes the end of a class
|
||||
dnl
|
||||
define(`_END_CLASS_GTKOBJECT',`
|
||||
|
||||
_SECTION(SECTION_HEADER1)
|
||||
_STRUCT_PROTOTYPE()
|
||||
|
||||
__NAMESPACE_BEGIN__ class __CPPNAME__`'_Class; __NAMESPACE_END__
|
||||
_SECTION(SECTION_HEADER3)
|
||||
|
||||
namespace Glib
|
||||
{
|
||||
/** A Glib::wrap() method for this object.
|
||||
*
|
||||
* @param object The C instance.
|
||||
* @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
|
||||
* @result A C++ instance that wraps this C instance.
|
||||
*
|
||||
* @relates __NAMESPACE__::__CPPNAME__
|
||||
*/
|
||||
__NAMESPACE__::__CPPNAME__`'* wrap(__CNAME__`'* object, bool take_copy = false);
|
||||
} //namespace Glib
|
||||
|
||||
dnl
|
||||
dnl
|
||||
_SECTION(SECTION_PHEADER)
|
||||
|
||||
#include <glibmm/class.h>
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
_PH_CLASS_DECLARATION()
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
_SECTION(SECTION_SRC_GENERATED)
|
||||
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
__NAMESPACE__::__CPPNAME__`'* wrap(__CNAME__`'* object, bool take_copy)
|
||||
{
|
||||
return dynamic_cast<__NAMESPACE__::__CPPNAME__ *> (Glib::wrap_auto ((GObject*)(object), take_copy));
|
||||
}
|
||||
|
||||
} /* namespace Glib */
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
|
||||
/* The *_Class implementation: */
|
||||
|
||||
_PCC_CLASS_IMPLEMENTATION()
|
||||
|
||||
Glib::ObjectBase* __CPPNAME__`'_Class::wrap_new(GObject* o)
|
||||
{
|
||||
ifdef(`__BOOL_UNMANAGEABLE__',`dnl
|
||||
return new __CPPNAME__`'((__CNAME__*)`'(o)); //top-level windows can not be manage()ed.
|
||||
',`dnl
|
||||
return manage(new __CPPNAME__`'((__CNAME__*)`'(o)));
|
||||
')
|
||||
}
|
||||
|
||||
|
||||
/* The implementation: */
|
||||
|
||||
ifdef(`__BOOL_CUSTOM_CTOR_CAST__',`dnl necessary for Gtk::Object implementation
|
||||
',`dnl
|
||||
__CPPNAME__::__CPPNAME__`'(const Glib::ConstructParams& construct_params)
|
||||
:
|
||||
__CPPPARENT__`'(construct_params)
|
||||
{
|
||||
_IMPORT(SECTION_CC_INITIALIZE_CLASS_EXTRA) dnl Does not seem to work - custom implement it instead.
|
||||
}
|
||||
|
||||
__CPPNAME__::__CPPNAME__`'(__CNAME__* castitem)
|
||||
:
|
||||
__CPPPARENT__`'(__PCAST__`'(castitem))
|
||||
{
|
||||
_IMPORT(SECTION_CC_INITIALIZE_CLASS_EXTRA) dnl Does not seem to work - custom implement it instead.
|
||||
}
|
||||
|
||||
')dnl
|
||||
ifdef(`__BOOL_CUSTOM_DTOR__',`dnl
|
||||
',`dnl
|
||||
__CPPNAME__::~__CPPNAME__`'()
|
||||
{
|
||||
destroy_();
|
||||
}
|
||||
|
||||
')dnl
|
||||
_CC_CLASS_IMPLEMENTATION()
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
_POP()
|
||||
dnl The actual class, e.g. Gtk::Widget, declaration:
|
||||
dnl _IMPORT(SECTION_H_SIGNALPROXIES_CUSTOM)
|
||||
|
||||
_IMPORT(SECTION_CLASS1)
|
||||
public:
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
typedef __CPPNAME__ CppObjectType;
|
||||
typedef __CPPNAME__`'_Class CppClassType;
|
||||
typedef __CNAME__ BaseObjectType;
|
||||
typedef __REAL_CNAME__`'Class BaseClassType;
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
virtual ~__CPPNAME__`'();
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
|
||||
m4_ifdef(`__BOOL_PROTECTED_GCLASS__',
|
||||
`protected:',`dnl else
|
||||
private:')dnl endif
|
||||
|
||||
friend class __CPPNAME__`'_Class;
|
||||
static CppClassType `'__BASE__`'_class_;
|
||||
|
||||
// noncopyable
|
||||
__CPPNAME__`'(const __CPPNAME__&);
|
||||
__CPPNAME__& operator=(const __CPPNAME__&);
|
||||
|
||||
protected:
|
||||
explicit __CPPNAME__`'(const Glib::ConstructParams& construct_params);
|
||||
explicit __CPPNAME__`'(__CNAME__* castitem);
|
||||
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
public:
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
static GType get_type() G_GNUC_CONST;
|
||||
static GType get_base_type() G_GNUC_CONST;
|
||||
#endif
|
||||
|
||||
///Provides access to the underlying C GtkObject.
|
||||
__CNAME__* gobj() { return reinterpret_cast<__CNAME__*>(gobject_); }
|
||||
|
||||
///Provides access to the underlying C GtkObject.
|
||||
const __CNAME__* gobj() const { return reinterpret_cast<__CNAME__*>(gobject_); }
|
||||
|
||||
_H_VFUNCS_AND_SIGNALS()
|
||||
|
||||
private:
|
||||
_IMPORT(SECTION_CLASS2)
|
||||
|
||||
')
|
||||
|
||||
273
libs/glibmm2/tools/m4/class_interface.m4
Normal file
273
libs/glibmm2/tools/m4/class_interface.m4
Normal file
|
|
@ -0,0 +1,273 @@
|
|||
dnl $Id: class_interface.m4 446 2007-09-26 15:10:44Z murrayc $
|
||||
|
||||
|
||||
define(`_CLASS_INTERFACE',`dnl
|
||||
_PUSH()
|
||||
dnl
|
||||
dnl Define the args for later macros
|
||||
define(`__CPPNAME__',`$1')
|
||||
define(`__CNAME__',`$2')
|
||||
define(`__CCAST__',`$3')
|
||||
define(`__CCLASS__',`$4') dnl SomethingIface or SomethingClass, both suffixes are used.
|
||||
define(`__BASE__',_LOWER(__CPPNAME__))
|
||||
define(`__CPPPARENT__',`Glib::Interface')
|
||||
dnl define(`__CPARENT__',`GObject')
|
||||
define(`__PCAST__',`(GObject*)')
|
||||
define(`__BOOL_IS_INTERFACE__',`1')
|
||||
|
||||
|
||||
_POP()
|
||||
_SECTION(SECTION_CLASS2)
|
||||
') dnl end of _CLASS_INTERFACE
|
||||
|
||||
|
||||
dnl Some of the Gdk types are actually direct typedefs of their base type.
|
||||
dnl This means that 2 wrap functions would have the same argument.
|
||||
dnl define(`_NO_WRAP_FUNCTION',`dnl
|
||||
dnl _PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
dnl define(`__BOOL_NO_WRAP_FUNCTION__',`$1')
|
||||
dnl _POP()
|
||||
dnl ')
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
define(`_PH_CLASS_DECLARATION_INTERFACE',`dnl
|
||||
class __CPPNAME__`'_Class : public Glib::Interface_Class
|
||||
{
|
||||
public:
|
||||
typedef __CPPNAME__ CppObjectType;
|
||||
typedef __CNAME__ BaseObjectType;
|
||||
typedef __CCLASS__ BaseClassType;
|
||||
typedef __CPPPARENT__`'_Class CppClassParent;
|
||||
|
||||
friend class __CPPNAME__;
|
||||
|
||||
const Glib::Interface_Class& init();
|
||||
|
||||
static void iface_init_function(void* g_iface, void* iface_data);
|
||||
|
||||
static Glib::ObjectBase* wrap_new(GObject*);
|
||||
|
||||
protected:
|
||||
|
||||
#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
//Callbacks (default signal handlers):
|
||||
//These will call the *_impl member methods, which will then call the existing default signal callbacks, if any.
|
||||
//You could prevent the original default signal handlers being called by overriding the *_impl method.
|
||||
_IMPORT(SECTION_PH_DEFAULT_SIGNAL_HANDLERS)
|
||||
#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
|
||||
//Callbacks (virtual functions):
|
||||
#ifdef GLIBMM_VFUNCS_ENABLED
|
||||
_IMPORT(SECTION_PH_VFUNCS)
|
||||
#endif //GLIBMM_VFUNCS_ENABLED
|
||||
};
|
||||
')
|
||||
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
define(`_PCC_CLASS_IMPLEMENTATION_INTERFACE',`dnl
|
||||
const Glib::Interface_Class& __CPPNAME__`'_Class::init()
|
||||
{
|
||||
if(!gtype_) // create the GType if necessary
|
||||
{
|
||||
// Glib::Interface_Class has to know the interface init function
|
||||
// in order to add interfaces to implementing types.
|
||||
class_init_func_ = &__CPPNAME__`'_Class::iface_init_function;
|
||||
|
||||
// We can not derive from another interface, and it is not necessary anyway.
|
||||
gtype_ = _LOWER(__CCAST__)_get_type();
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void __CPPNAME__`'_Class::iface_init_function(void* g_iface, void*)
|
||||
{
|
||||
BaseClassType *const klass = static_cast<BaseClassType*>(g_iface);
|
||||
|
||||
//This is just to avoid an "unused variable" warning when there are no vfuncs or signal handlers to connect.
|
||||
//This is a temporary fix until I find out why I can not seem to derive a GtkFileChooser interface. murrayc
|
||||
g_assert(klass != 0);
|
||||
|
||||
#ifdef GLIBMM_VFUNCS_ENABLED
|
||||
_IMPORT(SECTION_PCC_CLASS_INIT_VFUNCS)
|
||||
#endif //GLIBMM_VFUNCS_ENABLED
|
||||
|
||||
#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
_IMPORT(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS)
|
||||
#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
}
|
||||
|
||||
#ifdef GLIBMM_VFUNCS_ENABLED
|
||||
_IMPORT(SECTION_PCC_VFUNCS)
|
||||
#endif //GLIBMM_VFUNCS_ENABLED
|
||||
|
||||
#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
_IMPORT(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS)
|
||||
#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
')
|
||||
|
||||
|
||||
dnl
|
||||
dnl _END_CLASS_INTERFACE()
|
||||
dnl denotes the end of a class
|
||||
dnl
|
||||
define(`_END_CLASS_INTERFACE',`
|
||||
_SECTION(SECTION_HEADER1)
|
||||
_STRUCT_PROTOTYPE()
|
||||
|
||||
__NAMESPACE_BEGIN__ class __CPPNAME__`'_Class; __NAMESPACE_END__
|
||||
_SECTION(SECTION_HEADER3)
|
||||
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl
|
||||
namespace Glib
|
||||
{
|
||||
/** A Glib::wrap() method for this object.
|
||||
*
|
||||
* @param object The C instance.
|
||||
* @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
|
||||
* @result A C++ instance that wraps this C instance.
|
||||
*
|
||||
* @relates __NAMESPACE__::__CPPNAME__
|
||||
*/
|
||||
Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__`'* object, bool take_copy = false);
|
||||
|
||||
} // namespace Glib
|
||||
|
||||
')dnl
|
||||
dnl
|
||||
dnl
|
||||
_SECTION(SECTION_PHEADER)
|
||||
|
||||
#include <glibmm/private/interface_p.h>
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
_PH_CLASS_DECLARATION_INTERFACE()
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
_SECTION(SECTION_SRC_GENERATED)
|
||||
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl else
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__`'* object, bool take_copy)
|
||||
{
|
||||
return Glib::RefPtr<__NAMESPACE__::__CPPNAME__>( dynamic_cast<__NAMESPACE__::__CPPNAME__*> (Glib::wrap_auto_interface<__NAMESPACE__::__CPPNAME__> ((GObject*)(object), take_copy)) );
|
||||
//We use dynamic_cast<> in case of multiple inheritance.
|
||||
}
|
||||
|
||||
} // namespace Glib
|
||||
')dnl endif
|
||||
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
|
||||
/* The *_Class implementation: */
|
||||
|
||||
_PCC_CLASS_IMPLEMENTATION_INTERFACE()
|
||||
|
||||
Glib::ObjectBase* __CPPNAME__`'_Class::wrap_new(GObject* object)
|
||||
{
|
||||
return new __CPPNAME__`'((__CNAME__*)`'(object));
|
||||
}
|
||||
|
||||
|
||||
/* The implementation: */
|
||||
|
||||
__CPPNAME__::__CPPNAME__`'()
|
||||
:
|
||||
Glib::Interface(__BASE__`'_class_.init())
|
||||
{}
|
||||
|
||||
__CPPNAME__::__CPPNAME__`'(__CNAME__* castitem)
|
||||
:
|
||||
__CPPPARENT__`'(__PCAST__`'(castitem))
|
||||
{}
|
||||
|
||||
__CPPNAME__::~__CPPNAME__`'()
|
||||
{}
|
||||
|
||||
// static
|
||||
void __CPPNAME__`'::add_interface(GType gtype_implementer)
|
||||
{
|
||||
__BASE__`'_class_.init().add_interface(gtype_implementer);
|
||||
}
|
||||
|
||||
_CC_CLASS_IMPLEMENTATION()
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
_POP()
|
||||
dnl
|
||||
dnl The actual class, e.g. Gtk::Widget, declaration:
|
||||
dnl _IMPORT(SECTION_H_SIGNALPROXIES_CUSTOM)
|
||||
|
||||
_IMPORT(SECTION_CLASS1)
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
|
||||
public:
|
||||
typedef __CPPNAME__ CppObjectType;
|
||||
typedef __CPPNAME__`'_Class CppClassType;
|
||||
typedef __CNAME__ BaseObjectType;
|
||||
typedef __CCLASS__ BaseClassType;
|
||||
|
||||
private:
|
||||
friend class __CPPNAME__`'_Class;
|
||||
static CppClassType `'__BASE__`'_class_;
|
||||
|
||||
// noncopyable
|
||||
__CPPNAME__`'(const __CPPNAME__&);
|
||||
__CPPNAME__& operator=(const __CPPNAME__&);
|
||||
|
||||
protected:
|
||||
__CPPNAME__`'(); // you must derive from this class
|
||||
|
||||
public:
|
||||
// This is public so that C++ wrapper instances can be
|
||||
// created for C instances of unwrapped types.
|
||||
// For instance, if an unexpected C type implements the C interface.
|
||||
explicit __CPPNAME__`'(__CNAME__* castitem);
|
||||
|
||||
protected:
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
public:
|
||||
virtual ~__CPPNAME__`'();
|
||||
|
||||
static void add_interface(GType gtype_implementer);
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
static GType get_type() G_GNUC_CONST;
|
||||
static GType get_base_type() G_GNUC_CONST;
|
||||
#endif
|
||||
|
||||
///Provides access to the underlying C GObject.
|
||||
__CNAME__* gobj() { return reinterpret_cast<__CNAME__*>(gobject_); }
|
||||
|
||||
///Provides access to the underlying C GObject.
|
||||
const __CNAME__* gobj() const { return reinterpret_cast<__CNAME__*>(gobject_); }
|
||||
|
||||
private:
|
||||
_IMPORT(SECTION_CLASS2)
|
||||
|
||||
public:
|
||||
_H_VFUNCS_AND_SIGNALS()
|
||||
|
||||
')
|
||||
|
||||
184
libs/glibmm2/tools/m4/class_opaque_copyable.m4
Normal file
184
libs/glibmm2/tools/m4/class_opaque_copyable.m4
Normal file
|
|
@ -0,0 +1,184 @@
|
|||
dnl $Id: class_opaque_copyable.m4 413 2007-05-14 19:28:31Z murrayc $
|
||||
|
||||
dnl
|
||||
dnl _CLASS_OPAQUE_COPYABLE(Region, GdkRegion, gdk_region_new, gdk_region_copy, gdk_region_destroy)
|
||||
dnl
|
||||
|
||||
define(`_CLASS_OPAQUE_COPYABLE',`dnl
|
||||
_PUSH()
|
||||
dnl
|
||||
dnl Define the args for later macros
|
||||
define(`__CPPNAME__',`$1')
|
||||
define(`__CNAME__',`$2')
|
||||
define(`__OPAQUE_FUNC_NEW',`$3')
|
||||
define(`__OPAQUE_FUNC_COPY',`$4')
|
||||
define(`__OPAQUE_FUNC_FREE',`$5')
|
||||
|
||||
define(`_CUSTOM_DEFAULT_CTOR',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_CUSTOM_DEFAULT_CTOR__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
_POP()
|
||||
_SECTION(SECTION_CLASS2)
|
||||
') dnl End of _CLASS_OPAQUE_COPYABLE.
|
||||
|
||||
|
||||
dnl
|
||||
dnl _END_CLASS_OPAQUE_COPYABLE()
|
||||
dnl denotes the end of a class
|
||||
dnl
|
||||
define(`_END_CLASS_OPAQUE_COPYABLE',`
|
||||
|
||||
_SECTION(SECTION_HEADER3)
|
||||
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl else
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
/** A Glib::wrap() method for this object.
|
||||
*
|
||||
* @param object The C instance.
|
||||
* @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
|
||||
* @result A C++ instance that wraps this C instance.
|
||||
*
|
||||
* @relates __NAMESPACE__::__CPPNAME__
|
||||
*/
|
||||
__NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy = false);
|
||||
|
||||
} // namespace Glib
|
||||
')dnl endif __BOOL_NO_WRAP_FUNCTION__
|
||||
|
||||
_SECTION(SECTION_SRC_GENERATED)
|
||||
|
||||
ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
|
||||
',`dnl else
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
__NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy /* = false */)
|
||||
{
|
||||
return __NAMESPACE__::__CPPNAME__`'(object, take_copy);
|
||||
}
|
||||
|
||||
} // namespace Glib
|
||||
')dnl endif
|
||||
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
dnl
|
||||
dnl The implementation:
|
||||
dnl
|
||||
|
||||
ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',`dnl
|
||||
',`dnl else
|
||||
__CPPNAME__::__CPPNAME__`'()
|
||||
:
|
||||
ifelse(__OPAQUE_FUNC_NEW,NONE,`dnl
|
||||
gobject_ (0) // Allows creation of invalid wrapper, e.g. for output arguments to methods.
|
||||
',`dnl else
|
||||
gobject_ (__OPAQUE_FUNC_NEW`'())
|
||||
')dnl
|
||||
{}
|
||||
')dnl endif __BOOL_CUSTOM_DEFAULT_CTOR__
|
||||
|
||||
__CPPNAME__::__CPPNAME__`'(const __CPPNAME__& src)
|
||||
:
|
||||
gobject_ ((src.gobject_) ? __OPAQUE_FUNC_COPY`'(src.gobject_) : 0)
|
||||
{}
|
||||
|
||||
__CPPNAME__::__CPPNAME__`'(__CNAME__* castitem, bool make_a_copy /* = false */)
|
||||
{
|
||||
if(!make_a_copy)
|
||||
{
|
||||
// It was given to us by a function which has already made a copy for us to keep.
|
||||
gobject_ = castitem;
|
||||
}
|
||||
else
|
||||
{
|
||||
// We are probably getting it via direct access to a struct,
|
||||
// so we can not just take it - we have to take a copy of it.
|
||||
if(castitem)
|
||||
gobject_ = __OPAQUE_FUNC_COPY`'(castitem);
|
||||
else
|
||||
gobject_ = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ifelse(__OPAQUE_FUNC_COPY,NONE,`dnl
|
||||
',`dnl else
|
||||
__CPPNAME__& __CPPNAME__::operator=(const __CPPNAME__`'& src)
|
||||
{
|
||||
__CNAME__ *const new_gobject = (src.gobject_) ? __OPAQUE_FUNC_COPY`'(src.gobject_) : 0;
|
||||
|
||||
if(gobject_)
|
||||
__OPAQUE_FUNC_FREE`'(gobject_);
|
||||
|
||||
gobject_ = new_gobject;
|
||||
|
||||
return *this;
|
||||
}
|
||||
')dnl
|
||||
|
||||
__CPPNAME__::~__CPPNAME__`'()
|
||||
{
|
||||
if(gobject_)
|
||||
__OPAQUE_FUNC_FREE`'(gobject_);
|
||||
}
|
||||
|
||||
__CNAME__* __CPPNAME__::gobj_copy() const
|
||||
{
|
||||
return __OPAQUE_FUNC_COPY`'(gobject_);
|
||||
}
|
||||
|
||||
_IMPORT(SECTION_CC)
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
_POP()
|
||||
dnl
|
||||
dnl
|
||||
dnl The actual class, e.g. Pango::FontDescription, declaration:
|
||||
dnl
|
||||
_IMPORT(SECTION_CLASS1)
|
||||
public:
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
typedef __CPPNAME__ CppObjectType;
|
||||
typedef __CNAME__ BaseObjectType;
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',`dnl
|
||||
',`dnl else
|
||||
__CPPNAME__`'();
|
||||
')dnl
|
||||
|
||||
// Use make_a_copy=true when getting it directly from a struct.
|
||||
explicit __CPPNAME__`'(__CNAME__* castitem, bool make_a_copy = false);
|
||||
|
||||
__CPPNAME__`'(const __CPPNAME__& src);
|
||||
__CPPNAME__& operator=(const __CPPNAME__& src);
|
||||
|
||||
~__CPPNAME__`'();
|
||||
|
||||
__CNAME__* gobj() { return gobject_; }
|
||||
const __CNAME__* gobj() const { return gobject_; }
|
||||
|
||||
///Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs.
|
||||
__CNAME__* gobj_copy() const;
|
||||
|
||||
protected:
|
||||
__CNAME__* gobject_;
|
||||
|
||||
private:
|
||||
_IMPORT(SECTION_CLASS2)
|
||||
')
|
||||
|
||||
175
libs/glibmm2/tools/m4/class_opaque_refcounted.m4
Normal file
175
libs/glibmm2/tools/m4/class_opaque_refcounted.m4
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
dnl $Id: class_opaque_refcounted.m4 413 2007-05-14 19:28:31Z murrayc $
|
||||
|
||||
dnl
|
||||
dnl _CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, pango_coverage_unref)
|
||||
dnl
|
||||
|
||||
define(`_CLASS_OPAQUE_REFCOUNTED',`dnl
|
||||
_PUSH()
|
||||
dnl
|
||||
dnl Define the args for later macros
|
||||
define(`__CPPNAME__',`$1')
|
||||
define(`__CNAME__',`$2')
|
||||
define(`__OPAQUE_FUNC_NEW',`$3')
|
||||
define(`__OPAQUE_FUNC_REF',`$4')
|
||||
define(`__OPAQUE_FUNC_UNREF',`$5')
|
||||
|
||||
_POP()
|
||||
_SECTION(SECTION_CLASS2)
|
||||
')dnl End of _CLASS_OPAQUE_REFCOUNTED.
|
||||
|
||||
|
||||
dnl
|
||||
dnl _END_CLASS_OPAQUE_REFCOUNTED()
|
||||
dnl denotes the end of a class
|
||||
dnl
|
||||
define(`_END_CLASS_OPAQUE_REFCOUNTED',`
|
||||
|
||||
_SECTION(SECTION_HEADER3)
|
||||
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
/** A Glib::wrap() method for this object.
|
||||
*
|
||||
* @param object The C instance.
|
||||
* @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
|
||||
* @result A C++ instance that wraps this C instance.
|
||||
*
|
||||
* @relates __NAMESPACE__::__CPPNAME__
|
||||
*/
|
||||
Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__* object, bool take_copy = false);
|
||||
|
||||
} // namespace Glib
|
||||
|
||||
_SECTION(SECTION_SRC_GENERATED)
|
||||
|
||||
/* Why reinterpret_cast<__CPPNAME__*>(gobject) is needed:
|
||||
*
|
||||
* A __CPPNAME__ instance is in fact always a __CNAME__ instance.
|
||||
* Unfortunately, __CNAME__ cannot be a member of __CPPNAME__,
|
||||
* because it is an opaque struct. Also, the C interface does not provide
|
||||
* any hooks to install a destroy notification handler, thus we cannot
|
||||
* wrap it dynamically either.
|
||||
*
|
||||
* The cast works because __CPPNAME__ does not have any member data, and
|
||||
* it is impossible to derive from it. This is ensured by not implementing
|
||||
* the (protected) default constructor. The ctor is protected rather than
|
||||
* private just to avoid a compile warning.
|
||||
*/
|
||||
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__* object, bool take_copy)
|
||||
{
|
||||
if(take_copy && object)
|
||||
__OPAQUE_FUNC_REF`'(object);
|
||||
|
||||
// See the comment at the top of this file, if you want to know why the cast works.
|
||||
return Glib::RefPtr<__NAMESPACE__::__CPPNAME__>(reinterpret_cast<__NAMESPACE__::__CPPNAME__*>(object));
|
||||
}
|
||||
|
||||
} // namespace Glib
|
||||
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
dnl
|
||||
dnl The implementation:
|
||||
dnl
|
||||
|
||||
ifelse(__OPAQUE_FUNC_NEW,NONE,`dnl
|
||||
',`dnl else
|
||||
// static
|
||||
Glib::RefPtr<__CPPNAME__> __CPPNAME__::create()
|
||||
{
|
||||
// See the comment at the top of this file, if you want to know why the cast works.
|
||||
return Glib::RefPtr<__CPPNAME__>(reinterpret_cast<__CPPNAME__*>(__OPAQUE_FUNC_NEW`'()));
|
||||
}
|
||||
')dnl endif __OPAQUE_FUNC_NEW
|
||||
|
||||
void __CPPNAME__::reference() const
|
||||
{
|
||||
// See the comment at the top of this file, if you want to know why the cast works.
|
||||
__OPAQUE_FUNC_REF`'(reinterpret_cast<__CNAME__*>(const_cast<__CPPNAME__*>(this)));
|
||||
}
|
||||
|
||||
void __CPPNAME__::unreference() const
|
||||
{
|
||||
// See the comment at the top of this file, if you want to know why the cast works.
|
||||
__OPAQUE_FUNC_UNREF`'(reinterpret_cast<__CNAME__*>(const_cast<__CPPNAME__*>(this)));
|
||||
}
|
||||
|
||||
__CNAME__* __CPPNAME__::gobj()
|
||||
{
|
||||
// See the comment at the top of this file, if you want to know why the cast works.
|
||||
return reinterpret_cast<__CNAME__*>(this);
|
||||
}
|
||||
|
||||
const __CNAME__* __CPPNAME__::gobj() const
|
||||
{
|
||||
// See the comment at the top of this file, if you want to know why the cast works.
|
||||
return reinterpret_cast<const __CNAME__*>(this);
|
||||
}
|
||||
|
||||
__CNAME__* __CPPNAME__::gobj_copy() const
|
||||
{
|
||||
// See the comment at the top of this file, if you want to know why the cast works.
|
||||
__CNAME__ *const gobject = reinterpret_cast<__CNAME__*>(const_cast<__CPPNAME__*>(this));
|
||||
__OPAQUE_FUNC_REF`'(gobject);
|
||||
return gobject;
|
||||
}
|
||||
|
||||
_IMPORT(SECTION_CC)
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
_POP()
|
||||
dnl
|
||||
dnl
|
||||
dnl The actual class, e.g. Pango::FontDescription, declaration:
|
||||
dnl
|
||||
_IMPORT(SECTION_CLASS1)
|
||||
public:
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
typedef __CPPNAME__ CppObjectType;
|
||||
typedef __CNAME__ BaseObjectType;
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
ifelse(__OPAQUE_FUNC_NEW,NONE,`dnl
|
||||
',`dnl else
|
||||
static Glib::RefPtr<__CPPNAME__> create();
|
||||
')dnl endif __OPAQUE_FUNC_NEW
|
||||
|
||||
// For use with Glib::RefPtr<> only.
|
||||
void reference() const;
|
||||
void unreference() const;
|
||||
|
||||
///Provides access to the underlying C instance.
|
||||
__CNAME__* gobj();
|
||||
|
||||
///Provides access to the underlying C instance.
|
||||
const __CNAME__* gobj() const;
|
||||
|
||||
///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
|
||||
__CNAME__* gobj_copy() const;
|
||||
|
||||
protected:
|
||||
// Do not derive this. __NAMESPACE__::__CPPNAME__ can neither be constructed nor deleted.
|
||||
__CPPNAME__`'();
|
||||
void operator delete(void*, size_t);
|
||||
|
||||
private:
|
||||
// noncopyable
|
||||
__CPPNAME__`'(const __CPPNAME__&);
|
||||
__CPPNAME__& operator=(const __CPPNAME__&);
|
||||
|
||||
_IMPORT(SECTION_CLASS2)
|
||||
')
|
||||
|
||||
221
libs/glibmm2/tools/m4/class_shared.m4
Normal file
221
libs/glibmm2/tools/m4/class_shared.m4
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
dnl $Id: class_shared.m4 320 2006-09-19 20:07:31Z murrayc $
|
||||
|
||||
define(`_CLASS_START',`dnl
|
||||
_PUSH(SECTION_CLASS1)
|
||||
')
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
define(`_H_VFUNCS_AND_SIGNALS',`dnl
|
||||
|
||||
public:
|
||||
//C++ methods used to invoke GTK+ virtual functions:
|
||||
#ifdef GLIBMM_VFUNCS_ENABLED
|
||||
_IMPORT(SECTION_H_VFUNCS_CPPWRAPPER)
|
||||
#endif //GLIBMM_VFUNCS_ENABLED
|
||||
|
||||
protected:
|
||||
//GTK+ Virtual Functions (override these to change behaviour):
|
||||
#ifdef GLIBMM_VFUNCS_ENABLED
|
||||
_IMPORT(SECTION_H_VFUNCS)
|
||||
#endif //GLIBMM_VFUNCS_ENABLED
|
||||
|
||||
//Default Signal Handlers::
|
||||
#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
_IMPORT(SECTION_H_DEFAULT_SIGNAL_HANDLERS)
|
||||
#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
')
|
||||
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
define(`_IMPLEMENTS_INTERFACE_CC',`dnl
|
||||
_PUSH(SECTION_CC_IMPLEMENTS_INTERFACES)
|
||||
ifelse(`$2',,,`#ifdef $2'
|
||||
)dnl
|
||||
$1`'::add_interface(get_type());
|
||||
ifelse(`$2',,,`
|
||||
#endif // $2
|
||||
')dnl
|
||||
_POP()
|
||||
')
|
||||
|
||||
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
define(`_PH_CLASS_DECLARATION',`dnl
|
||||
class __CPPNAME__`'_Class : public Glib::Class
|
||||
{
|
||||
public:
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
typedef __CPPNAME__ CppObjectType;
|
||||
typedef __REAL_CNAME__ BaseObjectType;
|
||||
ifdef(`__BOOL_NO_DERIVED_CLASS__',`dnl
|
||||
',`dnl
|
||||
typedef __REAL_CNAME__`'Class BaseClassType;
|
||||
typedef __CPPPARENT__`'_Class CppClassParent;
|
||||
typedef __REAL_CPARENT__`'Class BaseClassParent;
|
||||
')dnl
|
||||
|
||||
friend class __CPPNAME__;
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
const Glib::Class& init();
|
||||
|
||||
ifdef(`__BOOL_NO_DERIVED_CLASS__',`dnl
|
||||
',`dnl
|
||||
static void class_init_function(void* g_class, void* class_data);
|
||||
')dnl
|
||||
|
||||
static Glib::ObjectBase* wrap_new(GObject*);
|
||||
|
||||
protected:
|
||||
|
||||
#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
//Callbacks (default signal handlers):
|
||||
//These will call the *_impl member methods, which will then call the existing default signal callbacks, if any.
|
||||
//You could prevent the original default signal handlers being called by overriding the *_impl method.
|
||||
_IMPORT(SECTION_PH_DEFAULT_SIGNAL_HANDLERS)
|
||||
#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
|
||||
//Callbacks (virtual functions):
|
||||
#ifdef GLIBMM_VFUNCS_ENABLED
|
||||
_IMPORT(SECTION_PH_VFUNCS)
|
||||
#endif //GLIBMM_VFUNCS_ENABLED
|
||||
};
|
||||
')
|
||||
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
define(`_PCC_CLASS_IMPLEMENTATION',`dnl
|
||||
const Glib::Class& __CPPNAME__`'_Class::init()
|
||||
{
|
||||
if(!gtype_) // create the GType if necessary
|
||||
{
|
||||
// Glib::Class has to know the class init function to clone custom types.
|
||||
class_init_func_ = &__CPPNAME__`'_Class::class_init_function;
|
||||
|
||||
// This is actually just optimized away, apparently with no harm.
|
||||
// Make sure that the parent type has been created.
|
||||
//CppClassParent::CppObjectType::get_type();
|
||||
|
||||
// Create the wrapper type, with the same class/instance size as the base type.
|
||||
register_derived_type(_LOWER(__CCAST__)_get_type());
|
||||
|
||||
// Add derived versions of interfaces, if the C type implements any interfaces:
|
||||
_IMPORT(SECTION_CC_IMPLEMENTS_INTERFACES)
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
ifdef(`__BOOL_NO_DERIVED_CLASS__',`dnl
|
||||
',`dnl
|
||||
|
||||
void __CPPNAME__`'_Class::class_init_function(void* g_class, void* class_data)
|
||||
{
|
||||
BaseClassType *const klass = static_cast<BaseClassType*>(g_class);
|
||||
CppClassParent::class_init_function(klass, class_data);
|
||||
|
||||
#ifdef GLIBMM_VFUNCS_ENABLED
|
||||
_IMPORT(SECTION_PCC_CLASS_INIT_VFUNCS)
|
||||
#endif //GLIBMM_VFUNCS_ENABLED
|
||||
|
||||
#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
_IMPORT(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS)
|
||||
#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
}
|
||||
')dnl
|
||||
|
||||
#ifdef GLIBMM_VFUNCS_ENABLED
|
||||
_IMPORT(SECTION_PCC_VFUNCS)
|
||||
#endif //GLIBMM_VFUNCS_ENABLED
|
||||
|
||||
#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
_IMPORT(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS)
|
||||
#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
')
|
||||
|
||||
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
define(`_CC_CLASS_IMPLEMENTATION',`dnl
|
||||
__CPPNAME__::CppClassType __CPPNAME__::`'__BASE__`'_class_; // initialize static member
|
||||
|
||||
GType __CPPNAME__::get_type()
|
||||
{
|
||||
return __BASE__`'_class_.init().get_type();
|
||||
}
|
||||
|
||||
GType __CPPNAME__::get_base_type()
|
||||
{
|
||||
return _LOWER(__CCAST__)_get_type();
|
||||
}
|
||||
|
||||
_IMPORT(SECTION_CC)
|
||||
|
||||
dnl _IMPORT(SECTION_CC_SIGNALPROXIES_CUSTOM)
|
||||
|
||||
_IMPORT(SECTION_CC_SIGNALPROXIES)
|
||||
|
||||
_IMPORT(SECTION_CC_PROPERTYPROXIES)
|
||||
|
||||
#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
_IMPORT(SECTION_CC_DEFAULT_SIGNAL_HANDLERS)
|
||||
#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
|
||||
|
||||
#ifdef GLIBMM_VFUNCS_ENABLED
|
||||
_IMPORT(SECTION_CC_VFUNCS)
|
||||
_IMPORT(SECTION_CC_VFUNCS_CPPWRAPPER)
|
||||
#endif //GLIBMM_VFUNCS_ENABLED
|
||||
')
|
||||
|
||||
dnl _PARENT_GCLASS_FROM_OBJECT(object_instance_name)
|
||||
define(`_PARENT_GCLASS_FROM_OBJECT',`dnl
|
||||
g_type_class_peek_parent`'(G_OBJECT_GET_CLASS`'($1)) // Get the parent class of the object class (The original underlying C class).
|
||||
')
|
||||
|
||||
dnl _IFACE_PARENT_FROM_OBJECT(object_instance_name)
|
||||
define(`_IFACE_PARENT_FROM_OBJECT',`dnl
|
||||
g_type_interface_peek_parent`'( // Get the parent interface of the interface (The original underlying C interface).
|
||||
g_type_interface_peek`'(G_OBJECT_GET_CLASS`'($1), CppObjectType::get_type`'()) // Get the interface.
|
||||
)dnl
|
||||
')
|
||||
|
||||
dnl Bonobo doesn't use the "typedef struct _somestruct struct" system.
|
||||
define(`_STRUCT_NOT_HIDDEN',`dnl
|
||||
_PUSH()
|
||||
dnl Define this macro to be tested for later.
|
||||
define(`__BOOL_STRUCT_NOT_HIDDEN__',`$1')
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl _STRUCT_PROTOTYPE()
|
||||
define(`_STRUCT_PROTOTYPE',`dnl
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
ifdef(`__BOOL_STRUCT_NOT_HIDDEN__',`dnl
|
||||
',`dnl
|
||||
typedef struct _`'__CNAME__ __CNAME__;
|
||||
typedef struct _`'__CNAME__`'Class __CNAME__`'Class;
|
||||
')dnl
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
')
|
||||
|
||||
dnl _GTKMMPROC_WIN32_NO_WRAP
|
||||
dnl Just process it to remove it from the generated file.
|
||||
dnl generate_wrap_init.pl will look for this in the original .hg file.
|
||||
dnl
|
||||
define(`_GTKMMPROC_WIN32_NO_WRAP', dnl
|
||||
`//This is not available in on Win32.
|
||||
//This source file will not be compiled,
|
||||
//and the class will not be registered in wrap_init.h or wrap_init.cc
|
||||
')dnl
|
||||
|
||||
|
||||
118
libs/glibmm2/tools/m4/compare.m4
Normal file
118
libs/glibmm2/tools/m4/compare.m4
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
dnl $Id: compare.m4 58 2003-12-14 11:53:04Z murrayc $
|
||||
|
||||
define(`__OPERATOR_DECL',`dnl
|
||||
/** @relates __NAMESPACE__::__CPPNAME__
|
||||
* @param lhs The left-hand side
|
||||
* @param rhs The right-hand side
|
||||
* @result The result
|
||||
*/
|
||||
bool operator`'$1`'(const __CPPNAME__& lhs, const __CPPNAME__& rhs);
|
||||
')
|
||||
|
||||
define(`__OPERATOR_IMPL',`dnl
|
||||
bool operator`'$1`'(const __CPPNAME__& lhs, const __CPPNAME__& rhs)
|
||||
{'
|
||||
ifelse`'(`__UNCONST__',`unconst',`dnl
|
||||
return ($2`'(const_cast<__CNAME__*>(lhs.gobj()), const_cast<__CNAME__*>(rhs.gobj())) $3);
|
||||
',`dnl else
|
||||
return ($2`'(lhs.gobj(), rhs.gobj()) $3);
|
||||
')`dnl endif
|
||||
}
|
||||
')
|
||||
|
||||
|
||||
dnl
|
||||
dnl _WRAP_EQUAL(gdk_region_equal, unconst)
|
||||
dnl
|
||||
define(`_WRAP_EQUAL',`dnl
|
||||
pushdef(`__FUNC_EQUAL__',$1)dnl
|
||||
pushdef(`__UNCONST__',$2)dnl
|
||||
_PUSH(SECTION_HEADER3)
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
__OPERATOR_DECL(`==')
|
||||
__OPERATOR_DECL(`!=')
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
_SECTION(SECTION_CC)
|
||||
|
||||
__OPERATOR_IMPL(`==', __FUNC_EQUAL__, `!= 0')
|
||||
__OPERATOR_IMPL(`!=', __FUNC_EQUAL__, `== 0')
|
||||
|
||||
_POP()
|
||||
popdef(`__UNCONST__')dnl
|
||||
popdef(`__FUNC_EQUAL__')dnl
|
||||
')dnl enddef _WRAP_EQUAL
|
||||
|
||||
|
||||
dnl
|
||||
dnl _WRAP_COMPARE(gtk_tree_path_compare)
|
||||
dnl
|
||||
define(`_WRAP_COMPARE',`dnl
|
||||
pushdef(`__FUNC_COMPARE__',$1)dnl
|
||||
pushdef(`__UNCONST__',$2)dnl
|
||||
_PUSH(SECTION_HEADER3)
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
__OPERATOR_DECL(`==')
|
||||
__OPERATOR_DECL(`!=')
|
||||
__OPERATOR_DECL(`<')
|
||||
__OPERATOR_DECL(`>')
|
||||
__OPERATOR_DECL(`<=')
|
||||
__OPERATOR_DECL(`>=')
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
_SECTION(SECTION_CC)
|
||||
|
||||
__OPERATOR_IMPL(`==', __FUNC_COMPARE__, `== 0')
|
||||
__OPERATOR_IMPL(`!=', __FUNC_COMPARE__, `!= 0')
|
||||
__OPERATOR_IMPL(`<', __FUNC_COMPARE__, `< 0')
|
||||
__OPERATOR_IMPL(`>', __FUNC_COMPARE__, `> 0')
|
||||
__OPERATOR_IMPL(`<=', __FUNC_COMPARE__, `<= 0')
|
||||
__OPERATOR_IMPL(`>=', __FUNC_COMPARE__, `>= 0')
|
||||
|
||||
_POP()
|
||||
popdef(`__UNCONST__')dnl
|
||||
popdef(`__FUNC_COMPARE__')dnl
|
||||
')dnl enddef _WRAP_COMPARE
|
||||
|
||||
|
||||
dnl
|
||||
dnl _WRAP_EQUAL_AND_COMPARE(gtk_text_iter_equal, gtk_text_iter_compare)
|
||||
dnl
|
||||
define(`_WRAP_EQUAL_AND_COMPARE',`dnl
|
||||
pushdef(`__FUNC_EQUAL__',$1)dnl
|
||||
pushdef(`__FUNC_COMPARE__',$2)dnl
|
||||
pushdef(`__UNCONST__',$3)dnl
|
||||
_PUSH(SECTION_HEADER3)
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
|
||||
__OPERATOR_DECL(`==')
|
||||
__OPERATOR_DECL(`!=')
|
||||
__OPERATOR_DECL(`<')
|
||||
__OPERATOR_DECL(`>')
|
||||
__OPERATOR_DECL(`<=')
|
||||
__OPERATOR_DECL(`>=')
|
||||
|
||||
__NAMESPACE_END__
|
||||
|
||||
_SECTION(SECTION_CC)
|
||||
|
||||
__OPERATOR_IMPL(`==', __FUNC_EQUAL__, `!= 0')
|
||||
__OPERATOR_IMPL(`!=', __FUNC_EQUAL__, `== 0')
|
||||
__OPERATOR_IMPL(`<', __FUNC_COMPARE__, `< 0')
|
||||
__OPERATOR_IMPL(`>', __FUNC_COMPARE__, `> 0')
|
||||
__OPERATOR_IMPL(`<=', __FUNC_COMPARE__, `<= 0')
|
||||
__OPERATOR_IMPL(`>=', __FUNC_COMPARE__, `>= 0')
|
||||
|
||||
_POP()
|
||||
popdef(`__UNCONST__')dnl
|
||||
popdef(`__FUNC_COMPARE__')dnl
|
||||
popdef(`__FUNC_EQUAL__')dnl
|
||||
')dnl enddef _WRAP_EQUAL_AND_COMPARE
|
||||
|
||||
6
libs/glibmm2/tools/m4/convert.m4
Normal file
6
libs/glibmm2/tools/m4/convert.m4
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
dnl $Id: convert.m4 2 2003-01-07 16:59:16Z murrayc $
|
||||
|
||||
# Other libraries, such as libgnomeuimm, can provide their own convert.m4 files,
|
||||
# Maybe choosing to include the same files as this one.
|
||||
|
||||
include(convert_gtkmm.m4)
|
||||
34
libs/glibmm2/tools/m4/convert_atk.m4
Normal file
34
libs/glibmm2/tools/m4/convert_atk.m4
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
include(convert_glib.m4)
|
||||
|
||||
_EQUAL(State,AtkState)
|
||||
|
||||
_CONV_ENUM(Atk,Role)
|
||||
_CONV_ENUM(Atk,Layer)
|
||||
_CONV_ENUM(Atk,RelationType)
|
||||
_CONV_ENUM(Atk,StateType)
|
||||
_CONV_ENUM(Atk,CoordType)
|
||||
_CONV_ENUM(Atk,TextBoundary)
|
||||
|
||||
|
||||
_CONVERSION(`AtkObject*',`Glib::RefPtr<Atk::Object>',Glib::wrap($3))
|
||||
_CONVERSION(`AtkObject*',`Glib::RefPtr<Object>',Glib::wrap($3))
|
||||
_CONVERSION(`AtkObject*',`Glib::RefPtr<Atk::Object>',Glib::wrap($3))
|
||||
_CONVERSION(`AtkObject*',`Glib::RefPtr<const Object>',Glib::wrap($3))
|
||||
_CONVERSION(`AtkObject*',`Glib::RefPtr<const Atk::Object>',Glib::wrap($3))
|
||||
_CONVERSION(`AtkObject*',`const Glib::RefPtr<Atk::Object>&',`Glib::wrap($3, true)')
|
||||
_CONVERSION(`const Glib::RefPtr<Object>&',`AtkObject*',`Glib::unwrap($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<Atk::Object>&',`AtkObject*',`Glib::unwrap($3)')
|
||||
_CONVERSION(`Glib::RefPtr<Atk::Object>',`AtkObject*',`Glib::unwrap($3)')
|
||||
_CONVERSION(`Glib::RefPtr<Object>',`AtkObject*',`Glib::unwrap($3)')
|
||||
_CONVERSION(`AtkRelationSet*',`Glib::RefPtr<RelationSet>',Glib::wrap($3))
|
||||
_CONVERSION(`const Glib::RefPtr<Relation>&',`AtkRelation*',`Glib::unwrap($3)')
|
||||
_CONVERSION(`AtkRelation*',`Glib::RefPtr<Relation>',Glib::wrap($3))
|
||||
_CONVERSION(`AtkStateSet*',`Glib::RefPtr<StateSet>',Glib::wrap($3))
|
||||
_CONVERSION(`const Glib::RefPtr<StateSet>&',`AtkStateSet*',`Glib::unwrap($3)')
|
||||
|
||||
_CONVERSION(`AtkGObjectAccessible*',`Glib::RefPtr<ObjectAccessible>',Glib::wrap($3))
|
||||
_CONVERSION(`AtkGObjectAccessible*',`Glib::RefPtr<const ObjectAccessible>',Glib::wrap($3))
|
||||
|
||||
_CONVERSION(`AtkAttributeSet*', `AttributeSet', `AttributeSet($3, Glib::OWNERSHIP_DEEP)')
|
||||
_CONVERSION(`const AttributeSet&', `AtkAttributeSet*', `($3).data()')
|
||||
|
||||
71
libs/glibmm2/tools/m4/convert_base.m4
Normal file
71
libs/glibmm2/tools/m4/convert_base.m4
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
dnl $Id: convert_base.m4 293 2006-05-16 19:49:07Z murrayc $
|
||||
|
||||
#
|
||||
# Define a hashing for names
|
||||
#
|
||||
define(`__HASH',`__`'m4_translit(`$*',`ABCDEFGHIJKLMNOPQRSTUVWXYZ<>[]&*, ',`abcdefghijklmnopqrstuvwxyzVBNMRSC_')`'')
|
||||
define(`__EQUIV',`m4_ifdef(EV`'__HASH(`$1'),EV`'__HASH(`$1'),`$1')')
|
||||
|
||||
define(`__HASH2',`dnl
|
||||
pushdef(`__E1',__EQUIV(`$1'))pushdef(`__E2',__EQUIV(`$2'))dnl
|
||||
m4_ifelse(__E1,__E2,`__EQ',__HASH(__E1)`'__HASH(__E2))`'dnl
|
||||
popdef(`__E1')popdef(`__E2')`'')
|
||||
|
||||
define(`CF__EQ',`$3')
|
||||
|
||||
#
|
||||
# _CONVERT(fromtype, totype, name, wrap_line)
|
||||
# Print the conversion from ctype to cpptype
|
||||
define(`_CONVERT',`dnl
|
||||
m4_ifelse(`$2',void,`$3',`dnl
|
||||
pushdef(`__COV',`CF`'__HASH2(`$1',`$2')')dnl
|
||||
m4_ifdef(__COV,`m4_indir(__COV,`$1',`$2',`$3')',`
|
||||
m4_errprint(`No conversion from $1 to $2 defined (line: $4, parameter name: $3)
|
||||
')
|
||||
m4_m4exit(1)
|
||||
')`'dnl
|
||||
')`'dnl
|
||||
')
|
||||
|
||||
|
||||
#
|
||||
# Functions for populating the tables.
|
||||
#
|
||||
define(`_CONVERSION',`
|
||||
m4_ifelse(`$3',,,`define(CF`'__HASH2(`$1',`$2'),`$3')')
|
||||
')
|
||||
|
||||
define(`_EQUAL',`define(EV`'__HASH(`$1'),`$2')')
|
||||
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
define(`__ARG3__',`$`'3')
|
||||
define(`_CONV_ENUM',`dnl
|
||||
_CONVERSION(`$1$2', `$2', (($2)(__ARG3__)))
|
||||
_CONVERSION(`$1$2', `$1::$2', (($1::$2)(__ARG3__)))
|
||||
_CONVERSION(`$2', `$1$2', (($1$2)(__ARG3__)))
|
||||
_CONVERSION(`$1::$2', `$1$2', (($1$2)(__ARG3__)))
|
||||
')dnl
|
||||
|
||||
# e.g. Glib::RefPtr<Gdk::Something> to GdkSomething*
|
||||
define(`__CONVERT_REFPTR_TO_P',`Glib::unwrap($`'3)')
|
||||
|
||||
# e.g. Glib::RefPtr<const Gdk::Something> to GdkSomething*
|
||||
#define(`__CONVERT_CONST_REFPTR_TO_P',`const_cast<$`'2>($`'3->gobj())')
|
||||
define(`__CONVERT_CONST_REFPTR_TO_P',`const_cast<$`'2>(Glib::unwrap($`'3))')
|
||||
|
||||
# The Sun Forte compiler doesn't seem to be able to handle these, so we are using the altlernative, __CONVERT_CONST_REFPTR_TO_P_SUN.
|
||||
# The Sun compiler gives this error, for instance:
|
||||
# "widget.cc", line 4463: Error: Overloading ambiguity between "Glib::unwrap<Gdk::Window>(const Glib::RefPtr<const Gdk::Window>&)" and
|
||||
# "Glib::unwrap<const Gdk::Window>(const Glib::RefPtr<const Gdk::Window>&)".
|
||||
#
|
||||
define(`__CONVERT_CONST_REFPTR_TO_P_SUN',`const_cast<$`'2>(Glib::unwrap<$1>($`'3))')
|
||||
|
||||
|
||||
include(convert_gtk.m4)
|
||||
include(convert_pango.m4)
|
||||
include(convert_gdk.m4)
|
||||
include(convert_atk.m4)
|
||||
include(convert_glib.m4)
|
||||
|
||||
231
libs/glibmm2/tools/m4/convert_gdk.m4
Normal file
231
libs/glibmm2/tools/m4/convert_gdk.m4
Normal file
|
|
@ -0,0 +1,231 @@
|
|||
include(convert_glib.m4)
|
||||
|
||||
_EQUAL(gint8[],gint8*)
|
||||
_EQUAL(guchar,guint8)
|
||||
_EQUAL(guchar*,guint8*)
|
||||
_EQUAL(gfloat,float)
|
||||
|
||||
# Enums
|
||||
_CONV_ENUM(Gdk,AxisUse)
|
||||
_CONV_ENUM(Gdk,ByteOrder)
|
||||
_CONV_ENUM(Gdk,CapStyle)
|
||||
_CONV_ENUM(Gdk,Colorspace)
|
||||
_CONV_ENUM(Gdk,CursorType)
|
||||
_CONV_ENUM(Gdk,DragAction)
|
||||
_CONV_ENUM(Gdk,DragProtocol)
|
||||
_CONV_ENUM(Gdk,EventMask)
|
||||
_CONV_ENUM(Gdk,EventType)
|
||||
_CONV_ENUM(Gdk,ExtensionMode)
|
||||
_CONV_ENUM(Gdk,Fill)
|
||||
_CONV_ENUM(Gdk,FillRule)
|
||||
_CONV_ENUM(Gdk,Function)
|
||||
_CONV_ENUM(Gdk,GCValuesMask)
|
||||
_CONV_ENUM(Gdk,Gravity)
|
||||
_CONV_ENUM(Gdk,ImageType)
|
||||
_CONV_ENUM(Gdk,InputCondition)
|
||||
_CONV_ENUM(Gdk,InputMode)
|
||||
_CONV_ENUM(Gdk,InterpType)
|
||||
_CONV_ENUM(Gdk,JoinStyle)
|
||||
_CONV_ENUM(Gdk,LineStyle)
|
||||
_CONV_ENUM(Gdk,ModifierType)
|
||||
_CONV_ENUM(Gdk,OverlapType)
|
||||
_CONV_ENUM(Gdk,PixbufAlphaMode)
|
||||
_CONV_ENUM(Gdk,RgbDither)
|
||||
_CONV_ENUM(Gdk,Status)
|
||||
_CONV_ENUM(Gdk,SubwindowMode)
|
||||
_CONV_ENUM(Gdk,VisualType)
|
||||
_CONV_ENUM(Gdk,WindowAttributesType)
|
||||
_CONV_ENUM(Gdk,WindowEdge)
|
||||
_CONV_ENUM(Gdk,WindowHints)
|
||||
_CONV_ENUM(Gdk,WindowState)
|
||||
_CONV_ENUM(Gdk,WindowType)
|
||||
_CONV_ENUM(Gdk,WindowTypeHint)
|
||||
_CONV_ENUM(Gdk,WMDecoration)
|
||||
_CONV_ENUM(Gdk,WMFunction)
|
||||
_CONV_ENUM(Gdk,GrabStatus)
|
||||
|
||||
|
||||
_CONVERSION(`Gdk::EventMask',`gint',`$3')
|
||||
_CONVERSION(`gint',`Gdk::EventMask',`static_cast<Gdk::EventMask>($3)')
|
||||
_CONVERSION(`ModifierType&',`GdkModifierType*',`(($2) &($3))')
|
||||
_CONVERSION(`WMDecoration&',`GdkWMDecoration*',`(($2) &($3))')
|
||||
_CONVERSION(`GdkDragProtocol&',`GdkDragProtocol*',`&($3)')
|
||||
|
||||
_CONVERSION(`GdkRectangle&',`GdkRectangle*',`&$3',`*$3')
|
||||
_CONVERSION(`GdkRgbCmap&',`GdkRgbCmap*',`&$3',`*$3')
|
||||
|
||||
# TODO: Remove this, and use Gdk::Device:
|
||||
_CONVERSION(`GdkDevice*',`const GdkDevice*',`$3')
|
||||
|
||||
_CONVERSION(`GdkKeymap*',`const GdkKeymap*',`$3')
|
||||
|
||||
|
||||
|
||||
|
||||
# for GtkStyle public struct members
|
||||
_CONVERSION(`Gdk::Color',`GdkColor', `(*($3).gobj())')
|
||||
_CONVERSION(`GdkColor',`Gdk::Color', `Gdk::Color(const_cast<GdkColor*>(&($3)), true)')
|
||||
|
||||
# Ref (gdkmm) -> Ptr (gtk+)
|
||||
_CONVERSION(`Color&',`GdkColor*',($3).gobj())
|
||||
_CONVERSION(`Rectangle&',`GdkRectangle*',($3).gobj())
|
||||
_CONVERSION(`Gdk::Rectangle&',`GdkRectangle*',($3).gobj())
|
||||
_CONVERSION(`Font&',`GdkFont*',($3).gobj())
|
||||
_CONVERSION(`Region&',`GdkRegion*',($3).gobj())
|
||||
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::Colormap>&',`GdkColormap*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::Pixmap>&',`GdkPixmap*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::Window>&',`GdkWindow*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Window>&',`GdkWindow*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Pixmap>&',`GdkPixmap*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::Pixmap>&',`GdkPixmap*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Bitmap>&',`GdkBitmap*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::Bitmap>&',`GdkBitmap*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Colormap>&',`GdkColormap*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<const Colormap>&',`GdkColormap*',__CONVERT_CONST_REFPTR_TO_P_SUN(Colormap))
|
||||
_CONVERSION(`const Glib::RefPtr<GC>&',`GdkGC*',`Glib::unwrap<Gdk::GC>($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<const GC>&',`GdkGC*',__CONVERT_CONST_REFPTR_TO_P_SUN(GC))
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::GC>&',`GdkGC*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Drawable>&',`GdkDrawable*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<const Drawable>&',`GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Drawable))
|
||||
_CONVERSION(`const Glib::RefPtr<Image>&',`GdkImage*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<const Image>&',`GdkImage*',__CONVERT_CONST_REFPTR_TO_P_SUN(Image))
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::Image>&',`GdkImage*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Pixbuf>&',`GdkPixbuf*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<const Pixbuf>&',`GdkPixbuf*',__CONVERT_CONST_REFPTR_TO_P_SUN(Pixbuf))
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::Pixbuf>&',`GdkPixbuf*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`Glib::RefPtr<Gdk::Pixbuf>',`GdkPixbuf*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::PixbufAnimation>&',`GdkPixbufAnimation*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::PixbufAnimationIter>&',`GdkPixbufAnimationIter*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::DragContext>&',`GdkDragContext*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Display>&',`GdkDisplay*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Screen>&',`GdkScreen*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::Display>&',`GdkDisplay*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Gdk::Screen>&',`GdkScreen*',__CONVERT_REFPTR_TO_P)
|
||||
|
||||
|
||||
|
||||
define(`__CFR2P',`const_cast<$`'2>($`'3.gobj())')
|
||||
_CONVERSION(const Font&,GdkFont*,__CFR2P)
|
||||
_CONVERSION(const Gdk::Color&,GdkColor*,__CFR2P)
|
||||
_CONVERSION(const Color&,GdkColor*,__CFR2P)
|
||||
_CONVERSION(const Gdk::Rectangle&,GdkRectangle*,__CFR2P)
|
||||
_CONVERSION(const Rectangle&,GdkRectangle*,__CFR2P)
|
||||
_CONVERSION(const Gdk::Geometry&,GdkGeometry*,const_cast<$2>(&($3)))
|
||||
_CONVERSION(const Geometry&,GdkGeometry*,const_cast<$2>(&($3)))
|
||||
_CONVERSION(const RgbCmap&,GdkRgbCmap*,__CFR2P)
|
||||
|
||||
_CONVERSION(`Gdk::Rectangle*',`GdkRectangle*',`Glib::unwrap($3)')
|
||||
_CONVERSION(`const Gdk::Rectangle*',`GdkRectangle*',`Glib::unwrap(const_cast<Gdk::Rectangle*>($3))')
|
||||
_CONVERSION(`GdkRectangle*',`Gdk::Rectangle*',`&Glib::wrap($3)')
|
||||
_CONVERSION(`GdkRectangle*',`const Gdk::Rectangle*',`&Glib::wrap($3)')
|
||||
_CONVERSION(`GdkRectangle*',`const Gdk::Rectangle&',`Glib::wrap($3)')
|
||||
|
||||
|
||||
dnl TODO: Should this always be a copy?
|
||||
_CONVERSION(const Cursor&,GdkCursor*,($3).gobj_copy())
|
||||
|
||||
# Special treatment for the Sun Forte compiler
|
||||
#_CONVERSION(const Glib::RefPtr<const Gdk::Pixmap>&,GdkPixmap*,__CONVERT_CONST_REFPTR_TO_P)
|
||||
#_CONVERSION(const Glib::RefPtr<const Gdk::Window>&,GdkWindow*,__CONVERT_CONST_REFPTR_TO_P)
|
||||
#_CONVERSION(const Glib::RefPtr<const Gdk::Colormap>&,GdkColormap*,__CONVERT_CONST_REFPTR_TO_P)
|
||||
#_CONVERSION(const Glib::RefPtr<const Gdk::Visual>&,GdkVisual*,__CONVERT_CONST_REFPTR_TO_P)
|
||||
#_CONVERSION(const Glib::RefPtr<const Gdk::Bitmap>&,GdkBitmap*,__CONVERT_CONST_REFPTR_TO_P)
|
||||
#_CONVERSION(const Glib::RefPtr<const Gdk::Image>&,GdkImage*,__CONVERT_CONST_REFPTR_TO_P)
|
||||
#_CONVERSION(const Glib::RefPtr<const Gdk::GC>&,GdkGC*,__CONVERT_CONST_REFPTR_TO_P)
|
||||
|
||||
_CONVERSION(`const Glib::RefPtr<const Gdk::Pixmap>&', `GdkPixmap*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Pixmap))
|
||||
_CONVERSION(`const Glib::RefPtr<const Gdk::Window>&', `GdkWindow*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Window))
|
||||
_CONVERSION(`const Glib::RefPtr<const Window>&', `GdkWindow*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Window))
|
||||
_CONVERSION(`const Glib::RefPtr<const Gdk::Colormap>&', `GdkColormap*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Colormap))
|
||||
_CONVERSION(`const Glib::RefPtr<const Gdk::Visual>&', `GdkVisual*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Visual))
|
||||
_CONVERSION(`const Glib::RefPtr<const Gdk::Bitmap>&', `GdkBitmap*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Bitmap))
|
||||
_CONVERSION(`const Glib::RefPtr<const Gdk::Image>&', `GdkImage*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Image))
|
||||
_CONVERSION(`const Glib::RefPtr<const Image>&', `GdkImage*',__CONVERT_CONST_REFPTR_TO_P_SUN(Image))
|
||||
_CONVERSION(`const Glib::RefPtr<const Gdk::GC>&', `GdkGC*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::GC))
|
||||
_CONVERSION(`const Glib::RefPtr<const GC>&', `GdkGC*',__CONVERT_CONST_REFPTR_TO_P_SUN(GC))
|
||||
#_CONVERSION(`const Glib::RefPtr<const Gdk::Drawable>&', `GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Drawable))
|
||||
#_CONVERSION(`const Glib::RefPtr<const Drawable>&', `GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Drawable))
|
||||
#_CONVERSION(`const Glib::RefPtr<const Display>&', `GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Drawable))
|
||||
|
||||
|
||||
_CONVERSION(`GdkWindow*',`Glib::RefPtr<Window>', `Glib::wrap((GdkWindowObject*)($3))')
|
||||
_CONVERSION(`GdkWindow*',`Glib::RefPtr<const Window>', `Glib::wrap((GdkWindowObject*)($3))')
|
||||
_CONVERSION(`GdkWindow*',`Glib::RefPtr<Gdk::Window>', `Glib::wrap((GdkWindowObject*)($3))')
|
||||
_CONVERSION(`GdkWindow*',`Glib::RefPtr<const Gdk::Window>', `Glib::wrap((GdkWindowObject*)($3))')
|
||||
_CONVERSION(`GdkWindow*',`const Glib::RefPtr<Gdk::Window>&', `Glib::wrap((GdkWindowObject*)($3), true)')
|
||||
_CONVERSION(`GdkPixmap*',`Glib::RefPtr<Pixmap>', `Glib::wrap((GdkPixmapObject*)($3))')
|
||||
_CONVERSION(`GdkPixmap*',`Glib::RefPtr<const Pixmap>', `Glib::wrap((GdkPixmapObject*)($3))')
|
||||
_CONVERSION(`GdkPixmap*',`Glib::RefPtr<const Gdk::Pixmap>', `Glib::wrap((GdkPixmapObject*)($3))')
|
||||
_CONVERSION(`GdkPixmap*',`Glib::RefPtr<Gdk::Pixmap>', `Glib::wrap((GdkPixmapObject*)($3))')
|
||||
_CONVERSION(`GdkColormap*',`Glib::RefPtr<Colormap>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkColormap*',`Glib::RefPtr<const Colormap>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkColormap*',`Glib::RefPtr<Gdk::Colormap>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkVisual*',`Glib::RefPtr<Gdk::Visual>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkVisual*',`Glib::RefPtr<Visual>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkVisual*',`Glib::RefPtr<const Visual>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkImage*',`Glib::RefPtr<Image>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkPixbuf*',`Glib::RefPtr<Pixbuf>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkPixbuf*',`Glib::RefPtr<Gdk::Pixbuf>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkPixbufAnimationIter*',`Glib::RefPtr<PixbufAnimationIter>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkPixbuf*',`Glib::RefPtr<Gdk::Pixbuf>', Glib::wrap($3))
|
||||
_CONVERSION(`GdkPixbufAnimation*',`Glib::RefPtr<Gdk::PixbufAnimation>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkGC*',`Glib::RefPtr<Gdk::GC>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkGC*',`Glib::RefPtr<const Gdk::GC>', `Glib::wrap($3)')
|
||||
|
||||
_CONVERSION(`GdkDisplay*',`Glib::RefPtr<Display>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkDisplay*',`Glib::RefPtr<const Display>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkDisplay*',`Glib::RefPtr<Gdk::Display>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkDisplay*',`Glib::RefPtr<const Gdk::Display>', `Glib::wrap($3)')
|
||||
|
||||
_CONVERSION(`GdkDisplayManager*',`Glib::RefPtr<DisplayManager>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkDisplayManager*',`Glib::RefPtr<const DisplayManager>', `Glib::wrap($3)')
|
||||
|
||||
_CONVERSION(`GdkScreen*',`Glib::RefPtr<Screen>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkScreen*',`Glib::RefPtr<const Screen>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkScreen*',`Glib::RefPtr<Gdk::Screen>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkScreen*',`Glib::RefPtr<const Gdk::Screen>', `Glib::wrap($3)')
|
||||
|
||||
_CONVERSION(`GdkDevice*',`Glib::RefPtr<Device>', `Glib::wrap($3)')
|
||||
_CONVERSION(`GdkDevice*',`Glib::RefPtr<const Device>', `Glib::wrap($3)')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Glib::ListHandle<> (gdkmm) -> GList (gdk)
|
||||
_CONVERSION(`const Glib::ListHandle< Glib::RefPtr<Gdk::Pixbuf> >&',`GList*',`$3.data()')
|
||||
|
||||
# GList (gdk) -> Glib::ListHandle<> (gdkmm)
|
||||
_CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Gdk::Pixbuf> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
|
||||
_CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Device> >',`$2($3, Glib::OWNERSHIP_DEEP)')
|
||||
_CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Visual> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
|
||||
_CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Window> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
|
||||
_CONVERSION(`GSList*',`Glib::SListHandle< Glib::RefPtr<Display> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
|
||||
|
||||
|
||||
|
||||
|
||||
# XPM data
|
||||
_CONVERSION(`const char*const*',`const char**',`const_cast<const char**>($3)',`$3')
|
||||
|
||||
|
||||
_CONVERSION(GdkFont*, Gdk::Font, `Gdk::Font($3)')
|
||||
_CONVERSION(GdkEvent*, Event, `Event($3)')
|
||||
_CONVERSION(GdkRegion*, Region, `Region($3)')
|
||||
|
||||
_CONVERSION(`GdkTimeCoord**&',`GdkTimeCoord***',`&($3)')
|
||||
|
||||
dnl _CONVERSION(GdkPixmap*,Gdk::Pixmap&,`Glib::unwrap_boxed($3)',`$3')
|
||||
dnl _CONVERSION(GdkBitmap*,Gdk::Bitmap&,`Glib::unwrap_boxed($3)',`$3')
|
||||
|
||||
|
||||
|
||||
# Used by signals:
|
||||
_CONVERSION(`GdkDragContext*',`const Glib::RefPtr<Gdk::DragContext>&',Glib::wrap($3, true))
|
||||
_CONVERSION(`GdkPixbuf*',`const Glib::RefPtr<Gdk::Pixbuf>&', Glib::wrap($3, true))
|
||||
_CONVERSION(`GdkDragContext*',`Glib::RefPtr<Gdk::DragContext>',Glib::wrap($3, true))
|
||||
_CONVERSION(`GdkDisplay*',`const Glib::RefPtr<Display>&', Glib::wrap($3, true))
|
||||
|
||||
69
libs/glibmm2/tools/m4/convert_glib.m4
Normal file
69
libs/glibmm2/tools/m4/convert_glib.m4
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
dnl
|
||||
dnl Glib C names have prefix 'G' but C++ namespace Glib
|
||||
dnl
|
||||
define(`_CONV_GLIB_ENUM',`dnl
|
||||
_CONVERSION(`G$1', `$1', (($1)(__ARG3__)))
|
||||
_CONVERSION(`G$1', `Glib::$1', ((Glib::$1)(__ARG3__)))
|
||||
_CONVERSION(`$1', `G$1', ((G$1)(__ARG3__)))
|
||||
_CONVERSION(`Glib::$1', `G$1', ((G$1)(__ARG3__)))
|
||||
')dnl
|
||||
|
||||
_EQUAL(gchar,char)
|
||||
_EQUAL(gchar*,char*)
|
||||
_EQUAL(gchar**,char**)
|
||||
_EQUAL(gint**,int**)
|
||||
_EQUAL(gchar**,char*[])
|
||||
_EQUAL(const gchar*,const char*)
|
||||
_EQUAL(const-gchar*,const char*)
|
||||
_EQUAL(gpointer*,void**)
|
||||
|
||||
_CONV_GLIB_ENUM(IOStatus)
|
||||
_CONV_GLIB_ENUM(IOFlags)
|
||||
_CONV_GLIB_ENUM(IOCondition)
|
||||
_CONV_GLIB_ENUM(SeekType)
|
||||
_CONV_GLIB_ENUM(OptionArg)
|
||||
_CONV_GLIB_ENUM(KeyFileFlags)
|
||||
_CONV_GLIB_ENUM(RegexCompileFlags)
|
||||
_CONV_GLIB_ENUM(RegexMatchFlags)
|
||||
|
||||
_CONVERSION(`gunichar&',`gunichar*',`&($3)')
|
||||
_CONVERSION(`gsize&',`gsize*',`&($3)')
|
||||
|
||||
|
||||
# Strings:
|
||||
define(`__GCHARP_TO_USTRING',`Glib::convert_const_gchar_ptr_to_ustring($`'3)')
|
||||
define(`__GCHARP_TO_STDSTRING',`Glib::convert_const_gchar_ptr_to_stdstring($`'3)')
|
||||
|
||||
_CONVERSION(`const Glib::ustring&',`const char*',`$3.c_str()')
|
||||
_CONVERSION(`const std::string&',`const char*',`$3.c_str()')
|
||||
_CONVERSION(`const Glib::ustring&',`gchar*',`const_cast<gchar*>($3.c_str())')
|
||||
_CONVERSION(`gchar*',`Glib::ustring',__GCHARP_TO_USTRING)
|
||||
_CONVERSION(`const-gchar*',`Glib::ustring',__GCHARP_TO_USTRING)
|
||||
_CONVERSION(`const gchar*',`Glib::ustring',__GCHARP_TO_USTRING)
|
||||
_CONVERSION(`const char*',`Glib::ustring',__GCHARP_TO_USTRING)
|
||||
_CONVERSION(`const char*',`std::string',__GCHARP_TO_STDSTRING)
|
||||
_CONVERSION(`const gchar*',`const Glib::ustring&',__GCHARP_TO_USTRING)
|
||||
_CONVERSION(`const char*',`const-gchar*',`$3')
|
||||
_CONVERSION(`const-gchar*',`const char*',`$3')
|
||||
|
||||
_CONVERSION(`return-gchar*',`Glib::ustring',`Glib::convert_return_gchar_ptr_to_ustring($3)')
|
||||
_CONVERSION(`return-gchar*',`std::string',`Glib::convert_return_gchar_ptr_to_stdstring($3)')
|
||||
_CONVERSION(`return-char*',`Glib::ustring',`Glib::convert_return_gchar_ptr_to_ustring($3)')
|
||||
|
||||
_CONVERSION(`const Glib::RefPtr<Glib::Object>&',`GObject*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<const Glib::Object>&',`GObject*',__CONVERT_CONST_REFPTR_TO_P_SUN(Glib::Object))
|
||||
_CONVERSION(`GObject*',`Glib::RefPtr<Glib::Object>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GObject*',`Glib::RefPtr<const Glib::Object>',`Glib::wrap($3)')
|
||||
|
||||
_CONVERSION(`GRegex*',`Glib::RefPtr<Regex>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GRegex*',`Glib::RefPtr<const Regex>',`Glib::wrap($3)')
|
||||
|
||||
_CONVERSION(`Glib::ValueBase&',`GValue*',`($3).gobj()')
|
||||
_CONVERSION(`const Glib::ValueBase&',`const GValue*',`($3).gobj()')
|
||||
_CONVERSION(`const Glib::ValueBase&',`GValue*',`const_cast<GValue*>(($3).gobj())')
|
||||
_CONVERSION(`GValue*', `Glib::ValueBase&', `*reinterpret_cast<Glib::ValueBase*>($3)')
|
||||
_CONVERSION(`const GValue*', `const Glib::ValueBase&', `*reinterpret_cast<const Glib::ValueBase*>($3)')
|
||||
|
||||
_CONVERSION(`OptionGroup&',`GOptionGroup*',`($3).gobj()')
|
||||
#_CONVERSION(`GOptionGroup*',`OptionGroup',`Glib::wrap(($3), true /* take_copy */)')
|
||||
|
||||
394
libs/glibmm2/tools/m4/convert_gtk.m4
Normal file
394
libs/glibmm2/tools/m4/convert_gtk.m4
Normal file
|
|
@ -0,0 +1,394 @@
|
|||
dnl $Id: convert_gtk.m4 35 2003-05-02 16:07:24Z murrayc $
|
||||
|
||||
include(convert_glib.m4)
|
||||
|
||||
#
|
||||
# Table of widgets
|
||||
#
|
||||
|
||||
_EQUAL(gboolean,int)
|
||||
_EQUAL(gint,int)
|
||||
_EQUAL(gint*,int*)
|
||||
_EQUAL(gint&,int&)
|
||||
_EQUAL(guint,unsigned int)
|
||||
_EQUAL(guint*,unsigned int*)
|
||||
_EQUAL(guint&,unsigned int&)
|
||||
_EQUAL(gdouble,double)
|
||||
_EQUAL(gdouble*,double*)
|
||||
_EQUAL(gfloat, float)
|
||||
_EQUAL(float*,gfloat[])
|
||||
|
||||
_EQUAL(GdkAtom,Gdk::Atom)
|
||||
_EQUAL(const-char*,const-gchar*)
|
||||
_EQUAL(return-char*,return-gchar*)
|
||||
_EQUAL(gpointer,void*)
|
||||
_EQUAL(gconstpointer,const void*)
|
||||
#
|
||||
# Basic Types
|
||||
_CONVERSION(`int',`bool',`$3')
|
||||
_CONVERSION(`bool',`int',`static_cast<int>($3)')
|
||||
_CONVERSION(`unsigned int',`bool',`$3')
|
||||
_CONVERSION(`bool',`unsigned int',`static_cast<unsigned int>($3)')
|
||||
_CONVERSION(`int&',`gint*',`&($3)')
|
||||
_CONVERSION(`gint*',`int&',`*($3)')
|
||||
_CONVERSION(`guint&',`guint*',`&($3)')
|
||||
_CONVERSION(`double&',`gdouble*',`&($3)')
|
||||
_CONVERSION(`float&',`gfloat*',`&($3)')
|
||||
_CONVERSION(`gchar**',`char**',`$3')
|
||||
_CONVERSION(`char**',`gchar**',`$3')
|
||||
_CONVERSION(`gpointer&',`gpointer*',`&($3)')
|
||||
_CONVERSION(`void*&',`gpointer*',`&($3)')
|
||||
|
||||
_CONVERSION(`GError*&',`GError**',`&($3)')
|
||||
|
||||
|
||||
|
||||
# Enums:
|
||||
_CONV_ENUM(Gtk,AccelFlags)
|
||||
_CONV_ENUM(Gtk,ArrowType)
|
||||
_CONV_ENUM(Gtk,AttachOptions)
|
||||
_CONV_ENUM(Gtk,ButtonBoxStyle)
|
||||
_CONV_ENUM(Gtk,ButtonsType)
|
||||
_CONV_ENUM(Gtk,CalendarDisplayOptions)
|
||||
_CONV_ENUM(Gtk,CellRendererMode)
|
||||
_CONV_ENUM(Gtk,CellRendererState)
|
||||
_CONV_ENUM(Gtk,CornerType)
|
||||
_CONV_ENUM(Gtk,CurveType)
|
||||
_CONV_ENUM(Gtk,DeleteType)
|
||||
_CONV_ENUM(Gtk,DestDefaults)
|
||||
_CONV_ENUM(Gtk,DirectionType)
|
||||
_CONV_ENUM(Gtk,ExpanderStyle)
|
||||
_CONV_ENUM(Gtk,ImageType)
|
||||
_CONV_ENUM(Gtk,Justification)
|
||||
_CONV_ENUM(Gtk,MenuDirectionType)
|
||||
_CONV_ENUM(Gtk,MessageType)
|
||||
_CONV_ENUM(Gtk,MetricType)
|
||||
_CONV_ENUM(Gtk,MovementStep)
|
||||
_CONV_ENUM(Gtk,NotebookTab)
|
||||
_CONV_ENUM(Gtk,Orientation)
|
||||
_CONV_ENUM(Gtk,PackType)
|
||||
_CONV_ENUM(Gtk,PolicyType)
|
||||
_CONV_ENUM(Gtk,PositionType)
|
||||
_CONV_ENUM(Gtk,PreviewType)
|
||||
_CONV_ENUM(Gtk,ProgressBarOrientation)
|
||||
_CONV_ENUM(Gtk,ProgressBarStyle)
|
||||
_CONV_ENUM(Gtk,ReliefStyle)
|
||||
_CONV_ENUM(Gtk,ResizeMode)
|
||||
_CONV_ENUM(Gtk,ScrollType)
|
||||
_CONV_ENUM(Gtk,SelectionMode)
|
||||
_CONV_ENUM(Gtk,ShadowType)
|
||||
_CONV_ENUM(Gtk,SizeGroupMode)
|
||||
_CONV_ENUM(Gtk,SortType)
|
||||
_CONV_ENUM(Gtk,SpinButtonUpdatePolicy)
|
||||
_CONV_ENUM(Gtk,SpinType)
|
||||
_CONV_ENUM(Gtk,StateType)
|
||||
_CONV_ENUM(Gtk,TextDirection)
|
||||
_CONV_ENUM(Gtk,TextSearchFlags)
|
||||
_CONV_ENUM(Gtk,TextWindowType)
|
||||
_CONV_ENUM(Gtk,ToolbarChildType)
|
||||
_CONV_ENUM(Gtk,ToolbarStyle)
|
||||
_CONV_ENUM(Gtk,TreeModelFlags)
|
||||
_CONV_ENUM(Gtk,TreeViewColumnSizing)
|
||||
_CONV_ENUM(Gtk,TreeViewDropPosition)
|
||||
_CONV_ENUM(Gtk,UpdateType)
|
||||
_CONV_ENUM(Gtk,Visibility)
|
||||
_CONV_ENUM(Gtk,WidgetHelpType)
|
||||
_CONV_ENUM(Gtk,WindowPosition)
|
||||
_CONV_ENUM(Gtk,WindowType)
|
||||
_CONV_ENUM(Gtk,WrapMode)
|
||||
|
||||
_CONVERSION(`GtkIconSize',`IconSize',`IconSize(static_cast<int>($3))')
|
||||
_CONVERSION(`GtkIconSize',`Gtk::IconSize',`Gtk::IconSize(static_cast<int>($3))')
|
||||
_CONVERSION(`IconSize',`GtkIconSize',`static_cast<GtkIconSize>(int($3))')
|
||||
_CONVERSION(`Gtk::IconSize',`GtkIconSize',`static_cast<GtkIconSize>(int($3))')
|
||||
include(convert_atk.m4)
|
||||
include(convert_pango.m4)
|
||||
include(convert_gdk.m4)
|
||||
|
||||
_CONVERSION(`guint',`WindowType',`static_cast<WindowType>($3)')
|
||||
_CONVERSION(`PolicyType&',`GtkPolicyType*',`(($2) &($3))')
|
||||
_CONVERSION(`SortType&',`GtkSortType*',`(($2) &($3))')
|
||||
_CONVERSION(`SortType*',`GtkSortType*',`(($2) ($3))')
|
||||
_CONVERSION(`GtkSortType*',`SortType*',`(($2) ($3))')
|
||||
_CONVERSION(`guint8',`Gtk::StateType',`static_cast<StateType>($3)')
|
||||
|
||||
|
||||
|
||||
# StockID:
|
||||
_CONVERSION(`const Gtk::StockID&',`const char*',`($3).get_c_str()')
|
||||
_CONVERSION(`char*',`StockID',`StockID($3)') # the StockID ctor handles 0
|
||||
|
||||
#
|
||||
# Ptr (gtk+) -> Ptr (gtkmm)
|
||||
define(`__FP2P',`($`'2)Glib::unwrap($`'3)')
|
||||
define(`__RP2P',`Glib::wrap($`'3)')
|
||||
define(`__RP2PD',`Glib::wrap((tran`'slit($`'2,:,))($`'3))')
|
||||
define(`__RP2CPD',`Glib::wrap((tran`'slit(pat`'subst($`'2,^const ,),:,))($`'3))')
|
||||
|
||||
_CONVERSION(`GtkAdjustment*',`Gtk::Adjustment*',__RP2P)
|
||||
_CONVERSION(`GtkAdjustment*',`Adjustment*',__RP2P)
|
||||
_CONVERSION(`GtkWidget*',`Gtk::Widget*',__RP2P)
|
||||
_CONVERSION(`GtkWidget*',`Widget*',__RP2P)
|
||||
_CONVERSION(`GtkWindow*',`Window*',__RP2P)
|
||||
_CONVERSION(`GtkMenu*',`Menu*',__RP2P)
|
||||
|
||||
# Ptr (gtk+) -> const Ptr (gtkmm)
|
||||
_CONVERSION(`GtkAdjustment*',`const Gtk::Adjustment*',__RP2P)
|
||||
_CONVERSION(`GtkAdjustment*',`const Adjustment*',__RP2P)
|
||||
_CONVERSION(`GtkWidget*',`const Gtk::Widget*',__RP2P)
|
||||
_CONVERSION(`GtkWidget*',`const Widget*',__RP2P)
|
||||
_CONVERSION(`GtkWindow*',`const Window*',__RP2P)
|
||||
|
||||
# Style:
|
||||
_CONVERSION(`GtkStyle*',`Glib::RefPtr<Style>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkStyle*',`Glib::RefPtr<const Style>',`Glib::wrap($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<Style>&',`GtkStyle*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`Glib::RefPtr<Style>',`GtkStyle*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`GtkRcStyle*',`Glib::RefPtr<RcStyle>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkRcStyle*',`Glib::RefPtr<const RcStyle>',`Glib::wrap($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<RcStyle>&',`GtkRcStyle*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`Glib::RefPtr<RcStyle>',`GtkRcStyle*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`GtkRcStyle*',`const Glib::RefPtr<RcStyle>&',`Glib::wrap($3)')
|
||||
|
||||
# AccelGroup:
|
||||
_CONVERSION(`GtkAccelGroup*',`Glib::RefPtr<AccelGroup>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkAccelGroup*',`Glib::RefPtr<const AccelGroup>',`Glib::wrap($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<AccelGroup>&',`GtkAccelGroup*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`Gtk::Object&',`GObject*', `($3).Glib::Object::gobj()')
|
||||
|
||||
#
|
||||
# Ptr (Gtkmm) -> Ptr (gtk+)
|
||||
_CONVERSION(`Gtk::Adjustment*',`GtkAdjustment*',__FP2P)
|
||||
_CONVERSION(`Adjustment*',`GtkAdjustment*',__FP2P)
|
||||
_CONVERSION(`Gtk::Widget*',`GtkWidget*',__FP2P)
|
||||
_CONVERSION(`Widget*',`GtkWidget*',__FP2P)
|
||||
_CONVERSION(`Menu*',`GtkMenu*',__FP2P)
|
||||
|
||||
#
|
||||
# Ptr (gtk+) -> Ptr (gtkmm) (downcast)
|
||||
_CONVERSION(`GtkWidget*',`Button*',`Glib::wrap((GtkButton*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`Box*',`Glib::wrap((GtkBox*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`HBox*',`Glib::wrap((GtkHBox*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`VBox*',`Glib::wrap((GtkVBox*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`ColorSelection*',`Glib::wrap((GtkColorSelection*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`Gtk::CheckButton*',__RP2PD)
|
||||
_CONVERSION(`GtkWidget*',`Entry*',`Glib::wrap((GtkEntry*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`FontSelection*',`Glib::wrap((GtkFontSelection*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`Label*',`Glib::wrap((GtkLabel*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`Menu*',`Glib::wrap((GtkMenu*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`MenuItem*',`Glib::wrap((GtkMenuItem*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`OptionMenu*',`Glib::wrap((GtkOptionMenu*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`RadioButton*',`Glib::wrap((GtkRadioButton*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`Gtk::Scrollbar*',__RP2PD)
|
||||
_CONVERSION(`GtkWidget*',`Gtk::HScrollbar*',__RP2PD)
|
||||
_CONVERSION(`GtkWidget*',`Gtk::VScrollbar*',__RP2PD)
|
||||
_CONVERSION(`GtkWidget*',`Table*',`Glib::wrap((GtkTable*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`Gtk::Tree*',__RP2PD)
|
||||
_CONVERSION(`GtkWidget*',`ScrolledWindow*',`Glib::wrap((GtkScrolledWindow*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`Window*',`Glib::wrap((GtkWindow*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`TreeView*',`Glib::wrap((GtkTreeView*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`HButtonBox*',`Glib::wrap((GtkHButtonBox*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`ComboDropDown*',`Glib::wrap((GtkList*)($3))')
|
||||
|
||||
# Ptr (gtk+) -> const Ptr (gtkmm) (downcast)
|
||||
_CONVERSION(`GtkWidget*',`const Button*',`Glib::wrap((GtkButton*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const Box*',`Glib::wrap((GtkBox*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const HBox*',`Glib::wrap((GtkHBox*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const VBox*',`Glib::wrap((GtkVBox*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const ColorSelection*',`Glib::wrap((GtkColorSelection*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const Gtk::CheckButton*',__RP2CPD)
|
||||
_CONVERSION(`GtkWidget*',`const Entry*',`Glib::wrap((GtkEntry*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const FontSelection*',`Glib::wrap((GtkFontSelection*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const Label*',`Glib::wrap((GtkLabel*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const Menu*',`Glib::wrap((GtkMenu*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const MenuItem*',`Glib::wrap((GtkMenuItem*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const OptionMenu*',`Glib::wrap((GtkOptionMenu*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const RadioButton*',`Glib::wrap((GtkRadioButton*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const Gtk::Scrollbar*',__RP2CPD)
|
||||
_CONVERSION(`GtkWidget*',`const Gtk::HScrollbar*',__RP2CPD)
|
||||
_CONVERSION(`GtkWidget*',`const Gtk::VScrollbar*',__RP2CPD)
|
||||
_CONVERSION(`GtkWidget*',`const Table*',`Glib::wrap((GtkTable*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const Gtk::Tree*',__RP2CPD)
|
||||
_CONVERSION(`GtkWidget*',`const ScrolledWindow*',`Glib::wrap((GtkScrolledWindow*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const Window*',`Glib::wrap((GtkWindow*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const TreeView*',`Glib::wrap((GtkTreeView*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const HButtonBox*',`Glib::wrap((GtkHButtonBox*)($3))')
|
||||
_CONVERSION(`GtkWidget*',`const ComboDropDown*',`Glib::wrap((GtkList*)($3))')
|
||||
|
||||
# Ptr (gtk+) -> Ref (Gtkmm)
|
||||
_CONVERSION(`GtkWidget*', `Widget&', `*Glib::wrap($3)')
|
||||
|
||||
# Ref (Gtkmm) -> GtkWidget* Ptr (gtk+)
|
||||
define(`__FR2PD',`($`'3).Gtk::Widget::gobj()')
|
||||
_CONVERSION(`MenuShell&',`GtkWidget*',__FR2PD)
|
||||
_CONVERSION(`MenuItem&',`GtkWidget*',__FR2PD)
|
||||
_CONVERSION(`Menu&',`GtkWidget*',__FR2PD)
|
||||
_CONVERSION(`Gtk::TreeItem&',`GtkWidget*',__FR2PD)
|
||||
|
||||
# Ref (Gtkmm) -> Ptr (gtk+)
|
||||
define(`__FR2P',`($`'3).gobj()')
|
||||
define(`__FCR2P',`const_cast<$`'2>(($`'3).gobj())')
|
||||
_CONVERSION(`Gtk::Adjustment&',`GtkAdjustment*',__FR2P)
|
||||
_CONVERSION(`Adjustment&',`GtkAdjustment*',__FR2P)
|
||||
_CONVERSION(`Gtk::Style&',`GtkStyle*',__FR2P)
|
||||
_CONVERSION(`Gtk::Widget&',`GtkWidget*',__FR2P)
|
||||
_CONVERSION(`Widget&',`GtkWidget*',__FR2P)
|
||||
_CONVERSION(`Window&',`GtkWindow*',__FR2P)
|
||||
_CONVERSION(`CellRenderer&',`GtkCellRenderer*',__FR2P)
|
||||
|
||||
# Glib::ListHandle<> (gtkmm) -> GList (gtk+)
|
||||
_CONVERSION(`const Glib::ListHandle<Glib::ustring>&',`GList*',`$3.data()')
|
||||
_CONVERSION(`const Glib::ListHandle<Widget*>&',`GList*',`$3.data()')
|
||||
_CONVERSION(`const Glib::ListHandle<const Widget*>&',`GList*',`$3.data()')
|
||||
_CONVERSION(`const Glib::ListHandle<Window*>&',`GList*',`$3.data()')
|
||||
|
||||
# GList (gtk+) -> Glib::ListHandle<> (gtkmm)
|
||||
define(`__FL2H_SHALLOW',`$`'2($`'3, Glib::OWNERSHIP_SHALLOW)')
|
||||
_CONVERSION(`GList*',`Glib::ListHandle<Widget*>',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GList*',`Glib::ListHandle<const Widget*>',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GList*',`Glib::ListHandle<Window*>',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GList*',`Glib::ListHandle<TreeViewColumn*>',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GList*',`Glib::ListHandle<const TreeViewColumn*>',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GList*',`Glib::ListHandle<CellRenderer*>',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GList*',`Glib::ListHandle<const CellRenderer*>',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GList*',`Glib::ListHandle<TreeModel::Row>',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GList*',`Glib::ListHandle<const TreeModel::Row>',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GSList*',`Glib::SListHandle< Glib::RefPtr<Tag> >',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GSList*',`Glib::SListHandle< Glib::RefPtr<TextTag> >',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GSList*',`Glib::SListHandle< Glib::RefPtr<TextMark> >',__FL2H_SHALLOW)
|
||||
_CONVERSION(`GSList*',`Glib::SListHandle< Glib::RefPtr<TextBuffer::Mark> >',__FL2H_SHALLOW)
|
||||
|
||||
|
||||
_CONVERSION(`const Widget&',`GtkWidget*',__FCR2P)
|
||||
|
||||
_CONVERSION(`int&',`int*',`&$3',`*$3')
|
||||
|
||||
dnl
|
||||
dnl # These are for fixmegtkconst
|
||||
_CONVERSION(`gdouble*',`const gdouble*',`const_cast<const gdouble*>($3)',`$3')
|
||||
_CONVERSION(`const double*',`gdouble*',`const_cast<gdouble*>($3)',`$3')
|
||||
_CONVERSION(`const guchar*',`guchar*',`const_cast<guchar*>($3)',`$3')
|
||||
|
||||
#_CONVERSION(`GSList*',`const Group&',`Group($3)')
|
||||
_CONVERSION(`GSList*',`Group',`Group($3)')
|
||||
_CONVERSION(`Group&',`GSList*',`$3.group_')
|
||||
_CONVERSION(`Group',`GSList*',`$3.group_')
|
||||
|
||||
_CONVERSION(`Gtk::Item&',`GtkItem*',__FR2P)
|
||||
_CONVERSION(Gtk::Notebook_Helpers::Page*,GtkNotebookPage*,`($1)((void*)($3))',`($2)((void*)($3))')
|
||||
|
||||
_CONVERSION(`GtkSettings*',`Glib::RefPtr<Settings>', Glib::wrap($3))
|
||||
|
||||
_CONVERSION(`IconSet&',`GtkIconSet*',__FR2P)
|
||||
_CONVERSION(`const IconSet&',`GtkIconSet*',`const_cast<GtkIconSet*>(($3).gobj())')
|
||||
_CONVERSION(`GtkIconSet*',`IconSet',`Glib::wrap($3)')
|
||||
_CONVERSION(`IconSource&',`GtkIconSource*',__FR2P)
|
||||
_CONVERSION(`const IconSource&',`const GtkIconSource*',__FR2P)
|
||||
_CONVERSION(`const GtkIconSource*',`const IconSource&',`Glib::wrap(const_cast<GtkIconSource*>($3), true)')
|
||||
|
||||
# gpointer conversions:
|
||||
# There's doesn't seem to be a way to tell g_signal_new that it's a pointer to a gint, for instance:
|
||||
#_CONVERSION(`int*',`gpointer',`($1)$3')
|
||||
#_CONVERSION(`gpointer',`int*',`($1)$3')
|
||||
|
||||
|
||||
# Text:
|
||||
_CONVERSION(`GtkTextTagTable*',`Glib::RefPtr<TextTagTable>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTextTagTable*',`Glib::RefPtr<TagTable>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTextTagTable*',`Glib::RefPtr<TextBuffer::TagTable>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTextTagTable*',`Glib::RefPtr<const TextBuffer::TagTable>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTextMark*',`Glib::RefPtr<Mark>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTextMark*',`Glib::RefPtr<TextBuffer::Mark>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTextMark*',`Glib::RefPtr<const TextBuffer::Mark>',`Glib::wrap($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<Mark>&',`GtkTextMark*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<TextBuffer::Mark>&',`GtkTextMark*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`GtkTextTag*',`Glib::RefPtr<TextTag>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTextTag*',`Glib::RefPtr<const TextTag>',`Glib::wrap($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<TextTag>&',`GtkTextTag*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Tag>&',`GtkTextTag*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<TextBuffer::Tag>&',`GtkTextTag*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`GtkTextBuffer*',`Glib::RefPtr<TextBuffer>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTextBuffer*',`Glib::RefPtr<const TextBuffer>',`Glib::wrap($3)')
|
||||
_CONVERSION(`TextIter&',`GtkTextIter*',__FR2P)
|
||||
_CONVERSION(`TextBuffer::iterator&',`GtkTextIter*',__FR2P)
|
||||
_CONVERSION(`iterator&',`GtkTextIter*',__FR2P)
|
||||
_CONVERSION(`const TextIter&',`const GtkTextIter*',__FR2P)
|
||||
_CONVERSION(`const TextBuffer::iterator&',`const GtkTextIter*',__FR2P)
|
||||
_CONVERSION(`const iterator&',`const GtkTextIter*',__FR2P)
|
||||
_CONVERSION(`TextAttributes&',`GtkTextAttributes*',__FR2P)
|
||||
_CONVERSION(`GtkTextAttributes*',`TextAttributes',TextAttributes($3))
|
||||
_CONVERSION(`const Glib::RefPtr<TextTagTable>&',`GtkTextTagTable*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<TextBuffer>&',`GtkTextBuffer*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<TextChildAnchor>&',`GtkTextChildAnchor*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`GtkTextChildAnchor*',`Glib::RefPtr<TextChildAnchor>',`Glib::wrap($3)')
|
||||
|
||||
# Tree:
|
||||
_CONVERSION(`const TreeIter&',`const GtkTreeIter*',__FR2P)
|
||||
_CONVERSION(`const iterator&',`const GtkTreeIter*',__FR2P)
|
||||
_CONVERSION(`const TreeIter&',`GtkTreeIter*',__FCR2P)
|
||||
_CONVERSION(`const iterator&',`GtkTreeIter*',__FCR2P)
|
||||
_CONVERSION(`const TreeModel::Row&',`GtkTreeIter*',__FCR2P)
|
||||
_CONVERSION(`iterator&',`GtkTreeIter*',__FR2P)
|
||||
_CONVERSION(`const TreeModel::iterator&',`GtkTreeIter*',__FCR2P)
|
||||
_CONVERSION(`TreeViewColumn&',`GtkTreeViewColumn*',__FR2P)
|
||||
_CONVERSION(`GtkTreeViewColumn*',`TreeViewColumn*',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTreeViewColumn*',`const TreeViewColumn*',`Glib::wrap($3)')
|
||||
_CONVERSION(`TreePath&',`GtkTreePath*',__FR2P)
|
||||
_CONVERSION(`const TreePath&',`const GtkTreePath*',__FR2P)
|
||||
_CONVERSION(`const TreePath&',`GtkTreePath*',__FCR2P)
|
||||
_CONVERSION(`const Path&',`GtkTreePath*',__FCR2P)
|
||||
_CONVERSION(`const TreeModel::Path&',`GtkTreePath*',__FCR2P)
|
||||
_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTreeView*',`const TreeView*',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTreeModel*',`Glib::RefPtr<TreeModel>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTreeModel*',`Glib::RefPtr<const TreeModel>',`Glib::wrap($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<TreeModel>&',`GtkTreeModel*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`GtkTreeSelection*',`Glib::RefPtr<TreeSelection>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkTreeSelection*',`Glib::RefPtr<const TreeSelection>',`Glib::wrap($3)')
|
||||
_CONVERSION(`const TreeModelColumnBase&',`int',`($3).index`'()')
|
||||
_CONVERSION(`GtkTreePath*',`TreePath', `Gtk::TreePath($3, false)')
|
||||
_CONVERSION(`GtkTreePath*',`Path', `Gtk::TreePath($3, false)')
|
||||
_CONVERSION(`GtkTreePath*',`TreeModel::Path', `Gtk::TreePath($3, false)')
|
||||
_CONVERSION(`GtkIconSet*&',`GtkIconSet**',`&($3)')
|
||||
_CONVERSION(`GtkIconSize&',`GtkIconSize*',`&($3)')
|
||||
_CONVERSION(`GtkCellEditable*',`CellEditable*',`dynamic_cast<$2>(Glib::wrap_auto((GObject*)($3), false))')
|
||||
_CONVERSION(`CellEditable*',`GtkCellEditable*',`Glib::unwrap($3)')
|
||||
|
||||
|
||||
|
||||
#_CONVERSION(`Clipboard&',`GtkClipboard*',`($3).gobj()')
|
||||
_CONVERSION(`GtkClipboard*',`Glib::RefPtr<Clipboard>',`Glib::wrap($3)')
|
||||
_CONVERSION(`GtkClipboard*',`Glib::RefPtr<const Clipboard>',`Glib::wrap($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<Clipboard>&',`GtkClipboard*',__CONVERT_REFPTR_TO_P($3))
|
||||
#_CONVERSION(`GtkClipboard*',`Gtk::Clipboard&',`Glib::wrap($3, true)')
|
||||
|
||||
_CONVERSION(`SelectionData',`GtkSelectionData*', `($3).gobj()')
|
||||
_CONVERSION(`const SelectionData&',`GtkSelectionData*', __FCR2P)
|
||||
_CONVERSION(`SelectionData&',`GtkSelectionData*', __FR2P)
|
||||
#_CONVERSION(`GtkSelectionData*',`SelectionData', `Gtk::SelectionData(($3), true)')
|
||||
|
||||
|
||||
# Used by Signals:
|
||||
_CONVERSION(`GtkTextIter*',`const TextIter&',Glib::wrap($3))
|
||||
_CONVERSION(`GtkTextIter*',`const TextBuffer::iterator&',Glib::wrap($3))
|
||||
_CONVERSION(`const GtkTextIter*',`const TextIter&',Glib::wrap($3))
|
||||
_CONVERSION(`const GtkTextIter*',`const TextBuffer::iterator&',Glib::wrap($3))
|
||||
_CONVERSION(`const TextIter&',`GtkTextIter*',__FCR2P)
|
||||
_CONVERSION(`const TextBuffer::iterator&',`GtkTextIter*',__FCR2P)
|
||||
_CONVERSION(`GtkTextChildAnchor*',`const Glib::RefPtr<TextChildAnchor>&',`Glib::wrap($3, true)')
|
||||
_CONVERSION(`GtkTextMark*',`const Glib::RefPtr<Mark>&',`Glib::wrap($3, true)')
|
||||
_CONVERSION(`GtkTextMark*',`const Glib::RefPtr<TextBuffer::Mark>&',`Glib::wrap($3, true)')
|
||||
_CONVERSION(`GtkTextTag*',`const Glib::RefPtr<TextTag>&',`Glib::wrap($3, true)')
|
||||
_CONVERSION(`GtkTextTag*',`const Glib::RefPtr<TextBuffer::Tag>&',`Glib::wrap($3, true)')
|
||||
_CONVERSION(`GObject*',`const Glib::RefPtr<Glib::Object>&',`Glib::wrap($3, true)')
|
||||
_CONVERSION(`GtkTreePath*',`const TreeModel::Path&',`Gtk::TreePath($3, true)')
|
||||
_CONVERSION(`GtkTreePath*',`const Path&',`Gtk::TreePath($3, true)')
|
||||
_CONVERSION(`TreeViewColumn*',`GtkTreeViewColumn*',__FP2P)
|
||||
_CONVERSION(`GtkStyle*',`const Glib::RefPtr<Style>&',`Glib::wrap($3, true)')
|
||||
|
||||
|
||||
|
||||
_CONVERSION(`AlignmentEnum',`float',`_gtkmm_align_float_from_enum($3)')
|
||||
|
||||
|
||||
|
||||
8
libs/glibmm2/tools/m4/convert_gtkmm.m4
Normal file
8
libs/glibmm2/tools/m4/convert_gtkmm.m4
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
dnl $Id: convert_gtkmm.m4 2 2003-01-07 16:59:16Z murrayc $
|
||||
|
||||
include(convert_base.m4)
|
||||
include(convert_gtk.m4)
|
||||
include(convert_pango.m4)
|
||||
include(convert_gdk.m4)
|
||||
include(convert_atk.m4)
|
||||
include(convert_glib.m4)
|
||||
137
libs/glibmm2/tools/m4/convert_pango.m4
Normal file
137
libs/glibmm2/tools/m4/convert_pango.m4
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
|
||||
# Enums:
|
||||
_CONV_ENUM(Pango,AttrType)
|
||||
_CONV_ENUM(Pango,Underline)
|
||||
_CONV_ENUM(Pango,Direction)
|
||||
_CONV_ENUM(Pango,CoverageLevel)
|
||||
_CONV_ENUM(Pango,Style)
|
||||
_CONV_ENUM(Pango,Variant)
|
||||
_CONV_ENUM(Pango,Stretch)
|
||||
_CONV_ENUM(Pango,Weight)
|
||||
_CONV_ENUM(Pango,FontMask)
|
||||
_CONV_ENUM(Pango,Alignment)
|
||||
_CONV_ENUM(Pango,WrapMode)
|
||||
_CONV_ENUM(Pango,TabAlign)
|
||||
|
||||
|
||||
# General conversions:
|
||||
_CONVERSION(`gchar*',`const char*',`($3)')
|
||||
_CONVERSION(`guchar*&',`guchar**',`&($3)')
|
||||
_CONVERSION(`int*&',`int**',`&($3)')
|
||||
|
||||
|
||||
# Wrapper type conversions:
|
||||
_CONVERSION(`PangoLanguage*',`Language',`Language($3)')
|
||||
_CONVERSION(`PangoLanguage*',`Pango::Language',`Pango::Language($3)')
|
||||
_CONVERSION(`const Language&',`const PangoLanguage*',`($3).gobj()')
|
||||
_CONVERSION(`const Language&',`PangoLanguage*',`const_cast<PangoLanguage*>(`($3).gobj()')')
|
||||
|
||||
_CONVERSION(`Rectangle&',`PangoRectangle*',`($3).gobj()')
|
||||
_CONVERSION(`Rectangle',`PangoRectangle',`*($3).gobj()')
|
||||
_CONVERSION(`PangoRectangle',`Rectangle',`Rectangle(&($3))')
|
||||
|
||||
_CONVERSION(`Color&',`PangoColor*',`($3).gobj()')
|
||||
_CONVERSION(`const Color&',`const PangoColor*',`($3).gobj()')
|
||||
_CONVERSION(`Color',`PangoColor',`*($3).gobj()')
|
||||
_CONVERSION(`PangoColor',`Color',`Color(&($3))')
|
||||
|
||||
_CONVERSION(`PangoFontDescription*',`FontDescription',`FontDescription(($3))')
|
||||
_CONVERSION(`Pango::FontDescription&',`PangoFontDescription*',`($3).gobj()')
|
||||
_CONVERSION(`FontDescription&',`PangoFontDescription*',`($3).gobj()')
|
||||
_CONVERSION(`const FontDescription&',`const PangoFontDescription*',`($3).gobj()')
|
||||
_CONVERSION(`const Pango::FontDescription&',`PangoFontDescription*',`const_cast<PangoFontDescription*>(`($3).gobj()')')
|
||||
_CONVERSION(`const FontDescription&',`PangoFontDescription*',`const_cast<PangoFontDescription*>(`($3).gobj()')')
|
||||
|
||||
_CONVERSION(`PangoFontMetrics*',`FontMetrics',`FontMetrics(($3))')
|
||||
|
||||
_CONVERSION(`PangoAttribute*',`Attribute',`Attribute(($3))')
|
||||
_CONVERSION(`Attribute&',`PangoAttribute*',`($3).gobj()')
|
||||
_CONVERSION(`const Attribute&',`const PangoAttribute*',`($3).gobj()')
|
||||
|
||||
_CONVERSION(`PangoAttrList*',`AttrList',`AttrList(($3))')
|
||||
_CONVERSION(`PangoAttrList*',`Pango::AttrList',`Pango::AttrList(($3))')
|
||||
_CONVERSION(`AttrList&',`PangoAttrList*',`($3).gobj()')
|
||||
_CONVERSION(`Pango::AttrList&',`PangoAttrList*',`($3).gobj()')
|
||||
|
||||
_CONVERSION(`PangoAttrIterator*',`AttrIter',`Glib::wrap(($3))')
|
||||
|
||||
_CONVERSION(`PangoAnalysis',`Analysis',`Analysis(&($3))')
|
||||
_CONVERSION(`PangoAnalysis',`const Analysis',`Analysis(&($3))')
|
||||
_CONVERSION(`Analysis&',`PangoAnalysis*',`($3).gobj()')
|
||||
_CONVERSION(`const Analysis&',`const PangoAnalysis*',`($3).gobj()')
|
||||
_CONVERSION(`const Analysis&',`PangoAnalysis*',`const_cast<PangoAnalysis*>(($3).gobj())')
|
||||
|
||||
_CONVERSION(`PangoItem*',`Item',`Item(($3))')
|
||||
_CONVERSION(`PangoItem*',`const Item',`Item(($3))')
|
||||
_CONVERSION(`Item&',`PangoItem*',`($3).gobj()')
|
||||
_CONVERSION(`const Item&',`const PangoItem*',`($3).gobj()')
|
||||
|
||||
_EQUAL(`PangoGlyph',`Glyph')
|
||||
_EQUAL(`PangoGlyphUnit',`GlyphUnit')
|
||||
_EQUAL(`PangoGlyphVisAttr',`GlyphVisAttr')
|
||||
#_CONVERSION(`PangoGlyphVisAttr',`GlyphVisAttr',`GlyphVisAttr(&($3))')
|
||||
#_CONVERSION(`GlyphVisAttr',`PangoGlyphVisAttr',`*($3).gobj()')
|
||||
_CONVERSION(`PangoGlyphGeometry',`GlyphGeometry',`GlyphGeometry(&($3))')
|
||||
_CONVERSION(`GlyphGeometry',`PangoGlyphGeometry',`*($3).gobj()')
|
||||
|
||||
_CONVERSION(`PangoGlyphString*',`GlyphString',`GlyphString(($3))')
|
||||
_CONVERSION(`PangoGlyphString*',`const GlyphString',`GlyphString(($3))')
|
||||
|
||||
_CONVERSION(`PangoFont*',`Glib::RefPtr<Font>',Glib::wrap($3))
|
||||
_CONVERSION(`PangoFont*',`Glib::RefPtr<Pango::Font>',Glib::wrap($3))
|
||||
_CONVERSION(`PangoFont*',`Glib::RefPtr<const Font>',Glib::wrap($3))
|
||||
_CONVERSION(`PangoFont*',`Glib::RefPtr<const Pango::Font>',Glib::wrap($3))
|
||||
_CONVERSION(`const Glib::RefPtr<Font>&',`PangoFont*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Pango::Font>&',`PangoFont*',__CONVERT_REFPTR_TO_P)
|
||||
# Special treatment for the Sun Forte compiler
|
||||
#_CONVERSION(const Glib::RefPtr<const Font>&,`PangoFont*',__CONVERT_CONST_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<const Font>&',`PangoFont*',__CONVERT_CONST_REFPTR_TO_P_SUN(Font))
|
||||
#_CONVERSION(`const Glib::RefPtr<const Font>&',`PangoFont*',__CONVERT_CONST_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<const Pango::Font>&',`PangoFont*',__CONVERT_CONST_REFPTR_TO_P_SUN(Pango::Font))
|
||||
|
||||
_CONVERSION(`PangoFontMap*',`Glib::RefPtr<FontMap>',Glib::wrap($3))
|
||||
_CONVERSION(`const Glib::RefPtr<FontMap>&',`PangoFontMap*',__CONVERT_REFPTR_TO_P)
|
||||
|
||||
_CONVERSION(`PangoFontSet*',`Glib::RefPtr<FontSet>',Glib::wrap($3))
|
||||
_CONVERSION(`const Glib::RefPtr<FontSet>&',`PangoFontSet*',__CONVERT_REFPTR_TO_P)
|
||||
|
||||
_CONVERSION(`PangoContext*',`Glib::RefPtr<Pango::Context>',Glib::wrap($3))
|
||||
_CONVERSION(`PangoContext*',`Glib::RefPtr<Context>',Glib::wrap($3))
|
||||
_CONVERSION(`const Glib::RefPtr<Context>&',`PangoContext*',__CONVERT_REFPTR_TO_P)
|
||||
|
||||
_CONVERSION(`PangoLayout*',`Glib::RefPtr<Pango::Layout>',Glib::wrap($3))
|
||||
_CONVERSION(`PangoLayout*',`Glib::RefPtr<const Pango::Layout>',Glib::wrap($3))
|
||||
_CONVERSION(`PangoLayout*',`Glib::RefPtr<Layout>',Glib::wrap($3))
|
||||
_CONVERSION(`PangoLayout*',`const Glib::RefPtr<Pango::Layout>&',Glib::wrap($3))
|
||||
_CONVERSION(`const Glib::RefPtr<Layout>&',`PangoLayout*',__CONVERT_REFPTR_TO_P)
|
||||
_CONVERSION(`const Glib::RefPtr<Pango::Layout>&',`PangoLayout*',__CONVERT_REFPTR_TO_P)
|
||||
# Special treatment for the Sun Forte compiler
|
||||
_CONVERSION(`const Glib::RefPtr<const Pango::Layout>&',`PangoLayout*',__CONVERT_CONST_REFPTR_TO_P_SUN(Pango::Layout))
|
||||
_CONVERSION(`const Glib::RefPtr<const Layout>&',`PangoLayout*',__CONVERT_CONST_REFPTR_TO_P_SUN(Layout))
|
||||
|
||||
_CONVERSION(`PangoLayoutLine*',`Glib::RefPtr<Pango::LayoutLine>',`Glib::wrap($3)')
|
||||
_CONVERSION(`PangoLayoutLine*',`Glib::RefPtr<LayoutLine>',`Glib::wrap($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<Pango::LayoutLine>&',`PangoLayoutLine*',__CONVERT_REFPTR_TO_P)
|
||||
# Special treatment for the Sun Forte compiler
|
||||
_CONVERSION(`const Glib::RefPtr<const Pango::LayoutLine>&',`PangoLayoutLine*',__CONVERT_CONST_REFPTR_TO_P_SUN(Pango::LayoutLine))
|
||||
_CONVERSION(`const Glib::RefPtr<const LayoutLine>&',`PangoLayoutLine*',__CONVERT_CONST_REFPTR_TO_P_SUN(LayoutLine))
|
||||
|
||||
_CONVERSION(`PangoLayoutRun*',`LayoutRun',Glib::wrap($3))
|
||||
|
||||
_CONVERSION(`PangoLayoutIter*',`LayoutIter',`LayoutIter($3)')
|
||||
|
||||
_CONVERSION(`PangoCoverage*',`Glib::RefPtr<Coverage>',`Glib::wrap($3)')
|
||||
_CONVERSION(`const Glib::RefPtr<Coverage>&',`PangoCoverage*',`Glib::unwrap($3)')
|
||||
|
||||
_CONVERSION(`PangoTabArray*',`Pango::TabArray',`Pango::TabArray(($3))')
|
||||
_CONVERSION(`PangoTabArray*',`TabArray',`TabArray(($3))')
|
||||
_CONVERSION(`Pango::TabArray&',`PangoTabArray*',($3).gobj())
|
||||
_CONVERSION(`TabArray&',`PangoTabArray*',($3).gobj())
|
||||
|
||||
_CONVERSION(`PangoTabAlign&',`PangoTabAlign*',`&$3',`*$3')
|
||||
_CONVERSION(`Pango::TabAlign&',`PangoTabAlign*',`((PangoTabAlign*) &($3))')
|
||||
_CONVERSION(`TabAlign&',`PangoTabAlign*',`((PangoTabAlign*) &($3))')
|
||||
|
||||
define(`__FL2H_SHALLOW',`$`'2($`'3, Glib::OWNERSHIP_SHALLOW)')
|
||||
_CONVERSION(`GSList*',`SListHandle_LayoutLine',__FL2H_SHALLOW)
|
||||
|
||||
59
libs/glibmm2/tools/m4/ctor.m4
Normal file
59
libs/glibmm2/tools/m4/ctor.m4
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
dnl $Id: ctor.m4 376 2007-01-28 22:22:16Z daniel $
|
||||
dnl
|
||||
dnl M4 macros for constructor generation.
|
||||
dnl
|
||||
|
||||
dnl Declares and implements the default constructor
|
||||
dnl
|
||||
m4_define(`_CTOR_DEFAULT',`dnl
|
||||
__CPPNAME__`'();
|
||||
_PUSH(SECTION_CC)
|
||||
__CPPNAME__::__CPPNAME__`'()
|
||||
:
|
||||
// Mark this class as non-derived to allow C++ vfuncs to be skipped.
|
||||
Glib::ObjectBase(0),
|
||||
__CPPPARENT__`'(Glib::ConstructParams(__BASE__`'_class_.init()))
|
||||
{
|
||||
_IMPORT(SECTION_CC_INITIALIZE_CLASS_EXTRA)
|
||||
}
|
||||
|
||||
_POP()')
|
||||
|
||||
dnl Constructors with property initializations.
|
||||
dnl
|
||||
dnl _CTOR_IMPL(cppname, cname, cppargs, c_varargs)
|
||||
dnl $1 $2 $3 $4
|
||||
dnl
|
||||
m4_define(`_CTOR_IMPL',`dnl
|
||||
_PUSH(SECTION_CC)
|
||||
__CPPNAME__::$1`'($3)
|
||||
:
|
||||
// Mark this class as non-derived to allow C++ vfuncs to be skipped.
|
||||
Glib::ObjectBase(0),
|
||||
__CPPPARENT__`'(Glib::ConstructParams(__BASE__`'_class_.init()m4_ifelse(`$4',,,`, $4, static_cast<char*>(0)')))
|
||||
{
|
||||
_IMPORT(SECTION_CC_INITIALIZE_CLASS_EXTRA)
|
||||
}
|
||||
|
||||
_POP()')
|
||||
|
||||
m4_define(`_CONSTRUCT',
|
||||
`// Mark this class as non-derived to allow C++ vfuncs to be skipped.
|
||||
Glib::ObjectBase(0),
|
||||
__CPPPARENT__`'(Glib::ConstructParams(__BASE__`'_class_.init()m4_ifelse(`$1',,,`, $@, static_cast<char*>(0)')))')
|
||||
|
||||
dnl _CONSTRUCT() does not deal with multiple class definitions in one file.
|
||||
dnl If necessary, _CONSTRUCT_SPECIFIC(BaseClass, Class) must be used instead.
|
||||
dnl
|
||||
m4_define(`_CONSTRUCT_SPECIFIC',
|
||||
`// Mark this class as non-derived to allow C++ vfuncs to be skipped.
|
||||
Glib::ObjectBase(0),
|
||||
$1`'(Glib::ConstructParams(_LOWER(`$2')_class_.init()m4_ifelse(`$3',,,`, m4_shift(m4_shift($@)), static_cast<char*>(0)')))')
|
||||
|
||||
dnl Extra code for initialize_class.
|
||||
dnl Not commonly used.
|
||||
dnl
|
||||
m4_define(`_INITIALIZE_CLASS_EXTRA',`dnl
|
||||
_PUSH(SECTION_CC_INITIALIZE_CLASS_EXTRA)
|
||||
$1
|
||||
_POP()')
|
||||
3
libs/glibmm2/tools/m4/doc.m4
Normal file
3
libs/glibmm2/tools/m4/doc.m4
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
dnl $Id: doc.m4 2 2003-01-07 16:59:16Z murrayc $
|
||||
|
||||
divert(-1)
|
||||
101
libs/glibmm2/tools/m4/enum.m4
Normal file
101
libs/glibmm2/tools/m4/enum.m4
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
|
||||
dnl
|
||||
dnl _ENUM(cpp_type, c_type, value_suffix, `element_list', `flags', `optional_refdoc_comment', 'get_type_function_name')
|
||||
dnl
|
||||
m4_define(`_ENUM',`dnl
|
||||
_PUSH()
|
||||
|
||||
m4_define(`__ENUM_CPPNAME__',`$1')
|
||||
m4_define(`__ENUM_CNAME__',`$2')
|
||||
m4_define(`__ENUM_VALUE_BASE__',`Glib::Value_$3<__NAMESPACE__::__ENUM_CPPNAME__>')
|
||||
|
||||
_POP()
|
||||
dnl
|
||||
dnl // Define a new Doxygen group if this is the first enum in the file.
|
||||
dnl
|
||||
m4_ifdef(`__DOCGROUP_'__MODULE_CANONICAL__`_ENUMS__',,`dnl else
|
||||
m4_define(`__DOCGROUP_'__MODULE_CANONICAL__`_ENUMS__')dnl
|
||||
/** @addtogroup '__MODULE_CANONICAL__`Enums Enums and Flags */
|
||||
|
||||
')dnl endif
|
||||
dnl
|
||||
dnl
|
||||
/**$6
|
||||
* @ingroup __MODULE_CANONICAL__`'Enums
|
||||
m4_ifelse($3,Flags,`dnl
|
||||
* @par Bitwise operators:
|
||||
* <tt>%__ENUM_CPPNAME__ operator|(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
|
||||
* <tt>%__ENUM_CPPNAME__ operator&(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
|
||||
* <tt>%__ENUM_CPPNAME__ operator^(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
|
||||
* <tt>%__ENUM_CPPNAME__ operator~(__ENUM_CPPNAME__)</tt><br>
|
||||
* <tt>%__ENUM_CPPNAME__& operator|=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
|
||||
* <tt>%__ENUM_CPPNAME__& operator&=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
|
||||
* <tt>%__ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
|
||||
')dnl endif
|
||||
*/
|
||||
enum __ENUM_CPPNAME__
|
||||
{
|
||||
$4
|
||||
};
|
||||
m4_ifelse($3,Flags,`dnl
|
||||
|
||||
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
||||
inline __ENUM_CPPNAME__ operator|(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
|
||||
{ return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
|
||||
|
||||
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
||||
inline __ENUM_CPPNAME__ operator&(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
|
||||
{ return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
|
||||
|
||||
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
||||
inline __ENUM_CPPNAME__ operator^(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
|
||||
{ return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
|
||||
|
||||
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
||||
inline __ENUM_CPPNAME__ operator~(__ENUM_CPPNAME__ flags)
|
||||
{ return static_cast<__ENUM_CPPNAME__>(~static_cast<unsigned>(flags)); }
|
||||
|
||||
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
||||
inline __ENUM_CPPNAME__& operator|=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
|
||||
{ return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
|
||||
|
||||
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
||||
inline __ENUM_CPPNAME__& operator&=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
|
||||
{ return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
|
||||
|
||||
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
||||
inline __ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
|
||||
{ return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
|
||||
')dnl endif Flags
|
||||
|
||||
m4_ifelse($5,`NO_GTYPE',,`dnl else
|
||||
__NAMESPACE_END__
|
||||
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
template <>
|
||||
class Value<__NAMESPACE__::__ENUM_CPPNAME__> : public __ENUM_VALUE_BASE__
|
||||
{
|
||||
public:
|
||||
static GType value_type() G_GNUC_CONST;
|
||||
};
|
||||
|
||||
} // namespace Glib
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
_PUSH(SECTION_SRC_GENERATED)
|
||||
// static
|
||||
GType Glib::Value<__NAMESPACE__::__ENUM_CPPNAME__>::value_type()
|
||||
{
|
||||
return _GET_TYPE_FUNC(__ENUM_CNAME__);
|
||||
}
|
||||
|
||||
_POP()
|
||||
')dnl endif !NO_GTYPE
|
||||
')dnl enddef _ENUM
|
||||
|
||||
102
libs/glibmm2/tools/m4/gerror.m4
Normal file
102
libs/glibmm2/tools/m4/gerror.m4
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
dnl $Id: gerror.m4 291 2006-05-12 08:08:45Z murrayc $
|
||||
|
||||
dnl
|
||||
dnl _GERROR(PixbufError,GdkPixbufError,GDK_PIXBUF_ERROR,`<enum_value_list>',[NO_GTYPE])
|
||||
dnl
|
||||
|
||||
m4_define(`_GERROR',`dnl
|
||||
_PUSH()
|
||||
dnl
|
||||
dnl Define the args for later macros
|
||||
m4_define(`__CPPNAME__',`$1')
|
||||
m4_define(`__CNAME__',`$2')
|
||||
m4_define(`__CQUARK__',`$3')
|
||||
m4_define(`__VALUE_BASE__',`Glib::Value_Enum<__NAMESPACE__::__CPPNAME__::Code>')
|
||||
_POP()
|
||||
class __CPPNAME__ : public Glib::Error
|
||||
{
|
||||
public:
|
||||
enum Code
|
||||
{
|
||||
$4
|
||||
};
|
||||
|
||||
__CPPNAME__`'(Code error_code, const Glib::ustring& error_message);
|
||||
explicit __CPPNAME__`'(GError* gobject);
|
||||
Code code() const;
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
private:
|
||||
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
static void throw_func(GError* gobject);
|
||||
#else
|
||||
//When not using exceptions, we just pass the Exception object around without throwing it:
|
||||
static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
|
||||
friend void wrap_init(); // uses throw_func()
|
||||
#endif
|
||||
};
|
||||
|
||||
m4_ifelse($5,`NO_GTYPE',,`dnl else
|
||||
__NAMESPACE_END__
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
namespace Glib
|
||||
{
|
||||
|
||||
template <>
|
||||
class Value<__NAMESPACE__::__CPPNAME__::Code> : public __VALUE_BASE__
|
||||
{
|
||||
public:
|
||||
static GType value_type() G_GNUC_CONST;
|
||||
};
|
||||
|
||||
} // namespace Glib
|
||||
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
|
||||
|
||||
|
||||
__NAMESPACE_BEGIN__
|
||||
')dnl endif !NO_GTYPE
|
||||
_PUSH(SECTION_SRC_GENERATED)
|
||||
|
||||
__NAMESPACE__::__CPPNAME__::__CPPNAME__`'(__NAMESPACE__::__CPPNAME__::Code error_code, const Glib::ustring& error_message)
|
||||
:
|
||||
Glib::Error (__CQUARK__, error_code, error_message)
|
||||
{}
|
||||
|
||||
__NAMESPACE__::__CPPNAME__::__CPPNAME__`'(GError* gobject)
|
||||
:
|
||||
Glib::Error (gobject)
|
||||
{}
|
||||
|
||||
__NAMESPACE__::__CPPNAME__::Code __NAMESPACE__::__CPPNAME__::code() const
|
||||
{
|
||||
return static_cast<Code>(Glib::Error::code());
|
||||
}
|
||||
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
void __NAMESPACE__::__CPPNAME__::throw_func(GError* gobject)
|
||||
{
|
||||
throw __NAMESPACE__::__CPPNAME__`'(gobject);
|
||||
}
|
||||
#else
|
||||
//When not using exceptions, we just pass the Exception object around without throwing it:
|
||||
std::auto_ptr<Glib::Error> __NAMESPACE__::__CPPNAME__::throw_func(GError* gobject)
|
||||
{
|
||||
return std::auto_ptr<Glib::Error>(new __NAMESPACE__::__CPPNAME__`'(gobject));
|
||||
}
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
|
||||
m4_ifelse($5,`NO_GTYPE',,`dnl else
|
||||
// static
|
||||
GType Glib::Value<__NAMESPACE__::__CPPNAME__::Code>::value_type()
|
||||
{
|
||||
return _GET_TYPE_FUNC(__CNAME__);
|
||||
}
|
||||
|
||||
')dnl endif !NO_GTYPE
|
||||
_POP()
|
||||
') dnl enddef _GERROR
|
||||
|
||||
230
libs/glibmm2/tools/m4/list.m4
Normal file
230
libs/glibmm2/tools/m4/list.m4
Normal file
|
|
@ -0,0 +1,230 @@
|
|||
_PUSH()
|
||||
|
||||
dnl
|
||||
dnl These variables affect the generation of the list
|
||||
dnl
|
||||
define(GP_LIST_HELPER_NAMESPACE,`define(`__LIST_NAMESPACE__',$1)')
|
||||
define(GP_LIST_ELEM,`define(`__LISTELEM__',`$*')')
|
||||
define(GP_LIST_ITER,`define(`__LISTITER__',`$*')')
|
||||
define(GP_LIST_NOINSERT,`define(`__LISTEO__')')
|
||||
|
||||
dnl
|
||||
dnl GP_LIST(ListName, ParentCppType, ParentCType, ChildCppType, FieldNameC)
|
||||
dnl
|
||||
dnl In the .ccg file, you'll need to implement:
|
||||
dnl iterator insert(iterator position, element_type& e);
|
||||
dnl
|
||||
dnl Fieldname assumed to be children if not specified
|
||||
define(GP_LIST,`
|
||||
_PUSH()
|
||||
|
||||
define(`__LISTNAME__',$1)
|
||||
define(`__LISTPARENT__',$2)
|
||||
define(`__LISTPARENT_G__',$3)
|
||||
define(`__LISTTYPE__',$4)
|
||||
define(`__LISTELEM__',const Element)
|
||||
define(`__LISTITER__',Glib::List_Iterator< __LISTTYPE__ >)
|
||||
define(`__LIST_NAMESPACE__',$2_Helpers)
|
||||
#define(`__LISTFIELD__',ifelse($5,,children,$5))
|
||||
define(`__LISTFIELD__',$5)
|
||||
|
||||
_SECTION(SECTION_USR)
|
||||
')
|
||||
|
||||
dnl
|
||||
dnl GP_LIST_END()
|
||||
dnl
|
||||
dnl Closes a list
|
||||
define(GP_LIST_END,`dnl
|
||||
_POP()
|
||||
|
||||
class __LISTNAME__ : public Glib::HelperList< __LISTTYPE__, __LISTELEM__, __LISTITER__ >
|
||||
{
|
||||
public:
|
||||
__LISTNAME__`'();
|
||||
explicit __LISTNAME__`'(__LISTPARENT_G__* gparent);
|
||||
__LISTNAME__`'(const __LISTNAME__& src);
|
||||
virtual ~__LISTNAME__`'() {}
|
||||
|
||||
__LISTNAME__& operator=(const __LISTNAME__& src);
|
||||
|
||||
typedef Glib::HelperList< __LISTTYPE__, __LISTELEM__, __LISTITER__ > type_base;
|
||||
|
||||
__LISTPARENT_G__* gparent();
|
||||
const __LISTPARENT_G__* gparent() const;
|
||||
|
||||
virtual GList*& glist() const; // front of list
|
||||
|
||||
virtual void erase(iterator start, iterator stop);
|
||||
virtual iterator erase(iterator); //Implented as custom or by LIST_CONTAINER_REMOVE
|
||||
virtual void remove(const_reference); //Implented as custom or by LIST_CONTAINER_REMOVE
|
||||
|
||||
/// This is order n. (use at own risk)
|
||||
reference operator[](size_type l) const;
|
||||
|
||||
ifdef(`__LISTEO__',`dnl
|
||||
protected:
|
||||
//Hide these because it's read-only:
|
||||
iterator insert(iterator position, element_type& e);
|
||||
|
||||
inline void pop_front();
|
||||
inline void pop_back();
|
||||
,`dnl
|
||||
public:
|
||||
iterator insert(iterator position, element_type& e); //custom-implemented.
|
||||
|
||||
template <class InputIterator>
|
||||
inline void insert(iterator position, InputIterator first, InputIterator last)
|
||||
{
|
||||
for(;first != last; ++first)
|
||||
position = insert(position, *first);
|
||||
}
|
||||
|
||||
inline void push_front(element_type& e)
|
||||
{ insert(begin(), e); }
|
||||
inline void push_back(element_type& e)
|
||||
{ insert(end(), e); }
|
||||
')dnl
|
||||
|
||||
_IMPORT(SECTION_USR)
|
||||
};
|
||||
|
||||
_PUSH(SECTION_CC)
|
||||
|
||||
namespace __LIST_NAMESPACE__
|
||||
{
|
||||
|
||||
__LISTNAME__::__LISTNAME__`'()
|
||||
{}
|
||||
|
||||
__LISTNAME__::__LISTNAME__`'(__LISTPARENT_G__* gparent)
|
||||
: type_base((GObject*)gparent)
|
||||
{}
|
||||
|
||||
__LISTNAME__::__LISTNAME__`'(const __LISTNAME__& src)
|
||||
:
|
||||
type_base(src)
|
||||
{}
|
||||
|
||||
__LISTNAME__& __LISTNAME__::operator=(const __LISTNAME__& src)
|
||||
{
|
||||
type_base::operator=(src);
|
||||
return *this;
|
||||
}
|
||||
|
||||
ifelse(__LISTFIELD__,CUSTOM,`dnl
|
||||
',`dnl else
|
||||
GList*& __LISTNAME__::glist() const
|
||||
{
|
||||
return ((__LISTPARENT_G__*)gparent_)->__LISTFIELD__;
|
||||
}
|
||||
')dnl endif
|
||||
|
||||
void __LISTNAME__::erase(iterator start, iterator stop)
|
||||
{
|
||||
type_base::erase(start, stop);
|
||||
}
|
||||
|
||||
__LISTPARENT_G__* __LISTNAME__::gparent()
|
||||
{
|
||||
return (__LISTPARENT_G__*)type_base::gparent();
|
||||
}
|
||||
|
||||
const __LISTPARENT_G__* __LISTNAME__::gparent() const
|
||||
{
|
||||
return (__LISTPARENT_G__*)type_base::gparent();
|
||||
}
|
||||
|
||||
__LISTNAME__::reference __LISTNAME__::operator[](size_type l) const
|
||||
{
|
||||
return type_base::operator[](l);
|
||||
}
|
||||
|
||||
} /* namespace __LIST_NAMESPACE__ */
|
||||
|
||||
undefine(`__LISTNAME__')dnl
|
||||
undefine(`__LISTTYPE__')dnl
|
||||
undefine(`__LISTPARENT__')dnl
|
||||
undefine(`__LISTELEM__')dnl
|
||||
undefine(`__LISTFIELD__')dnl
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl
|
||||
dnl GP_LIST_FIND(access_method)
|
||||
dnl
|
||||
dnl Defines find(containertype) and find(Widget&)
|
||||
dnl access_method is the name of method returning a Widget*
|
||||
define(GP_LIST_FIND,`
|
||||
iterator find(const_reference c);
|
||||
iterator find(Widget&);
|
||||
_PUSH(SECTION_CC)
|
||||
|
||||
namespace __LIST_NAMESPACE__
|
||||
{
|
||||
|
||||
__LISTNAME__::iterator __LISTNAME__::find(const_reference w)
|
||||
{
|
||||
iterator i = begin();
|
||||
for(i = begin(); i != end() && (i->ifelse($1,,,$1()->)gobj() != w.ifelse($1,,,$1()->)gobj()); i++);
|
||||
return i;
|
||||
}
|
||||
|
||||
__LISTNAME__::iterator __LISTNAME__::find(Widget& w)
|
||||
{
|
||||
iterator i;
|
||||
for(i = begin(); i != end() && ((GtkWidget*)i->ifelse($1,,,$1()->)gobj() != w.gobj()); i++);
|
||||
return i;
|
||||
}
|
||||
|
||||
} /* namespace __LIST_NAMESPACE__ */
|
||||
|
||||
_POP()
|
||||
')
|
||||
|
||||
dnl
|
||||
dnl GP_LIST_CONTAINER_REMOVE(access_method)
|
||||
dnl
|
||||
dnl Implements remove(const_reference), erase(iterator)
|
||||
dnl and defines remove(Widget&)
|
||||
dnl (assumes that the widget uses gtk+ container methods).
|
||||
dnl access_method is the name of the method returning a Widget*
|
||||
define(GP_LIST_CONTAINER_REMOVE,`
|
||||
virtual void remove(Widget& w); //Implented as custom or by LIST_CONTAINER_REMOVE
|
||||
_PUSH(SECTION_CC)
|
||||
|
||||
namespace __LIST_NAMESPACE__
|
||||
{
|
||||
|
||||
void __LISTNAME__::remove(const_reference child)
|
||||
{
|
||||
gtk_container_remove(GTK_CONTAINER(gparent_),
|
||||
(GtkWidget*)(child.ifelse($1,,,$1()->)gobj()));
|
||||
}
|
||||
|
||||
void __LISTNAME__::remove(Widget& widget)
|
||||
{
|
||||
gtk_container_remove(GTK_CONTAINER(gparent_), (GtkWidget*)(widget.gobj()));
|
||||
}
|
||||
|
||||
__LISTNAME__::iterator __LISTNAME__::erase(iterator position)
|
||||
{
|
||||
//Check that it is a valid iterator, to a real item:
|
||||
if ( !position.node_|| (position == end()) )
|
||||
return end();
|
||||
|
||||
//Get an iterator the the next item, to return:
|
||||
iterator next = position;
|
||||
next++;
|
||||
|
||||
//Use GTK+ C function to remove it, by providing the GtkWidget*:
|
||||
gtk_container_remove( GTK_CONTAINER(gparent_), (GtkWidget*)(position->ifelse($1,,,$1()->)gobj()) );
|
||||
return next;
|
||||
}
|
||||
|
||||
} /* namespace __LIST_NAMESPACE__ */
|
||||
|
||||
_POP()
|
||||
')
|
||||
|
||||
_POP()dnl
|
||||
132
libs/glibmm2/tools/m4/member.m4
Normal file
132
libs/glibmm2/tools/m4/member.m4
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
dnl
|
||||
dnl --------------------------- Accessors ----------------------------
|
||||
dnl
|
||||
|
||||
|
||||
dnl Get:
|
||||
|
||||
|
||||
dnl Creates accessors for simple types:
|
||||
dnl _MEMBER_GET(cpp_name, c_name, cpp_type, c_type, deprecated (optional))
|
||||
define(`_MEMBER_GET',`dnl
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
$3 get_$1() const;
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
_PUSH(SECTION_CC)
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
$3 __CPPNAME__::get_$1() const
|
||||
{
|
||||
return _CONVERT($4,$3,`gobj()->$2');
|
||||
}
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
|
||||
_POP()')
|
||||
|
||||
dnl Creates two accessors for pointer types, one const and one non-const:
|
||||
define(`_MEMBER_GET_PTR',`dnl
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
$3 get_$1();
|
||||
const $3 get_$1() const;
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
_PUSH(SECTION_CC)
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
$3 __CPPNAME__::get_$1()
|
||||
{
|
||||
return _CONVERT($4,$3,`gobj()->$2');
|
||||
}
|
||||
|
||||
const $3 __CPPNAME__::get_$1() const
|
||||
{
|
||||
return _CONVERT($4,const $3,`gobj()->$2');
|
||||
}
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
|
||||
_POP()')
|
||||
|
||||
dnl Creates accessors for GObject-derived types that must be ref()ed.
|
||||
define(`_MEMBER_GET_GOBJECT',`dnl
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
Glib::RefPtr<$3> get_$1();
|
||||
Glib::RefPtr<const $3> get_$1() const;
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
_PUSH(SECTION_CC)
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
Glib::RefPtr<$3> __CPPNAME__::get_$1()
|
||||
{
|
||||
Glib::RefPtr<$3> ref_ptr(_CONVERT($4,Glib::RefPtr<$3>,`gobj()->$2'));
|
||||
|
||||
dnl We could use the bool with Glib::wrap(), but we want to share the m4 type-conversion map.
|
||||
if(ref_ptr)
|
||||
ref_ptr->reference();
|
||||
|
||||
return ref_ptr;
|
||||
}
|
||||
|
||||
Glib::RefPtr<const $3> __CPPNAME__::get_$1() const
|
||||
{
|
||||
Glib::RefPtr<const $3> ref_ptr(_CONVERT($4,Glib::RefPtr<const $3>,`gobj()->$2'));
|
||||
|
||||
dnl We could use the bool with Glib::wrap(), but we want to share the m4 type-conversion map.
|
||||
if(ref_ptr)
|
||||
ref_ptr->reference();
|
||||
|
||||
return ref_ptr;
|
||||
}
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
|
||||
_POP()')
|
||||
|
||||
|
||||
dnl Set:
|
||||
|
||||
dnl Creates accessors for simple types:
|
||||
define(`_MEMBER_SET',`dnl
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
void set_$1(const $3`'& value);
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
_PUSH(SECTION_CC)
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
void __CPPNAME__::set_$1(const $3`'& value)
|
||||
{
|
||||
gobj()->$2 = _CONVERT($3,$4,`value');
|
||||
}
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
|
||||
_POP()')
|
||||
|
||||
dnl Creates accessors for pointer types:
|
||||
define(`_MEMBER_SET_PTR',`dnl
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
void set_$1($3 value);
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
_PUSH(SECTION_CC)
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
void __CPPNAME__::set_$1($3 value)
|
||||
{
|
||||
gobj()->$2 = _CONVERT($3,$4,`value');
|
||||
}
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
|
||||
_POP()')
|
||||
|
||||
dnl Creates accessors for GObject-derived types that must be ref()ed.
|
||||
define(`_MEMBER_SET_GOBJECT',`dnl
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
void set_$1(const Glib::RefPtr<$3>& value);
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
_PUSH(SECTION_CC)
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
|
||||
void __CPPNAME__::set_$1(const Glib::RefPtr<$3>& value)
|
||||
{
|
||||
Glib::RefPtr<$3> valueOld(_CONVERT($4,Glib::RefPtr<$3>,`gobj()->$2')); //Take possession of the old one, unref-ing it in the destructor.
|
||||
|
||||
if(value)
|
||||
value->reference(); //Ref once for the recipient.
|
||||
|
||||
gobj()->$2 = _CONVERT(const Glib::RefPtr<$3>&,$4,`value');
|
||||
}
|
||||
ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
|
||||
|
||||
_POP()')
|
||||
|
||||
|
||||
108
libs/glibmm2/tools/m4/method.m4
Normal file
108
libs/glibmm2/tools/m4/method.m4
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
dnl $Id: method.m4 320 2006-09-19 20:07:31Z murrayc $
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl Code generation sections for making a method.
|
||||
dnl
|
||||
dnl
|
||||
|
||||
|
||||
dnl
|
||||
dnl method
|
||||
dnl $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14
|
||||
dnl _METHOD(cppname,cname,cpprettype,crettype,arglist,cargs,const,refreturn,errthrow,deprecated,constversion,ifdef, arglist_without_types)
|
||||
define(`_METHOD',`dnl
|
||||
_PUSH(SECTION_CC)
|
||||
ifelse(`$10',,,`_DEPRECATE_IFDEF_START
|
||||
')dnl
|
||||
ifelse(`$13',,,`#ifdef $13'
|
||||
)dnl
|
||||
ifelse(`$9',,,`#ifdef GLIBMM_EXCEPTIONS_ENABLED'
|
||||
)dnl
|
||||
$3 __CPPNAME__::$1`'($5)ifelse(`$7',1,` const')
|
||||
ifelse(`$9',,,`#else
|
||||
$3 __CPPNAME__::$1`'(`'$5`'ifelse(($5),(),`',`, ')std::auto_ptr<Glib::Error>& error)ifelse(`$7',1,` const')
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
')dnl
|
||||
{
|
||||
ifelse(`$11',,dnl
|
||||
`ifelse(`$8'`$9',,dnl If it is not errthrow or refreturn
|
||||
`ifelse(`$3',void,dnl If it returns voids:
|
||||
`$2(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$6',,,`, ')$6);' dnl It it returns non-void:
|
||||
,` return _CONVERT($4,$3,`$2`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$6',,,`, ')$6)');')'dnl End if it returns voids.
|
||||
,dnl If is errthrow or refreturn
|
||||
`ifelse(`$9',,,` GError* gerror = 0;')
|
||||
ifelse(`$3',void,,``$3' retvalue = ')_CONVERT($4,$3,`$2`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$6',,,`, ')$6)');dnl
|
||||
ifelse(`$9',,,`
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
if(gerror)
|
||||
::Glib::Error::throw_exception(gerror);
|
||||
#else
|
||||
if(gerror)
|
||||
error = ::Glib::Error::throw_exception(gerror);
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
')
|
||||
ifelse(`$8',,,`dnl
|
||||
if(retvalue)
|
||||
retvalue->reference(); //The function does not do a ref for us.
|
||||
')dnl
|
||||
ifelse(`$3',void,,` return retvalue;')
|
||||
')dnl End errthrow/refreturn
|
||||
',` return const_cast<__CPPNAME__*>(this)->$1($12);')
|
||||
}
|
||||
|
||||
ifelse(`$13',,,`
|
||||
#endif // $13
|
||||
')dnl
|
||||
ifelse(`$10',,,`_DEPRECATE_IFDEF_END
|
||||
')dnl
|
||||
_POP()')
|
||||
|
||||
dnl
|
||||
dnl static method
|
||||
dnl $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
|
||||
dnl _STATIC_METHOD(cppname,cname,cpprettype,crettype,arglist,cargs,refreturn,errthrow,deprecated,ifdef))
|
||||
define(`_STATIC_METHOD',`dnl
|
||||
_PUSH(SECTION_CC)
|
||||
ifelse(`$9',,,`_DEPRECATE_IFDEF_START
|
||||
')dnl
|
||||
ifelse(`$10',,,`#ifdef $10'
|
||||
)dnl
|
||||
ifelse(`$8',,,`#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
')dnl
|
||||
$3 __CPPNAME__::$1($5)
|
||||
ifelse(`$8',,,`#else
|
||||
$3 __CPPNAME__::$1(`'$5`'ifelse(($5),(),`',`, ')std::auto_ptr<Glib::Error>& error)
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
')dnl
|
||||
{
|
||||
ifelse(`$7'`$8',,dnl
|
||||
`ifelse(`$3',void,,` return ')_CONVERT($4,$3,`$2`'($6)');
|
||||
',dnl
|
||||
`ifelse(`$8',,,` GError* gerror = 0;')
|
||||
ifelse(`$3',void,,``$3' retvalue = ')_CONVERT($4,$3,`$2`'($6)');
|
||||
ifelse(`$8',,,`
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
if(gerror)
|
||||
::Glib::Error::throw_exception(gerror);
|
||||
#else
|
||||
if(gerror)
|
||||
error = ::Glib::Error::throw_exception(gerror);
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
')
|
||||
ifelse(`$7',,,`dnl
|
||||
if(retvalue)
|
||||
retvalue->reference(); //The function does not do a ref for us.
|
||||
')dnl
|
||||
ifelse(`$3',void,,` return retvalue;')
|
||||
')dnl
|
||||
}
|
||||
|
||||
ifelse(`$10',,,`
|
||||
#endif // $10
|
||||
')dnl
|
||||
ifelse(`$9',,,`_DEPRECATE_IFDEF_END
|
||||
')
|
||||
_POP()')
|
||||
|
||||
|
||||
40
libs/glibmm2/tools/m4/property.m4
Normal file
40
libs/glibmm2/tools/m4/property.m4
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
dnl $Id: property.m4 291 2006-05-12 08:08:45Z murrayc $
|
||||
|
||||
dnl
|
||||
dnl
|
||||
dnl Code generation sections for properties
|
||||
dnl
|
||||
dnl
|
||||
|
||||
dnl
|
||||
dnl _PROPERTY_PROXY(name, name_underscored, cpp_type, proxy_suffix, docs)
|
||||
dnl proxy_suffix could be "_WriteOnly" or "_ReadOnly"
|
||||
dnl The method will be const if the propertyproxy is _ReadOnly.
|
||||
dnl
|
||||
define(`_PROPERTY_PROXY',`dnl
|
||||
dnl
|
||||
dnl Put spaces around the template parameter if necessary.
|
||||
pushdef(`__PROXY_TYPE__',`dnl
|
||||
Glib::PropertyProxy$4<'ifelse(regexp(_QUOTE($3),`>$'),`-1',_QUOTE($3),` '_QUOTE($3)` ')`>'dnl
|
||||
)dnl
|
||||
#ifdef GLIBMM_PROPERTIES_ENABLED
|
||||
/** $5
|
||||
*
|
||||
* You rarely need to use properties because there are get_ and set_ methods for almost all of them.
|
||||
* @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
|
||||
* the value of the property changes.
|
||||
*/
|
||||
__PROXY_TYPE__ property_$2`'() ifelse($4,_ReadOnly, const,);
|
||||
#endif //#GLIBMM_PROPERTIES_ENABLED
|
||||
_PUSH(SECTION_CC_PROPERTYPROXIES)
|
||||
#ifdef GLIBMM_PROPERTIES_ENABLED
|
||||
__PROXY_TYPE__ __CPPNAME__::property_$2`'() ifelse($4,_ReadOnly, const,)
|
||||
{
|
||||
return __PROXY_TYPE__`'(this, "$1");
|
||||
}
|
||||
#endif //GLIBMM_PROPERTIES_ENABLED
|
||||
|
||||
_POP()
|
||||
popdef(`__PROXY_TYPE__')dnl
|
||||
')dnl
|
||||
|
||||
272
libs/glibmm2/tools/m4/signal.m4
Normal file
272
libs/glibmm2/tools/m4/signal.m4
Normal file
|
|
@ -0,0 +1,272 @@
|
|||
|
||||
#
|
||||
# --------------------------- Signal Decl----------------------------
|
||||
#
|
||||
|
||||
dnl _SIGNAL_PROXY($1 = c_signal_name,
|
||||
dnl $2 = c_return_type,
|
||||
dnl $3 = `<c_arg_types_and_names>',
|
||||
dnl $4 = cpp_signal_name,
|
||||
dnl $5 = cpp_return_type,
|
||||
dnl $6 = `<cpp_arg_types>',
|
||||
dnl $7 = `<c_args_to_cpp>',
|
||||
dnl $8 = `custom_c_callback (boolean)',
|
||||
dnl $9 = `refdoc_comment',
|
||||
dnl $10 = ifdef)
|
||||
|
||||
define(`_SIGNAL_PROXY',`
|
||||
$9
|
||||
|
||||
ifelse(`$10',,,`#ifdef $10'
|
||||
)dnl
|
||||
Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) > signal_$4`'();
|
||||
ifelse(`$10',,,`#endif // $10
|
||||
')dnl
|
||||
dnl
|
||||
_PUSH(SECTION_ANONYMOUS_NAMESPACE)
|
||||
|
||||
ifelse(`$10',,,`#ifdef $10'
|
||||
)dnl
|
||||
dnl
|
||||
ifelse($2`'_NUM($3)`'$5`'_NUM($6),`void0void0',`dnl
|
||||
dnl
|
||||
dnl Use predefined callback for SignalProxy0<void>, to reduce code size.
|
||||
|
||||
static const Glib::SignalProxyInfo __CPPNAME__`'_signal_$4_info =
|
||||
{
|
||||
"$1",
|
||||
(GCallback) &Glib::SignalProxyNormal::slot0_void_callback,
|
||||
(GCallback) &Glib::SignalProxyNormal::slot0_void_callback
|
||||
};
|
||||
',`dnl else
|
||||
|
||||
ifelse($8,`1',,`dnl Do not generate the implementation if it should be custom:
|
||||
static $2 __CPPNAME__`'_signal_$4_callback`'(__CNAME__`'* self, _COMMA_SUFFIX($3)`'void* data)
|
||||
{
|
||||
using namespace __NAMESPACE__;
|
||||
typedef sigc::slot< $5`'_COMMA_PREFIX($6) > SlotType;
|
||||
|
||||
// Do not try to call a signal on a disassociated wrapper.
|
||||
if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
|
||||
{
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
try
|
||||
{
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot`'(data))
|
||||
ifelse(`$2',void,`dnl
|
||||
(*static_cast<SlotType*>(slot))($7);
|
||||
',`dnl else
|
||||
return _CONVERT($5,$2,`(*static_cast<SlotType*>(slot))($7)');
|
||||
')dnl endif
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
Glib::exception_handlers_invoke();
|
||||
}
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
}
|
||||
ifelse($2,void,,`dnl else
|
||||
|
||||
typedef $2 RType;
|
||||
return RType`'();
|
||||
')dnl
|
||||
}
|
||||
ifelse($2,void,,`dnl else
|
||||
|
||||
static $2 __CPPNAME__`'_signal_$4_notify_callback`'(__CNAME__`'* self, _COMMA_SUFFIX($3)`' void* data)
|
||||
{
|
||||
using namespace __NAMESPACE__;
|
||||
typedef sigc::slot< void`'_COMMA_PREFIX($6) > SlotType;
|
||||
|
||||
// Do not try to call a signal on a disassociated wrapper.
|
||||
if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
|
||||
{
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
try
|
||||
{
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot`'(data))
|
||||
(*static_cast<SlotType*>(slot))($7);
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
Glib::exception_handlers_invoke();
|
||||
}
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
}
|
||||
|
||||
typedef $2 RType;
|
||||
return RType`'();
|
||||
}
|
||||
')dnl endif
|
||||
')dnl endif
|
||||
|
||||
static const Glib::SignalProxyInfo __CPPNAME__`'_signal_$4_info =
|
||||
{
|
||||
"$1",
|
||||
(GCallback) &__CPPNAME__`'_signal_$4_callback,
|
||||
(GCallback) &__CPPNAME__`'_signal_$4_`'ifelse($2,void,,notify_)`'callback
|
||||
};
|
||||
')dnl endif
|
||||
|
||||
ifelse(`$10',,,`#endif // $10
|
||||
')dnl
|
||||
|
||||
_SECTION(SECTION_CC_SIGNALPROXIES)
|
||||
|
||||
ifelse(`$10',,,`#ifdef $10'
|
||||
)dnl
|
||||
Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) > __CPPNAME__::signal_$4`'()
|
||||
{
|
||||
return Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) >(this, &__CPPNAME__`'_signal_$4_info);
|
||||
}
|
||||
ifelse(`$10',,,`#endif // $10
|
||||
')dnl
|
||||
|
||||
_POP()')
|
||||
|
||||
|
||||
dnl
|
||||
dnl _SIGNAL_PH(gname, crettype, cargs and names)
|
||||
dnl Create a callback and set it in our derived G*Class.
|
||||
dnl
|
||||
define(`_SIGNAL_PH',`dnl
|
||||
_PUSH(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS)
|
||||
ifelse(`$4',,,`#ifdef $4'
|
||||
)dnl
|
||||
klass->$1 = `&'$1_callback;
|
||||
ifelse(`$4',,,`#endif // $4
|
||||
')dnl
|
||||
_SECTION(SECTION_PH_DEFAULT_SIGNAL_HANDLERS)
|
||||
ifelse(`$4',,,`#ifdef $4'
|
||||
)dnl
|
||||
static $2 $1_callback`'($3);
|
||||
ifelse(`$4',,,`#endif // $4
|
||||
')dnl
|
||||
_POP()')
|
||||
|
||||
|
||||
|
||||
dnl $1 $2 $3 $4
|
||||
dnl _SIGNAL_PCC(cppname,gname,cpprettype,crettype,
|
||||
dnl $5 $6 $7 $8 $9
|
||||
dnl `<cargs and names>',`<cnames>',`<cpparg names>', firstarg, <ifndef>)
|
||||
dnl
|
||||
define(`_SIGNAL_PCC',`dnl
|
||||
_PUSH(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS)
|
||||
ifelse(`$9',,,`#ifdef $9'
|
||||
)dnl
|
||||
$4 __CPPNAME__`'_Class::$2_callback`'($5)
|
||||
{
|
||||
dnl First, do a simple cast to ObjectBase. We will have to do a dynamic_cast
|
||||
dnl eventually, but it is not necessary to check whether we need to call
|
||||
dnl the vfunc.
|
||||
Glib::ObjectBase *const obj_base = static_cast<Glib::ObjectBase*>(
|
||||
Glib::ObjectBase::_get_current_wrapper`'((GObject*)$8));
|
||||
|
||||
_IMPORT(SECTION_CHECK)
|
||||
// Non-gtkmmproc-generated custom classes implicitly call the default
|
||||
// Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc-
|
||||
// generated classes can use this optimisation, which avoids the unnecessary
|
||||
// parameter conversions if there is no possibility of the virtual function
|
||||
// being overridden:
|
||||
if(obj_base && obj_base->is_derived_())
|
||||
{
|
||||
dnl We need to do a dynamic cast to get the real object type, to call the
|
||||
dnl C++ vfunc on it.
|
||||
CppObjectType *const obj = dynamic_cast<CppObjectType* const>(obj_base);
|
||||
if(obj) // This can be NULL during destruction.
|
||||
{
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
try // Trap C++ exceptions which would normally be lost because this is a C callback.
|
||||
{
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
// Call the virtual member method, which derived classes might override.
|
||||
ifelse($4,void,`dnl
|
||||
obj->on_$1`'($7);
|
||||
return;
|
||||
',`dnl
|
||||
return _CONVERT($3,$4,`obj->on_$1`'($7)');
|
||||
')dnl
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
Glib::exception_handlers_invoke`'();
|
||||
}
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
}
|
||||
}
|
||||
|
||||
BaseClassType *const base = static_cast<BaseClassType*>(
|
||||
ifdef(`__BOOL_IS_INTERFACE__',`dnl
|
||||
_IFACE_PARENT_FROM_OBJECT($8)dnl
|
||||
',`dnl
|
||||
_PARENT_GCLASS_FROM_OBJECT($8)dnl
|
||||
') );
|
||||
dnl g_assert(base != 0);
|
||||
|
||||
// Call the original underlying C function:
|
||||
if(base && base->$2)
|
||||
ifelse($4,void,,`return ')(*base->$2)`'($6);
|
||||
ifelse($4,void,,`dnl
|
||||
|
||||
typedef $4 RType;
|
||||
return RType`'();
|
||||
')dnl
|
||||
}
|
||||
ifelse(`$9',,,`#endif // $9
|
||||
')dnl
|
||||
_POP()')
|
||||
|
||||
|
||||
dnl $1 $2 $3 $4
|
||||
dnl _SIGNAL_H(signame, rettype, `<cppargs>', <ifdef>)
|
||||
dnl
|
||||
define(`_SIGNAL_H',`dnl
|
||||
_PUSH(SECTION_H_DEFAULT_SIGNAL_HANDLERS)
|
||||
ifelse(`$4',,,`#ifdef $4'
|
||||
)dnl
|
||||
virtual $2 on_$1`'($3);
|
||||
ifelse(`$4',,,`#endif // $4
|
||||
')dnl
|
||||
_POP()')
|
||||
|
||||
dnl $1 $2 $3 $4 $5 $6 $7 $8 $9
|
||||
dnl _SIGNAL_CC(signame,gname,rettype,crettype,`<cppargs>',`<carg_names>', const, refreturn, <ifdef>)
|
||||
dnl
|
||||
define(`_SIGNAL_CC',`dnl
|
||||
_PUSH(SECTION_CC_DEFAULT_SIGNAL_HANDLERS)
|
||||
ifelse(`$9',,,`#ifdef $9'
|
||||
)dnl
|
||||
$3 __NAMESPACE__::__CPPNAME__::on_$1`'($5)
|
||||
{
|
||||
BaseClassType *const base = static_cast<BaseClassType*>(
|
||||
ifdef(`__BOOL_IS_INTERFACE__',`dnl
|
||||
_IFACE_PARENT_FROM_OBJECT(gobject_)dnl
|
||||
',`dnl
|
||||
_PARENT_GCLASS_FROM_OBJECT(gobject_)dnl
|
||||
') );
|
||||
dnl g_assert(base != 0);
|
||||
|
||||
if(base && base->$2)
|
||||
ifelse($3,void,`dnl
|
||||
(*base->$2)`'(gobj`'()`'_COMMA_PREFIX($6));
|
||||
',`dnl
|
||||
ifelse($8,refreturn,`dnl Assume Glib::wrap() is correct if refreturn is requested.
|
||||
return Glib::wrap((*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6)), true);
|
||||
',`dnl
|
||||
return _CONVERT($4,$3,`(*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6))');
|
||||
')dnl
|
||||
|
||||
typedef $3 RType;
|
||||
return RType`'();
|
||||
')dnl
|
||||
}
|
||||
ifelse(`$9',,,`#endif // $9
|
||||
')dnl
|
||||
_POP()')
|
||||
|
||||
154
libs/glibmm2/tools/m4/vfunc.m4
Normal file
154
libs/glibmm2/tools/m4/vfunc.m4
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
dnl
|
||||
dnl _VFUNC_PH(gtkname, crettype, cargs and names)
|
||||
dnl Create a callback and set it in our derived G*Class.
|
||||
dnl
|
||||
define(`_VFUNC_PH',`dnl
|
||||
_PUSH(SECTION_PCC_CLASS_INIT_VFUNCS)
|
||||
ifelse(`$4',,,`#ifdef $4'
|
||||
)dnl
|
||||
klass->$1 = `&'$1_vfunc_callback;
|
||||
ifelse(`$4',,,`#endif // $4
|
||||
')dnl
|
||||
_SECTION(SECTION_PH_VFUNCS)
|
||||
ifelse(`$4',,,`#ifdef $4'
|
||||
)dnl
|
||||
static $2 $1_vfunc_callback`'($3);
|
||||
ifelse(`$4',,,`#endif // $4
|
||||
')dnl
|
||||
_POP()')
|
||||
|
||||
|
||||
dnl $1 $2 $3 $4
|
||||
dnl _VFUNC_PCC(cppname,gtkname,cpprettype,crettype,
|
||||
dnl $5 $6 $7 $8 $9 $10
|
||||
dnl `<cargs and names>',`<cnames>',`<cpparg names>',firstarg, refreturn_ctype, ifdef)
|
||||
dnl
|
||||
dnl Note: _get_current_wrapper_inline() could be used throughout for performance instead of _get_current_wrapper(),
|
||||
dnl and is_derived_() instead of is_derived_(),
|
||||
dnl but it is not yet clear whether that would be a worthwhile performance optimization.
|
||||
define(`_VFUNC_PCC',`dnl
|
||||
_PUSH(SECTION_PCC_VFUNCS)
|
||||
ifelse(`$10',,,`#ifdef $10'
|
||||
)dnl
|
||||
$4 __CPPNAME__`'_Class::$2_vfunc_callback`'($5)
|
||||
{
|
||||
dnl First, do a simple cast to ObjectBase. We will have to do a dynamic_cast
|
||||
dnl eventually, but it is not necessary to check whether we need to call
|
||||
dnl the vfunc.
|
||||
Glib::ObjectBase *const obj_base = static_cast<Glib::ObjectBase*>(
|
||||
Glib::ObjectBase::_get_current_wrapper`'((GObject*)$8));
|
||||
|
||||
_IMPORT(SECTION_CHECK)
|
||||
// Non-gtkmmproc-generated custom classes implicitly call the default
|
||||
// Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc-
|
||||
// generated classes can use this optimisation, which avoids the unnecessary
|
||||
// parameter conversions if there is no possibility of the virtual function
|
||||
// being overridden:
|
||||
if(obj_base && obj_base->is_derived_())
|
||||
{
|
||||
dnl We need to do a dynamic cast to get the real object type, to call the
|
||||
dnl C++ vfunc on it.
|
||||
CppObjectType *const obj = dynamic_cast<CppObjectType* const>(obj_base);
|
||||
if(obj) // This can be NULL during destruction.
|
||||
{
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
try // Trap C++ exceptions which would normally be lost because this is a C callback.
|
||||
{
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
// Call the virtual member method, which derived classes might override.
|
||||
ifelse($4,void,`dnl
|
||||
obj->$1`'($7);
|
||||
return;
|
||||
',`dnl
|
||||
ifelse($9,refreturn_ctype,`dnl Assume Glib::unwrap_copy() is correct if refreturn_ctype is requested.
|
||||
return Glib::unwrap_copy`'(`obj->$1'($7));
|
||||
',`dnl
|
||||
return _CONVERT($3,$4,`obj->$1`'($7)');
|
||||
')dnl
|
||||
')dnl
|
||||
#ifdef GLIBMM_EXCEPTIONS_ENABLED
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
Glib::exception_handlers_invoke`'();
|
||||
}
|
||||
#endif //GLIBMM_EXCEPTIONS_ENABLED
|
||||
}
|
||||
}
|
||||
|
||||
BaseClassType *const base = static_cast<BaseClassType*>(
|
||||
ifdef(`__BOOL_IS_INTERFACE__',`dnl
|
||||
_IFACE_PARENT_FROM_OBJECT($8)dnl
|
||||
',`dnl
|
||||
_PARENT_GCLASS_FROM_OBJECT($8)dnl
|
||||
') );
|
||||
dnl g_assert(base != 0);
|
||||
|
||||
// Call the original underlying C function:
|
||||
if(base && base->$2)
|
||||
ifelse($4,void,,`return ')(*base->$2)`'($6);
|
||||
|
||||
ifelse($4,void,,`dnl
|
||||
|
||||
typedef $4 RType;
|
||||
return RType`'();
|
||||
')dnl
|
||||
}
|
||||
ifelse(`$10',,,`#endif // $10
|
||||
')dnl
|
||||
_POP()')
|
||||
|
||||
# $1 $2 $3 $4 $5 $6 $7 $8 $9
|
||||
# _VFUNC_CC(vfunc_name, gtkname, cpp_rettype, c_rettype, `<cppargs>', `<carg_names>', is_const, refreturn, $ifdef)
|
||||
#
|
||||
define(`_VFUNC_CC',`dnl
|
||||
_PUSH(SECTION_CC_VFUNCS)
|
||||
ifelse(`$9',,,`#ifdef $9'
|
||||
)dnl
|
||||
$3 __NAMESPACE__::__CPPNAME__::$1`'($5) ifelse($7,1,const,)
|
||||
{
|
||||
BaseClassType *const base = static_cast<BaseClassType*>(
|
||||
ifdef(`__BOOL_IS_INTERFACE__',`dnl
|
||||
_IFACE_PARENT_FROM_OBJECT(gobject_)dnl
|
||||
',`dnl
|
||||
_PARENT_GCLASS_FROM_OBJECT(gobject_)dnl
|
||||
') );
|
||||
dnl g_assert(base != 0);
|
||||
|
||||
if(base && base->$2)
|
||||
ifelse($3,void,`dnl
|
||||
(*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6));
|
||||
',`dnl
|
||||
ifelse($8,refreturn,`dnl Assume Glib::wrap() is correct if refreturn is requested.
|
||||
return Glib::wrap((*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6)), true);
|
||||
',`dnl
|
||||
return _CONVERT($4,$3,`(*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6))');
|
||||
')dnl
|
||||
|
||||
typedef $3 RType;
|
||||
return RType`'();
|
||||
')dnl
|
||||
}
|
||||
ifelse(`$9',,,`#endif // $9
|
||||
')dnl
|
||||
_POP()')
|
||||
|
||||
|
||||
# $1 $2 $3 $4 $5
|
||||
# _VFUNC_H(vfunc_name, rettype, `<cppargs>', is_const, ifndef)
|
||||
# Only used for custom vfuncs.
|
||||
#
|
||||
define(`_VFUNC_H',`dnl
|
||||
_PUSH(SECTION_H_VFUNCS)
|
||||
ifelse(`$5',,,`#ifdef $5'
|
||||
)dnl
|
||||
ifelse($4,`1',`dnl
|
||||
virtual $2 $1`'($3) const;
|
||||
',`dnl
|
||||
virtual $2 $1`'($3);
|
||||
')
|
||||
ifelse(`$5',,,`#endif // $5
|
||||
')dnl
|
||||
_POP()')
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue