summaryrefslogtreecommitdiffstats
path: root/smoke
diff options
context:
space:
mode:
Diffstat (limited to 'smoke')
-rw-r--r--smoke/Makefile.am6
-rw-r--r--smoke/Makefile.in573
-rw-r--r--smoke/qt/Makefile.am17
-rw-r--r--smoke/qt/Makefile.in684
-rw-r--r--smoke/qt/generate.pl.in153
-rwxr-xr-xsmoke/qt/generate_makefile_am.pl56
-rw-r--r--smoke/qt/header_list350
-rw-r--r--smoke/qt/qt_smoke.h9
-rw-r--r--smoke/qt/qtguess.pl.in501
-rw-r--r--smoke/smoke.h353
10 files changed, 2702 insertions, 0 deletions
diff --git a/smoke/Makefile.am b/smoke/Makefile.am
new file mode 100644
index 0000000..49bd9d5
--- /dev/null
+++ b/smoke/Makefile.am
@@ -0,0 +1,6 @@
+SUBDIRS = qt
+
+include_HEADERS = smoke.h
+
+EXTRA_DIST=smoke.h Makefile.am
+
diff --git a/smoke/Makefile.in b/smoke/Makefile.in
new file mode 100644
index 0000000..957c292
--- /dev/null
+++ b/smoke/Makefile.in
@@ -0,0 +1,573 @@
+# Makefile.in generated by automake 1.7.2 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 1.3 $
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# 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@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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 = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONF_FILES = @CONF_FILES@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GL_CFLAGS = @GL_CFLAGS@
+GL_LIBS = @GL_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_HAVE_GL = @KDE_HAVE_GL@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
+KDE_PLUGIN = @KDE_PLUGIN@
+KDE_RPATH = @KDE_RPATH@
+KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
+KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
+KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
+KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
+KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
+KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBZ = @LIBZ@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MOC = @MOC@
+NOOPT_CFLAGS = @NOOPT_CFLAGS@
+NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
+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@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_EXCEPTIONS = @USE_EXCEPTIONS@
+USE_RPATH = @USE_RPATH@
+USE_RTTI = @USE_RTTI@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_qtver = @kde_qtver@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+qt_test_threshold = @qt_test_threshold@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+SUBDIRS = qt
+
+include_HEADERS = smoke.h
+
+EXTRA_DIST = smoke.h Makefile.am
+subdir = smoke
+mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+HEADERS = $(include_HEADERS)
+
+
+#>- RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+#>- ps-recursive install-info-recursive uninstall-info-recursive \
+#>- all-recursive install-data-recursive install-exec-recursive \
+#>- installdirs-recursive install-recursive uninstall-recursive \
+#>- check-recursive installcheck-recursive
+#>+ 5
+#>- RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+#>- ps-recursive install-info-recursive uninstall-info-recursive \
+#>- all-recursive install-data-recursive install-exec-recursive \
+#>- installdirs-recursive install-recursive uninstall-recursive \
+#>- check-recursive installcheck-recursive nmcheck-recursive
+#>+ 5
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+ ps-recursive install-info-recursive uninstall-info-recursive \
+ all-recursive install-data-recursive install-exec-recursive \
+ installdirs-recursive install-recursive uninstall-recursive \
+ check-recursive installcheck-recursive nmcheck-recursive bcheck-recursive
+DIST_COMMON = README $(include_HEADERS) Makefile.am Makefile.in
+DIST_SUBDIRS = $(SUBDIRS)
+#>- all: all-recursive
+#>+ 1
+all: docs-am all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --gnu smoke/Makefile
+#>+ 3
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu smoke/Makefile
+ cd $(top_srcdir) && perl admin/am_edit PerlQt-3.008/smoke/Makefile.in
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+includeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-includeHEADERS: $(include_HEADERS)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(includedir)
+ @list='$(include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " $(includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(includedir)/$$f"; \
+ $(includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(includedir)/$$f; \
+ done
+
+uninstall-includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(include_HEADERS)'; for p in $$list; do \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " rm -f $(DESTDIR)$(includedir)/$$f"; \
+ rm -f $(DESTDIR)$(includedir)/$$f; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+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-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ 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 "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(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
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ 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
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d $(distdir)/$$subdir \
+ || mkdir $(distdir)/$$subdir \
+ || exit 1; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" \
+ distdir=../$(distdir)/$$subdir \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+ $(mkinstalldirs) $(DESTDIR)$(includedir)
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(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-recursive
+#>+ 1
+clean: kde-rpo-clean clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-includeHEADERS
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-includeHEADERS uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+ clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am \
+ dvi-recursive info info-am info-recursive install install-am \
+ install-data install-data-am install-data-recursive \
+ install-exec install-exec-am install-exec-recursive \
+ install-includeHEADERS install-info install-info-am \
+ install-info-recursive install-man install-recursive \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am installdirs-recursive maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive mostlyclean \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
+ tags-recursive uninstall uninstall-am uninstall-includeHEADERS \
+ uninstall-info-am uninstall-info-recursive uninstall-recursive
+
+# 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:
+
+
+#>+ 2
+docs-am:
+
+#>+ 6
+force-reedit:
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu smoke/Makefile
+ cd $(top_srcdir) && perl admin/am_edit PerlQt-3.008/smoke/Makefile.in
+
+
+#>+ 5
+bcheck: bcheck-recursive
+
+bcheck-am:
+
+
+#>+ 2
+final:
+ $(MAKE) all-am
+#>+ 2
+final-install:
+ $(MAKE) install-am
+#>+ 2
+no-final:
+ $(MAKE) all-am
+#>+ 2
+no-final-install:
+ $(MAKE) install-am
+#>+ 3
+cvs-clean:
+ $(MAKE) admindir=$(top_srcdir)/admin -f $(top_srcdir)/admin/Makefile.common cvs-clean
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 3
+nmcheck:
+nmcheck-am: nmcheck
diff --git a/smoke/qt/Makefile.am b/smoke/qt/Makefile.am
new file mode 100644
index 0000000..63e4ec8
--- /dev/null
+++ b/smoke/qt/Makefile.am
@@ -0,0 +1,17 @@
+lib_LTLIBRARIES = libsmokeqt.la
+
+# set the include path for X, qt and KDE
+INCLUDES = -I$(srcdir)/.. $(all_includes)
+
+EXTRA_DIST=generate.pl.in qtguess.pl.in qt_smoke.h Makefile.am Makefile.in
+
+# the library search path.
+libsmokeqt_la_LDFLAGS = -version-info 3:1:2 -no-undefined $(all_libraries) $(GL_CFLAGS) $(KDE_RPATH)
+
+# the libraries to link against.
+libsmokeqt_la_LIBADD = $(LIB_QT) $(GL_LIBS)
+
+# which sources should be compiled for perlqtkde
+libsmokeqt_la_SOURCES = smokedata.cpp x_1.cpp x_2.cpp x_3.cpp x_4.cpp x_5.cpp x_6.cpp x_7.cpp \
+ x_8.cpp x_9.cpp x_10.cpp x_11.cpp x_12.cpp x_13.cpp x_14.cpp x_15.cpp \
+ x_16.cpp x_17.cpp x_18.cpp x_19.cpp x_20.cpp
diff --git a/smoke/qt/Makefile.in b/smoke/qt/Makefile.in
new file mode 100644
index 0000000..8fdbc30
--- /dev/null
+++ b/smoke/qt/Makefile.in
@@ -0,0 +1,684 @@
+# Makefile.in generated by automake 1.7.2 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 1.3 $
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# 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@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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 = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONF_FILES = @CONF_FILES@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GL_CFLAGS = @GL_CFLAGS@
+GL_LIBS = @GL_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_HAVE_GL = @KDE_HAVE_GL@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
+KDE_PLUGIN = @KDE_PLUGIN@
+KDE_RPATH = @KDE_RPATH@
+KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
+KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
+KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
+KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
+KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
+KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBZ = @LIBZ@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MOC = @MOC@
+NOOPT_CFLAGS = @NOOPT_CFLAGS@
+NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
+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@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_EXCEPTIONS = @USE_EXCEPTIONS@
+USE_RPATH = @USE_RPATH@
+USE_RTTI = @USE_RTTI@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_qtver = @kde_qtver@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+qt_test_threshold = @qt_test_threshold@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+lib_LTLIBRARIES = libsmokeqt.la
+
+# set the include path for X, qt and KDE
+INCLUDES = -I$(srcdir)/.. $(all_includes)
+
+EXTRA_DIST = generate.pl.in qtguess.pl.in qt_smoke.h Makefile.am Makefile.in
+
+# the library search path.
+#>- libsmokeqt_la_LDFLAGS = -version-info 3:1:2 -no-undefined $(all_libraries) $(GL_CFLAGS) $(KDE_RPATH)
+#>+ 1
+libsmokeqt_la_LDFLAGS = -version-info 3:1:2 -no-undefined $(KDE_NO_UNDEFINED) $(all_libraries) $(GL_CFLAGS) $(KDE_RPATH)
+
+# the libraries to link against.
+libsmokeqt_la_LIBADD = $(LIB_QT) $(GL_LIBS)
+
+# which sources should be compiled for perlqtkde
+libsmokeqt_la_SOURCES = smokedata.cpp x_1.cpp x_2.cpp x_3.cpp x_4.cpp x_5.cpp x_6.cpp x_7.cpp \
+ x_8.cpp x_9.cpp x_10.cpp x_11.cpp x_12.cpp x_13.cpp x_14.cpp x_15.cpp \
+ x_16.cpp x_17.cpp x_18.cpp x_19.cpp x_20.cpp
+
+subdir = smoke/qt
+mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = qtguess.pl generate.pl
+LTLIBRARIES = $(lib_LTLIBRARIES)
+
+libsmokeqt_la_DEPENDENCIES =
+am_libsmokeqt_la_OBJECTS = smokedata.lo x_1.lo x_2.lo x_3.lo x_4.lo \
+ x_5.lo x_6.lo x_7.lo x_8.lo x_9.lo x_10.lo x_11.lo x_12.lo \
+ x_13.lo x_14.lo x_15.lo x_16.lo x_17.lo x_18.lo x_19.lo x_20.lo
+#>- libsmokeqt_la_OBJECTS = $(am_libsmokeqt_la_OBJECTS)
+#>+ 6
+libsmokeqt_la_final_OBJECTS = libsmokeqt_la.all_cpp.lo
+libsmokeqt_la_nofinal_OBJECTS = smokedata.lo x_1.lo x_2.lo x_3.lo x_4.lo \
+ x_5.lo x_6.lo x_7.lo x_8.lo x_9.lo x_10.lo x_11.lo x_12.lo \
+ x_13.lo x_14.lo x_15.lo x_16.lo x_17.lo x_18.lo x_19.lo x_20.lo
+@KDE_USE_FINAL_FALSE@libsmokeqt_la_OBJECTS = $(libsmokeqt_la_nofinal_OBJECTS)
+@KDE_USE_FINAL_TRUE@libsmokeqt_la_OBJECTS = $(libsmokeqt_la_final_OBJECTS)
+
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/admin/depcomp
+am__depfiles_maybe = depfiles
+#>- @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/smokedata.Plo ./$(DEPDIR)/x_1.Plo \
+#>- @AMDEP_TRUE@ ./$(DEPDIR)/x_10.Plo ./$(DEPDIR)/x_11.Plo \
+#>- @AMDEP_TRUE@ ./$(DEPDIR)/x_12.Plo ./$(DEPDIR)/x_13.Plo \
+#>- @AMDEP_TRUE@ ./$(DEPDIR)/x_14.Plo ./$(DEPDIR)/x_15.Plo \
+#>- @AMDEP_TRUE@ ./$(DEPDIR)/x_16.Plo ./$(DEPDIR)/x_17.Plo \
+#>- @AMDEP_TRUE@ ./$(DEPDIR)/x_18.Plo ./$(DEPDIR)/x_19.Plo \
+#>- @AMDEP_TRUE@ ./$(DEPDIR)/x_2.Plo ./$(DEPDIR)/x_20.Plo \
+#>- @AMDEP_TRUE@ ./$(DEPDIR)/x_3.Plo ./$(DEPDIR)/x_4.Plo \
+#>- @AMDEP_TRUE@ ./$(DEPDIR)/x_5.Plo ./$(DEPDIR)/x_6.Plo \
+#>- @AMDEP_TRUE@ ./$(DEPDIR)/x_7.Plo ./$(DEPDIR)/x_8.Plo \
+#>- @AMDEP_TRUE@ ./$(DEPDIR)/x_9.Plo
+#>+ 23
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@DEP_FILES = $(DEPDIR)/libsmokeqt_la.all_cpp.P ./$(DEPDIR)/smokedata.Plo ./$(DEPDIR)/x_1.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_10.Plo ./$(DEPDIR)/x_11.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_12.Plo ./$(DEPDIR)/x_13.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_14.Plo ./$(DEPDIR)/x_15.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_16.Plo ./$(DEPDIR)/x_17.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_18.Plo ./$(DEPDIR)/x_19.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_2.Plo ./$(DEPDIR)/x_20.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_3.Plo ./$(DEPDIR)/x_4.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_5.Plo ./$(DEPDIR)/x_6.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_7.Plo ./$(DEPDIR)/x_8.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_TRUE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_9.Plo
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@DEP_FILES = ./$(DEPDIR)/smokedata.Plo ./$(DEPDIR)/x_1.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_10.Plo ./$(DEPDIR)/x_11.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_12.Plo ./$(DEPDIR)/x_13.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_14.Plo ./$(DEPDIR)/x_15.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_16.Plo ./$(DEPDIR)/x_17.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_18.Plo ./$(DEPDIR)/x_19.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_2.Plo ./$(DEPDIR)/x_20.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_3.Plo ./$(DEPDIR)/x_4.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_5.Plo ./$(DEPDIR)/x_6.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_7.Plo ./$(DEPDIR)/x_8.Plo \
+@AMDEP_TRUE@@KDE_USE_FINAL_FALSE@ @AMDEP_TRUE@ ./$(DEPDIR)/x_9.Plo
+
+#>- CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+#>- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 2
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+#>- LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+#>- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+#>- $(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 3
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+CXXLD = $(CXX)
+#>- CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+#>- $(AM_LDFLAGS) $(LDFLAGS) -o $@
+#>+ 2
+CXXLINK = $(LIBTOOL) --mode=link --tag=CXX $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libsmokeqt_la_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in generate.pl.in qtguess.pl.in
+SOURCES = $(libsmokeqt_la_SOURCES)
+
+#>- all: all-am
+#>+ 1
+all: docs-am all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --gnu smoke/qt/Makefile
+#>+ 3
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu smoke/qt/Makefile
+ cd $(top_srcdir) && perl admin/am_edit PerlQt-3.008/smoke/qt/Makefile.in
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+qtguess.pl: $(top_builddir)/config.status qtguess.pl.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+generate.pl: $(top_builddir)/config.status generate.pl.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+libLTLIBRARIES_INSTALL = $(INSTALL)
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(libdir)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
+ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" = "$$p" && dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+#>- libsmokeqt.la: $(libsmokeqt_la_OBJECTS) $(libsmokeqt_la_DEPENDENCIES)
+#>+ 2
+@KDE_USE_CLOSURE_TRUE@libsmokeqt.la: libsmokeqt.la.closure $(libsmokeqt_la_OBJECTS) $(libsmokeqt_la_DEPENDENCIES)
+@KDE_USE_CLOSURE_FALSE@libsmokeqt.la: $(libsmokeqt_la_OBJECTS) $(libsmokeqt_la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(libdir) $(libsmokeqt_la_LDFLAGS) $(libsmokeqt_la_OBJECTS) $(libsmokeqt_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smokedata.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_1.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_10.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_11.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_12.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_13.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_14.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_15.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_16.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_17.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_18.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_19.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_20.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_3.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_4.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_5.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_6.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_7.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_8.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x_9.Plo@am__quote@
+
+distclean-depend:
+ -rm -rf ./$(DEPDIR)
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@ fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@ fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@ fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+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: $(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 "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+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
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 4
+KDE_DIST=header_list generate_makefile_am.pl
+
+DISTFILES= $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ 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 $(LTLIBRARIES)
+
+installdirs:
+ $(mkinstalldirs) $(DESTDIR)$(libdir)
+
+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_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(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
+#>+ 1
+clean: kde-rpo-clean clean-am
+
+#>- clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+#>- mostlyclean-am
+#>+ 2
+clean-am: clean-closures clean-final clean-generic clean-libLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+ distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool ctags distclean \
+ distclean-compile distclean-depend distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am info \
+ info-am install install-am install-data install-data-am \
+ install-exec install-exec-am install-info install-info-am \
+ install-libLTLIBRARIES install-man install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-info-am \
+ uninstall-libLTLIBRARIES
+
+# 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:
+
+
+#>+ 8
+libsmokeqt.la.closure: $(libsmokeqt_la_OBJECTS) $(libsmokeqt_la_DEPENDENCIES)
+ @echo "int main() {return 0;}" > libsmokeqt_la_closure.cpp
+ @$(LTCXXCOMPILE) -c libsmokeqt_la_closure.cpp
+ $(CXXLINK) libsmokeqt_la_closure.lo $(libsmokeqt_la_LDFLAGS) $(libsmokeqt_la_OBJECTS) $(libsmokeqt_la_LIBADD) $(LIBS)
+ @rm -f libsmokeqt_la_closure.* libsmokeqt.la.closure
+ @echo "timestamp" > libsmokeqt.la.closure
+
+
+#>+ 3
+clean-closures:
+ -rm -f libsmokeqt.la.closure
+
+#>+ 2
+docs-am:
+
+#>+ 6
+force-reedit:
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu smoke/qt/Makefile
+ cd $(top_srcdir) && perl admin/am_edit PerlQt-3.008/smoke/qt/Makefile.in
+
+
+#>+ 9
+bcheck: bcheck-am
+
+bcheck-am:
+ test ! -r bchecktest.cc.class || mv -f bchecktest.cc.class bchecktest.cc.oldclass
+ @echo "int main() {return 0;}" > bchecktest.cc
+ for i in $(include_HEADERS); do echo "#include \"$$i\"" >> bchecktest.cc; done
+ test ! -s bchecktest.cc || $(CXXCOMPILE) --dump-class-hierarchy bchecktest.cc
+ test ! -s bchecktest.cc.oldclass || test ! -s bchecktest.cc.class || cmp -s bchecktest.cc.oldclass bchecktest.cc.class
+
+#>+ 11
+libsmokeqt_la.all_cpp.cpp: $(srcdir)/Makefile.in smokedata.cpp x_1.cpp x_2.cpp x_3.cpp x_4.cpp x_5.cpp x_6.cpp x_7.cpp x_8.cpp x_9.cpp x_10.cpp x_11.cpp x_12.cpp x_13.cpp x_14.cpp x_15.cpp x_16.cpp x_17.cpp x_18.cpp x_19.cpp x_20.cpp
+ @echo 'creating libsmokeqt_la.all_cpp.cpp ...'; \
+ rm -f libsmokeqt_la.all_cpp.files libsmokeqt_la.all_cpp.final; \
+ echo "#define KDE_USE_FINAL 1" >> libsmokeqt_la.all_cpp.final; \
+ for file in smokedata.cpp x_1.cpp x_2.cpp x_3.cpp x_4.cpp x_5.cpp x_6.cpp x_7.cpp x_8.cpp x_9.cpp x_10.cpp x_11.cpp x_12.cpp x_13.cpp x_14.cpp x_15.cpp x_16.cpp x_17.cpp x_18.cpp x_19.cpp x_20.cpp ; do \
+ echo "#include \"$$file\"" >> libsmokeqt_la.all_cpp.files; \
+ test ! -f $(srcdir)/$$file || egrep '^#pragma +implementation' $(srcdir)/$$file >> libsmokeqt_la.all_cpp.final; \
+ done; \
+ cat libsmokeqt_la.all_cpp.final libsmokeqt_la.all_cpp.files > libsmokeqt_la.all_cpp.cpp; \
+ rm -f libsmokeqt_la.all_cpp.final libsmokeqt_la.all_cpp.files
+
+#>+ 3
+clean-final:
+ -rm -f libsmokeqt_la.all_cpp.cpp
+
+#>+ 2
+final:
+ $(MAKE) libsmokeqt_la_OBJECTS="$(libsmokeqt_la_final_OBJECTS)" all-am
+#>+ 2
+final-install:
+ $(MAKE) libsmokeqt_la_OBJECTS="$(libsmokeqt_la_final_OBJECTS)" install-am
+#>+ 2
+no-final:
+ $(MAKE) libsmokeqt_la_OBJECTS="$(libsmokeqt_la_nofinal_OBJECTS)" all-am
+#>+ 2
+no-final-install:
+ $(MAKE) libsmokeqt_la_OBJECTS="$(libsmokeqt_la_nofinal_OBJECTS)" install-am
+#>+ 3
+cvs-clean:
+ $(MAKE) admindir=$(top_srcdir)/admin -f $(top_srcdir)/admin/Makefile.common cvs-clean
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 3
+nmcheck:
+nmcheck-am: nmcheck
diff --git a/smoke/qt/generate.pl.in b/smoke/qt/generate.pl.in
new file mode 100644
index 0000000..5f4a669
--- /dev/null
+++ b/smoke/qt/generate.pl.in
@@ -0,0 +1,153 @@
+#!/usr/bin/perl -w
+
+## Run this first, to generate the x_*.cpp files from the Qt headers
+## using kalyptus
+
+my $kalyptusdir = "../../kalyptus";
+
+use File::Basename;
+use File::Copy qw|cp|;
+use File::Compare;
+use Cwd;
+
+my $here = getcwd;
+my $outdir = $here . "/generate.pl.tmpdir";
+my $finaloutdir = $here;
+my $defines = "qtdefines";
+my $headerlist = "header_list";
+my $definespath = "$here/$defines";
+my $headerlistpath = "$here/$headerlist";
+
+## Note: outdir and finaloutdir should NOT be the same dir!
+
+# Delete all x_*.cpp files under outdir (or create outdir if nonexistent)
+if (-d $outdir) { system "rm -f $outdir/x_*.cpp"; } else { mkdir $outdir; }
+
+mkdir $finaloutdir unless (-d $finaloutdir);
+
+# Load the QT_NO_* macros found in "qtdefines". They'll be passed to kalyptus
+my $macros="";
+if ( -e $definespath ){
+ print "Found '$defines'. Reading preprocessor symbols from there...\n";
+ $macros = " --defines=$definespath ";
+}
+
+# Need to cd to kalyptus's directory so that perl finds Ast.pm etc.
+chdir "$kalyptusdir" or die "Couldn't go to $kalyptusdir (edit script to change dir)\n";
+
+# Find out which header files we need to parse
+# We don't want all of them - e.g. not template-based stuff
+my %excludes = (
+ 'qaccessible.h' => 1, # Accessibility support is not compiled by defaut
+ 'qassistantclient.h' => 1, # Not part of Qt (introduced in Qt-3.1)
+ 'qmotif.h' => 1, #
+ 'qmotifwidget.h' => 1, # Motif extension (introduced in Qt-3.1)
+ 'qmotifdialog.h' => 1, #
+ 'qxt.h' => 1, # Xt
+ 'qxtwidget.h' => 1, # Xt
+ 'qdns.h' => 1, # internal
+ 'qgl.h' => 1, # OpenGL
+ 'qglcolormap.h' => 1, # OpenGL
+ 'qnp.h' => 1, # NSPlugin
+ 'qttableview.h' => 1, # Not in Qt anymore...
+ 'qtmultilineedit.h' => 1, # Not in Qt anymore...
+ 'qwidgetfactory.h' => 1, # Just an interface
+ 'qsharedmemory.h' => 1, # "not part of the Qt API" they say
+ 'qwindowsstyle.h' => 1, # Qt windowsstyle, plugin
+ 'qmotifstyle.h' => 1,
+ 'qcompactstyle.h' => 1,
+ 'qinterlacestyle.h' => 1,
+ 'qmotifplusstyle.h' => 1,
+ 'qsgistyle.h' => 1,
+ 'qplatinumstyle.h' => 1,
+ 'qcdestyle.h' => 1,
+ 'qwindowsxpstyle.h' => 1 # play on the safe side
+);
+
+# Some systems have a QTDIR = KDEDIR = PREFIX
+# We need a complete list
+
+my %includes;
+open(HEADERS, $headerlistpath) or die "Couldn't open $headerlistpath: $!\n";
+map { chomp ; $includes{$_} = 1 } <HEADERS>;
+close HEADERS;
+
+# Can we compile the OpenGl module ?
+if("@KDE_HAVE_GL@" eq "yes")
+{
+ open(DEFS, $definespath);
+ my @defs = <DEFS>;
+ close DEFS;
+ if(!grep(/QT_NO_OPENGL/, @defs))
+ {
+ $excludes{'qgl.h'} = undef;
+ $excludes{'qglcolormap.h'} = undef;
+ }
+ else
+ {
+ print STDERR "Qt was not compiled with OpenGL support...\n Skipping QGL Classes.\n";
+ }
+}
+
+# List Qt headers, and exclude the ones listed above
+my @headers = ();
+
+$qtinc= '@qt_includes@';
+opendir (QT, $qtinc) or die "Couldn't find $qtinc";
+foreach $filename (readdir(QT)) {
+ $entry = $qtinc."/".$filename;
+ if ( ( -e $entry or -l $entry ) # A real file or a symlink
+ && ( ! -d _ ) ) # Not a symlink to a dir though
+ {
+ push(@headers, $entry)
+ if ( !defined $excludes{$filename} # Not excluded
+ && $includes{$filename} # Known header
+ && $filename =~ /\.h$/ ); # Not a backup file etc. Only headers.
+ undef $includes{$filename}
+ }
+}
+closedir QT;
+
+# Launch kalyptus
+system "perl kalyptus @ARGV --globspace -fsmoke --name=qt $macros --no-cache --outputdir=$outdir @headers";
+my $exit = $? >> 8;
+exit $exit if ($exit);
+
+# Generate diff for smokedata.cpp
+unless ( -e "$finaloutdir/smokedata.cpp" ) {
+ open( TOUCH, ">$finaloutdir/smokedata.cpp");
+ close TOUCH;
+}
+system "diff -u $finaloutdir/smokedata.cpp $outdir/smokedata.cpp > $outdir/smokedata.cpp.diff";
+
+# Copy changed or new files to finaloutdir
+opendir (OUT, $outdir) or die "Couldn't opendir $outdir";
+foreach $filename (readdir(OUT)) {
+ next if ( -d "$outdir/$filename" ); # only files, not dirs
+ my $docopy = 1;
+ if ( -f "$finaloutdir/$filename" ) {
+ $docopy = compare("$outdir/$filename", "$finaloutdir/$filename"); # 1 if files are differents
+ }
+ if ($docopy) {
+ #print STDERR "Updating $filename...\n";
+ cp("$outdir/$filename", "$finaloutdir/$filename");
+ }
+}
+closedir OUT;
+
+# Check for deleted files and warn
+my $deleted = 0;
+opendir(FINALOUT, $finaloutdir) or die "Couldn't opendir $finaloutdir";
+foreach $filename (readdir(FINALOUT)) {
+ next if ( -d "$finaloutdir/$filename" ); # only files, not dirs
+ if ( $filename =~ /.cpp$/ && ! ($filename =~ /_la_closure.cpp/) && ! -f "$outdir/$filename" ) {
+ print STDERR "Removing obsolete file $filename\n";
+ unlink "$finaloutdir/$filename";
+ $deleted = 1;
+ }
+}
+closedir FINALOUT;
+
+# Delete outdir
+system "rm -rf $outdir";
+
diff --git a/smoke/qt/generate_makefile_am.pl b/smoke/qt/generate_makefile_am.pl
new file mode 100755
index 0000000..49cdd49
--- /dev/null
+++ b/smoke/qt/generate_makefile_am.pl
@@ -0,0 +1,56 @@
+#!/usr/bin/perl -w
+
+use File::Basename;
+use File::Copy qw|cp|;
+use File::Compare;
+use Cwd;
+
+my $here = getcwd;
+my $outdir = $here;
+my $tempfile = "$outdir/.Makefile.am.tmpfile";
+
+# Update list of source files in $outdir/Makefile.am
+open( MAKEFILE, "<$outdir/Makefile.am" ) or die;
+my $makeFileData = '';
+my $found = 0;
+while (<MAKEFILE>) {
+ if (/^libsmokeqt_la_SOURCES/)
+ {
+ $found = 1;
+ $makeFileData .= "libsmokeqt_la_SOURCES = smokedata.cpp";
+ }
+ $makeFileData .= $_ if (!$found);
+}
+close MAKEFILE;
+
+die "libsmokeqt_la_SOURCES not found" if (!$found);
+
+open( MAKEFILE, ">$tempfile" ) or die;
+print MAKEFILE $makeFileData;
+
+my $count = 0;
+opendir (FILES, $outdir) or die;
+foreach $filename (readdir(FILES)) {
+ if ( $filename =~ /^x_.*\.cpp$/ ) {
+ if ( $count++ == 7 ) {
+ $count = 0;
+ print MAKEFILE " \\\n";
+ }
+ print MAKEFILE " $filename";
+ }
+}
+
+print MAKEFILE "\n";
+close MAKEFILE;
+closedir FILES;
+
+if (compare("$tempfile", "$outdir/Makefile.am")) {
+ cp("$tempfile", "$outdir/Makefile.am");
+ print STDERR "Makefile.am updated.\n";
+}
+else {
+ print STDERR "Makefile.am unchanged.\n";
+}
+unlink $tempfile;
+
+exit 0;
diff --git a/smoke/qt/header_list b/smoke/qt/header_list
new file mode 100644
index 0000000..9594c7d
--- /dev/null
+++ b/smoke/qt/header_list
@@ -0,0 +1,350 @@
+q1xcompatibility.h
+qabstractlayout.h
+qaccel.h
+qaccessible.h
+qaction.h
+qapp.h
+qapplication.h
+qarray.h
+qasciicache.h
+qasciidict.h
+qassistantclient.h
+qasyncimageio.h
+qasyncio.h
+qbig5codec.h
+qbitarray.h
+qbitarry.h
+qbitmap.h
+qbrush.h
+qbttngrp.h
+qbuffer.h
+qbuttongroup.h
+qbutton.h
+qcache.h
+qcanvas.h
+qcdestyle.h
+qcheckbox.h
+qchkbox.h
+qcleanuphandler.h
+qclipboard.h
+qclipbrd.h
+qcollect.h
+qcollection.h
+qcolordialog.h
+qcolor.h
+qcombobox.h
+qcombo.h
+qcommonstyle.h
+qcompactstyle.h
+qconfig-dist.h
+qconfig.h
+qconnect.h
+qconnection.h
+qcstring.h
+qcursor.h
+qdatabrowser.h
+qdatastream.h
+qdatatable.h
+qdataview.h
+qdatetimeedit.h
+qdatetime.h
+qdatetm.h
+qdeepcopy.h
+qdesktopwidget.h
+qdial.h
+qdialog.h
+qdict.h
+qdir.h
+qdns.h
+qdockarea.h
+qdockwindow.h
+qdom.h
+qdragobject.h
+qdrawutil.h
+qdrawutl.h
+qdropsite.h
+qdstream.h
+qeditorfactory.h
+qerrormessage.h
+qeucjpcodec.h
+qeuckrcodec.h
+qevent.h
+qeventloop.h
+qfeatures.h
+qfiledef.h
+qfiledialog.h
+qfiledlg.h
+qfile.h
+qfileinf.h
+qfileinfo.h
+qfocusdata.h
+qfontdatabase.h
+qfontdialog.h
+qfontdta.h
+qfont.h
+qfontinf.h
+qfontinfo.h
+qfontmet.h
+qfontmetrics.h
+qframe.h
+qftp.h
+qgarray.h
+qgb18030codec.h
+qgbkcodec.h
+qgcache.h
+qgdict.h
+qgeneric.h
+qgif.h
+qglcolormap.h
+qgl.h
+qglist.h
+qglobal.h
+qgplugin.h
+qgrid.h
+qgridview.h
+qgroupbox.h
+qgrpbox.h
+qguardedptr.h
+qgvector.h
+qhbox.h
+qhbuttongroup.h
+qheader.h
+qhgroupbox.h
+qhostaddress.h
+qhttp.h
+qiconset.h
+qiconview.h
+qimageformatplugin.h
+qimage.h
+qinputdialog.h
+qintcache.h
+qintcach.h
+qintdict.h
+qinterlacestyle.h
+qiodev.h
+qiodevice.h
+qjiscodec.h
+qjpunicode.h
+qkeycode.h
+qkeysequence.h
+qlabel.h
+qlayout.h
+qlcdnumber.h
+qlcdnum.h
+qlibrary.h
+qlined.h
+qlineedit.h
+qlistbox.h
+qlist.h
+qlistview.h
+qlocalfs.h
+qmainwindow.h
+qmap.h
+qmemarray.h
+qmenubar.h
+qmenudata.h
+qmenudta.h
+qmessagebox.h
+qmetaobject.h
+qmetaobj.h
+qmime.h
+qmlined.h
+qmodules.h
+qmotifdialog.h
+qmotif.h
+qmotifplusstyle.h
+qmotifstyle.h
+qmotifwidget.h
+qmovie.h
+qmsgbox.h
+qmultilinedit.h
+qmultilineedit.h
+qmutex.h
+qnamespace.h
+qnetwork.h
+qnetworkprotocol.h
+qobjcoll.h
+qobjdefs.h
+qobjectcleanuphandler.h
+qobjectdefs.h
+qobjectdict.h
+qobject.h
+qobjectlist.h
+qpaintdc.h
+qpaintdevicedefs.h
+qpaintdevice.h
+qpaintdevicemetrics.h
+qpaintd.h
+qpainter.h
+qpair.h
+qpalette.h
+qpdevmet.h
+qpen.h
+qpicture.h
+qpixmapcache.h
+qpixmap.h
+qplatinumstyle.h
+qpmcache.h
+qpntarry.h
+qpointarray.h
+qpoint.h
+qpolygonscanner.h
+qpopmenu.h
+qpopupmenu.h
+qprintdialog.h
+qprinter.h
+qprndlg.h
+qprocess.h
+qprogbar.h
+qprogdlg.h
+qprogressbar.h
+qprogressdialog.h
+qpsprn.h
+qptrcollection.h
+qptrdict.h
+qptrlist.h
+qptrqueue.h
+qptrstack.h
+qptrvector.h
+qpushbt.h
+qpushbutton.h
+qqueue.h
+qradiobt.h
+qradiobutton.h
+qrangecontrol.h
+qrangect.h
+qrect.h
+qregexp.h
+qregion.h
+qremotefactory.h
+qremoteplugin.h
+qrtlcodec.h
+qscopedptr.h
+qscrbar.h
+qscrollbar.h
+qscrollview.h
+qsemaphore.h
+qsemimodal.h
+qserversocket.h
+qsession.h
+qsessionmanager.h
+qsettings.h
+qsgistyle.h
+qshared.h
+qsignal.h
+qsignalmapper.h
+qsignalslotimp.h
+qsimplerichtext.h
+qsizegrip.h
+qsize.h
+qsizepolicy.h
+qsjiscodec.h
+qslider.h
+qsocketdevice.h
+qsocket.h
+qsocketnotifier.h
+qsocknot.h
+qsortedlist.h
+qsound.h
+qspinbox.h
+qsplashscreen.h
+qsplitter.h
+qsqlcursor.h
+qsqldatabase.h
+qsqldriver.h
+qsqldriverplugin.h
+qsqleditorfactory.h
+qsqlerror.h
+qsqlfield.h
+qsqlform.h
+qsql.h
+qsqlindex.h
+qsqlpropertymap.h
+qsqlquery.h
+qsqlrecord.h
+qsqlresult.h
+qsqlselectcursor.h
+qstack.h
+qstatusbar.h
+qstring.h
+qstringlist.h
+qstrlist.h
+qstrvec.h
+qstylefactory.h
+qstyle.h
+qstyleplugin.h
+qstylesheet.h
+qsyntaxhighlighter.h
+qtabbar.h
+qtabdialog.h
+qtabdlg.h
+qtable.h
+qtabwidget.h
+qtextbrowser.h
+qtextcodecfactory.h
+qtextcodec.h
+qtextcodecplugin.h
+qtextedit.h
+qtextstream.h
+qtextview.h
+qt.h
+qthread.h
+qtimer.h
+qtl.h
+qtmultilineedit.h
+qtoolbar.h
+qtoolbutton.h
+qtoolbox.h
+qtooltip.h
+qtranslator.h
+qtsciicodec.h
+qtstream.h
+qttableview.h
+qurl.h
+qurlinfo.h
+qurloperator.h
+qutfcodec.h
+quuid.h
+qvalidator.h
+qvaluelist.h
+qvaluestack.h
+qvaluevector.h
+qvariant.h
+qvbox.h
+qvbuttongroup.h
+qvector.h
+qvgroupbox.h
+qwaitcondition.h
+qwhatsthis.h
+qwidcoll.h
+qwidgetfactory.h
+qwidget.h
+qwidgetintdict.h
+qwidgetlist.h
+qwidgetplugin.h
+qwidgetstack.h
+qwindefs.h
+qwindowdefs.h
+qwindow.h
+qwindowsstyle.h
+qwizard.h
+qwmatrix.h
+qworkspace.h
+qwsbeosdecoration_qws.h
+qwscommand_qws.h
+qwscursor_qws.h
+qwsdecoration_qws.h
+qwsdefaultdecoration_qws.h
+qwsdisplay_qws.h
+qwsevent_qws.h
+qwshydrodecoration_qws.h
+qwskde2decoration_qws.h
+qwskdedecoration_qws.h
+qwsmanager_qws.h
+qwsmouse_qws.h
+qwsproperty_qws.h
+qwsregionmanager_qws.h
+qwssocket_qws.h
+qwsutils_qws.h
+qwswindowsdecoration_qws.h
+qxml.h
diff --git a/smoke/qt/qt_smoke.h b/smoke/qt/qt_smoke.h
new file mode 100644
index 0000000..22d8d23
--- /dev/null
+++ b/smoke/qt/qt_smoke.h
@@ -0,0 +1,9 @@
+#ifndef QT_SMOKE_H
+#define QT_SMOKE_H
+
+// Defined in smokedata.cpp, initialized by init_qt_Smoke(), used by all .cpp files
+extern Smoke* qt_Smoke;
+
+class QGlobalSpace { };
+
+#endif
diff --git a/smoke/qt/qtguess.pl.in b/smoke/qt/qtguess.pl.in
new file mode 100644
index 0000000..a5fc6b2
--- /dev/null
+++ b/smoke/qt/qtguess.pl.in
@@ -0,0 +1,501 @@
+#!/usr/bin/perl
+
+# qtguess.pl : check how Qt was compiled. Issue a list of all defined QT_NO_* macros, one per line.
+#
+# author: germain Garand <germain@ebooksfrance.com>
+# licence: GPL v.2
+
+# options: -q: be quieter
+# -o file: redirect output to "file". (default: ./qtdefines)
+# -t [0..15]: set the testing threshold (see below)
+# -f "flags": additional compiler flags/parameters
+
+use Getopt::Std;
+
+use vars qw/$opt_f $opt_o $opt_p/;
+
+getopts('qo:f:t:');
+
+# Threshold :
+# 0 - test basic Qt types/classes
+# 5 - test higher level, non-gui classes
+# 8 - test options of the above (ex: QT_NO_IMAGE_SMOOTHSCALE)
+# 10 - test basic widgets
+# 12 - test composite widgets
+# 13 - test widgets inheriting composite widgets
+# 15 - test goodies (default)
+
+my $default_threshold = @qt_test_threshold@;
+my $cc = "@CXX@";
+my $ccflags = $opt_f || "@CXXFLAGS@";
+
+my $nspaces = 50;
+
+my %qtdefs=();
+my %qtundefs=();
+
+my $tmp = gettmpfile();
+my $qtinc = '@qt_includes@';
+my $allinc = '@all_includes@';
+my $alllib = '@all_libraries@';
+my $qtflags ='@LIB_QT@';
+my %x;
+$x{'LIBPNG'} = '@LIBPNG@';
+$x{'LIBJPEG'} = '@LIBJPEG@';
+$x{'LIBSM'} = '@LIBSM@';
+$x{'LIBSOCKET'} = '@LIBSOCKET@';
+$x{'LIBDL'} = '@LIBDL@';
+$x{'LIBRESOLV'} = '@LIBRESOLV@';
+$x{'LIB_X11'} = '@LIB_X11@';
+$x{'X_PRE_LIBS'} = '@X_PRE_LIBS@';
+$x{'LIB_X11'} =~ s/\$\((.*?)\)/$x{$1}/g;
+
+$qtflags =~ s/\$\((.*?)\)/$x{$1}/g;
+
+ -e "$qtinc/qglobal.h" or die "Invalid Qt directory.\n";
+
+my $ccmd = "$cc $ccflags $allinc $alllib -o $tmp $tmp.cpp $qtflags";
+
+my $threshold = defined($opt_t)?$opt_t : $default_threshold;
+$threshold >= 0 or die "invalid testing threshold: $threshold\n";
+
+print "Checking how Qt was built... \n";
+print "Threshold is set to $threshold\n" unless $opt_q;
+
+my($count, $used, $total);
+map{ $tests{$_}->[2]>=$threshold ? ($used++, $total++):$total++ } keys %tests;
+
+print "Number of defines to be tested : $used/$total\n\n" unless $opt_q;
+open( QTDEFS, ">".($opt_o || "qtdefines") ) or die "Can't open output file: $!\n";
+
+grab_qglobal_symbols();
+preliminary_test();
+perform_all_tests();
+
+print +scalar(keys %qtdefs) . " defines found.\n";
+
+print QTDEFS join("\n", keys %qtdefs), "\n";
+close;
+
+#--------------------------------------------------------------#
+
+sub gettmpfile
+{
+ my $tmpdir = $ENV{'TMP'} || ".";
+ my $tmpname = $$."-qtguess";
+ while( -e "$tmpdir/$tmpname" || -e "$tmpdir/${tmpname}.cpp" )
+ {
+ $tmpname .= int (rand * 9);
+ }
+ return "$tmpdir/$tmpname";
+}
+
+#--------------------------------------------------------------#
+
+sub grab_qglobal_symbols
+{
+ my $cmd = "$cc -E -D__cplusplus -dM -I$qtinc $qtinc/qglobal.h 2>/dev/null";
+ my $symbols = `$cmd`;
+ for(0..1)
+ {
+ if( check_exit_status($?) )
+ {
+ while( $symbols =~/^#\s*define\s*(QT_\S+)/gm )
+ {
+ $qtdefs{$1} = 1;
+ }
+ print "Found ". scalar( keys %qtdefs )." predefined symbol".((scalar( keys %qtdefs ) -1)?"s":"")." in qglobal.h\n" unless ($opt_q or !(keys %qtdefs));
+ while( $symbols =~/^#\s*define\s*QT_MODULE_(\S+)/gm )
+ {
+ $qtundefs{"QT_NO_$1"} = 1;
+ }
+ print "Found ". scalar( keys %qtundefs )." undefined symbol".((scalar( keys %qtundefs ) -1)?"s":"")." in qglobal.h\n" unless ($opt_q or !(keys %qtundefs));
+ last;
+ }
+ elsif(! $_) # first try
+ {
+ print "Failed to run $cmd.\nTrying without __cplusplus (might be already defined)\n";
+ $cmd = "$cc -E -dM -I$qtinc $qtinc/qglobal.h 2>/dev/null";
+ $symbols = `$cmd`;
+ next;
+ }
+ }
+}
+
+#--------------------------------------------------------------#
+
+sub preliminary_test
+{
+ my $msg = "Trying to compile and link a small program...";
+ print $msg, " " x ($nspaces - length($msg) + 8);
+ open( OUT, ">${tmp}.cpp" ) or die "Failed to open temp file ${tmp}.cpp: $!\n";
+ my $simple=q£
+ #include <qapplication.h>
+ int main( int argc, char **argv )
+ {
+ QApplication foo( argc, argv );
+ return 0;
+ }
+ £;
+ print OUT $simple;
+ close OUT;
+ my $out = `$ccmd 2>&1`;
+ if( !check_exit_status($?) )
+ {
+ die <<"EOF";
+
+FAILED : check your configuration.
+Failed program was:
+$simple
+Compiled with:
+$ccmd
+Compiler output:
+$out
+EOF
+ }
+ else
+ {
+ print "OK\n";
+ }
+}
+
+#--------------------------------------------------------------#
+
+sub perform_all_tests
+{
+ foreach ( sort { $tests{$a}->[2] <=> $tests{$b}->[2]} keys %tests)
+ {
+ $tests{$_}->[2] < $threshold and next;
+ ($qtdefs{$_} || $qtundefs{$_}) and do
+ {
+ print "\rSkipping $_ (in qglobal.h)".( " " x (($nspaces-16) - length($_)) ).($qtundefs{$_}?"*Undefined*":" [Defined]").($opt_q?"":"\n");
+ next
+ };
+ print "\rTesting $_".( " " x ($nspaces - length($_)) );
+ open( OUT, ">${tmp}.cpp" ) or die "Failed to open temp file ${tmp}.cpp: $!\n";
+ foreach $def(keys %qtdefs)
+ {
+ print OUT "#define $def\n";
+ }
+ foreach $inc(split /,\s*/, $tests{$_}->[0])
+ {
+ print OUT "#include <$inc>\n";
+ }
+ print OUT "#include <qfeatures.h>\n";
+ print OUT $tests{$_}->[3] if $tests{$_}->[3]; # need to define some classes ?
+ print OUT qq£
+
+ int main( int argc, char **argv )
+ {
+ $tests{$_}->[1]
+ return 0;
+ }
+ £;
+ close OUT;
+
+ my $out = `$ccmd 2>&1`;
+
+ my $ok = check_exit_status($?);
+ if( !$ok )
+ {
+ $qtdefs{$_} = 1;
+ }
+ print +$opt_q ? ++$count."/$used" : ( $ok ? "*Undefined*\n" : " [Defined]\n" );
+ }
+ $opt_q && print "\n";
+}
+
+#--------------------------------------------------------------#
+
+sub check_exit_status
+{
+ my $a = 0xFFFF & shift;
+ if( !$a )
+ {
+ return 1;
+ }
+ elsif( $a == 0xFF00 )
+ {
+ die "\nSystem call failed: $!\n";
+ }
+ elsif( $a > 0x80 )
+ {
+ # non-zero status.
+ }
+ else
+ {
+ if( $a & 0x80 )
+ {
+ die "\n$cc coredumped with signal ". ($a & ~0x80);
+ }
+ die "\n$cc interrupted by signal $a\n";
+ }
+ return 0;
+}
+
+#--------------------------------------------------------------#
+
+END
+{
+ unlink $tmp if -e $tmp;
+ unlink "${tmp}.cpp" if -e "${tmp}.cpp";
+}
+
+#--------------------------------------------------------------#
+
+BEGIN {
+
+# "DEFINE" => ["header-1.h,... header-n.h", "main() code", priority, "Definitions (if needed)"]
+
+our %tests = (
+ "QT_NO_ACCEL" => ["qaccel.h", "QAccel foo( (QWidget*)NULL );", 5],
+ "QT_NO_ACTION" => ["qaction.h", "QAction foo( (QObject*)NULL );", 5],
+ "QT_NO_ASYNC_IO" => ["qasyncio.h", "QAsyncIO foo();", 5],
+ "QT_NO_ASYNC_IMAGE_IO"=> ["qasyncimageio.h", "QImageDecoder foo( (QImageConsumer*) NULL );", 5],
+ "QT_NO_BIG_CODECS" => ["qbig5codec.h", "QBig5Codec foo();", 5],
+ "QT_NO_BUTTON" => ["qbutton.h", "QButton foo( (QWidget*)NULL );", 10],
+ "QT_NO_BUTTONGROUP" => ["qbuttongroup.h", "QButtonGroup foo( (QWidget*)NULL );", 12],
+ "QT_NO_CANVAS" => ["qcanvas.h", "QCanvas foo( (QObject*)NULL );", 10],
+ "QT_NO_CHECKBOX" => ["qcheckbox.h", "QCheckBox( (QWidget*)NULL );", 10],
+ "QT_NO_CLIPBOARD" => ["qapplication.h, qclipboard.h", q£
+ QApplication foo( argc, argv );
+ QClipboard *baz= foo.clipboard();
+ £, 5],
+ "QT_NO_COLORDIALOG" => ["qcolordialog.h", "QColorDialog::customCount();", 12],
+ "QT_NO_COMBOBOX" => ["qcombobox.h", "QComboBox( (QWidget*)NULL );", 10],
+ "QT_NO_COMPAT" => ["qfontmetrics.h", q£
+ QFontMetrics *foo= new QFontMetrics( QFont() );
+ int bar = foo->width( 'c' );
+ £, 0],
+ "QT_NO_COMPONENT" => ["qapplication.h", q£
+ QApplication foo( argc, argv );
+ foo.addLibraryPath( QString::null );
+ £, 5],
+ "QT_NO_CURSOR" => ["qcursor.h", "QCursor foo;", 5],
+ "QT_NO_DATASTREAM" => ["qdatastream.h", "QDataStream foo;", 5],
+ "QT_NO_DATETIMEEDIT" => ["qdatetimeedit.h", "QTimeEdit foo;", 12],
+ "QT_NO_DIAL" => ["qdial.h", "QDial foo;", 10],
+ "QT_NO_DIALOG" => ["qdialog.h", "QDialog foo;", 12],
+ "QT_NO_DIR" => ["qdir.h", "QDir foo;", 5],
+ "QT_NO_DNS" => ["qdns.h", "QDns foo;", 5],
+ "QT_NO_DOM" => ["qdom.h", "QDomDocumentType foo;", 5],
+ "QT_NO_DRAGANDDROP" => ["qevent.h", "QDropEvent foo( QPoint(1,1) );", 5],
+ "QT_NO_DRAWUTIL" => ["qdrawutil.h, qcolor.h", "qDrawPlainRect( (QPainter *) NULL, 0, 0, 0, 0, QColor() );", 10],
+ "QT_NO_ERRORMESSAGE" => ["qerrormessage.h", "QErrorMessage foo( (QWidget*) NULL );", 13],
+ "QT_NO_FILEDIALOG" => ["qfiledialog.h", "QFileIconProvider foo;", 13],
+
+ "QT_NO_FONTDATABASE" => ["qfontdatabase.h", "QFontDatabase foo;", 5],
+ "QT_NO_FONTDIALOG" => ["qfontdialog.h", "QFontDialog::getFont( (bool *)NULL );", 12],
+ "QT_NO_FRAME" => ["qframe.h", "QFrame foo;", 10],
+ "QT_NO_GRID" => ["qgrid.h", "QGrid foo(5);", 12],
+ "QT_NO_GRIDVIEW" => ["qgridview.h", "QFoo foo;", 13, q£
+ class QFoo: public QGridView
+ {
+ public:
+ QFoo(){};
+ ~QFoo(){};
+ void paintCell(QPainter *, int, int){};
+ };
+ £],
+ "QT_NO_GROUPBOX" => ["qgroupbox.h", "QGroupBox foo;", 12],
+ "QT_NO_HBOX" => ["qhbox.h", "QHBox foo;", 12],
+ "QT_NO_HBUTTONGROUP" => ["qhbuttongroup.h", "QHButtonGroup foo;", 13],
+ "QT_NO_HEADER" => ["qheader.h", "QHeader foo;", 10],
+ "QT_NO_HGROUPBOX" => ["qhgroupbox.h", "QHGroupBox foo;", 13],
+ "QT_NO_ICONSET" => ["qiconset.h", "QIconSet foo;", 8],
+
+ "QT_NO_ICONVIEW" => ["qiconview.h", "QIconView foo;", 13],
+ "QT_NO_IMAGEFORMATPLUGIN" => ["qimageformatplugin.h, qstringlist.h", "QFoo foo;", 5, q£
+
+ class QFoo: public QImageFormatPlugin
+ {
+ public:
+ QFoo() {};
+ ~QFoo() {};
+ QStringList keys() const { return QStringList(); };
+ bool installIOHandler( const QString &format ) { return true; };
+ };
+ Q_EXPORT_PLUGIN( QFoo )
+ £],
+ "QT_NO_IMAGE_DITHER_TO_1" => ["qimage.h", q£
+ QImage *foo = new QImage;
+ foo->createAlphaMask();
+ £, 8],
+ "QT_NO_IMAGE_HEURISTIC_MASK" => ["qimage.h", q£
+ QImage *foo = new QImage;
+ foo->createHeuristicMask();
+ £, 8],
+ "QT_NO_IMAGE_MIRROR" => ["qimage.h", q£
+ QImage *foo = new QImage;
+ foo->mirror();
+ £, 8],
+ "QT_NO_IMAGE_SMOOTHSCALE" => ["qimage.h", q£
+ QImage *foo = new QImage;
+ foo->smoothScale( 10, 10);
+ £, 8],
+ "QT_NO_IMAGE_TEXT" => ["qimage.h", "QImageTextKeyLang foo;", 8],
+ "QT_NO_IMAGE_TRANSFORMATION" => ["qimage.h", q£
+ QImage *foo = new QImage;
+ foo->scale( 10, 10);
+ £, 8],
+ "QT_NO_IMAGE_TRUECOLOR" => ["qimage.h", q£
+ QImage *foo = new QImage;
+ foo->convertDepthWithPalette( 1, (QRgb*) NULL, 1 );
+ £, 8],
+ "QT_NO_INPUTDIALOG" => ["qinputdialog.h, qstring.h", q£QInputDialog::getText( QString::null, QString::null);£, 13],
+ "QT_NO_IMAGEIO" => ["qbitmap.h, qstring.h", q£
+ QBitmap foo( QString::fromLatin1("foobar") );
+ £, 5],
+ "QT_NO_IMAGEIO_JPEG" => ["qjpegio.h", "qInitJpegIO();", 8],
+ "QT_NO_IMAGEIO_MNG" => ["qmngio.h", "qInitMngIO();", 8],
+ "QT_NO_IMAGEIO_PNG" => ["qpngio.h", "qInitPngIO();", 8],
+ "QT_NO_LABEL" => ["qlabel.h", "QLabel foo( (QWidget*) NULL );", 10],
+ "QT_NO_LAYOUT" => ["qlayout.h", "QFoo foo;", 10, q£
+
+ class QFoo: public QLayout
+ {
+ public:
+ QFoo() {};
+ ~QFoo() {};
+ void addItem( QLayoutItem * ) { };
+ QSize sizeHint() const { return QSize(); }
+ QLayoutIterator iterator() { return QLayoutIterator( (QGLayoutIterator *) NULL ); };
+ void setGeometry( const QRect & ) { };
+ };
+ £],
+ "QT_NO_LCDNUMBER" => ["qlcdnumber.h", "QLCDNumber foo;", 12],
+ "QT_NO_LINEEDIT" => ["qlineedit.h", "QLineEdit foo( (QWidget *) NULL );", 12],
+ "QT_NO_LISTBOX" => ["qlistbox.h", "QListBox foo;", 13],
+ "QT_NO_LISTVIEW" => ["qlistview.h", "QListView foo;", 13],
+ "QT_NO_MAINWINDOW" => ["qmainwindow.h", "QMainWindow foo;", 13],
+ "QT_NO_MENUBAR" => ["qmenubar.h", "QMenuBar foo;", 13],
+ "QT_NO_MOVIE" => ["qmovie.h", "QMovie foo;", 5],
+ "QT_NO_MENUDATA" => ["qmenudata.h", "QMenuData foo;", 9],
+ "QT_NO_MESSAGEBOX" => ["qmessagebox.h", "QMessageBox foo;", 13],
+ "QT_NO_MIME" => ["qmime.h", "QMimeSourceFactory foo;", 5],
+ "QT_NO_MIMECLIPBOARD" => ["qapplication.h, qclipboard.h", q£
+ QApplication foo( argc, argv );
+ QClipboard *baz= foo.clipboard();
+ baz->data();
+ £, 8],
+
+ "QT_NO_MULTILINEEDIT" => ["qmultilineedit.h", "QMultiLineEdit foo;", 14],
+ "QT_NO_NETWORK" => ["qnetwork.h", "qInitNetworkProtocols();", 5],
+ "QT_NO_NETWORKPROTOCOL" => ["qnetworkprotocol.h", "QNetworkProtocol foo;", 8],
+ "QT_NO_NETWORKPROTOCOL_FTP" => ["qftp.h", "QFtp foo;", 9],
+ "QT_NO_PALETTE" => ["qpalette.h", "QColorGroup foo;", 5],
+ "QT_NO_PICTURE" => ["qpicture.h", "QPicture foo;", 5],
+ "QT_NO_PIXMAP_TRANSFORMATION" =>["qbitmap.h, qwmatrix.h", q£
+ QBitmap *foo= new QBitmap();
+ QWMatrix bar;
+ foo->xForm( bar );
+ £, 5],
+ "QT_NO_POPUPMENU" => ["qpopupmenu.h", "QPopupMenu foo;", 12],
+ "QT_NO_PRINTER" => ["qprinter.h", "QPrinter foo;", 5],
+ "QT_NO_PRINTDIALOG" => ["qprintdialog.h", "QPrintDialog foo( (QPrinter*) NULL );", 13],
+ "QT_NO_PROCESS" => ["qprocess.h", "QProcess foo;", 5],
+ "QT_NO_PROGRESSBAR" => ["qprogressbar.h", "QProgressBar foo;", 12],
+ "QT_NO_PROGRESSDIALOG" => ["qprogressdialog.h", "QProgressDialog foo;", 13],
+ "QT_NO_PUSHBUTTON" => ["qpushbutton.h", "QPushButton foo( (QWidget *) NULL );", 12],
+ "QT_NO_PROPERTIES" => ["qmetaobject.h", "QMetaProperty foo;", 0],
+# "QT_NO_QTMULTILINEEDIT" => ["qtmultilineedit.h", "QtMultiLineEdit foo;", 15],
+# "QT_NO_QTTABLEVIEW" => ["qttableview.h", "QFoo foo;", 16, q£
+# class QFoo: public QtTableView
+# {
+# public:
+# QFoo() {};
+# ~QFoo() {};
+# void paintCell( QPainter *, int, int) {};
+# };
+# £],
+ "QT_NO_QUUID_STRING" => ["quuid.h", "QUuid foo( QString::null );", 8],
+ "QT_NO_RANGECONTROL" => ["qrangecontrol.h", "QRangeControl foo;", 10],
+ "QT_NO_REGEXP" => ["qregexp.h", "QRegExp foo;", 5],
+ "QT_NO_REGEXP_WILDCARD" => ["qregexp.h", q£
+ QRegExp foo;
+ foo.wildcard();
+ £, 8],
+ "QT_NO_REMOTE" => ["qapplication.h", q£
+ QApplication foo( argc, argv );
+ foo.remoteControlEnabled();
+ £, 15],
+ "QT_NO_RADIOBUTTON" => ["qradiobutton.h", "QRadioButton foo( (QWidget *) NULL );", 12],
+ "QT_NO_RICHTEXT" => ["qsimplerichtext.h, qstring.h, qfont.h", "QSimpleRichText foo( QString::null, QFont() );", 10],
+ "QT_NO_SCROLLBAR" => ["qscrollbar.h", "QScrollBar foo( (QWidget *) NULL );", 12],
+ "QT_NO_SCROLLVIEW" => ["qscrollview.h", "QScrollView foo;", 12],
+ "QT_NO_SEMIMODAL" => ["qsemimodal.h", "QSemiModal foo;", 10],
+ "QT_NO_SESSIONMANAGER" => ["qapplication.h", q£
+ QApplication foo( argc, argv );
+ foo.sessionId();
+ £, 15],
+ "QT_NO_SETTINGS" => ["qsettings.h", "QSettings foo;", 5],
+ "QT_NO_SIGNALMAPPER" => ["qsignalmapper.h", "QSignalMapper foo( (QObject *) NULL );", 0],
+ "QT_NO_SIZEGRIP" => ["qsizegrip.h", "QSizeGrip foo( (QWidget *) NULL );", 10],
+ "QT_NO_SLIDER" => ["qslider.h", "QSlider foo( (QWidget *) NULL );", 12],
+ "QT_NO_SOUND" => ["qsound.h", "QSound foo( QString::null );", 5],
+
+
+ "QT_NO_SPINWIDGET" => ["qrangecontrol.h", "QSpinWidget foo;", 10],
+ "QT_NO_SPRINTF" => ["qcolor.h", q£
+ QColor foo;
+ foo.name();
+ £, 0],
+
+
+
+ "QT_NO_SQL" => ["qsqlcursor.h", "QSqlCursor foo;", 5],
+ "QT_NO_STRINGLIST" => ["qstringlist.h", "QStringList foo;", 0],
+ "QT_NO_STYLE" => ["qapplication.h", q£
+ QApplication foo( argc, argv );
+ foo.style();
+ £, 15],
+
+# "QT_NO_STYLE_CDE" => ["qcdestyle.h", "QCDEStyle foo;", 16],
+# "QT_NO_STYLE_COMPACT" => ["qcompactstyle.h", "QCompactStyle foo;", 16],
+# "QT_NO_STYLE_INTERLACE" => ["qinterlacestyle.h", "QInterlaceStyle foo;", 16],
+# "QT_NO_STYLE_PLATINUM" => ["qplatinumstyle.h", "QPlatinumStyle foo;", 16],
+# "QT_NO_STYLE_MOTIF" => ["qmotifstyle.h", "QMotifStyle foo;", 16],
+# "QT_NO_STYLE_MOTIFPLUS" => ["qmotifplusstyle.h", "QMotifPlusStyle foo;", 16],
+# "QT_NO_STYLE_SGI" => ["qsgistyle.h", "QSGIStyle foo;", 16],
+# "QT_NO_STYLE_WINDOWS" => ["qwindowsstyle.h", "QWindowsStyle foo;", 16],
+ "QT_NO_TABBAR" => ["qtabbar.h", "QTabBar foo;", 10],
+ "QT_NO_TABDIALOG" => ["qtabdialog.h", "QTabDialog foo;", 12],
+ "QT_NO_TABLE" => ["qtable.h", "QTable foo;", 10],
+ "QT_NO_TABWIDGET" => ["qtabwidget.h", "QTabWidget foo;", 10],
+ "QT_NO_TEXTBROWSER" => ["qtextbrowser.h", "QTextBrowser foo;", 14],
+ "QT_NO_TEXTCODEC" => ["qtextcodec.h", "QTextCodec::codecForIndex(1);", 5],
+ "QT_NO_TEXTCODECPLUGIN" => ["qtextcodecplugin.h, qstringlist.h, qvaluelist.h, qtextcodec.h", "QFoo foo;", 6, q£
+
+ class QFoo: public QTextCodecPlugin
+ {
+ public:
+ QFoo() {};
+ ~QFoo() {};
+ QStringList names() const {return QStringList();}
+ QValueList<int>mibEnums() const {return QValueList<int>();}
+ QTextCodec *createForName( const QString & name ) {return (QTextCodec *)NULL;}
+ QTextCodec *createForMib( int mib ) {return (QTextCodec *)NULL;}
+ };
+ Q_EXPORT_PLUGIN( QFoo )
+ £],
+ "QT_NO_TEXTEDIT" => ["qtextedit.h", "QTextEdit foo;", 13],
+ "QT_NO_TEXTSTREAM" => ["qtextstream.h", "QTextStream foo;", 5],
+ "QT_NO_TEXTVIEW" => ["qtextview.h", "QTextView foo;", 14], #Obsolete
+ "QT_NO_TOOLBAR" => ["qtoolbar.h", "QToolBar foo;", 10],
+ "QT_NO_TOOLBUTTON" => ["qtoolbutton.h", "QToolButton foo((QWidget *) NULL );", 12],
+ "QT_NO_TOOLTIP" => ["qtooltip.h", "QToolTip::hide();", 10],
+
+ "QT_NO_TRANSFORMATIONS" => ["qpainter.h", q£
+ QPainter *foo= new QPainter();
+ foo->setViewXForm( true );£, 5],
+ "QT_NO_VARIANT" => ["qvariant.h", "QVariant foo;", 0],
+ "QT_NO_WHATSTHIS" => ["qwhatsthis.h", "QWhatsThis::inWhatsThisMode();", 10],
+ "QT_NO_WHEELEVENT" => ["qevent.h", "QWheelEvent foo( QPoint(1,1), 1, 1 );", 5],
+ "QT_NO_WIDGET_TOPEXTRA" => ["qwidget.h", "QWidget foo; foo.caption();", 9],
+ "QT_NO_WIDGETSTACK" => ["qwidgetstack.h", "QWidgetStack foo;", 13],
+ "QT_NO_WIZARD" => ["qwizard.h", "QWizard foo;", 13],
+ "QT_NO_WMATRIX" => ["qwmatrix.h", "QWMatrix foo;", 0],
+ "QT_NO_XML" => ["qxml.h", "QXmlNamespaceSupport foo;", 5],
+ );
+
+}
diff --git a/smoke/smoke.h b/smoke/smoke.h
new file mode 100644
index 0000000..91acea8
--- /dev/null
+++ b/smoke/smoke.h
@@ -0,0 +1,353 @@
+#ifndef SMOKE_H
+#define SMOKE_H
+
+#include <string.h>
+
+/*
+ * Copyright (C) 2002, Ashley Winters <qaqortog@nwlink.com>
+ */
+
+class SmokeBinding;
+
+class Smoke {
+public:
+ union StackItem; // defined below
+ /**
+ * A stack is an array of arguments, passed to a method when calling it.
+ */
+ typedef StackItem* Stack;
+
+ enum EnumOperation {
+ EnumNew,
+ EnumDelete,
+ EnumFromLong,
+ EnumToLong
+ };
+
+ typedef short Index;
+ typedef void (*ClassFn)(Index method, void* obj, Stack args);
+ typedef void* (*CastFn)(void* obj, Index from, Index to);
+ typedef void (*EnumFn)(EnumOperation, Index, void*&, long&);
+
+ enum ClassFlags {
+ cf_constructor = 0x01, // has a constructor
+ cf_deepcopy = 0x02, // has copy constructor
+ cf_virtual = 0x04, // has virtual destructor
+ cf_undefined = 0x10 // defined elsewhere
+ };
+ /**
+ * Describe one class.
+ */
+ struct Class {
+ const char *className; // Name of the class
+ Index parents; // Index into inheritanceList
+ ClassFn classFn; // Calls any method in the class
+ EnumFn enumFn; // Handles enum pointers
+ unsigned short flags; // ClassFlags
+ };
+
+ enum MethodFlags {
+ mf_static = 0x01,
+ mf_const = 0x02
+ };
+ /**
+ * Describe one method of one class.
+ */
+ struct Method {
+ Index classId; // Index into classes
+ Index name; // Index into methodNames; real name
+ Index args; // Index into argumentList
+ unsigned char numArgs; // Number of arguments
+ unsigned char flags; // MethodFlags (const/static/etc...)
+ Index ret; // Index into types for the return type
+ Index method; // Passed to Class.classFn, to call method
+ };
+
+ /**
+ * One MethodMap entry maps the munged method prototype
+ * to the Method entry.
+ *
+ * The munging works this way:
+ * $ is a plain scalar
+ * # is an object
+ * ? is a non-scalar (reference to array or hash, undef)
+ *
+ * e.g. QApplication(int &, char **) becomes QApplication$?
+ */
+ struct MethodMap {
+ Index classId; // Index into classes
+ Index name; // Index into methodNames; munged name
+ Index method; // Index into methods
+ };
+
+ enum TypeFlags {
+ // The first 4 bits indicate the TypeId value, i.e. which field
+ // of the StackItem union is used.
+ tf_elem = 0x0F,
+
+ // Always only one of the next three flags should be set
+ tf_stack = 0x10, // Stored on the stack, 'type'
+ tf_ptr = 0x20, // Pointer, 'type*'
+ tf_ref = 0x30, // Reference, 'type&'
+ // Can | whatever ones of these apply
+ tf_const = 0x40 // const argument
+ };
+ /**
+ * One Type entry is one argument type needed by a method.
+ * Type entries are shared, there is only one entry for "int" etc.
+ */
+ struct Type {
+ const char *name; // Stringified type name
+ Index classId; // Index into classes. -1 for none
+ unsigned short flags; // TypeFlags
+ };
+
+ // We could just pass everything around using void* (pass-by-reference)
+ // I don't want to, though. -aw
+ union StackItem {
+ void* s_voidp;
+ bool s_bool;
+ char s_char;
+ unsigned char s_uchar;
+ short s_short;
+ unsigned short s_ushort;
+ int s_int;
+ unsigned int s_uint;
+ long s_long;
+ unsigned long s_ulong;
+ float s_float;
+ double s_double;
+ long s_enum;
+ void* s_class;
+ };
+ enum TypeId {
+ t_voidp,
+ t_bool,
+ t_char,
+ t_uchar,
+ t_short,
+ t_ushort,
+ t_int,
+ t_uint,
+ t_long,
+ t_ulong,
+ t_float,
+ t_double,
+ t_enum,
+ t_class,
+ t_last // number of pre-defined types
+ };
+
+ // Passed to constructor
+ /**
+ * The classes array defines every class for this module
+ */
+ Class *classes;
+ Index numClasses;
+
+ /**
+ * The methods array defines every method in every class for this module
+ */
+ Method *methods;
+ Index numMethods;
+
+ /**
+ * methodMaps maps the munged method prototypes
+ * to the methods entries.
+ */
+ MethodMap *methodMaps;
+ Index numMethodMaps;
+
+ /**
+ * Array of method names, for Method.name and MethodMap.name
+ */
+ const char **methodNames;
+ Index numMethodNames;
+
+ /**
+ * List of all types needed by the methods (arguments and return values)
+ */
+ Type *types;
+ Index numTypes;
+
+ /**
+ * Groups of class IDs (-1 separated) used as super class lists.
+ * For classes with super classes: Class.parents = index into this array.
+ */
+ Index *inheritanceList;
+ /**
+ * Groups of type IDs (-1 separated), describing the types of argument for a method.
+ * Method.args = index into this array.
+ */
+ Index *argumentList;
+ /**
+ * Groups of method prototypes with the same number of arguments, but different types.
+ * Used to resolve overloading.
+ */
+ Index *ambiguousMethodList;
+ /**
+ * Function used for casting from/to the classes defined by this module.
+ */
+ CastFn castFn;
+
+ // Not passed to constructor
+ SmokeBinding *binding;
+
+ /**
+ * Constructor
+ */
+ Smoke(Class *_classes, Index _numClasses,
+ Method *_methods, Index _numMethods,
+ MethodMap *_methodMaps, Index _numMethodMaps,
+ const char **_methodNames, Index _numMethodNames,
+ Type *_types, Index _numTypes,
+ Index *_inheritanceList,
+ Index *_argumentList,
+ Index *_ambiguousMethodList,
+ CastFn _castFn) :
+ classes(_classes), numClasses(_numClasses),
+ methods(_methods), numMethods(_numMethods),
+ methodMaps(_methodMaps), numMethodMaps(_numMethodMaps),
+ methodNames(_methodNames), numMethodNames(_numMethodNames),
+ types(_types), numTypes(_numTypes),
+ inheritanceList(_inheritanceList),
+ argumentList(_argumentList),
+ ambiguousMethodList(_ambiguousMethodList),
+ castFn(_castFn),
+
+ binding(0)
+ {}
+
+ inline void *cast(void *ptr, Index from, Index to) {
+ if(!castFn) return ptr;
+ return (*castFn)(ptr, from, to);
+ }
+
+ // return classname directly
+ inline const char *className(Index classId) {
+ return classes[classId].className;
+ }
+
+ inline int leg(Index a, Index b) { // ala Perl's <=>
+ if(a == b) return 0;
+ return (a > b) ? 1 : -1;
+ }
+
+ inline Index idType(const char *t) {
+ if(!t) return 0;
+ Index imax = numTypes;
+ Index imin = 0;
+ Index icur = -1;
+ int icmp = -1;
+
+ while(imax >= imin) {
+ icur = (imin + imax) / 2;
+ if(icur > 0)
+ icmp = strcmp(types[icur].name, t);
+ else
+ icmp = -1;
+ if(!icmp) break;
+ if(icmp > 0)
+ imax = icur - 1;
+ else
+ imin = icur + 1;
+ }
+
+ return (!icmp) ? icur : 0;
+ }
+
+ inline Index idClass(const char *c) {
+ if(!c) return 0;
+ Index imax = numClasses;
+ Index imin = 0;
+ Index icur = -1;
+ int icmp = -1;
+
+ while(imax >= imin) {
+ icur = (imin + imax) / 2;
+ if(icur > 0)
+ icmp = strcmp(classes[icur].className, c);
+ else
+ icmp = -1;
+ if(!icmp) break;
+ if(icmp > 0)
+ imax = icur - 1;
+ else
+ imin = icur + 1;
+ }
+
+ return (!icmp) ? icur : 0;
+ }
+
+ inline Index idMethodName(const char *m) {
+ if(!m) return 0;
+ Index imax = numMethodNames;
+ Index imin = 0;
+ Index icur = -1;
+ int icmp = -1;
+ while(imax >= imin) {
+ icur = (imin + imax) / 2;
+ icmp = strcmp(methodNames[icur], m);
+ if(!icmp) break;
+ if(icmp > 0)
+ imax = icur - 1;
+ else
+ imin = icur + 1;
+ }
+
+ return (!icmp) ? icur : 0;
+ }
+
+ inline Index idMethod(Index c, Index name) {
+ Index imax = numMethodMaps;
+ Index imin = 0;
+ Index icur = -1;
+ int icmp = -1;
+ while(imax >= imin) {
+ icur = (imin + imax) / 2;
+ icmp = leg(methodMaps[icur].classId, c);
+ if(!icmp) {
+ icmp = leg(methodMaps[icur].name, name);
+ if(!icmp) break;
+ }
+ if(icmp > 0)
+ imax = icur - 1;
+ else
+ imin = icur + 1;
+ }
+
+ return (!icmp) ? icur : 0;
+ }
+
+ inline Index findMethod(Index c, Index name) {
+ // TODO: If method is in a parent module, forward the call from here
+ if(!c || !name) return 0;
+ Index mid = idMethod(c, name);
+ if(mid) return mid;
+ if(!classes[c].parents) return 0;
+ for(int p = classes[c].parents; inheritanceList[p] ; p++) {
+ mid = findMethod(inheritanceList[p], name);
+ if(mid) return mid;
+ }
+ return 0;
+ }
+
+ inline Index findMethod(const char *c, const char *name) {
+ Index idc = idClass(c);
+ Index idname = idMethodName(name);
+ return findMethod(idc, idname);
+ }
+};
+
+class SmokeBinding {
+protected:
+ Smoke *smoke;
+public:
+ SmokeBinding(Smoke *s) : smoke(s) {}
+ virtual void deleted(Smoke::Index classId, void *obj) = 0;
+ virtual bool callMethod(Smoke::Index method, void *obj, Smoke::Stack args, bool isAbstract = false) = 0;
+ virtual char* className(Smoke::Index classId) = 0;
+ virtual ~SmokeBinding() {}
+};
+
+#endif