From: Greg Hudson Date: Wed, 26 May 2021 06:09:43 +0000 (-0400) Subject: Remove profile Tcl tests X-Git-Tag: krb5-1.20-beta1~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1190%2Fhead;p=thirdparty%2Fkrb5.git Remove profile Tcl tests --- diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4408df8f81..b7f7d73789 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,7 +32,7 @@ jobs: if: startsWith(matrix.os, 'ubuntu') run: | sudo apt-get update -qq - sudo apt-get install -y bison gettext keyutils ldap-utils libcmocka-dev libldap2-dev libkeyutils-dev libresolv-wrapper libsasl2-dev libssl-dev python3-kdcproxy python3-pip slapd tcl-dev tcsh + sudo apt-get install -y bison gettext keyutils ldap-utils libcmocka-dev libldap2-dev libkeyutils-dev libresolv-wrapper libsasl2-dev libssl-dev python3-kdcproxy python3-pip slapd tcsh pip3 install pyrad - name: Build env: diff --git a/.gitignore b/.gitignore index a316321e9e..45c8bbabe9 100644 --- a/.gitignore +++ b/.gitignore @@ -518,7 +518,6 @@ local.properties /src/util/profile/modtest.conf /src/util/profile/prof_err.[ch] /src/util/profile/profile.h -/src/util/profile/profile_tcl /src/util/profile/test?.ini /src/util/profile/test_include_dir/ /src/util/profile/test_load diff --git a/doc/build/options2configure.rst b/doc/build/options2configure.rst index aeca87ffad..86061071af 100644 --- a/doc/build/options2configure.rst +++ b/doc/build/options2configure.rst @@ -39,12 +39,6 @@ Most commonly used options library or fails to pass the tests in ``src/tests/resolv``, you will need to use this option. -**-**\ **-with-tcl=**\ *TCLPATH* - Some of the unit-tests in the build tree rely upon using a program - in Tcl. The directory specified by *TCLPATH* specifies where the - Tcl header file (TCLPATH/include/tcl.h) as well as where the Tcl - library (TCLPATH/lib) should be found. - **-**\ **-enable-dns-for-realm** Enable the use of DNS to look up a host's Kerberos realm, if the information is not provided in @@ -332,11 +326,6 @@ Optional packages **-**\ **-with-lmdb** Compile LMDB database backend module. -**-**\ **-with-tcl=**\ *path* - Specifies that *path* is the location of a Tcl installation. - Tcl is needed for some of the tests run by 'make check'; such tests - will be skipped if this option is not set. - **-**\ **-with-vague-errors** Do not send helpful errors to client. For example, if the KDC should return only vague error codes to clients. diff --git a/doc/notice.rst b/doc/notice.rst index 783e8585a8..1c96e113e4 100644 --- a/doc/notice.rst +++ b/doc/notice.rst @@ -950,16 +950,6 @@ The following notice applies to ``src/util/profile/argv_parse.c`` and ------------------- -The following notice applies to SWIG-generated code in -``src/util/profile/profile_tcl.c``: - - Copyright |copy| 1999-2000, The University of Chicago - - This file may be freely redistributed without license or fee provided - this copyright message remains intact. - -------------------- - The following notice applies to portiions of ``src/lib/rpc`` and ``src/include/gssrpc``: diff --git a/src/Makefile.in b/src/Makefile.in index 7d2507ef80..8f14e9bf2c 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -636,7 +636,6 @@ OTHEREXCLUDES = \ util/et/com_err.h \ util/profile/prof_int.h \ util/profile/profile.hin \ - util/profile/profile_tcl.c \ util/support/fnmatch.c \ util/verto \ util/k5ev diff --git a/src/aclocal.m4 b/src/aclocal.m4 index 4c30f98b1f..0ea4d18930 100644 --- a/src/aclocal.m4 +++ b/src/aclocal.m4 @@ -762,236 +762,6 @@ AC_DEFUN(KRB5_AC_REGEX_FUNCS,[ AC_CHECK_FUNCS(re_comp re_exec regexec) AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl ])dnl -dnl -dnl AC_KRB5_TCL_FIND_CONFIG (uses tcl_dir) -dnl -AC_DEFUN(AC_KRB5_TCL_FIND_CONFIG,[ -AC_REQUIRE([KRB5_LIB_AUX])dnl -AC_MSG_CHECKING(for tclConfig.sh) -dnl On Debian, we might be given --with-tcl=/usr, or tclsh might -dnl point us to /usr/lib/tcl8.4; either way, we need to find -dnl /usr/lib/tcl8.4/tclConfig.sh. -dnl On NetBSD, we might be given --with-tcl=/usr/pkg, or tclsh -dnl might point us to /usr/pkg/lib/tcl8.4; we need to find -dnl /usr/pkg/lib/tclConfig.sh. -if test -r "$tcl_dir/lib/tclConfig.sh" ; then - tcl_conf="$tcl_dir/lib/tclConfig.sh" -elif test -r "$tcl_dir/tclConfig.sh" ; then - tcl_conf="$tcl_dir/tclConfig.sh" -elif test -r "$tcl_dir/../tclConfig.sh" ; then - tcl_conf="$tcl_dir/../tclConfig.sh" -else - tcl_conf= - lib="$tcl_dir/lib" - changequote(<<,>>)dnl - for d in "$lib" "$lib"/tcl7.[0-9] "$lib"/tcl8.[0-9] ; do - if test -r "$d/tclConfig.sh" ; then - tcl_conf="$tcl_conf $d/tclConfig.sh" - fi - done - changequote([,])dnl -fi -if test -n "$tcl_conf" ; then - AC_MSG_RESULT($tcl_conf) -else - AC_MSG_RESULT(not found) -fi -tcl_ok_conf= -tcl_vers_maj= -tcl_vers_min= -old_CPPFLAGS=$CPPFLAGS -old_LIBS=$LIBS -old_LDFLAGS=$LDFLAGS -if test -n "$tcl_conf" ; then - for file in $tcl_conf ; do - TCL_MAJOR_VERSION=x ; TCL_MINOR_VERSION=x - AC_MSG_CHECKING(Tcl info in $file) - . $file - v=$TCL_MAJOR_VERSION.$TCL_MINOR_VERSION - if test -z "$tcl_vers_maj" \ - || test "$tcl_vers_maj" -lt "$TCL_MAJOR_VERSION" \ - || test "$tcl_vers_maj" = "$TCL_MAJOR_VERSION" -a "$tcl_vers_min" -lt "$TCL_MINOR_VERSION" ; then - for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do - if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then - CPPFLAGS="$old_CPPFLAGS -I$incdir" - break - fi - done - LIBS="$old_LIBS `eval echo x $TCL_LIB_SPEC $TCL_LIBS | sed 's/^x//'`" - LDFLAGS="$old_LDFLAGS $TCL_LD_FLAGS" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include - ]], - [[Tcl_CreateInterp();]])], - tcl_ok_conf=$file - tcl_vers_maj=$TCL_MAJOR_VERSION - tcl_vers_min=$TCL_MINOR_VERSION - AC_MSG_RESULT($v - working), - AC_MSG_RESULT($v - compilation failed) - ) - else - AC_MSG_RESULT(older version $v) - fi - done -fi -CPPFLAGS=$old_CPPFLAGS -LIBS=$old_LIBS -LDFLAGS=$old_LDFLAGS -tcl_header=no -tcl_lib=no -if test -n "$tcl_ok_conf" ; then - . $tcl_ok_conf - TCL_INCLUDES= - for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do - if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then - if test "$incdir" != "/usr/include" ; then - TCL_INCLUDES=-I$incdir - fi - break - fi - done - # Need eval because the first-level expansion could reference - # variables like ${TCL_DBGX}. - eval TCL_LIBS='"'$TCL_LIB_SPEC $TCL_LIBS $TCL_DL_LIBS'"' - TCL_LIBPATH="-L$TCL_EXEC_PREFIX/lib" - TCL_RPATH=":$TCL_EXEC_PREFIX/lib" - if test "$DEPLIBEXT" != "$SHLIBEXT" && test -n "$RPATH_FLAG"; then - TCL_MAYBE_RPATH='$(RPATH_FLAG)'"$TCL_EXEC_PREFIX/lib$RPATH_TAIL" - else - TCL_MAYBE_RPATH= - fi - CPPFLAGS="$old_CPPFLAGS $TCL_INCLUDES" - AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h is available]) tcl_header=yes) - if test $tcl_header=no; then - AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h is available]) tcl_header=yes) - fi - CPPFLAGS="$old_CPPFLAGS" - tcl_lib=yes -else - # If we read a tclConfig.sh file, it probably set this. - TCL_LIBS= -fi -AC_SUBST(TCL_INCLUDES) -AC_SUBST(TCL_LIBS) -AC_SUBST(TCL_LIBPATH) -AC_SUBST(TCL_RPATH) -AC_SUBST(TCL_MAYBE_RPATH) -])dnl -dnl -dnl AC_KRB5_TCL_TRYOLD -dnl attempt to use old search algorithm for locating tcl -dnl -AC_DEFUN(AC_KRB5_TCL_TRYOLD, [ -AC_REQUIRE([KRB5_AC_FIND_DLOPEN]) -AC_MSG_WARN([trying old tcl search code]) -if test "$with_tcl" != yes -a "$with_tcl" != no; then - TCL_INCLUDES=-I$with_tcl/include - TCL_LIBPATH=-L$with_tcl/lib - TCL_RPATH=:$with_tcl/lib -fi -if test "$with_tcl" != no ; then - krb5_save_CPPFLAGS="$CPPFLAGS" - krb5_save_LDFLAGS="$LDFLAGS" - CPPFLAGS="$CPPFLAGS $TCL_INCLUDES" - LDFLAGS="$LDFLAGS $TCL_LIBPATH" - tcl_header=no - AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h found]) tcl_header=yes) - if test $tcl_header=no; then - AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h found]) tcl_header=yes) - fi - - if test $tcl_header = yes ; then - tcl_lib=no - - if test $tcl_lib = no; then - AC_CHECK_LIB(tcl8.0, Tcl_CreateCommand, - TCL_LIBS="$TCL_LIBS -ltcl8.0 -lm $DL_LIB $LIBS" - tcl_lib=yes,,-lm $DL_LIB) - fi - if test $tcl_lib = no; then - AC_CHECK_LIB(tcl7.6, Tcl_CreateCommand, - TCL_LIBS="$TCL_LIBS -ltcl7.6 -lm $DL_LIB $LIBS" - tcl_lib=yes,,-lm $DL_LIB) - fi - if test $tcl_lib = no; then - AC_CHECK_LIB(tcl7.5, Tcl_CreateCommand, - TCL_LIBS="$TCL_LIBS -ltcl7.5 -lm $DL_LIB $LIBS" - tcl_lib=yes,,-lm $DL_LIB) - - fi - if test $tcl_lib = no ; then - AC_CHECK_LIB(tcl, Tcl_CreateCommand, - TCL_LIBS="$TCL_LIBS -ltcl -lm $DL_LIB $LIBS" - tcl_lib=yes,,-lm $DL_LIB) - - fi - if test $tcl_lib = no ; then - AC_MSG_WARN("tcl.h found but not library") - fi - else - AC_MSG_WARN(Could not find Tcl which is needed for the kadm5 tests) - TCL_LIBS= - fi - CPPFLAGS="$krb5_save_CPPFLAGS" - LDFLAGS="$krb5_save_LDFLAGS" - AC_SUBST(TCL_INCLUDES) - AC_SUBST(TCL_LIBS) - AC_SUBST(TCL_LIBPATH) - AC_SUBST(TCL_RPATH) -else - AC_MSG_RESULT("Not looking for Tcl library") -fi -])dnl -dnl -dnl AC_KRB5_TCL - determine if the TCL library is present on system -dnl -AC_DEFUN(AC_KRB5_TCL,[ -TCL_INCLUDES= -TCL_LIBPATH= -TCL_RPATH= -TCL_LIBS= -TCL_WITH= -tcl_dir= -AC_ARG_WITH(tcl, -[ --with-tcl=path where Tcl resides], , with_tcl=try) -if test "$with_tcl" = no ; then - true -elif test "$with_tcl" = yes -o "$with_tcl" = try ; then - tcl_dir=/usr - if test ! -r /usr/lib/tclConfig.sh; then - cat >> conftest <<\EOF -puts "tcl_dir=$tcl_library" -EOF - if tclsh conftest >conftest.out 2>/dev/null; then - if grep tcl_dir= conftest.out >/dev/null 2>&1; then - t=`sed s/tcl_dir=// conftest.out` - tcl_dir=$t - fi - fi # tclsh ran script okay - rm -f conftest conftest.out - fi # no /usr/lib/tclConfig.sh -else - tcl_dir=$with_tcl -fi -if test "$with_tcl" != no ; then - AC_KRB5_TCL_FIND_CONFIG - if test $tcl_lib = no ; then - if test "$with_tcl" != try ; then - AC_KRB5_TCL_TRYOLD - else - AC_MSG_WARN(Could not find Tcl which is needed for some tests) - fi - fi -fi -# If "yes" or pathname, error out if not found. -if test "$with_tcl" != no -a "$with_tcl" != try ; then - if test "$tcl_header $tcl_lib" != "yes yes" ; then - AC_MSG_ERROR(Could not find Tcl) - fi -fi -])dnl - dnl dnl WITH_HESIOD dnl diff --git a/src/config/pre.in b/src/config/pre.in index 3adbc4cf30..5b648dd178 100644 --- a/src/config/pre.in +++ b/src/config/pre.in @@ -403,14 +403,6 @@ RUN_VARS=@KRB5_RUN_VARS@ RUN_TEST=$(RUN_SETUP) KRB5_CONFIG=$(top_srcdir)/config-files/krb5.conf \ LC_ALL=C $(VALGRIND) -# -# variables for --with-tcl= -TCL_LIBS = @TCL_LIBS@ -TCL_LIBPATH = @TCL_LIBPATH@ -TCL_RPATH = @TCL_RPATH@ -TCL_MAYBE_RPATH = @TCL_MAYBE_RPATH@ -TCL_INCLUDES = @TCL_INCLUDES@ - # Crypto and PRNG back-end selections CRYPTO_IMPL = @CRYPTO_IMPL@ PRNG_ALG = @PRNG_ALG@ diff --git a/src/configure.ac b/src/configure.ac index 58bc50b413..d8156340e5 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -98,7 +98,6 @@ fi # configuration options. KRB5_LIB_AUX -AC_KRB5_TCL AC_ARG_ENABLE([athena], [ --enable-athena build with MIT Project Athena configuration],,) @@ -924,13 +923,6 @@ AC_CHECK_TYPES([struct rt_msghdr], , , [ AC_CHECK_SIZEOF([size_t]) AC_CHECK_TYPES([__int128_t, __uint128_t]) -# stuff for util/profile - -# AC_KRB5_TCL already done -DO_TCL= -test "$TCL_LIBS" != "" && DO_TCL=ok -AC_SUBST(DO_TCL) - # types libdb2 wants AC_CHECK_TYPES([ssize_t, u_char, u_int, u_long, u_int8_t, u_int16_t, u_int32_t, int8_t, int16_t, int32_t]) diff --git a/src/util/profile/Makefile.in b/src/util/profile/Makefile.in index 30f1695149..18c6d2dd55 100644 --- a/src/util/profile/Makefile.in +++ b/src/util/profile/Makefile.in @@ -1,14 +1,12 @@ mydir=util$(S)profile BUILDTOP=$(REL)..$(S).. SUBDIRS=testmod -PROG_LIBPATH=-L$(TOPLIBD) $(TCL_LIBPATH) -L. -PROG_RPATH=$(KRB5_LIBDIR)$(TCL_RPATH) +PROG_LIBPATH=-L$(TOPLIBD) -L. ##DOS##BUILDTOP = ..\.. ##DOS##OBJFILE=$(OUTPRE)profile.lst ##DOS##LIBNAME=$(OUTPRE)profile.lib -LOCALINCLUDES=-I. $(TCL_INCLUDES) -# for tcl.h +LOCALINCLUDES=-I. DEFINES=-DHAS_STDARG -DLIBDIR=\"$(KRB5_LIBDIR)\" STLIBOBJS = \ @@ -37,8 +35,7 @@ SRCS = $(srcdir)/prof_tree.c \ $(srcdir)/prof_init.c EXTRADEPSRCS=$(srcdir)/test_load.c $(srcdir)/test_parse.c \ - $(srcdir)/test_profile.c $(srcdir)/test_vtable.c \ - $(srcdir)/profile_tcl.c $(srcdir)/t_profile.c + $(srcdir)/test_profile.c $(srcdir)/test_vtable.c $(srcdir)/t_profile.c DEPLIBS = $(COM_ERR_DEPLIB) $(SUPPORT_DEPLIB) MLIBS = $(COM_ERR_LIB) $(SUPPORT_LIB) $(LIBS) @@ -120,20 +117,10 @@ prof_err.c: $(srcdir)/prof_err.et prof_err.o: prof_err.c -# not built by default, but may be useful for testing -$(srcdir)/profile_tcl.c: profile.swg -# (cd $(srcdir) && swig -tcl8 -nosafe -o profile_tcl.c profile.swg) -profile_tcl.o: $(srcdir)/profile_tcl.c profile.h -profile_tcl: profile_tcl.o $(PROF_DEPLIB) $(COM_ERR_DEPLIB) $(SUPPORT_DEPLIB) - $(CC_LINK) -o profile_tcl profile_tcl.o \ - $(TCL_MAYBE_RPATH) \ - -L../et -L../.. -lprofile $(TCL_LIBS) $(MLIBS) - clean-unix:: clean-libs clean-libobjs $(RM) $(PROGS) *.o *~ core prof_err.h profile.h prof_err.c - $(RM) test_load test_parse test_profile test_vtable profile_tcl - $(RM) t_profile modtest.conf testinc.ini testinc2.ini final.out - $(RM) test2* test3* + $(RM) test_load test_parse test_profile test_vtable t_profile + $(RM) modtest.conf testinc.ini testinc2.ini final.out test2* test3* $(RM) -r test_include_dir clean-windows:: @@ -146,8 +133,7 @@ check-unix: test_vtable test_load t_profile cp $(srcdir)/test.ini test2.ini $(RUN_TEST) ./t_profile -DO_TCL=@DO_TCL@ -check-unix: check-unix-final check-unix-tcl-$(DO_TCL) +check-unix: check-unix-final F1=$(srcdir)/final1.ini F2=$(srcdir)/final2.ini @@ -165,15 +151,6 @@ check-unix-final: test_profile cmp final.out $(srcdir)/final.expected $(RM) final.out -check-unix-tcl-: - @echo "+++" - @echo "+++ Tcl not available, some profile tests not run." - @echo "+++" - -check-unix-tcl-ok: profile_tcl - cp $(srcdir)/test.ini test2.ini - $(RUN_TEST) ./profile_tcl $(srcdir)/prof_test1 - check-windows: $(OUTPRE)test_profile.exe $(OUTPRE)test_parse.exe $(RM) $(OUTPRE)*.obj $(OUTPRE)test_parse test.ini diff --git a/src/util/profile/deps b/src/util/profile/deps index ce9d9591c8..179f07073f 100644 --- a/src/util/profile/deps +++ b/src/util/profile/deps @@ -52,5 +52,5 @@ test_vtable.so test_vtable.po $(OUTPRE)test_vtable.$(OBJEXT): \ $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/profile.h \ $(COM_ERR_DEPS) $(top_srcdir)/include/k5-platform.h \ $(top_srcdir)/include/k5-thread.h test_vtable.c -profile_tcl.so profile_tcl.po $(OUTPRE)profile_tcl.$(OBJEXT): \ - $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) profile_tcl.c +t_profile.so t_profile.po $(OUTPRE)t_profile.$(OBJEXT): \ + $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) t_profile.c diff --git a/src/util/profile/prof_test1 b/src/util/profile/prof_test1 deleted file mode 100644 index fc675714d0..0000000000 --- a/src/util/profile/prof_test1 +++ /dev/null @@ -1,377 +0,0 @@ -# To do: Should run all tests and return a useful exit status, not -# punt on the first failure. - -set wd [pwd] -set verbose 0 - -proc test1 {} { - global wd verbose - set p [profile_init_path $wd/test2.ini] - set sect {{test section 1} child_section child} - set iter [profile_iterator_create $p $sect 0] - set done 0 - if $verbose { puts "Iterating over {$sect} entries:" } - while {!$done} { - set pair [profile_iterator $iter] - if [string match $pair {{} {}}] { - set done 1 - } else { - set val [lindex $pair 1] - if $verbose { puts -nonewline "\t$val" } - } - } - if $verbose { puts "" } - profile_iterator_free $iter - - set iter [profile_iterator_create $p $sect 0] - set done 0 - if $verbose { puts "Iterating again, deleting:" } - while {!$done} { - set pair [profile_iterator $iter] - if [string match $pair {{} {}}] { - set done 1 - } else { - set val [lindex $pair 1] - if $verbose { puts -nonewline "\t$val" } - profile_update_relation $p $sect $val - } - } - if $verbose { puts "" } - profile_iterator_free $iter - catch {file delete $wd/test3.ini} - profile_flush_to_file $p $wd/test3.ini - profile_abandon $p - - if $verbose { puts "Reloading new profile" } - set p [profile_init_path $wd/test3.ini] - set iter [profile_iterator_create $p $sect 0] - set done 0 - if $verbose { puts "Iterating again:" } - set found_some 0 - while {!$done} { - set pair [profile_iterator $iter] - if [string match $pair {{} {}}] { - set done 1 - } else { - set found_some 1 - set val [lindex $pair 1] - if $verbose { puts -nonewline "\t$val" } - } - } - profile_iterator_free $iter - profile_abandon $p - - if {$found_some} { - if $verbose { puts "" } - puts stderr "Error: Deleting in iterator didn't get them all." - exit 1 - } else { - puts "OK: test1: Deleting in iteration got rid of all entries." - } -} - -proc test2 {} { - global wd verbose - - # lxs said: create A, read A, flush A, read A, create B, read B, crash - # (where "create" refers to the object, not the file) - - if $verbose { puts "Running test2" } - set c [profile_init_path $wd/test2.ini] - # create A - set a [profile_init_path $wd/test2.ini] - if $verbose { puts "Opened profile $wd/test2.ini" } - # read A - set x [profile_get_values $a {{test section 1} foo}] - if $verbose { puts "Read $x from profile" } - if $verbose { puts "updating" } - exec sleep 2 - profile_update_relation $a {{test section 1} foo} [lindex $x 0] [lindex $x 0] - set x [profile_get_values $a {{test section 1} foo}] - if $verbose { puts "Read $x from profile" } - # flush A - profile_flush $a - # read A again - set x [profile_get_values $a {{test section 1} foo}] - if $verbose { puts "Read $x from profile" } - profile_release $a - # create B - set b [profile_init_path $wd/test2.ini] - if $verbose { puts "Opened profile again" } - # read B - set x [profile_get_values $b {{test section 1} foo}] - if $verbose { puts "Read $x from profile" } - # read B - set x [profile_get_values $b {{test section 1} foo}] - if $verbose { puts "Read $x from profile" } - # If we got this far, now what? - profile_release $b - profile_release $c - puts "OK: test2: Modifications don't corrupt existing open handles" -} - -proc test3 {} { - # lxs said: Start with a relation in the file. Open, delete - # relation, add relation back, list relations. In 1.4 release - # code, got two back. - - global wd verbose - - exec cp $wd/test2.ini $wd/test1c.ini - set p [profile_init_path $wd/test1c.ini] - set sect {{test section 1} quux} - - set v [profile_get_values $p $sect] - set v1 [lindex $v 0] - if $verbose { puts "Old values: $v" } - profile_clear_relation $p $sect - if $verbose { puts "Cleared." } - # profile_get_values raises an exception if no data is there; so if - # it succeeds, the test fails. - catch { - set v [profile_get_values $p $sect] - if $verbose { puts "New values: $v" } - puts stderr "Error: test3: Clearing relation didn't get rid of all values." - exit 1 - } - if $verbose { puts "Adding back $v1 ..." } - profile_add_relation $p $sect $v1 - set v [profile_get_values $p $sect] - if $verbose { puts "New values: $v" } - if [llength $v]!=1 { - puts stderr "Error: test3: Adding one entry after clearing relation leaves [llength $v] entries." - exit 1 - } - profile_abandon $p - file delete $wd/test1c.ini - puts "OK: test3: Clearing relation and adding one entry yields correct count." -} - -# Exercise the include and includedir directives. -proc test4 {} { - global wd verbose - - # Test expected error message when including nonexistent file. - catch [file delete $wd/testinc.ini] - exec echo "include does-not-exist" >$wd/testinc.ini - catch { profile_init_path $wd/testinc.ini } err - if $verbose { puts "Got error message $err" } - if ![string equal $err "Included profile file could not be read"] { - puts stderr "Error: test4: Did not get expected error when including nonexistent file." - exit 1 - } - - # Test expected error message when including nonexistent directory. - catch [file delete $wd/testinc.ini] - exec echo "includedir does-not-exist" >$wd/testinc.ini - catch { profile_init_path $wd/testinc.ini } err - if $verbose { puts "Got error message $err" } - if ![string equal $err "Included profile directory could not be read"] { - puts stderr "Error: test4: Did not get expected error when including nonexistent directory." - exit 1 - } - - # Test including a file. - catch [file delete $wd/testinc.ini] - exec echo "include $wd/test2.ini" >$wd/testinc.ini - set p [profile_init_path $wd/testinc.ini] - set x [profile_get_values $p {{test section 1} bar}] - if $verbose { puts "Read $x from included profile" } - if ![string equal [lindex $x 0] "foo"] { - puts stderr "Error: test4: Did not get expected result from included profile." - exit 1 - } - profile_release $p - - # Test including a directory. Put four copies of test2.ini inside - # the directory, two with invalid names. Check that we get two - # values for one of the variables. - catch [file delete -force $wd/test_include_dir] - exec mkdir $wd/test_include_dir - exec cp $wd/test2.ini $wd/test_include_dir/a - exec cp $wd/test2.ini $wd/test_include_dir/a~ - exec cp $wd/test2.ini $wd/test_include_dir/b.conf - exec cp $wd/test2.ini $wd/test_include_dir/b.conf.rpmsave - catch [file delete $wd/testinc.ini] - exec echo "includedir $wd/test_include_dir" >$wd/testinc.ini - set p [profile_init_path $wd/testinc.ini] - set x [profile_get_values $p {{test section 1} bar}] - if $verbose { puts "Read $x from included directory" } - if ![string equal $x "foo foo"] { - puts stderr, "Error: test4: Did not get expected result from included directory." - exit 1 - } - profile_release $p - - # Directly list the directory in the profile path and try again. - set p [profile_init_path $wd/test_include_dir] - set x [profile_get_values $p {{test section 1} bar}] - if $verbose { puts "Read $x from directory" } - if ![string equal $x "foo foo"] { - puts stderr, "Error: test4: Did not get expected result from directory." - exit 1 - } - profile_release $p - - puts "OK: test4: include and includedir directives" -} - -proc test5 {} { - global wd verbose - - # Test syntactic independence of included profile files. - catch [file delete $wd/testinc.ini] - set f [open "$wd/testinc.ini" w] - puts $f {[sec1]} - puts $f "var = {" - puts $f "a = 1" - puts $f "include testinc2.ini" - puts $f "c = 3" - puts $f "}" - close $f - catch [file delete $wd/testinc2.ini] - set f [open "$wd/testinc2.ini" w] - puts $f {[sec2]} - puts $f "b = 2" - close $f - set p [profile_init_path $wd/testinc.ini] - set a [profile_get_values $p {sec1 var a}] - set b [profile_get_values $p {sec2 b}] - set c [profile_get_values $p {sec1 var c}] - if $verbose { puts "Read values [concat $a $b $c] from profile" } - if { $a != 1 || $b != 2 || $c != 3 } { - puts stderr, "Error: test5: Wrong results from profile" - exit 1 - } - profile_release $p - - puts "OK: test5: syntax independence of included files" -} - -proc test6 {} { - global wd verbose - - # If a section is deleted and replaced, the new section should be - # used when retrieving values. - set p [profile_init_path $wd/test2.ini] - set sect {{test section 1}} - set newrel [concat $sect testkey] - set oldrel [concat $sect child] - if $verbose { puts "Removing and replacing {$sect}" } - profile_rename_section $p $sect - profile_add_relation $p $sect - if $verbose { puts "Adding {$newrel}" } - profile_add_relation $p $newrel 6 - set x [profile_get_values $p $newrel] - if $verbose { puts "Read from new relation {$newrel}: $x" } - if { $x != 6 } { - puts stderr, "Error: test6: Could not get value from new section" - exit 1 - } - if $verbose { puts "Reading old relation {$oldrel} which should be gone" } - catch { - profile_get_values $p $oldrel - puts stderr, "Error: test6: Got value from deleted section" - exit 1 - } - profile_abandon $p - - puts "OK: test6: section replacement" -} - -proc test7 {} { - global wd verbose - - # A deleted node at the end of a relation's value set should not cause - # profile_clear_relation to error, as long as some value is present. - set p [profile_init_path $wd/test2.ini] - set rel {{test section 1} testkey} - if $verbose { puts "Adding values 1 2 at {$rel}" } - profile_add_relation $p $rel 1 - profile_add_relation $p $rel 2 - if $verbose { puts "Removing value 2 at {$rel}" } - profile_update_relation $p $rel 2 - if $verbose { puts "Clearing values at {$rel}" } - profile_clear_relation $p $rel - profile_abandon $p - puts "OK: test7: profile_clear_relation with deleted node at end" -} - -proc test8 {} { - global wd verbose - - # Order of relation operations should be reflected even if some of - # the relations were deleted. - set p [profile_init_path $wd/test2.ini] - set rel {{test section 1} testkey} - if $verbose { puts "Adding values 1 2 3 at {$rel}" } - profile_add_relation $p $rel 1 - profile_add_relation $p $rel 2 - profile_add_relation $p $rel 3 - if $verbose { puts "Removing values 2 and adding 4 at {$rel}" } - profile_update_relation $p $rel 2 - profile_add_relation $p $rel 4 - set x [profile_get_values $p $rel] - if $verbose { puts "Read values from {$rel}: $x" } - if { $x != {1 3 4} } { - puts stderr, "Error: test8: Wrong order of values: $x" - exit 1 - } - profile_abandon $p - - puts "OK: test8: relation order in the presence of deletions" -} - -proc test9 {} { - global wd verbose - - # Regression test for #8431: profile_flush_to_file erroneously - # cleared the DIRTY and SHARED flags from the data object, which - # could lead to a dangling reference in g_shared_trees on release. - set p [profile_init_path $wd/test2.ini] - catch {file delete $wd/test3.ini} - profile_flush_to_file $p $wd/test3.ini - profile_release $p - - # If a dangling reference was created in g_shared_trees, the next - # profile open will trigger an assertion failure. - set p [profile_init_path $wd/test2.ini] - profile_release $p - - puts "OK: test9: profile_flush_to_file with no changes" -} - -proc test10 {} { - global wd verbose - - # Regression test for #7863: multiply-specified subsections should - # be merged. - set p [profile_init_path $wd/test2.ini] - set x [profile_get_values $p {{test section 2} child_section2 child}] - if $verbose { puts "Read $x from profile" } - if ![string equal $x "slick harry {john\tb } ron"] { - puts stderr "Error: test10: Did not get expected merged children." - exit 1 - } - - set x [profile_get_string $p {test section 2} child_section2 chores] - if $verbose { puts "Read $x from profile" } - if ![string equal $x "cleaning"] { - puts stderr "Error: test10: Did not find expected chores." - exit 1 - } - profile_release $p -} - -test1 -test2 -test3 -test4 -test5 -test6 -test7 -test8 -test9 -test10 - -exit 0 diff --git a/src/util/profile/profile.swg b/src/util/profile/profile.swg deleted file mode 100644 index 41c0ec5753..0000000000 --- a/src/util/profile/profile.swg +++ /dev/null @@ -1,258 +0,0 @@ -%{ -/* - * Copyright 2004, 2008 by the Massachusetts Institute of Technology. - * All Rights Reserved. - * - * Export of this software from the United States of America may - * require a specific license from the United States Government. - * It is the responsibility of any person or organization contemplating - * export to obtain such a license before exporting. - * - * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and - * distribute this software and its documentation for any purpose and - * without fee is hereby granted, provided that the above copyright - * notice appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, and that - * the name of M.I.T. not be used in advertising or publicity pertaining - * to distribution of the software without specific, written prior - * permission. Furthermore if you modify this software you must label - * your software as modified software and not distribute it in such a - * fashion that it might be confused with the original M.I.T. software. - * M.I.T. makes no representations about the suitability of - * this software for any purpose. It is provided "as is" without express - * or implied warranty. - * - * - * Input for wrapper generator program SWIG for profile routines. - */ -#include -#include "com_err.h" -#include "profile.h" - -#ifdef SWIGTCL -/* Reduce warnings about cast discarding const to just this one, from - every SWIG-generated call to Tcl_SetResult. */ -static void my_tcl_setresult(Tcl_Interp *i, const char *str, Tcl_FreeProc *f) -{ - Tcl_SetResult(i, (char *) str, f); -} -#undef Tcl_SetResult -#define Tcl_SetResult my_tcl_setresult -#endif -%} - -%include "typemaps.i" - -/* These should perhaps be part of the general SWIG package, maybe? */ -%typemap(in,numinputs=0) SWIGTYPE *OUTPUT ($1_basetype tmp) { - /*generic swigtype hack*/ $1 = &tmp; -} -%typemap(tcl8,argout) SWIGTYPE *OUTPUT - "/*generic swigtype hack*/ Tcl_SetObjResult(interp,SWIG_NewInstanceObj((void *) *$1, $*1_descriptor,0));"; -%typemap(python,argout) SWIGTYPE *OUTPUT - "/*generic swigtype hack*/ resultobj = SWIG_NewPointerObj((void *) *$1, $*1_descriptor,0);"; - -%module profile - -typedef long errcode_t; -%inline %{ -typedef void **iter_t; /* ick */ -%} - -/* As a hack, if we have too much trouble trying to manage output - arguments for functions returning error codes, this output argument - type will let us twist it around into a function returning the - interesting type, and incidentally possibly raising an error. */ -%typemap(in,numinputs=0) errcode_t * (errcode_t tmp) { - /* in errcode_t * */ - tmp = 0; - $1 = &tmp; -} -%typemap(tcl8,argout) errcode_t* { - /* argout errcode_t * */ - if (*$1) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(*$1), TCL_STATIC); - SWIG_fail; - } -} -/* returning errcode_t */ -%typemap(tcl8,out) errcode_t { - /* out errcode_t $1 */ - if ($1) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message($1), TCL_STATIC); - SWIG_fail; - } -} -%typemap(python,argout) errcode_t* { - /* do something with *($1) */ abort(); -} -%typemap(python,out) errcode_t { - /* do something with $1 */ abort(); -} - -/* "char **OUTPUT" : Supply a place for the function to stuff one - string pointer. */ -%typemap(in,numinputs=0) char **OUTPUT (char * tmp) { - /* in char **OUTPUT */ - tmp = NULL; - $1 = &tmp; -} -%typemap(tcl8,argout) char **OUTPUT { - /* argout char **OUTPUT */ -/* Tcl_SetResult(interp, *$1, TCL_DYNAMIC); */ - char *s = ($1 && *$1) ? *$1 : ""; - Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp), - Tcl_NewStringObj(s, strlen(s))); -} -%typemap(freearg) char **OUTPUT { - /* There may be a memory leak here. Investigate later, if anyone - cares. */ -/* profile_release_string(*$1); */ -} - -/* "char **nullterm" : Null-terminated list of strings, from a single - input value which is a list. */ -%typemap(tcl8,in) char **nullterm { - /* in char **nullterm */ - int n; - if (Tcl_SplitList(interp, Tcl_GetStringFromObj($input,NULL), &n, (const char ***) &$1) == TCL_ERROR) SWIG_fail; -} -%typemap(tcl8,freearg) char **nullterm { - /* freearg char **nullterm */ - if ($1) { Tcl_Free((char *)$1); $1 = (char **) NULL; } -} - -/* "char ***OUTPUT" : Supply a place for the function to stuff a - pointer to a list of strings, which will be combined into a list to - return, and the data from the function itself freed before - returning. */ -%typemap(in,numinputs=0) char ***OUTPUT (char ** tmp) { - /* in char ***OUTPUT */ - tmp = NULL; - $1 = &tmp; -} -%typemap(tcl8,argout) char ***OUTPUT { - /* argout char ***OUTPUT */ - int i; - for (i = 0; (*$1)[i]; i++) - Tcl_AppendElement(interp, (*$1)[i]); -} -%typemap(tcl8,freearg) char ***OUTPUT { - /* freearg char ***OUTPUT */ - profile_free_list(*$1); -} - -typedef struct _profile_t *profile_t; - -errcode_t profile_init_path(const char *path = NULL, profile_t *OUTPUT); -errcode_t profile_init(const char **nullterm = NULL, profile_t *OUTPUT); -errcode_t profile_flush(profile_t); -errcode_t profile_flush_to_file(profile_t, const char *path); -/* Nota bene: There is nothing at all in this code to prevent a script - from accessing a profile object after calling one of these routines - to destroy it! */ -void profile_abandon(profile_t); -void profile_release(profile_t); - -errcode_t profile_get_values(profile_t p, const char **nullterm, - char ***OUTPUT); - -/* XXX Because of the way this is specified, the default can only be - given if you're actually using all three names (e.g., for realm - data). SWIG currently doesn't support a non-optional argument (at - the scripting-language level -- the output-only argument doesn't - count) after an optional one. */ -extern errcode_t profile_get_string(profile_t p, - const char *name, - const char *subname, - const char *subsubname = NULL, - const char *defval = NULL, - char **OUTPUT); - -errcode_t profile_get_integer(profile_t p, - const char *name, - const char *subname, - const char *subsubname = NULL, - int defval = 0, - int *OUTPUT); -errcode_t profile_get_boolean(profile_t p, - const char *name, - const char *subname, - const char *subsubname = NULL, - int defval = 0, - int *OUTPUT); -errcode_t profile_get_relation_names(profile_t p, - const char **nullterm, - char ***OUTPUT); -errcode_t profile_get_subsection_names(profile_t p, - const char **nullterm, - char ***OUTPUT); - -%rename("profile_iterator_create") iter_create; -%rename("profile_iterator_free") iter_free; -%inline %{ -static errcode_t iter_create(profile_t p, const char **nullterm, - int flags, iter_t *OUTPUT) -{ - iter_t it; - errcode_t err; - const char **args; - - it = malloc(sizeof(*it)); - if (it == NULL) - return ENOMEM; - { - /* Memory leak! - - The profile code seems to assume that I'll keep the string - array around for as long as the iterator is valid; I can't - create the iterator and then throw them away. - - But right now, I can't be bothered to track the necessary - information to do the cleanup later. */ - int count, j; - for (count = 0; nullterm[count]; count++) ; - args = calloc(count+1, sizeof(char *)); - if (args == NULL) - return ENOMEM; - for (j = 0; j < count; j++) { - args[j] = strdup(nullterm[j]); - if (args[j] == NULL) - return ENOMEM; - } - args[j] = NULL; - } - err = profile_iterator_create(p, args, flags, it); - if (err) - free(it); - else - *OUTPUT = it; - return err; -} -static void iter_free(iter_t i) -{ - profile_iterator_free(i); - free(i); -} -%} -errcode_t profile_iterator(iter_t, char **OUTPUT, char **OUTPUT); - - -errcode_t profile_update_relation(profile_t p, const char **nullterm, - const char *oldval, - const char *newval = NULL); -errcode_t profile_clear_relation(profile_t p, const char **nullterm); -errcode_t profile_rename_section(profile_t p, const char **nullterm, - const char *new_name = NULL); -errcode_t profile_add_relation(profile_t p, const char **nullterm, - const char *new_val = NULL); -/* XXX Should be using profile_free_buffer blah. */ -errcode_t profile_flush_to_buffer(profile_t p, char **OUTPUT); - -#ifdef SWIGTCL -%include "tclsh.i" -#endif diff --git a/src/util/profile/profile_tcl.c b/src/util/profile/profile_tcl.c deleted file mode 100644 index de61baecf6..0000000000 --- a/src/util/profile/profile_tcl.c +++ /dev/null @@ -1,3369 +0,0 @@ -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 1.3.40 - * - * This file is not intended to be easily readable and contains a number of - * coding conventions designed to improve portability and efficiency. Do not make - * changes to this file unless you know what you are doing--modify the SWIG - * interface file instead. - * ----------------------------------------------------------------------------- */ - -#define SWIGTCL - -/* ----------------------------------------------------------------------------- - * This section contains generic SWIG labels for method/variable - * declarations/attributes, and other compiler dependent labels. - * ----------------------------------------------------------------------------- */ - -/* template workaround for compilers that cannot correctly implement the C++ standard */ -#ifndef SWIGTEMPLATEDISAMBIGUATOR -# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) -# define SWIGTEMPLATEDISAMBIGUATOR template -# elif defined(__HP_aCC) -/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ -/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ -# define SWIGTEMPLATEDISAMBIGUATOR template -# else -# define SWIGTEMPLATEDISAMBIGUATOR -# endif -#endif - -/* inline attribute */ -#ifndef SWIGINLINE -# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) -# define SWIGINLINE inline -# else -# define SWIGINLINE -# endif -#endif - -/* attribute recognised by some compilers to avoid 'unused' warnings */ -#ifndef SWIGUNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define SWIGUNUSED __attribute__ ((__unused__)) -# else -# define SWIGUNUSED -# endif -# elif defined(__ICC) -# define SWIGUNUSED __attribute__ ((__unused__)) -# else -# define SWIGUNUSED -# endif -#endif - -#ifndef SWIG_MSC_UNSUPPRESS_4505 -# if defined(_MSC_VER) -# pragma warning(disable : 4505) /* unreferenced local function has been removed */ -# endif -#endif - -#ifndef SWIGUNUSEDPARM -# ifdef __cplusplus -# define SWIGUNUSEDPARM(p) -# else -# define SWIGUNUSEDPARM(p) p SWIGUNUSED -# endif -#endif - -/* internal SWIG method */ -#ifndef SWIGINTERN -# define SWIGINTERN static SWIGUNUSED -#endif - -/* internal inline SWIG method */ -#ifndef SWIGINTERNINLINE -# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE -#endif - -/* exporting methods */ -#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) -# ifndef GCC_HASCLASSVISIBILITY -# define GCC_HASCLASSVISIBILITY -# endif -#endif - -#ifndef SWIGEXPORT -# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) -# if defined(STATIC_LINKED) -# define SWIGEXPORT -# else -# define SWIGEXPORT __declspec(dllexport) -# endif -# else -# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) -# define SWIGEXPORT __attribute__ ((visibility("default"))) -# else -# define SWIGEXPORT -# endif -# endif -#endif - -/* calling conventions for Windows */ -#ifndef SWIGSTDCALL -# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) -# define SWIGSTDCALL __stdcall -# else -# define SWIGSTDCALL -# endif -#endif - -/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ -#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) -# define _CRT_SECURE_NO_DEPRECATE -#endif - -/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ -#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) -# define _SCL_SECURE_NO_DEPRECATE -#endif - - - -#include -#include -#include -#include -#include -#include - -/* ----------------------------------------------------------------------------- - * swigrun.swg - * - * This file contains generic C API SWIG runtime support for pointer - * type checking. - * ----------------------------------------------------------------------------- */ - -/* This should only be incremented when either the layout of swig_type_info changes, - or for whatever reason, the runtime changes incompatibly */ -#define SWIG_RUNTIME_VERSION "4" - -/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ -#ifdef SWIG_TYPE_TABLE -# define SWIG_QUOTE_STRING(x) #x -# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) -# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) -#else -# define SWIG_TYPE_TABLE_NAME -#endif - -/* - You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for - creating a static or dynamic library from the SWIG runtime code. - In 99.9% of the cases, SWIG just needs to declare them as 'static'. - - But only do this if strictly necessary, ie, if you have problems - with your compiler or suchlike. -*/ - -#ifndef SWIGRUNTIME -# define SWIGRUNTIME SWIGINTERN -#endif - -#ifndef SWIGRUNTIMEINLINE -# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE -#endif - -/* Generic buffer size */ -#ifndef SWIG_BUFFER_SIZE -# define SWIG_BUFFER_SIZE 1024 -#endif - -/* Flags for pointer conversions */ -#define SWIG_POINTER_DISOWN 0x1 -#define SWIG_CAST_NEW_MEMORY 0x2 - -/* Flags for new pointer objects */ -#define SWIG_POINTER_OWN 0x1 - - -/* - Flags/methods for returning states. - - The SWIG conversion methods, as ConvertPtr, return and integer - that tells if the conversion was successful or not. And if not, - an error code can be returned (see swigerrors.swg for the codes). - - Use the following macros/flags to set or process the returning - states. - - In old versions of SWIG, code such as the following was usually written: - - if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { - // success code - } else { - //fail code - } - - Now you can be more explicit: - - int res = SWIG_ConvertPtr(obj,vptr,ty.flags); - if (SWIG_IsOK(res)) { - // success code - } else { - // fail code - } - - which is the same really, but now you can also do - - Type *ptr; - int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); - if (SWIG_IsOK(res)) { - // success code - if (SWIG_IsNewObj(res) { - ... - delete *ptr; - } else { - ... - } - } else { - // fail code - } - - I.e., now SWIG_ConvertPtr can return new objects and you can - identify the case and take care of the deallocation. Of course that - also requires SWIG_ConvertPtr to return new result values, such as - - int SWIG_ConvertPtr(obj, ptr,...) { - if () { - if () { - *ptr = ; - return SWIG_NEWOBJ; - } else { - *ptr = ; - return SWIG_OLDOBJ; - } - } else { - return SWIG_BADOBJ; - } - } - - Of course, returning the plain '0(success)/-1(fail)' still works, but you can be - more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the - SWIG errors code. - - Finally, if the SWIG_CASTRANK_MODE is enabled, the result code - allows to return the 'cast rank', for example, if you have this - - int food(double) - int fooi(int); - - and you call - - food(1) // cast rank '1' (1 -> 1.0) - fooi(1) // cast rank '0' - - just use the SWIG_AddCast()/SWIG_CheckState() -*/ - -#define SWIG_OK (0) -#define SWIG_ERROR (-1) -#define SWIG_IsOK(r) (r >= 0) -#define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) - -/* The CastRankLimit says how many bits are used for the cast rank */ -#define SWIG_CASTRANKLIMIT (1 << 8) -/* The NewMask denotes the object was created (using new/malloc) */ -#define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) -/* The TmpMask is for in/out typemaps that use temporal objects */ -#define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) -/* Simple returning values */ -#define SWIG_BADOBJ (SWIG_ERROR) -#define SWIG_OLDOBJ (SWIG_OK) -#define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) -#define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) -/* Check, add and del mask methods */ -#define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) -#define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) -#define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) -#define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) -#define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) -#define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) - -/* Cast-Rank Mode */ -#if defined(SWIG_CASTRANK_MODE) -# ifndef SWIG_TypeRank -# define SWIG_TypeRank unsigned long -# endif -# ifndef SWIG_MAXCASTRANK /* Default cast allowed */ -# define SWIG_MAXCASTRANK (2) -# endif -# define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) -# define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) -SWIGINTERNINLINE int SWIG_AddCast(int r) { - return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; -} -SWIGINTERNINLINE int SWIG_CheckState(int r) { - return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; -} -#else /* no cast-rank mode */ -# define SWIG_AddCast -# define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) -#endif - - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void *(*swig_converter_func)(void *, int *); -typedef struct swig_type_info *(*swig_dycast_func)(void **); - -/* Structure to store information on one type */ -typedef struct swig_type_info { - const char *name; /* mangled name of this type */ - const char *str; /* human readable name of this type */ - swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ - struct swig_cast_info *cast; /* linked list of types that can cast into this type */ - void *clientdata; /* language specific type data */ - int owndata; /* flag if the structure owns the clientdata */ -} swig_type_info; - -/* Structure to store a type and conversion function used for casting */ -typedef struct swig_cast_info { - swig_type_info *type; /* pointer to type that is equivalent to this type */ - swig_converter_func converter; /* function to cast the void pointers */ - struct swig_cast_info *next; /* pointer to next cast in linked list */ - struct swig_cast_info *prev; /* pointer to the previous cast */ -} swig_cast_info; - -/* Structure used to store module information - * Each module generates one structure like this, and the runtime collects - * all of these structures and stores them in a circularly linked list.*/ -typedef struct swig_module_info { - swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ - size_t size; /* Number of types in this module */ - struct swig_module_info *next; /* Pointer to next element in circularly linked list */ - swig_type_info **type_initial; /* Array of initially generated type structures */ - swig_cast_info **cast_initial; /* Array of initially generated casting structures */ - void *clientdata; /* Language specific module data */ -} swig_module_info; - -/* - Compare two type names skipping the space characters, therefore - "char*" == "char *" and "Class" == "Class", etc. - - Return 0 when the two name types are equivalent, as in - strncmp, but skipping ' '. -*/ -SWIGRUNTIME int -SWIG_TypeNameComp(const char *f1, const char *l1, - const char *f2, const char *l2) { - for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { - while ((*f1 == ' ') && (f1 != l1)) ++f1; - while ((*f2 == ' ') && (f2 != l2)) ++f2; - if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; - } - return (int)((l1 - f1) - (l2 - f2)); -} - -/* - Check type equivalence in a name list like ||... - Return 0 if not equal, 1 if equal -*/ -SWIGRUNTIME int -SWIG_TypeEquiv(const char *nb, const char *tb) { - int equiv = 0; - const char* te = tb + strlen(tb); - const char* ne = nb; - while (!equiv && *ne) { - for (nb = ne; *ne; ++ne) { - if (*ne == '|') break; - } - equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; - if (*ne) ++ne; - } - return equiv; -} - -/* - Check type equivalence in a name list like ||... - Return 0 if equal, -1 if nb < tb, 1 if nb > tb -*/ -SWIGRUNTIME int -SWIG_TypeCompare(const char *nb, const char *tb) { - int equiv = 0; - const char* te = tb + strlen(tb); - const char* ne = nb; - while (!equiv && *ne) { - for (nb = ne; *ne; ++ne) { - if (*ne == '|') break; - } - equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; - if (*ne) ++ne; - } - return equiv; -} - - -/* - Check the typename -*/ -SWIGRUNTIME swig_cast_info * -SWIG_TypeCheck(const char *c, swig_type_info *ty) { - if (ty) { - swig_cast_info *iter = ty->cast; - while (iter) { - if (strcmp(iter->type->name, c) == 0) { - if (iter == ty->cast) - return iter; - /* Move iter to the top of the linked list */ - iter->prev->next = iter->next; - if (iter->next) - iter->next->prev = iter->prev; - iter->next = ty->cast; - iter->prev = 0; - if (ty->cast) ty->cast->prev = iter; - ty->cast = iter; - return iter; - } - iter = iter->next; - } - } - return 0; -} - -/* - Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison -*/ -SWIGRUNTIME swig_cast_info * -SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) { - if (ty) { - swig_cast_info *iter = ty->cast; - while (iter) { - if (iter->type == from) { - if (iter == ty->cast) - return iter; - /* Move iter to the top of the linked list */ - iter->prev->next = iter->next; - if (iter->next) - iter->next->prev = iter->prev; - iter->next = ty->cast; - iter->prev = 0; - if (ty->cast) ty->cast->prev = iter; - ty->cast = iter; - return iter; - } - iter = iter->next; - } - } - return 0; -} - -/* - Cast a pointer up an inheritance hierarchy -*/ -SWIGRUNTIMEINLINE void * -SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { - return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); -} - -/* - Dynamic pointer casting. Down an inheritance hierarchy -*/ -SWIGRUNTIME swig_type_info * -SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { - swig_type_info *lastty = ty; - if (!ty || !ty->dcast) return ty; - while (ty && (ty->dcast)) { - ty = (*ty->dcast)(ptr); - if (ty) lastty = ty; - } - return lastty; -} - -/* - Return the name associated with this type -*/ -SWIGRUNTIMEINLINE const char * -SWIG_TypeName(const swig_type_info *ty) { - return ty->name; -} - -/* - Return the pretty name associated with this type, - that is an unmangled type name in a form presentable to the user. -*/ -SWIGRUNTIME const char * -SWIG_TypePrettyName(const swig_type_info *type) { - /* The "str" field contains the equivalent pretty names of the - type, separated by vertical-bar characters. We choose - to print the last name, as it is often (?) the most - specific. */ - if (!type) return NULL; - if (type->str != NULL) { - const char *last_name = type->str; - const char *s; - for (s = type->str; *s; s++) - if (*s == '|') last_name = s+1; - return last_name; - } - else - return type->name; -} - -/* - Set the clientdata field for a type -*/ -SWIGRUNTIME void -SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { - swig_cast_info *cast = ti->cast; - /* if (ti->clientdata == clientdata) return; */ - ti->clientdata = clientdata; - - while (cast) { - if (!cast->converter) { - swig_type_info *tc = cast->type; - if (!tc->clientdata) { - SWIG_TypeClientData(tc, clientdata); - } - } - cast = cast->next; - } -} -SWIGRUNTIME void -SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { - SWIG_TypeClientData(ti, clientdata); - ti->owndata = 1; -} - -/* - Search for a swig_type_info structure only by mangled name - Search is a O(log #types) - - We start searching at module start, and finish searching when start == end. - Note: if start == end at the beginning of the function, we go all the way around - the circular list. -*/ -SWIGRUNTIME swig_type_info * -SWIG_MangledTypeQueryModule(swig_module_info *start, - swig_module_info *end, - const char *name) { - swig_module_info *iter = start; - do { - if (iter->size) { - size_t l = 0; - size_t r = iter->size - 1; - do { - /* since l+r >= 0, we can (>> 1) instead (/ 2) */ - size_t i = (l + r) >> 1; - const char *iname = iter->types[i]->name; - if (iname) { - int compare = strcmp(name, iname); - if (compare == 0) { - return iter->types[i]; - } else if (compare < 0) { - if (i) { - r = i - 1; - } else { - break; - } - } else if (compare > 0) { - l = i + 1; - } - } else { - break; /* should never happen */ - } - } while (l <= r); - } - iter = iter->next; - } while (iter != end); - return 0; -} - -/* - Search for a swig_type_info structure for either a mangled name or a human readable name. - It first searches the mangled names of the types, which is a O(log #types) - If a type is not found it then searches the human readable names, which is O(#types). - - We start searching at module start, and finish searching when start == end. - Note: if start == end at the beginning of the function, we go all the way around - the circular list. -*/ -SWIGRUNTIME swig_type_info * -SWIG_TypeQueryModule(swig_module_info *start, - swig_module_info *end, - const char *name) { - /* STEP 1: Search the name field using binary search */ - swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); - if (ret) { - return ret; - } else { - /* STEP 2: If the type hasn't been found, do a complete search - of the str field (the human readable name) */ - swig_module_info *iter = start; - do { - size_t i = 0; - for (; i < iter->size; ++i) { - if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) - return iter->types[i]; - } - iter = iter->next; - } while (iter != end); - } - - /* neither found a match */ - return 0; -} - -/* - Pack binary data into a string -*/ -SWIGRUNTIME char * -SWIG_PackData(char *c, void *ptr, size_t sz) { - static const char hex[17] = "0123456789abcdef"; - const unsigned char *u = (unsigned char *) ptr; - const unsigned char *eu = u + sz; - for (; u != eu; ++u) { - unsigned char uu = *u; - *(c++) = hex[(uu & 0xf0) >> 4]; - *(c++) = hex[uu & 0xf]; - } - return c; -} - -/* - Unpack binary data from a string -*/ -SWIGRUNTIME const char * -SWIG_UnpackData(const char *c, void *ptr, size_t sz) { - unsigned char *u = (unsigned char *) ptr; - const unsigned char *eu = u + sz; - for (; u != eu; ++u) { - char d = *(c++); - unsigned char uu; - if ((d >= '0') && (d <= '9')) - uu = ((d - '0') << 4); - else if ((d >= 'a') && (d <= 'f')) - uu = ((d - ('a'-10)) << 4); - else - return (char *) 0; - d = *(c++); - if ((d >= '0') && (d <= '9')) - uu |= (d - '0'); - else if ((d >= 'a') && (d <= 'f')) - uu |= (d - ('a'-10)); - else - return (char *) 0; - *u = uu; - } - return c; -} - -/* - Pack 'void *' into a string buffer. -*/ -SWIGRUNTIME char * -SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { - char *r = buff; - if ((2*sizeof(void *) + 2) > bsz) return 0; - *(r++) = '_'; - r = SWIG_PackData(r,&ptr,sizeof(void *)); - if (strlen(name) + 1 > (bsz - (r - buff))) return 0; - strcpy(r,name); - return buff; -} - -SWIGRUNTIME const char * -SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { - if (*c != '_') { - if (strcmp(c,"NULL") == 0) { - *ptr = (void *) 0; - return name; - } else { - return 0; - } - } - return SWIG_UnpackData(++c,ptr,sizeof(void *)); -} - -SWIGRUNTIME char * -SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { - char *r = buff; - size_t lname = (name ? strlen(name) : 0); - if ((2*sz + 2 + lname) > bsz) return 0; - *(r++) = '_'; - r = SWIG_PackData(r,ptr,sz); - if (lname) { - strncpy(r,name,lname+1); - } else { - *r = 0; - } - return buff; -} - -SWIGRUNTIME const char * -SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { - if (*c != '_') { - if (strcmp(c,"NULL") == 0) { - memset(ptr,0,sz); - return name; - } else { - return 0; - } - } - return SWIG_UnpackData(++c,ptr,sz); -} - -#ifdef __cplusplus -} -#endif - -/* Errors in SWIG */ -#define SWIG_UnknownError -1 -#define SWIG_IOError -2 -#define SWIG_RuntimeError -3 -#define SWIG_IndexError -4 -#define SWIG_TypeError -5 -#define SWIG_DivisionByZero -6 -#define SWIG_OverflowError -7 -#define SWIG_SyntaxError -8 -#define SWIG_ValueError -9 -#define SWIG_SystemError -10 -#define SWIG_AttributeError -11 -#define SWIG_MemoryError -12 -#define SWIG_NullReferenceError -13 - - - -/* ----------------------------------------------------------------------------- - * error manipulation - * ----------------------------------------------------------------------------- */ - -SWIGINTERN const char* -SWIG_Tcl_ErrorType(int code) { - const char* type = 0; - switch(code) { - case SWIG_MemoryError: - type = "MemoryError"; - break; - case SWIG_IOError: - type = "IOError"; - break; - case SWIG_RuntimeError: - type = "RuntimeError"; - break; - case SWIG_IndexError: - type = "IndexError"; - break; - case SWIG_TypeError: - type = "TypeError"; - break; - case SWIG_DivisionByZero: - type = "ZeroDivisionError"; - break; - case SWIG_OverflowError: - type = "OverflowError"; - break; - case SWIG_SyntaxError: - type = "SyntaxError"; - break; - case SWIG_ValueError: - type = "ValueError"; - break; - case SWIG_SystemError: - type = "SystemError"; - break; - case SWIG_AttributeError: - type = "AttributeError"; - break; - default: - type = "RuntimeError"; - } - return type; -} - - -SWIGINTERN void -SWIG_Tcl_SetErrorObj(Tcl_Interp *interp, const char *ctype, Tcl_Obj *obj) -{ - Tcl_ResetResult(interp); - Tcl_SetObjResult(interp, obj); - Tcl_SetErrorCode(interp, "SWIG", ctype, NULL); -} - -SWIGINTERN void -SWIG_Tcl_SetErrorMsg(Tcl_Interp *interp, const char *ctype, const char *mesg) -{ - Tcl_ResetResult(interp); - Tcl_SetErrorCode(interp, "SWIG", ctype, NULL); - Tcl_AppendResult(interp, ctype, " ", mesg, NULL); - /* - Tcl_AddErrorInfo(interp, ctype); - Tcl_AddErrorInfo(interp, " "); - Tcl_AddErrorInfo(interp, mesg); - */ -} - -SWIGINTERNINLINE void -SWIG_Tcl_AddErrorMsg(Tcl_Interp *interp, const char* mesg) -{ - Tcl_AddErrorInfo(interp, mesg); -} - - - -/* ----------------------------------------------------------------------------- - * SWIG API. Portion that goes into the runtime - * ----------------------------------------------------------------------------- */ -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------------------------------------------------------- - * Constant declarations - * ----------------------------------------------------------------------------- */ - -/* Constant Types */ -#define SWIG_TCL_POINTER 4 -#define SWIG_TCL_BINARY 5 - -/* Constant information structure */ -typedef struct swig_const_info { - int type; - char *name; - long lvalue; - double dvalue; - void *pvalue; - swig_type_info **ptype; -} swig_const_info; - -typedef int (*swig_wrapper)(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST []); -typedef int (*swig_wrapper_func)(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST []); -typedef char *(*swig_variable_func)(ClientData, Tcl_Interp *, char *, char *, int); -typedef void (*swig_delete_func)(ClientData); - -typedef struct swig_method { - const char *name; - swig_wrapper method; -} swig_method; - -typedef struct swig_attribute { - const char *name; - swig_wrapper getmethod; - swig_wrapper setmethod; -} swig_attribute; - -typedef struct swig_class { - const char *name; - swig_type_info **type; - swig_wrapper constructor; - void (*destructor)(void *); - swig_method *methods; - swig_attribute *attributes; - struct swig_class **bases; - const char **base_names; - swig_module_info *module; -} swig_class; - -typedef struct swig_instance { - Tcl_Obj *thisptr; - void *thisvalue; - swig_class *classptr; - int destroy; - Tcl_Command cmdtok; -} swig_instance; - -/* Structure for command table */ -typedef struct { - const char *name; - int (*wrapper)(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST []); - ClientData clientdata; -} swig_command_info; - -/* Structure for variable linking table */ -typedef struct { - const char *name; - void *addr; - char * (*get)(ClientData, Tcl_Interp *, char *, char *, int); - char * (*set)(ClientData, Tcl_Interp *, char *, char *, int); -} swig_var_info; - - -/* -----------------------------------------------------------------------------* - * Install a constant object - * -----------------------------------------------------------------------------*/ - -static Tcl_HashTable swigconstTable; -static int swigconstTableinit = 0; - -SWIGINTERN void -SWIG_Tcl_SetConstantObj(Tcl_Interp *interp, const char* name, Tcl_Obj *obj) { - int newobj; - Tcl_ObjSetVar2(interp,Tcl_NewStringObj(name,-1), NULL, obj, TCL_GLOBAL_ONLY); - Tcl_SetHashValue(Tcl_CreateHashEntry(&swigconstTable, name, &newobj), (ClientData) obj); -} - -SWIGINTERN Tcl_Obj * -SWIG_Tcl_GetConstantObj(const char *key) { - Tcl_HashEntry *entryPtr; - if (!swigconstTableinit) return 0; - entryPtr = Tcl_FindHashEntry(&swigconstTable, key); - if (entryPtr) { - return (Tcl_Obj *) Tcl_GetHashValue(entryPtr); - } - return 0; -} - -#ifdef __cplusplus -} -#endif - - - -/* ----------------------------------------------------------------------------- - * See the LICENSE file for information on copyright, usage and redistribution - * of SWIG, and the README file for authors - http://www.swig.org/release.html. - * - * tclrun.swg - * - * This file contains the runtime support for Tcl modules and includes - * code for managing global variables and pointer type checking. - * ----------------------------------------------------------------------------- */ - -/* Common SWIG API */ - -/* for raw pointers */ -#define SWIG_ConvertPtr(oc, ptr, ty, flags) SWIG_Tcl_ConvertPtr(interp, oc, ptr, ty, flags) -#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Tcl_NewPointerObj(ptr, type, flags) - -/* for raw packed data */ -#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Tcl_ConvertPacked(interp, obj, ptr, sz, ty) -#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Tcl_NewPackedObj(ptr, sz, type) - -/* for class or struct pointers */ -#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_Tcl_ConvertPtr(interp, obj, pptr, type, flags) -#define SWIG_NewInstanceObj(thisvalue, type, flags) SWIG_Tcl_NewInstanceObj(interp, thisvalue, type, flags) - -/* for C or C++ function pointers */ -#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Tcl_ConvertPtr(interp, obj, pptr, type, 0) -#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Tcl_NewPointerObj(ptr, type, 0) - -/* for C++ member pointers, ie, member methods */ -#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Tcl_ConvertPacked(interp,obj, ptr, sz, ty) -#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Tcl_NewPackedObj(ptr, sz, type) - - -/* Runtime API */ - -#define SWIG_GetModule(clientdata) SWIG_Tcl_GetModule((Tcl_Interp *) (clientdata)) -#define SWIG_SetModule(clientdata, pointer) SWIG_Tcl_SetModule((Tcl_Interp *) (clientdata), pointer) - - -/* Error manipulation */ - -#define SWIG_ErrorType(code) SWIG_Tcl_ErrorType(code) -#define SWIG_Error(code, msg) SWIG_Tcl_SetErrorMsg(interp, SWIG_Tcl_ErrorType(code), msg) -#define SWIG_fail goto fail - - -/* Tcl-specific SWIG API */ - -#define SWIG_Acquire(ptr) SWIG_Tcl_Acquire(ptr) -#define SWIG_MethodCommand SWIG_Tcl_MethodCommand -#define SWIG_Disown(ptr) SWIG_Tcl_Disown(ptr) -#define SWIG_ConvertPtrFromString(c, ptr, ty, flags) SWIG_Tcl_ConvertPtrFromString(interp, c, ptr, ty, flags) -#define SWIG_MakePtr(c, ptr, ty, flags) SWIG_Tcl_MakePtr(c, ptr, ty, flags) -#define SWIG_PointerTypeFromString(c) SWIG_Tcl_PointerTypeFromString(c) -#define SWIG_GetArgs SWIG_Tcl_GetArgs -#define SWIG_GetConstantObj(key) SWIG_Tcl_GetConstantObj(key) -#define SWIG_ObjectConstructor SWIG_Tcl_ObjectConstructor -#define SWIG_Thisown(ptr) SWIG_Tcl_Thisown(ptr) -#define SWIG_ObjectDelete SWIG_Tcl_ObjectDelete - - -#define SWIG_TCL_DECL_ARGS_2(arg1, arg2) (Tcl_Interp *interp SWIGUNUSED, arg1, arg2) -#define SWIG_TCL_CALL_ARGS_2(arg1, arg2) (interp, arg1, arg2) -/* ----------------------------------------------------------------------------- - * pointers/data manipulation - * ----------------------------------------------------------------------------- */ - -/* For backward compatibility only */ -#define SWIG_POINTER_EXCEPTION 0 -#define SWIG_GetConstant SWIG_GetConstantObj -#define SWIG_Tcl_GetConstant SWIG_Tcl_GetConstantObj - -#include "assert.h" - -#ifdef __cplusplus -extern "C" { -#if 0 -} /* cc-mode */ -#endif -#endif - -/* Object support */ - -SWIGRUNTIME Tcl_HashTable* -SWIG_Tcl_ObjectTable(void) { - static Tcl_HashTable swigobjectTable; - static int swigobjectTableinit = 0; - if (!swigobjectTableinit) { - Tcl_InitHashTable(&swigobjectTable, TCL_ONE_WORD_KEYS); - swigobjectTableinit = 1; - } - return &swigobjectTable; -} - -/* Acquire ownership of a pointer */ -SWIGRUNTIME void -SWIG_Tcl_Acquire(void *ptr) { - int newobj; - Tcl_CreateHashEntry(SWIG_Tcl_ObjectTable(), (char *) ptr, &newobj); -} - -SWIGRUNTIME int -SWIG_Tcl_Thisown(void *ptr) { - if (Tcl_FindHashEntry(SWIG_Tcl_ObjectTable(), (char *) ptr)) { - return 1; - } - return 0; -} - -/* Disown a pointer. Returns 1 if we owned it to begin with */ -SWIGRUNTIME int -SWIG_Tcl_Disown(void *ptr) { - Tcl_HashEntry *entryPtr = Tcl_FindHashEntry(SWIG_Tcl_ObjectTable(), (char *) ptr); - if (entryPtr) { - Tcl_DeleteHashEntry(entryPtr); - return 1; - } - return 0; -} - -/* Convert a pointer value */ -SWIGRUNTIME int -SWIG_Tcl_ConvertPtrFromString(Tcl_Interp *interp, const char *c, void **ptr, swig_type_info *ty, int flags) { - swig_cast_info *tc; - /* Pointer values must start with leading underscore */ - while (*c != '_') { - *ptr = (void *) 0; - if (strcmp(c,"NULL") == 0) return SWIG_OK; - - /* Empty string: not a pointer */ - if (*c == 0) return SWIG_ERROR; - - /* Hmmm. It could be an object name. */ - - /* Check if this is a command at all. Prevents cget -this */ - /* from being called when c is not a command, firing the unknown proc */ - if (Tcl_VarEval(interp,"info commands ", c, (char *) NULL) == TCL_OK) { - Tcl_Obj *result = Tcl_GetObjResult(interp); - if (*(Tcl_GetStringFromObj(result, NULL)) == 0) { - /* It's not a command, so it can't be a pointer */ - Tcl_ResetResult(interp); - return SWIG_ERROR; - } - } else { - /* This will only fail if the argument is multiple words. */ - /* Multiple words are also not commands. */ - Tcl_ResetResult(interp); - return SWIG_ERROR; - } - - /* Check if this is really a SWIG pointer */ - if (Tcl_VarEval(interp,c," cget -this", (char *) NULL) != TCL_OK) { - Tcl_ResetResult(interp); - return SWIG_ERROR; - } - - c = Tcl_GetStringFromObj(Tcl_GetObjResult(interp), NULL); - } - - c++; - c = SWIG_UnpackData(c,ptr,sizeof(void *)); - if (ty) { - tc = c ? SWIG_TypeCheck(c,ty) : 0; - if (!tc) { - return SWIG_ERROR; - } - if (flags & SWIG_POINTER_DISOWN) { - SWIG_Disown((void *) *ptr); - } - { - int newmemory = 0; - *ptr = SWIG_TypeCast(tc,(void *) *ptr,&newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } - } - return SWIG_OK; -} - -/* Convert a pointer value */ -SWIGRUNTIMEINLINE int -SWIG_Tcl_ConvertPtr(Tcl_Interp *interp, Tcl_Obj *oc, void **ptr, swig_type_info *ty, int flags) { - return SWIG_Tcl_ConvertPtrFromString(interp, Tcl_GetStringFromObj(oc,NULL), ptr, ty, flags); -} - -/* Convert a pointer value */ -SWIGRUNTIME char * -SWIG_Tcl_PointerTypeFromString(char *c) { - char d; - /* Pointer values must start with leading underscore. NULL has no type */ - if (*c != '_') { - return 0; - } - c++; - /* Extract hex value from pointer */ - while ((d = *c)) { - if (!(((d >= '0') && (d <= '9')) || ((d >= 'a') && (d <= 'f')))) break; - c++; - } - return c; -} - -/* Convert a packed value value */ -SWIGRUNTIME int -SWIG_Tcl_ConvertPacked(Tcl_Interp *SWIGUNUSEDPARM(interp) , Tcl_Obj *obj, void *ptr, int sz, swig_type_info *ty) { - swig_cast_info *tc; - const char *c; - - if (!obj) goto type_error; - c = Tcl_GetStringFromObj(obj,NULL); - /* Pointer values must start with leading underscore */ - if (*c != '_') goto type_error; - c++; - c = SWIG_UnpackData(c,ptr,sz); - if (ty) { - tc = SWIG_TypeCheck(c,ty); - if (!tc) goto type_error; - } - return SWIG_OK; - - type_error: - - return SWIG_ERROR; -} - - -/* Take a pointer and convert it to a string */ -SWIGRUNTIME void -SWIG_Tcl_MakePtr(char *c, void *ptr, swig_type_info *ty, int flags) { - if (ptr) { - *(c++) = '_'; - c = SWIG_PackData(c,&ptr,sizeof(void *)); - strcpy(c,ty->name); - } else { - strcpy(c,(char *)"NULL"); - } - flags = 0; -} - -/* Create a new pointer object */ -SWIGRUNTIMEINLINE Tcl_Obj * -SWIG_Tcl_NewPointerObj(void *ptr, swig_type_info *type, int flags) { - Tcl_Obj *robj; - char result[SWIG_BUFFER_SIZE]; - SWIG_MakePtr(result,ptr,type,flags); - robj = Tcl_NewStringObj(result,-1); - return robj; -} - -SWIGRUNTIME Tcl_Obj * -SWIG_Tcl_NewPackedObj(void *ptr, int sz, swig_type_info *type) { - char result[1024]; - char *r = result; - if ((2*sz + 1 + strlen(type->name)) > 1000) return 0; - *(r++) = '_'; - r = SWIG_PackData(r,ptr,sz); - strcpy(r,type->name); - return Tcl_NewStringObj(result,-1); -} - -/* -----------------------------------------------------------------------------* - * Get type list - * -----------------------------------------------------------------------------*/ - -SWIGRUNTIME swig_module_info * -SWIG_Tcl_GetModule(Tcl_Interp *interp) { - const char *data; - swig_module_info *ret = 0; - - /* first check if pointer already created */ - data = Tcl_GetVar(interp, (char *)"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TCL_GLOBAL_ONLY); - if (data) { - SWIG_UnpackData(data, &ret, sizeof(swig_type_info **)); - } - - return ret; -} - -SWIGRUNTIME void -SWIG_Tcl_SetModule(Tcl_Interp *interp, swig_module_info *module) { - char buf[SWIG_BUFFER_SIZE]; - char *data; - - /* create a new pointer */ - data = SWIG_PackData(buf, &module, sizeof(swig_type_info **)); - *data = 0; - Tcl_SetVar(interp, (char *)"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, buf, 0); -} - -/* -----------------------------------------------------------------------------* - * Object auxiliars - * -----------------------------------------------------------------------------*/ - - -SWIGRUNTIME void -SWIG_Tcl_ObjectDelete(ClientData clientData) { - swig_instance *si = (swig_instance *) clientData; - if ((si) && (si->destroy) && (SWIG_Disown(si->thisvalue))) { - if (si->classptr->destructor) { - (si->classptr->destructor)(si->thisvalue); - } - } - Tcl_DecrRefCount(si->thisptr); - free(si); -} - -/* Function to invoke object methods given an instance */ -SWIGRUNTIME int -SWIG_Tcl_MethodCommand(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST _objv[]) { - char *method, *attrname; - swig_instance *inst = (swig_instance *) clientData; - swig_method *meth; - swig_attribute *attr; - Tcl_Obj *oldarg; - Tcl_Obj **objv; - int rcode; - swig_class *cls; - swig_class *cls_stack[64]; - int cls_stack_bi[64]; - int cls_stack_top = 0; - int numconf = 2; - int bi; - - objv = (Tcl_Obj **) _objv; - if (objc < 2) { - Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); - return TCL_ERROR; - } - method = Tcl_GetStringFromObj(objv[1],NULL); - if (strcmp(method,"-acquire") == 0) { - inst->destroy = 1; - SWIG_Acquire(inst->thisvalue); - return TCL_OK; - } - if (strcmp(method,"-disown") == 0) { - if (inst->destroy) { - SWIG_Disown(inst->thisvalue); - } - inst->destroy = 0; - return TCL_OK; - } - if (strcmp(method,"-delete") == 0) { - Tcl_DeleteCommandFromToken(interp,inst->cmdtok); - return TCL_OK; - } - cls_stack[cls_stack_top] = inst->classptr; - cls_stack_bi[cls_stack_top] = -1; - cls = inst->classptr; - while (1) { - bi = cls_stack_bi[cls_stack_top]; - cls = cls_stack[cls_stack_top]; - if (bi != -1) { - if (!cls->bases[bi] && cls->base_names[bi]) { - /* lookup and cache the base class */ - swig_type_info *info = SWIG_TypeQueryModule(cls->module, cls->module, cls->base_names[bi]); - if (info) cls->bases[bi] = (swig_class *) info->clientdata; - } - cls = cls->bases[bi]; - if (cls) { - cls_stack_bi[cls_stack_top]++; - cls_stack_top++; - cls_stack[cls_stack_top] = cls; - cls_stack_bi[cls_stack_top] = -1; - continue; - } - } - if (!cls) { - cls_stack_top--; - if (cls_stack_top < 0) break; - else continue; - } - cls_stack_bi[cls_stack_top]++; - - meth = cls->methods; - /* Check for methods */ - while (meth && meth->name) { - if (strcmp(meth->name,method) == 0) { - oldarg = objv[1]; - objv[1] = inst->thisptr; - Tcl_IncrRefCount(inst->thisptr); - rcode = (*meth->method)(clientData,interp,objc,objv); - objv[1] = oldarg; - Tcl_DecrRefCount(inst->thisptr); - return rcode; - } - meth++; - } - /* Check class methods for a match */ - if (strcmp(method,"cget") == 0) { - if (objc < 3) { - Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); - return TCL_ERROR; - } - attrname = Tcl_GetStringFromObj(objv[2],NULL); - attr = cls->attributes; - while (attr && attr->name) { - if ((strcmp(attr->name, attrname) == 0) && (attr->getmethod)) { - oldarg = objv[1]; - objv[1] = inst->thisptr; - Tcl_IncrRefCount(inst->thisptr); - rcode = (*attr->getmethod)(clientData,interp,2, objv); - objv[1] = oldarg; - Tcl_DecrRefCount(inst->thisptr); - return rcode; - } - attr++; - } - if (strcmp(attrname, "-this") == 0) { - Tcl_SetObjResult(interp, Tcl_DuplicateObj(inst->thisptr)); - return TCL_OK; - } - if (strcmp(attrname, "-thisown") == 0) { - if (SWIG_Thisown(inst->thisvalue)) { - Tcl_SetResult(interp,(char*)"1",TCL_STATIC); - } else { - Tcl_SetResult(interp,(char*)"0",TCL_STATIC); - } - return TCL_OK; - } - } else if (strcmp(method, "configure") == 0) { - int i; - if (objc < 4) { - Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); - return TCL_ERROR; - } - i = 2; - while (i < objc) { - attrname = Tcl_GetStringFromObj(objv[i],NULL); - attr = cls->attributes; - while (attr && attr->name) { - if ((strcmp(attr->name, attrname) == 0) && (attr->setmethod)) { - oldarg = objv[i]; - objv[i] = inst->thisptr; - Tcl_IncrRefCount(inst->thisptr); - rcode = (*attr->setmethod)(clientData,interp,3, &objv[i-1]); - objv[i] = oldarg; - Tcl_DecrRefCount(inst->thisptr); - if (rcode != TCL_OK) return rcode; - numconf += 2; - } - attr++; - } - i+=2; - } - } - } - if (strcmp(method,"configure") == 0) { - if (numconf >= objc) { - return TCL_OK; - } else { - Tcl_SetResult(interp,(char *) "Invalid attribute name.", TCL_STATIC); - return TCL_ERROR; - } - } - if (strcmp(method,"cget") == 0) { - Tcl_SetResult(interp,(char *) "Invalid attribute name.", TCL_STATIC); - return TCL_ERROR; - } - Tcl_SetResult(interp, (char *) "Invalid method. Must be one of: configure cget -acquire -disown -delete", TCL_STATIC); - cls = inst->classptr; - bi = 0; - while (cls) { - meth = cls->methods; - while (meth && meth->name) { - char *cr = (char *) Tcl_GetStringResult(interp); - size_t meth_len = strlen(meth->name); - char* where = strchr(cr,':'); - while(where) { - where = strstr(where, meth->name); - if(where) { - if(where[-1] == ' ' && (where[meth_len] == ' ' || where[meth_len]==0)) { - break; - } else { - where++; - } - } - } - - if (!where) - Tcl_AppendElement(interp, (char *) meth->name); - meth++; - } - cls = inst->classptr->bases[bi++]; - } - return TCL_ERROR; -} - -/* This function takes the current result and turns it into an object command */ -SWIGRUNTIME Tcl_Obj * -SWIG_Tcl_NewInstanceObj(Tcl_Interp *interp, void *thisvalue, swig_type_info *type, int flags) { - Tcl_Obj *robj = SWIG_NewPointerObj(thisvalue, type,0); - /* Check to see if this pointer belongs to a class or not */ - if ((type->clientdata) && (interp)) { - Tcl_CmdInfo ci; - char *name; - name = Tcl_GetStringFromObj(robj,NULL); - if (!Tcl_GetCommandInfo(interp,name, &ci) || (flags)) { - swig_instance *newinst = (swig_instance *) malloc(sizeof(swig_instance)); - newinst->thisptr = Tcl_DuplicateObj(robj); - Tcl_IncrRefCount(newinst->thisptr); - newinst->thisvalue = thisvalue; - newinst->classptr = (swig_class *) type->clientdata; - newinst->destroy = flags; - newinst->cmdtok = Tcl_CreateObjCommand(interp, Tcl_GetStringFromObj(robj,NULL), (swig_wrapper_func) SWIG_MethodCommand, (ClientData) newinst, (swig_delete_func) SWIG_ObjectDelete); - if (flags) { - SWIG_Acquire(thisvalue); - } - } - } - return robj; -} - -/* Function to create objects */ -SWIGRUNTIME int -SWIG_Tcl_ObjectConstructor(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - Tcl_Obj *newObj = 0; - void *thisvalue = 0; - swig_instance *newinst = 0; - swig_class *classptr = (swig_class *) clientData; - swig_wrapper cons = 0; - char *name = 0; - int firstarg = 0; - int thisarg = 0; - int destroy = 1; - - if (!classptr) { - Tcl_SetResult(interp, (char *) "swig: internal runtime error. No class object defined.", TCL_STATIC); - return TCL_ERROR; - } - cons = classptr->constructor; - if (objc > 1) { - char *s = Tcl_GetStringFromObj(objv[1],NULL); - if (strcmp(s,"-this") == 0) { - thisarg = 2; - cons = 0; - } else if (strcmp(s,"-args") == 0) { - firstarg = 1; - } else if (objc == 2) { - firstarg = 1; - name = s; - } else if (objc >= 3) { - char *s1; - name = s; - s1 = Tcl_GetStringFromObj(objv[2],NULL); - if (strcmp(s1,"-this") == 0) { - thisarg = 3; - cons = 0; - } else { - firstarg = 1; - } - } - } - if (cons) { - int result; - result = (*cons)(0, interp, objc-firstarg, &objv[firstarg]); - if (result != TCL_OK) { - return result; - } - newObj = Tcl_DuplicateObj(Tcl_GetObjResult(interp)); - if (!name) name = Tcl_GetStringFromObj(newObj,NULL); - } else if (thisarg > 0) { - if (thisarg < objc) { - destroy = 0; - newObj = Tcl_DuplicateObj(objv[thisarg]); - if (!name) name = Tcl_GetStringFromObj(newObj,NULL); - } else { - Tcl_SetResult(interp, (char *) "wrong # args.", TCL_STATIC); - return TCL_ERROR; - } - } else { - Tcl_SetResult(interp, (char *) "No constructor available.", TCL_STATIC); - return TCL_ERROR; - } - if (SWIG_Tcl_ConvertPtr(interp,newObj, (void **) &thisvalue, *(classptr->type), 0) != SWIG_OK) { - Tcl_DecrRefCount(newObj); - return TCL_ERROR; - } - newinst = (swig_instance *) malloc(sizeof(swig_instance)); - newinst->thisptr = newObj; - Tcl_IncrRefCount(newObj); - newinst->thisvalue = thisvalue; - newinst->classptr = classptr; - newinst->destroy = destroy; - if (destroy) { - SWIG_Acquire(thisvalue); - } - newinst->cmdtok = Tcl_CreateObjCommand(interp,name, (swig_wrapper) SWIG_MethodCommand, (ClientData) newinst, (swig_delete_func) SWIG_ObjectDelete); - return TCL_OK; -} - -/* -----------------------------------------------------------------------------* - * Get arguments - * -----------------------------------------------------------------------------*/ -SWIGRUNTIME int -SWIG_Tcl_GetArgs(Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], const char *fmt, ...) { - int argno = 0, opt = 0; - long tempi; - double tempd; - const char *c; - va_list ap; - void *vptr; - Tcl_Obj *obj = 0; - swig_type_info *ty; - - va_start(ap,fmt); - for (c = fmt; (*c && (*c != ':') && (*c != ';')); c++,argno++) { - if (*c == '|') { - opt = 1; - c++; - } - if (argno >= (objc-1)) { - if (!opt) { - Tcl_SetResult(interp, (char *) "Wrong number of arguments ", TCL_STATIC); - goto argerror; - } else { - va_end(ap); - return TCL_OK; - } - } - - vptr = va_arg(ap,void *); - if (vptr) { - if (isupper(*c)) { - obj = SWIG_Tcl_GetConstantObj(Tcl_GetStringFromObj(objv[argno+1],0)); - if (!obj) obj = objv[argno+1]; - } else { - obj = objv[argno+1]; - } - switch(*c) { - case 'i': case 'I': - case 'l': case 'L': - case 'h': case 'H': - case 'b': case 'B': - if (Tcl_GetLongFromObj(interp,obj,&tempi) != TCL_OK) goto argerror; - if ((*c == 'i') || (*c == 'I')) *((int *)vptr) = (int)tempi; - else if ((*c == 'l') || (*c == 'L')) *((long *)vptr) = (long)tempi; - else if ((*c == 'h') || (*c == 'H')) *((short*)vptr) = (short)tempi; - else if ((*c == 'b') || (*c == 'B')) *((unsigned char *)vptr) = (unsigned char)tempi; - break; - case 'f': case 'F': - case 'd': case 'D': - if (Tcl_GetDoubleFromObj(interp,obj,&tempd) != TCL_OK) goto argerror; - if ((*c == 'f') || (*c == 'F')) *((float *) vptr) = (float)tempd; - else if ((*c == 'd') || (*c == 'D')) *((double*) vptr) = tempd; - break; - case 's': case 'S': - if (*(c+1) == '#') { - int *vlptr = (int *) va_arg(ap, void *); - *((char **) vptr) = Tcl_GetStringFromObj(obj, vlptr); - c++; - } else { - *((char **)vptr) = Tcl_GetStringFromObj(obj,NULL); - } - break; - case 'c': case 'C': - *((char *)vptr) = *(Tcl_GetStringFromObj(obj,NULL)); - break; - case 'p': case 'P': - ty = (swig_type_info *) va_arg(ap, void *); - if (SWIG_Tcl_ConvertPtr(interp, obj, (void **) vptr, ty, 0) != SWIG_OK) goto argerror; - break; - case 'o': case 'O': - *((Tcl_Obj **)vptr) = objv[argno+1]; - break; - default: - break; - } - } - } - - if ((*c != ';') && ((objc-1) > argno)) { - Tcl_SetResult(interp, (char *) "Wrong # args.", TCL_STATIC); - goto argerror; - } - va_end(ap); - return TCL_OK; - - argerror: - { - char temp[32]; - sprintf(temp,"%d", argno+1); - c = strchr(fmt,':'); - if (!c) c = strchr(fmt,';'); - if (!c) c = (char *)""; - Tcl_AppendResult(interp,c," argument ", temp, NULL); - va_end(ap); - return TCL_ERROR; - } -} - -#ifdef __cplusplus -#if 0 -{ /* cc-mode */ -#endif -} -#endif - - - -#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) - -#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else - - - -/* -------- TYPES TABLE (BEGIN) -------- */ - -#define SWIGTYPE_p__profile_t swig_types[0] -#define SWIGTYPE_p_char swig_types[1] -#define SWIGTYPE_p_int swig_types[2] -#define SWIGTYPE_p_long swig_types[3] -#define SWIGTYPE_p_p__profile_t swig_types[4] -#define SWIGTYPE_p_p_char swig_types[5] -#define SWIGTYPE_p_p_p_char swig_types[6] -#define SWIGTYPE_p_p_p_void swig_types[7] -#define SWIGTYPE_p_p_void swig_types[8] -static swig_type_info *swig_types[10]; -static swig_module_info swig_module = {swig_types, 9, 0, 0, 0, 0}; -#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) -#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) - -/* -------- TYPES TABLE (END) -------- */ - -#define SWIG_init Profile_Init -#define SWIG_name "profile" -#define SWIG_prefix "" -#define SWIG_version "0.0" - -#define SWIGVERSION 0x010340 -#define SWIG_VERSION SWIGVERSION - - -#define SWIG_as_voidptr(a) (void *)((const void *)(a)) -#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) - - - -#ifdef __cplusplus -extern "C" { -#endif -#ifdef MAC_TCL -#pragma export on -#endif -SWIGEXPORT int SWIG_init(Tcl_Interp *); -#ifdef MAC_TCL -#pragma export off -#endif -#ifdef __cplusplus -} -#endif - -/* Compatibility version for TCL stubs */ -#ifndef SWIG_TCL_STUBS_VERSION -#define SWIG_TCL_STUBS_VERSION "8.1" -#endif - - - -/* - * Copyright 2004, 2008 by the Massachusetts Institute of Technology. - * All Rights Reserved. - * - * Export of this software from the United States of America may - * require a specific license from the United States Government. - * It is the responsibility of any person or organization contemplating - * export to obtain such a license before exporting. - * - * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and - * distribute this software and its documentation for any purpose and - * without fee is hereby granted, provided that the above copyright - * notice appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, and that - * the name of M.I.T. not be used in advertising or publicity pertaining - * to distribution of the software without specific, written prior - * permission. Furthermore if you modify this software you must label - * your software as modified software and not distribute it in such a - * fashion that it might be confused with the original M.I.T. software. - * M.I.T. makes no representations about the suitability of - * this software for any purpose. It is provided "as is" without express - * or implied warranty. - * - * - * Input for wrapper generator program SWIG for profile routines. - */ -#include -#include "com_err.h" -#include "profile.h" - -#ifdef SWIGTCL -/* Reduce warnings about cast discarding const to just this one, from - every SWIG-generated call to Tcl_SetResult. */ -static void my_tcl_setresult(Tcl_Interp *i, const char *str, Tcl_FreeProc *f) -{ - Tcl_SetResult(i, (char *) str, f); -} -#undef Tcl_SetResult -#define Tcl_SetResult my_tcl_setresult -#endif - - -typedef struct { - void *handle; - char **args; -} *iter_t; - - -SWIGINTERN int -SWIG_AsCharPtrAndSize(Tcl_Obj *obj, char** cptr, size_t* psize, int *alloc) -{ - int len = 0; - char *cstr = Tcl_GetStringFromObj(obj, &len); - if (cstr) { - if (cptr) *cptr = cstr; - if (psize) *psize = len + 1; - if (alloc) *alloc = SWIG_OLDOBJ; - return SWIG_OK; - } - return SWIG_TypeError; -} - - - - - -#include -#if !defined(SWIG_NO_LLONG_MAX) -# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) -# define LLONG_MAX __LONG_LONG_MAX__ -# define LLONG_MIN (-LLONG_MAX - 1LL) -# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) -# endif -#endif - - -SWIGINTERN int -SWIG_AsVal_long SWIG_TCL_DECL_ARGS_2(Tcl_Obj *obj, long* val) -{ - long v; - if (Tcl_GetLongFromObj(0,obj, &v) == TCL_OK) { - if (val) *val = (long) v; - return SWIG_OK; - } - return SWIG_TypeError; -} - - -SWIGINTERN int -SWIG_AsVal_int SWIG_TCL_DECL_ARGS_2(Tcl_Obj * obj, int *val) -{ - long v; - int res = SWIG_AsVal_long SWIG_TCL_CALL_ARGS_2(obj, &v); - if (SWIG_IsOK(res)) { - if ((v < INT_MIN || v > INT_MAX)) { - return SWIG_OverflowError; - } else { - if (val) *val = (int)(v); - } - } - return res; -} - - -SWIGINTERNINLINE Tcl_Obj* -SWIG_From_long (long value) -{ - if (((long) INT_MIN <= value) && (value <= (long) INT_MAX)) { - return Tcl_NewIntObj((int)(value)); - } else { - return Tcl_NewLongObj(value); - } -} - - -SWIGINTERNINLINE Tcl_Obj * -SWIG_From_int (int value) -{ - return SWIG_From_long (value); -} - - -static void iter_free(iter_t it) -{ - int i; - - for (i = 0; it->args != NULL && it->args[i] != NULL; i++) - free(it->args[i]); - free(it->args); - profile_iterator_free(&it->handle); - free(it); -} - -static errcode_t iter_create(profile_t p, const char **nullterm, - int flags, iter_t *OUTPUT) -{ - iter_t it; - errcode_t err; - - it = malloc(sizeof(*it)); - if (it == NULL) - return ENOMEM; - { - /* The current implementation requires that the names be kept around - * for the lifetime of the iterator. */ - int count, j; - for (count = 0; nullterm[count]; count++) ; - it->args = calloc(count + 1, sizeof(*it->args)); - if (it->args == NULL) - return ENOMEM; - for (j = 0; j < count; j++) { - it->args[j] = strdup(nullterm[j]); - if (it->args[j] == NULL) - return ENOMEM; - } - it->args[j] = NULL; - } - err = profile_iterator_create(p, (const char **)it->args, flags, - &it->handle); - if (err) - iter_free(it); - else - *OUTPUT = it; - return err; -} - - -/* A TCL_AppInit() function that lets you build a new copy - * of tclsh. - * - * The macro SWIG_init contains the name of the initialization - * function in the wrapper file. - */ - -#ifndef SWIG_RcFileName -char *SWIG_RcFileName = "~/.myapprc"; -#endif - - -#ifdef MAC_TCL -extern int MacintoshInit _ANSI_ARGS_((void)); -#endif - -int Tcl_AppInit(Tcl_Interp *interp){ - - if (Tcl_Init(interp) == TCL_ERROR) - return TCL_ERROR; - - /* Now initialize our functions */ - - if (SWIG_init(interp) == TCL_ERROR) - return TCL_ERROR; -#if TCL_MAJOR_VERSION > 7 || TCL_MAJOR_VERSION == 7 && TCL_MINOR_VERSION >= 5 - Tcl_SetVar(interp, (char *) "tcl_rcFileName",SWIG_RcFileName,TCL_GLOBAL_ONLY); -#else - tcl_RcFileName = SWIG_RcFileName; -#endif -#ifdef SWIG_RcRsrcName - Tcl_SetVar(interp, (char *) "tcl_rcRsrcName",SWIG_RcRsrcName,TCL_GLOBAL); -#endif - - return TCL_OK; -} - -#if TCL_MAJOR_VERSION > 7 || TCL_MAJOR_VERSION == 7 && TCL_MINOR_VERSION >= 4 -int main(int argc, char **argv) { -#ifdef MAC_TCL - char *newArgv[2]; - - if (MacintoshInit() != TCL_OK) { - Tcl_Exit(1); - } - - argc = 1; - newArgv[0] = "tclsh"; - newArgv[1] = NULL; - argv = newArgv; -#endif - - Tcl_Main(argc, argv, Tcl_AppInit); - return(0); - -} -#else -extern int main(); -#endif - - -#ifdef __cplusplus -extern "C" { -#endif -SWIGINTERN int -_wrap_profile_init_path(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - char *arg1 = (char *) NULL ; - profile_t *arg2 = (profile_t *) 0 ; - int res1 ; - char *buf1 = 0 ; - int alloc1 = 0 ; - profile_t tmp2 ; - errcode_t result; - - { - /*generic swigtype hack*/ arg2 = &tmp2; - } - if (SWIG_GetArgs(interp, objc, objv,"|o:profile_init_path ?path? ",(void *)0) == TCL_ERROR) SWIG_fail; - if (objc > 1) { - res1 = SWIG_AsCharPtrAndSize(objv[1], &buf1, NULL, &alloc1); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_init_path" "', argument " "1"" of type '" "char const *""'"); - } - arg1 = (char *)(buf1); - } - result = (errcode_t)profile_init_path((char const *)arg1,arg2); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - /*generic swigtype hack*/ Tcl_SetObjResult(interp,SWIG_NewInstanceObj((void *) *arg2, SWIGTYPE_p__profile_t,0)); - if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); - return TCL_OK; -fail: - if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_init(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - char **arg1 = (char **) NULL ; - profile_t *arg2 = (profile_t *) 0 ; - profile_t tmp2 ; - errcode_t result; - - { - /*generic swigtype hack*/ arg2 = &tmp2; - } - if (SWIG_GetArgs(interp, objc, objv,"|o:profile_init ?nullterm? ",(void *)0) == TCL_ERROR) SWIG_fail; - if (objc > 1) { - { - /* in char **nullterm */ - int n; - if (Tcl_SplitList(interp, Tcl_GetStringFromObj(objv[1],NULL), &n, (const char ***) &arg1) == TCL_ERROR) SWIG_fail; - } - } - result = (errcode_t)profile_init((char const **)arg1,arg2); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - /*generic swigtype hack*/ Tcl_SetObjResult(interp,SWIG_NewInstanceObj((void *) *arg2, SWIGTYPE_p__profile_t,0)); - { - /* freearg char **nullterm */ - if (arg1) { - Tcl_Free((char *)arg1); arg1 = (char **) NULL; - } - } - return TCL_OK; -fail: - { - /* freearg char **nullterm */ - if (arg1) { - Tcl_Free((char *)arg1); arg1 = (char **) NULL; - } - } - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_flush(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - errcode_t result; - - if (SWIG_GetArgs(interp, objc, objv,"o:profile_flush profile_t ",(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_flush" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - result = (errcode_t)profile_flush(arg1); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - return TCL_OK; -fail: - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_flush_to_file(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char *arg2 = (char *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - int res2 ; - char *buf2 = 0 ; - int alloc2 = 0 ; - errcode_t result; - - if (SWIG_GetArgs(interp, objc, objv,"oo:profile_flush_to_file profile_t path ",(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_flush_to_file" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - res2 = SWIG_AsCharPtrAndSize(objv[2], &buf2, NULL, &alloc2); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "profile_flush_to_file" "', argument " "2"" of type '" "char const *""'"); - } - arg2 = (char *)(buf2); - result = (errcode_t)profile_flush_to_file(arg1,(char const *)arg2); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); - return TCL_OK; -fail: - if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_abandon(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - - if (SWIG_GetArgs(interp, objc, objv,"o:profile_abandon profile_t ",(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_abandon" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - profile_abandon(arg1); - - return TCL_OK; -fail: - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_release(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - - if (SWIG_GetArgs(interp, objc, objv,"o:profile_release profile_t ",(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_release" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - profile_release(arg1); - - return TCL_OK; -fail: - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_get_values(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char **arg2 = (char **) 0 ; - char ***arg3 = (char ***) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - char **tmp3 ; - errcode_t result; - - { - /* in char ***OUTPUT */ - tmp3 = NULL; - arg3 = &tmp3; - } - if (SWIG_GetArgs(interp, objc, objv,"oo:profile_get_values p nullterm ",(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_get_values" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - { - /* in char **nullterm */ - int n; - if (Tcl_SplitList(interp, Tcl_GetStringFromObj(objv[2],NULL), &n, (const char ***) &arg2) == TCL_ERROR) SWIG_fail; - } - result = (errcode_t)profile_get_values(arg1,(char const **)arg2,arg3); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - { - /* argout char ***OUTPUT */ - int i; - for (i = 0; (*arg3)[i]; i++) - Tcl_AppendElement(interp, (*arg3)[i]); - } - profile_free_list(*arg3); - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - return TCL_OK; -fail: - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_get_string(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char *arg2 = (char *) 0 ; - char *arg3 = (char *) 0 ; - char *arg4 = (char *) NULL ; - char *arg5 = (char *) NULL ; - char **arg6 = (char **) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - int res2 ; - char *buf2 = 0 ; - int alloc2 = 0 ; - int res3 ; - char *buf3 = 0 ; - int alloc3 = 0 ; - int res4 ; - char *buf4 = 0 ; - int alloc4 = 0 ; - int res5 ; - char *buf5 = 0 ; - int alloc5 = 0 ; - char *tmp6 ; - errcode_t result; - - { - /* in char **OUTPUT */ - tmp6 = NULL; - arg6 = &tmp6; - } - if (SWIG_GetArgs(interp, objc, objv,"ooo|oo:profile_get_string p name subname ?subsubname? ?defval? ",(void *)0,(void *)0,(void *)0,(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_get_string" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - res2 = SWIG_AsCharPtrAndSize(objv[2], &buf2, NULL, &alloc2); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "profile_get_string" "', argument " "2"" of type '" "char const *""'"); - } - arg2 = (char *)(buf2); - res3 = SWIG_AsCharPtrAndSize(objv[3], &buf3, NULL, &alloc3); - if (!SWIG_IsOK(res3)) { - SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "profile_get_string" "', argument " "3"" of type '" "char const *""'"); - } - arg3 = (char *)(buf3); - if (objc > 4) { - res4 = SWIG_AsCharPtrAndSize(objv[4], &buf4, NULL, &alloc4); - if (!SWIG_IsOK(res4)) { - SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "profile_get_string" "', argument " "4"" of type '" "char const *""'"); - } - arg4 = (char *)(buf4); - } - if (objc > 5) { - res5 = SWIG_AsCharPtrAndSize(objv[5], &buf5, NULL, &alloc5); - if (!SWIG_IsOK(res5)) { - SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "profile_get_string" "', argument " "5"" of type '" "char const *""'"); - } - arg5 = (char *)(buf5); - } - result = (errcode_t)profile_get_string(arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4,(char const *)arg5,arg6); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - { - /* argout char **OUTPUT */ - /* Tcl_SetResult(interp, *arg6, TCL_DYNAMIC); */ - char *s = (arg6 && *arg6) ? *arg6 : ""; - Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp), - Tcl_NewStringObj(s, strlen(s))); - profile_release_string(s); - } - if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - if (alloc4 == SWIG_NEWOBJ) free((char*)buf4); - if (alloc5 == SWIG_NEWOBJ) free((char*)buf5); - return TCL_OK; -fail: - if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - if (alloc4 == SWIG_NEWOBJ) free((char*)buf4); - if (alloc5 == SWIG_NEWOBJ) free((char*)buf5); - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_get_integer(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char *arg2 = (char *) 0 ; - char *arg3 = (char *) 0 ; - char *arg4 = (char *) NULL ; - int arg5 = (int) 0 ; - int *arg6 = (int *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - int res2 ; - char *buf2 = 0 ; - int alloc2 = 0 ; - int res3 ; - char *buf3 = 0 ; - int alloc3 = 0 ; - int res4 ; - char *buf4 = 0 ; - int alloc4 = 0 ; - int val5 ; - int ecode5 = 0 ; - int temp6 ; - int res6 = SWIG_TMPOBJ ; - errcode_t result; - - arg6 = &temp6; - if (SWIG_GetArgs(interp, objc, objv,"ooo|oo:profile_get_integer p name subname ?subsubname? ?defval? ",(void *)0,(void *)0,(void *)0,(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_get_integer" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - res2 = SWIG_AsCharPtrAndSize(objv[2], &buf2, NULL, &alloc2); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "profile_get_integer" "', argument " "2"" of type '" "char const *""'"); - } - arg2 = (char *)(buf2); - res3 = SWIG_AsCharPtrAndSize(objv[3], &buf3, NULL, &alloc3); - if (!SWIG_IsOK(res3)) { - SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "profile_get_integer" "', argument " "3"" of type '" "char const *""'"); - } - arg3 = (char *)(buf3); - if (objc > 4) { - res4 = SWIG_AsCharPtrAndSize(objv[4], &buf4, NULL, &alloc4); - if (!SWIG_IsOK(res4)) { - SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "profile_get_integer" "', argument " "4"" of type '" "char const *""'"); - } - arg4 = (char *)(buf4); - } - if (objc > 5) { - ecode5 = SWIG_AsVal_int SWIG_TCL_CALL_ARGS_2(objv[5], &val5); - if (!SWIG_IsOK(ecode5)) { - SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "profile_get_integer" "', argument " "5"" of type '" "int""'"); - } - arg5 = (int)(val5); - } - result = (errcode_t)profile_get_integer(arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4,arg5,arg6); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - if (SWIG_IsTmpObj(res6)) { - Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),SWIG_From_int((*arg6))); - } else { - int new_flags = SWIG_IsNewObj(res6) ? (SWIG_POINTER_OWN | 0 ) : 0 ; - Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),SWIG_NewPointerObj((void*)(arg6), SWIGTYPE_p_int, new_flags)); - } - if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - if (alloc4 == SWIG_NEWOBJ) free((char*)buf4); - return TCL_OK; -fail: - if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - if (alloc4 == SWIG_NEWOBJ) free((char*)buf4); - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_get_boolean(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char *arg2 = (char *) 0 ; - char *arg3 = (char *) 0 ; - char *arg4 = (char *) NULL ; - int arg5 = (int) 0 ; - int *arg6 = (int *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - int res2 ; - char *buf2 = 0 ; - int alloc2 = 0 ; - int res3 ; - char *buf3 = 0 ; - int alloc3 = 0 ; - int res4 ; - char *buf4 = 0 ; - int alloc4 = 0 ; - int val5 ; - int ecode5 = 0 ; - int temp6 ; - int res6 = SWIG_TMPOBJ ; - errcode_t result; - - arg6 = &temp6; - if (SWIG_GetArgs(interp, objc, objv,"ooo|oo:profile_get_boolean p name subname ?subsubname? ?defval? ",(void *)0,(void *)0,(void *)0,(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_get_boolean" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - res2 = SWIG_AsCharPtrAndSize(objv[2], &buf2, NULL, &alloc2); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "profile_get_boolean" "', argument " "2"" of type '" "char const *""'"); - } - arg2 = (char *)(buf2); - res3 = SWIG_AsCharPtrAndSize(objv[3], &buf3, NULL, &alloc3); - if (!SWIG_IsOK(res3)) { - SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "profile_get_boolean" "', argument " "3"" of type '" "char const *""'"); - } - arg3 = (char *)(buf3); - if (objc > 4) { - res4 = SWIG_AsCharPtrAndSize(objv[4], &buf4, NULL, &alloc4); - if (!SWIG_IsOK(res4)) { - SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "profile_get_boolean" "', argument " "4"" of type '" "char const *""'"); - } - arg4 = (char *)(buf4); - } - if (objc > 5) { - ecode5 = SWIG_AsVal_int SWIG_TCL_CALL_ARGS_2(objv[5], &val5); - if (!SWIG_IsOK(ecode5)) { - SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "profile_get_boolean" "', argument " "5"" of type '" "int""'"); - } - arg5 = (int)(val5); - } - result = (errcode_t)profile_get_boolean(arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4,arg5,arg6); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - if (SWIG_IsTmpObj(res6)) { - Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),SWIG_From_int((*arg6))); - } else { - int new_flags = SWIG_IsNewObj(res6) ? (SWIG_POINTER_OWN | 0 ) : 0 ; - Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),SWIG_NewPointerObj((void*)(arg6), SWIGTYPE_p_int, new_flags)); - } - if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - if (alloc4 == SWIG_NEWOBJ) free((char*)buf4); - return TCL_OK; -fail: - if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - if (alloc4 == SWIG_NEWOBJ) free((char*)buf4); - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_get_relation_names(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char **arg2 = (char **) 0 ; - char ***arg3 = (char ***) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - char **tmp3 ; - errcode_t result; - - { - /* in char ***OUTPUT */ - tmp3 = NULL; - arg3 = &tmp3; - } - if (SWIG_GetArgs(interp, objc, objv,"oo:profile_get_relation_names p nullterm ",(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_get_relation_names" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - { - /* in char **nullterm */ - int n; - if (Tcl_SplitList(interp, Tcl_GetStringFromObj(objv[2],NULL), &n, (const char ***) &arg2) == TCL_ERROR) SWIG_fail; - } - result = (errcode_t)profile_get_relation_names(arg1,(char const **)arg2,arg3); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - { - /* argout char ***OUTPUT */ - int i; - for (i = 0; (*arg3)[i]; i++) - Tcl_AppendElement(interp, (*arg3)[i]); - } - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - return TCL_OK; -fail: - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_get_subsection_names(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char **arg2 = (char **) 0 ; - char ***arg3 = (char ***) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - char **tmp3 ; - errcode_t result; - - { - /* in char ***OUTPUT */ - tmp3 = NULL; - arg3 = &tmp3; - } - if (SWIG_GetArgs(interp, objc, objv,"oo:profile_get_subsection_names p nullterm ",(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_get_subsection_names" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - { - /* in char **nullterm */ - int n; - if (Tcl_SplitList(interp, Tcl_GetStringFromObj(objv[2],NULL), &n, (const char ***) &arg2) == TCL_ERROR) SWIG_fail; - } - result = (errcode_t)profile_get_subsection_names(arg1,(char const **)arg2,arg3); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - { - /* argout char ***OUTPUT */ - int i; - for (i = 0; (*arg3)[i]; i++) - Tcl_AppendElement(interp, (*arg3)[i]); - } - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - return TCL_OK; -fail: - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_iterator_create(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char **arg2 = (char **) 0 ; - int arg3 ; - iter_t *arg4 = (iter_t *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - int val3 ; - int ecode3 = 0 ; - iter_t tmp4 ; - errcode_t result; - - { - /*generic swigtype hack*/ arg4 = &tmp4; - } - if (SWIG_GetArgs(interp, objc, objv,"ooo:profile_iterator_create p nullterm flags ",(void *)0,(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_iterator_create" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - { - /* in char **nullterm */ - int n; - if (Tcl_SplitList(interp, Tcl_GetStringFromObj(objv[2],NULL), &n, (const char ***) &arg2) == TCL_ERROR) SWIG_fail; - } - ecode3 = SWIG_AsVal_int SWIG_TCL_CALL_ARGS_2(objv[3], &val3); - if (!SWIG_IsOK(ecode3)) { - SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "profile_iterator_create" "', argument " "3"" of type '" "int""'"); - } - arg3 = (int)(val3); - result = (errcode_t)iter_create(arg1,(char const **)arg2,arg3,arg4); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - /*generic swigtype hack*/ Tcl_SetObjResult(interp,SWIG_NewInstanceObj((void *) *arg4, SWIGTYPE_p_p_void,0)); - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - return TCL_OK; -fail: - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_iterator_free(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - iter_t arg1 = (iter_t) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - - if (SWIG_GetArgs(interp, objc, objv,"o:profile_iterator_free i ",(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p_p_void, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_iterator_free" "', argument " "1"" of type '" "iter_t""'"); - } - arg1 = (iter_t)(argp1); - iter_free(arg1); - - return TCL_OK; -fail: - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_iterator(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - iter_t arg1 = (iter_t) 0 ; - char **arg2 = (char **) 0 ; - char **arg3 = (char **) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - char *tmp2 ; - char *tmp3 ; - errcode_t result; - - { - /* in char **OUTPUT */ - tmp2 = NULL; - arg2 = &tmp2; - } - { - /* in char **OUTPUT */ - tmp3 = NULL; - arg3 = &tmp3; - } - if (SWIG_GetArgs(interp, objc, objv,"o:profile_iterator iter_t ",(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p_p_void, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_iterator" "', argument " "1"" of type '" "iter_t""'"); - } - arg1 = (iter_t)(argp1); - result = (errcode_t)profile_iterator(&arg1->handle,arg2,arg3); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - { - /* argout char **OUTPUT */ - /* Tcl_SetResult(interp, *arg2, TCL_DYNAMIC); */ - char *s = (arg2 && *arg2) ? *arg2 : ""; - Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp), - Tcl_NewStringObj(s, strlen(s))); - } - profile_release_string(*arg2); - { - /* argout char **OUTPUT */ - /* Tcl_SetResult(interp, *arg3, TCL_DYNAMIC); */ - char *s = (arg3 && *arg3) ? *arg3 : ""; - Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp), - Tcl_NewStringObj(s, strlen(s))); - } - profile_release_string(*arg3); - return TCL_OK; -fail: - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_update_relation(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char **arg2 = (char **) 0 ; - char *arg3 = (char *) 0 ; - char *arg4 = (char *) NULL ; - void *argp1 = 0 ; - int res1 = 0 ; - int res3 ; - char *buf3 = 0 ; - int alloc3 = 0 ; - int res4 ; - char *buf4 = 0 ; - int alloc4 = 0 ; - errcode_t result; - - if (SWIG_GetArgs(interp, objc, objv,"ooo|o:profile_update_relation p nullterm oldval ?newval? ",(void *)0,(void *)0,(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_update_relation" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - { - /* in char **nullterm */ - int n; - if (Tcl_SplitList(interp, Tcl_GetStringFromObj(objv[2],NULL), &n, (const char ***) &arg2) == TCL_ERROR) SWIG_fail; - } - res3 = SWIG_AsCharPtrAndSize(objv[3], &buf3, NULL, &alloc3); - if (!SWIG_IsOK(res3)) { - SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "profile_update_relation" "', argument " "3"" of type '" "char const *""'"); - } - arg3 = (char *)(buf3); - if (objc > 4) { - res4 = SWIG_AsCharPtrAndSize(objv[4], &buf4, NULL, &alloc4); - if (!SWIG_IsOK(res4)) { - SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "profile_update_relation" "', argument " "4"" of type '" "char const *""'"); - } - arg4 = (char *)(buf4); - } - result = (errcode_t)profile_update_relation(arg1,(char const **)arg2,(char const *)arg3,(char const *)arg4); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - if (alloc4 == SWIG_NEWOBJ) free((char*)buf4); - return TCL_OK; -fail: - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - if (alloc4 == SWIG_NEWOBJ) free((char*)buf4); - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_clear_relation(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char **arg2 = (char **) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - errcode_t result; - - if (SWIG_GetArgs(interp, objc, objv,"oo:profile_clear_relation p nullterm ",(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_clear_relation" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - { - /* in char **nullterm */ - int n; - if (Tcl_SplitList(interp, Tcl_GetStringFromObj(objv[2],NULL), &n, (const char ***) &arg2) == TCL_ERROR) SWIG_fail; - } - result = (errcode_t)profile_clear_relation(arg1,(char const **)arg2); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - return TCL_OK; -fail: - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_rename_section(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char **arg2 = (char **) 0 ; - char *arg3 = (char *) NULL ; - void *argp1 = 0 ; - int res1 = 0 ; - int res3 ; - char *buf3 = 0 ; - int alloc3 = 0 ; - errcode_t result; - - if (SWIG_GetArgs(interp, objc, objv,"oo|o:profile_rename_section p nullterm ?new_name? ",(void *)0,(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_rename_section" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - { - /* in char **nullterm */ - int n; - if (Tcl_SplitList(interp, Tcl_GetStringFromObj(objv[2],NULL), &n, (const char ***) &arg2) == TCL_ERROR) SWIG_fail; - } - if (objc > 3) { - res3 = SWIG_AsCharPtrAndSize(objv[3], &buf3, NULL, &alloc3); - if (!SWIG_IsOK(res3)) { - SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "profile_rename_section" "', argument " "3"" of type '" "char const *""'"); - } - arg3 = (char *)(buf3); - } - result = (errcode_t)profile_rename_section(arg1,(char const **)arg2,(char const *)arg3); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - return TCL_OK; -fail: - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_add_relation(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char **arg2 = (char **) 0 ; - char *arg3 = (char *) NULL ; - void *argp1 = 0 ; - int res1 = 0 ; - int res3 ; - char *buf3 = 0 ; - int alloc3 = 0 ; - errcode_t result; - - if (SWIG_GetArgs(interp, objc, objv,"oo|o:profile_add_relation p nullterm ?new_val? ",(void *)0,(void *)0,(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_add_relation" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - { - /* in char **nullterm */ - int n; - if (Tcl_SplitList(interp, Tcl_GetStringFromObj(objv[2],NULL), &n, (const char ***) &arg2) == TCL_ERROR) SWIG_fail; - } - if (objc > 3) { - res3 = SWIG_AsCharPtrAndSize(objv[3], &buf3, NULL, &alloc3); - if (!SWIG_IsOK(res3)) { - SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "profile_add_relation" "', argument " "3"" of type '" "char const *""'"); - } - arg3 = (char *)(buf3); - } - result = (errcode_t)profile_add_relation(arg1,(char const **)arg2,(char const *)arg3); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - return TCL_OK; -fail: - { - /* freearg char **nullterm */ - if (arg2) { - Tcl_Free((char *)arg2); arg2 = (char **) NULL; - } - } - if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); - return TCL_ERROR; -} - - -SWIGINTERN int -_wrap_profile_flush_to_buffer(ClientData clientData SWIGUNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - profile_t arg1 = (profile_t) 0 ; - char **arg2 = (char **) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - char *tmp2 ; - errcode_t result; - - { - /* in char **OUTPUT */ - tmp2 = NULL; - arg2 = &tmp2; - } - if (SWIG_GetArgs(interp, objc, objv,"o:profile_flush_to_buffer p ",(void *)0) == TCL_ERROR) SWIG_fail; - res1 = SWIG_ConvertPtr(objv[1], &argp1,SWIGTYPE_p__profile_t, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "profile_flush_to_buffer" "', argument " "1"" of type '" "profile_t""'"); - } - arg1 = (profile_t)(argp1); - result = (errcode_t)profile_flush_to_buffer(arg1,arg2); - { - /* out errcode_t result */ - if (result) { - /* There could be a memory leak here in the SWIG-Tcl layer, - I'm not sure. Not going to worry about it though. */ - Tcl_SetResult(interp, (char *) error_message(result), TCL_STATIC); - SWIG_fail; - } - } - { - /* argout char **OUTPUT */ - /* Tcl_SetResult(interp, *arg2, TCL_DYNAMIC); */ - char *s = (arg2 && *arg2) ? *arg2 : ""; - Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp), - Tcl_NewStringObj(s, strlen(s))); - } - return TCL_OK; -fail: - return TCL_ERROR; -} - - - -static swig_command_info swig_commands[] = { - { SWIG_prefix "profile_init_path", (swig_wrapper_func) _wrap_profile_init_path, NULL}, - { SWIG_prefix "profile_init", (swig_wrapper_func) _wrap_profile_init, NULL}, - { SWIG_prefix "profile_flush", (swig_wrapper_func) _wrap_profile_flush, NULL}, - { SWIG_prefix "profile_flush_to_file", (swig_wrapper_func) _wrap_profile_flush_to_file, NULL}, - { SWIG_prefix "profile_abandon", (swig_wrapper_func) _wrap_profile_abandon, NULL}, - { SWIG_prefix "profile_release", (swig_wrapper_func) _wrap_profile_release, NULL}, - { SWIG_prefix "profile_get_values", (swig_wrapper_func) _wrap_profile_get_values, NULL}, - { SWIG_prefix "profile_get_string", (swig_wrapper_func) _wrap_profile_get_string, NULL}, - { SWIG_prefix "profile_get_integer", (swig_wrapper_func) _wrap_profile_get_integer, NULL}, - { SWIG_prefix "profile_get_boolean", (swig_wrapper_func) _wrap_profile_get_boolean, NULL}, - { SWIG_prefix "profile_get_relation_names", (swig_wrapper_func) _wrap_profile_get_relation_names, NULL}, - { SWIG_prefix "profile_get_subsection_names", (swig_wrapper_func) _wrap_profile_get_subsection_names, NULL}, - { SWIG_prefix "profile_iterator_create", (swig_wrapper_func) _wrap_profile_iterator_create, NULL}, - { SWIG_prefix "profile_iterator_free", (swig_wrapper_func) _wrap_profile_iterator_free, NULL}, - { SWIG_prefix "profile_iterator", (swig_wrapper_func) _wrap_profile_iterator, NULL}, - { SWIG_prefix "profile_update_relation", (swig_wrapper_func) _wrap_profile_update_relation, NULL}, - { SWIG_prefix "profile_clear_relation", (swig_wrapper_func) _wrap_profile_clear_relation, NULL}, - { SWIG_prefix "profile_rename_section", (swig_wrapper_func) _wrap_profile_rename_section, NULL}, - { SWIG_prefix "profile_add_relation", (swig_wrapper_func) _wrap_profile_add_relation, NULL}, - { SWIG_prefix "profile_flush_to_buffer", (swig_wrapper_func) _wrap_profile_flush_to_buffer, NULL}, - {0, 0, 0} -}; - -static swig_var_info swig_variables[] = { - {0,0,0,0} -}; - -static swig_const_info swig_constants[] = { - {0,0,0,0,0,0} -}; - -/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ - -static swig_type_info _swigt__p__profile_t = {"_p__profile_t", "struct _profile_t *|profile_t", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_int = {"_p_int", "int *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_long = {"_p_long", "long *|errcode_t *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_p__profile_t = {"_p_p__profile_t", "profile_t *|struct _profile_t **", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_p_p_char = {"_p_p_p_char", "char ***", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_p_p_void = {"_p_p_p_void", "void ***|iter_t *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_p_void = {"_p_p_void", "void **|iter_t", 0, 0, (void*)0, 0}; - -static swig_type_info *swig_type_initial[] = { - &_swigt__p__profile_t, - &_swigt__p_char, - &_swigt__p_int, - &_swigt__p_long, - &_swigt__p_p__profile_t, - &_swigt__p_p_char, - &_swigt__p_p_p_char, - &_swigt__p_p_p_void, - &_swigt__p_p_void, -}; - -static swig_cast_info _swigc__p__profile_t[] = { {&_swigt__p__profile_t, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_long[] = { {&_swigt__p_long, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_p__profile_t[] = { {&_swigt__p_p__profile_t, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_p_char[] = { {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_p_p_char[] = { {&_swigt__p_p_p_char, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_p_p_void[] = { {&_swigt__p_p_p_void, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_p_void[] = { {&_swigt__p_p_void, 0, 0, 0},{0, 0, 0, 0}}; - -static swig_cast_info *swig_cast_initial[] = { - _swigc__p__profile_t, - _swigc__p_char, - _swigc__p_int, - _swigc__p_long, - _swigc__p_p__profile_t, - _swigc__p_p_char, - _swigc__p_p_p_char, - _swigc__p_p_p_void, - _swigc__p_p_void, -}; - - -/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ - -#ifdef __cplusplus -} -#endif -/* ----------------------------------------------------------------------------- - * Type initialization: - * This problem is tough by the requirement that no dynamic - * memory is used. Also, since swig_type_info structures store pointers to - * swig_cast_info structures and swig_cast_info structures store pointers back - * to swig_type_info structures, we need some lookup code at initialization. - * The idea is that swig generates all the structures that are needed. - * The runtime then collects these partially filled structures. - * The SWIG_InitializeModule function takes these initial arrays out of - * swig_module, and does all the lookup, filling in the swig_module.types - * array with the correct data and linking the correct swig_cast_info - * structures together. - * - * The generated swig_type_info structures are assigned staticly to an initial - * array. We just loop through that array, and handle each type individually. - * First we lookup if this type has been already loaded, and if so, use the - * loaded structure instead of the generated one. Then we have to fill in the - * cast linked list. The cast data is initially stored in something like a - * two-dimensional array. Each row corresponds to a type (there are the same - * number of rows as there are in the swig_type_initial array). Each entry in - * a column is one of the swig_cast_info structures for that type. - * The cast_initial array is actually an array of arrays, because each row has - * a variable number of columns. So to actually build the cast linked list, - * we find the array of casts associated with the type, and loop through it - * adding the casts to the list. The one last trick we need to do is making - * sure the type pointer in the swig_cast_info struct is correct. - * - * First off, we lookup the cast->type name to see if it is already loaded. - * There are three cases to handle: - * 1) If the cast->type has already been loaded AND the type we are adding - * casting info to has not been loaded (it is in this module), THEN we - * replace the cast->type pointer with the type pointer that has already - * been loaded. - * 2) If BOTH types (the one we are adding casting info to, and the - * cast->type) are loaded, THEN the cast info has already been loaded by - * the previous module so we just ignore it. - * 3) Finally, if cast->type has not already been loaded, then we add that - * swig_cast_info to the linked list (because the cast->type) pointer will - * be correct. - * ----------------------------------------------------------------------------- */ - -#ifdef __cplusplus -extern "C" { -#if 0 -} /* c-mode */ -#endif -#endif - -#if 0 -#define SWIGRUNTIME_DEBUG -#endif - - -SWIGRUNTIME void -SWIG_InitializeModule(void *clientdata) { - size_t i; - swig_module_info *module_head, *iter; - int found, init; - - /* check to see if the circular list has been setup, if not, set it up */ - if (swig_module.next==0) { - /* Initialize the swig_module */ - swig_module.type_initial = swig_type_initial; - swig_module.cast_initial = swig_cast_initial; - swig_module.next = &swig_module; - init = 1; - } else { - init = 0; - } - - /* Try and load any already created modules */ - module_head = SWIG_GetModule(clientdata); - if (!module_head) { - /* This is the first module loaded for this interpreter */ - /* so set the swig module into the interpreter */ - SWIG_SetModule(clientdata, &swig_module); - module_head = &swig_module; - } else { - /* the interpreter has loaded a SWIG module, but has it loaded this one? */ - found=0; - iter=module_head; - do { - if (iter==&swig_module) { - found=1; - break; - } - iter=iter->next; - } while (iter!= module_head); - - /* if the is found in the list, then all is done and we may leave */ - if (found) return; - /* otherwise we must add out module into the list */ - swig_module.next = module_head->next; - module_head->next = &swig_module; - } - - /* When multiple interpeters are used, a module could have already been initialized in - a different interpreter, but not yet have a pointer in this interpreter. - In this case, we do not want to continue adding types... everything should be - set up already */ - if (init == 0) return; - - /* Now work on filling in swig_module.types */ -#ifdef SWIGRUNTIME_DEBUG - printf("SWIG_InitializeModule: size %d\n", swig_module.size); -#endif - for (i = 0; i < swig_module.size; ++i) { - swig_type_info *type = 0; - swig_type_info *ret; - swig_cast_info *cast; - -#ifdef SWIGRUNTIME_DEBUG - printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); -#endif - - /* if there is another module already loaded */ - if (swig_module.next != &swig_module) { - type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); - } - if (type) { - /* Overwrite clientdata field */ -#ifdef SWIGRUNTIME_DEBUG - printf("SWIG_InitializeModule: found type %s\n", type->name); -#endif - if (swig_module.type_initial[i]->clientdata) { - type->clientdata = swig_module.type_initial[i]->clientdata; -#ifdef SWIGRUNTIME_DEBUG - printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); -#endif - } - } else { - type = swig_module.type_initial[i]; - } - - /* Insert casting types */ - cast = swig_module.cast_initial[i]; - while (cast->type) { - /* Don't need to add information already in the list */ - ret = 0; -#ifdef SWIGRUNTIME_DEBUG - printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); -#endif - if (swig_module.next != &swig_module) { - ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); -#ifdef SWIGRUNTIME_DEBUG - if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); -#endif - } - if (ret) { - if (type == swig_module.type_initial[i]) { -#ifdef SWIGRUNTIME_DEBUG - printf("SWIG_InitializeModule: skip old type %s\n", ret->name); -#endif - cast->type = ret; - ret = 0; - } else { - /* Check for casting already in the list */ - swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); -#ifdef SWIGRUNTIME_DEBUG - if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); -#endif - if (!ocast) ret = 0; - } - } - - if (!ret) { -#ifdef SWIGRUNTIME_DEBUG - printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); -#endif - if (type->cast) { - type->cast->prev = cast; - cast->next = type->cast; - } - type->cast = cast; - } - cast++; - } - /* Set entry in modules->types array equal to the type */ - swig_module.types[i] = type; - } - swig_module.types[i] = 0; - -#ifdef SWIGRUNTIME_DEBUG - printf("**** SWIG_InitializeModule: Cast List ******\n"); - for (i = 0; i < swig_module.size; ++i) { - int j = 0; - swig_cast_info *cast = swig_module.cast_initial[i]; - printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); - while (cast->type) { - printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); - cast++; - ++j; - } - printf("---- Total casts: %d\n",j); - } - printf("**** SWIG_InitializeModule: Cast List ******\n"); -#endif -} - -/* This function will propagate the clientdata field of type to -* any new swig_type_info structures that have been added into the list -* of equivalent types. It is like calling -* SWIG_TypeClientData(type, clientdata) a second time. -*/ -SWIGRUNTIME void -SWIG_PropagateClientData(void) { - size_t i; - swig_cast_info *equiv; - static int init_run = 0; - - if (init_run) return; - init_run = 1; - - for (i = 0; i < swig_module.size; i++) { - if (swig_module.types[i]->clientdata) { - equiv = swig_module.types[i]->cast; - while (equiv) { - if (!equiv->converter) { - if (equiv->type && !equiv->type->clientdata) - SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); - } - equiv = equiv->next; - } - } - } -} - -#ifdef __cplusplus -#if 0 -{ - /* c-mode */ -#endif -} -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - - /* ----------------------------------------------------------------------------- - * constants/methods manipulation - * ----------------------------------------------------------------------------- */ - - /* Install Constants */ - - SWIGINTERN void - SWIG_Tcl_InstallConstants(Tcl_Interp *interp, swig_const_info constants[]) { - int i; - Tcl_Obj *obj; - - if (!swigconstTableinit) { - Tcl_InitHashTable(&swigconstTable, TCL_STRING_KEYS); - swigconstTableinit = 1; - } - for (i = 0; constants[i].type; i++) { - switch(constants[i].type) { - case SWIG_TCL_POINTER: - obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); - break; - case SWIG_TCL_BINARY: - obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); - break; - default: - obj = 0; - break; - } - if (obj) { - SWIG_Tcl_SetConstantObj(interp, constants[i].name, obj); - } - } - } - -#ifdef __cplusplus -} -#endif - -/* -----------------------------------------------------------------------------* - * Partial Init method - * -----------------------------------------------------------------------------*/ - -SWIGEXPORT int SWIG_init(Tcl_Interp *interp) { - int i; - if (interp == 0) return TCL_ERROR; -#ifdef USE_TCL_STUBS - /* (char*) cast is required to avoid compiler warning/error for Tcl < 8.4. */ - if (Tcl_InitStubs(interp, (char*)SWIG_TCL_STUBS_VERSION, 0) == NULL) { - return TCL_ERROR; - } -#endif -#ifdef USE_TK_STUBS - /* (char*) cast is required to avoid compiler warning/error. */ - if (Tk_InitStubs(interp, (char*)SWIG_TCL_STUBS_VERSION, 0) == NULL) { - return TCL_ERROR; - } -#endif - - Tcl_PkgProvide(interp, (char*)SWIG_name, (char*)SWIG_version); - -#ifdef SWIG_namespace - Tcl_Eval(interp, "namespace eval " SWIG_namespace " { }"); -#endif - - SWIG_InitializeModule((void *) interp); - SWIG_PropagateClientData(); - - for (i = 0; swig_commands[i].name; i++) { - Tcl_CreateObjCommand(interp, (char *) swig_commands[i].name, (swig_wrapper_func) swig_commands[i].wrapper, - swig_commands[i].clientdata, NULL); - } - for (i = 0; swig_variables[i].name; i++) { - Tcl_SetVar(interp, (char *) swig_variables[i].name, (char *) "", TCL_GLOBAL_ONLY); - Tcl_TraceVar(interp, (char *) swig_variables[i].name, TCL_TRACE_READS | TCL_GLOBAL_ONLY, - (Tcl_VarTraceProc *) swig_variables[i].get, (ClientData) swig_variables[i].addr); - Tcl_TraceVar(interp, (char *) swig_variables[i].name, TCL_TRACE_WRITES | TCL_GLOBAL_ONLY, - (Tcl_VarTraceProc *) swig_variables[i].set, (ClientData) swig_variables[i].addr); - } - - SWIG_Tcl_InstallConstants(interp, swig_constants); - - - return TCL_OK; -}