summaryrefslogtreecommitdiff
path: root/bindings
diff options
context:
space:
mode:
Diffstat (limited to 'bindings')
-rw-r--r--bindings/bcppmake/MainCLXTest.cpp16
-rw-r--r--bindings/bcppmake/MainCLXTest.dfm16
-rw-r--r--bindings/bcppmake/MainCLXTest.h21
-rw-r--r--bindings/bcppmake/MainTest.cpp37
-rw-r--r--bindings/bcppmake/MainTest.dfm36
-rw-r--r--bindings/bcppmake/MainTest.h25
-rw-r--r--bindings/bcppmake/clxtest.bpr93
-rw-r--r--bindings/bcppmake/clxtest.cpp24
-rw-r--r--bindings/bcppmake/sword.bpf10
-rw-r--r--bindings/bcppmake/sword.bpr111
-rw-r--r--bindings/bcppmake/sword.c31
-rw-r--r--bindings/bcppmake/sworddll.bpg33
-rw-r--r--bindings/bcppmake/test.cpp23
-rw-r--r--bindings/clx/Sword.pas40
-rw-r--r--bindings/corba/java/Makefile19
-rw-r--r--bindings/corba/java/src/org/crosswire/sword/orb/SwordOrb.java143
-rw-r--r--bindings/corba/java/src/org/crosswire/util/Base64.java1238
-rw-r--r--bindings/corba/java/swordorb.jpx41
-rw-r--r--bindings/corba/java/swordorb.jpx.local10
-rwxr-xr-xbindings/corba/java/testclient2
-rw-r--r--bindings/corba/orbitcpp/Makefile48
-rw-r--r--bindings/corba/orbitcpp/server.cpp45
-rw-r--r--bindings/corba/orbitcpp/swordorb-impl.cpp231
-rw-r--r--bindings/corba/orbitcpp/swordorb-impl.hpp67
-rw-r--r--bindings/corba/orbitcpp/testclient.cpp61
-rw-r--r--bindings/corba/swordorb.idl80
-rw-r--r--bindings/flatapi.cpp77
-rw-r--r--bindings/gsoap/Makefile12
-rw-r--r--bindings/gsoap/gsoapsword.cpp142
-rw-r--r--bindings/gsoap/gsoapsword.h65
-rw-r--r--bindings/gsoap/include/stdsoap.h493
-rwxr-xr-xbindings/gsoap/soapcppbin0 -> 534312 bytes
-rw-r--r--bindings/gsoap/stdsoap.obin0 -> 79640 bytes
-rw-r--r--bindings/gsoap/testclient.cpp76
-rw-r--r--bindings/perl/Changes18
-rw-r--r--bindings/perl/Makefile.PL91
-rw-r--r--bindings/perl/README36
-rw-r--r--bindings/perl/Sword.pm1087
-rw-r--r--bindings/perl/Sword.xs254
-rw-r--r--bindings/perl/perlobject.map106
-rw-r--r--bindings/perl/test.pl163
-rw-r--r--bindings/perl/typemap3
-rw-r--r--bindings/swig/Makefile.am95
-rw-r--r--bindings/swig/Makefile.oth22
-rw-r--r--bindings/swig/Makefile.swig578
-rwxr-xr-xbindings/swig/examples/mod2zmod.pl84
-rw-r--r--bindings/swig/listkey.i92
-rw-r--r--bindings/swig/localemgr.i25
-rw-r--r--bindings/swig/lzsscompress.i12
-rw-r--r--bindings/swig/package/Makefile.am96
-rw-r--r--bindings/swig/package/README.cvs10
-rwxr-xr-xbindings/swig/package/autogen.sh16
-rw-r--r--bindings/swig/package/configure.ac41
-rw-r--r--bindings/swig/package/perl.m471
-rw-r--r--bindings/swig/package/php4.m433
-rw-r--r--bindings/swig/package/python.m4117
-rw-r--r--bindings/swig/package/swig.m429
-rw-r--r--bindings/swig/package/sword.m4172
-rw-r--r--bindings/swig/package/tcl.m4114
-rw-r--r--bindings/swig/package/zlib.m4111
-rw-r--r--bindings/swig/perl/Changes6
-rw-r--r--bindings/swig/perl/README35
-rw-r--r--bindings/swig/perl/Sword.cxx10209
-rw-r--r--bindings/swig/perl/Sword.pm1426
-rw-r--r--bindings/swig/perl/test.pl17
-rw-r--r--bindings/swig/php/Sword.cpp10396
-rw-r--r--bindings/swig/php/Sword.php24
-rw-r--r--bindings/swig/php/php_Sword.h261
-rw-r--r--bindings/swig/python/README.txt1
-rw-r--r--bindings/swig/python/Sword.cxx5062
-rw-r--r--bindings/swig/python/Sword.py796
-rw-r--r--bindings/swig/rawcom.i15
-rw-r--r--bindings/swig/rawgenbook.i22
-rw-r--r--bindings/swig/rawld.i13
-rw-r--r--bindings/swig/rawld4.i13
-rw-r--r--bindings/swig/rawtext.i12
-rw-r--r--bindings/swig/swbuf.i65
-rw-r--r--bindings/swig/swcom.i11
-rw-r--r--bindings/swig/swcompress.i17
-rw-r--r--bindings/swig/swconfig.i43
-rw-r--r--bindings/swig/swfiltermgr.i22
-rw-r--r--bindings/swig/swgenbook.i11
-rw-r--r--bindings/swig/swig-perl.doxygen177
-rw-r--r--bindings/swig/swkey.i75
-rw-r--r--bindings/swig/swld.i11
-rw-r--r--bindings/swig/swmgr.i59
-rw-r--r--bindings/swig/swmodule.i100
-rw-r--r--bindings/swig/sword.i52
-rw-r--r--bindings/swig/sword.pl104
-rw-r--r--bindings/swig/swposition.i15
-rw-r--r--bindings/swig/swtext.i11
-rw-r--r--bindings/swig/treekey.i48
-rw-r--r--bindings/swig/treekeyidx.i19
-rw-r--r--bindings/swig/versekey.i128
-rw-r--r--bindings/swig/zcom.i13
-rw-r--r--bindings/swig/zipcompress.i12
-rw-r--r--bindings/swig/zld.i13
-rw-r--r--bindings/swig/ztext.i13
98 files changed, 36117 insertions, 52 deletions
diff --git a/bindings/bcppmake/MainCLXTest.cpp b/bindings/bcppmake/MainCLXTest.cpp
new file mode 100644
index 0000000..b82658a
--- /dev/null
+++ b/bindings/bcppmake/MainCLXTest.cpp
@@ -0,0 +1,16 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+
+#include "MainCLXTest.h"
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma resource "*.dfm"
+TForm2 *Form2;
+//---------------------------------------------------------------------------
+__fastcall TForm2::TForm2(TComponent* Owner)
+ : TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------
diff --git a/bindings/bcppmake/MainCLXTest.dfm b/bindings/bcppmake/MainCLXTest.dfm
new file mode 100644
index 0000000..3d5e63c
--- /dev/null
+++ b/bindings/bcppmake/MainCLXTest.dfm
@@ -0,0 +1,16 @@
+object Form2: TForm2
+ Left = 346
+ Top = 107
+ Width = 870
+ Height = 600
+ Caption = 'Form2'
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ OldCreateOrder = False
+ PixelsPerInch = 96
+ TextHeight = 13
+end
diff --git a/bindings/bcppmake/MainCLXTest.h b/bindings/bcppmake/MainCLXTest.h
new file mode 100644
index 0000000..fbb0f72
--- /dev/null
+++ b/bindings/bcppmake/MainCLXTest.h
@@ -0,0 +1,21 @@
+//---------------------------------------------------------------------------
+
+#ifndef MainCLXTestH
+#define MainCLXTestH
+//---------------------------------------------------------------------------
+#include <Classes.hpp>
+#include <Controls.hpp>
+#include <StdCtrls.hpp>
+#include <Forms.hpp>
+//---------------------------------------------------------------------------
+class TForm2 : public TForm
+{
+__published: // IDE-managed Components
+private: // User declarations
+public: // User declarations
+ __fastcall TForm2(TComponent* Owner);
+};
+//---------------------------------------------------------------------------
+extern PACKAGE TForm2 *Form2;
+//---------------------------------------------------------------------------
+#endif
diff --git a/bindings/bcppmake/MainTest.cpp b/bindings/bcppmake/MainTest.cpp
new file mode 100644
index 0000000..46c0b65
--- /dev/null
+++ b/bindings/bcppmake/MainTest.cpp
@@ -0,0 +1,37 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+
+#include "MainTest.h"
+extern "C" {
+#include <flatapi.h>
+}
+//using namespace sword;
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma resource "*.dfm"
+TForm1 *Form1;
+//---------------------------------------------------------------------------
+__fastcall TForm1::TForm1(TComponent* Owner)
+ : TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------
+void __fastcall TForm1::FormShow(TObject *Sender)
+{
+ SWHANDLE mgr = SWMgr_new();
+ SWHANDLE it = SWMgr_getModulesIterator(mgr);
+ SWHANDLE module = 0;
+ String modlist;
+ do {
+ module = ModList_iterator_val(it);
+ if (module) {
+ modlist += SWModule_getName(module) + (String)"\r\n";
+ ModList_iterator_next(it);
+ }
+ } while (module);
+ Memo1->Text = modlist;
+ SWMgr_delete(mgr);
+}
+//---------------------------------------------------------------------------
diff --git a/bindings/bcppmake/MainTest.dfm b/bindings/bcppmake/MainTest.dfm
new file mode 100644
index 0000000..ffb3c5a
--- /dev/null
+++ b/bindings/bcppmake/MainTest.dfm
@@ -0,0 +1,36 @@
+object Form1: TForm1
+ Left = 346
+ Top = 234
+ Width = 446
+ Height = 265
+ Caption = 'Form1'
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ OldCreateOrder = False
+ OnShow = FormShow
+ PixelsPerInch = 96
+ TextHeight = 13
+ object Memo1: TMemo
+ Left = 0
+ Top = 0
+ Width = 438
+ Height = 197
+ Align = alClient
+ Lines.Strings = (
+ 'Memo1')
+ TabOrder = 0
+ end
+ object Panel1: TPanel
+ Left = 0
+ Top = 197
+ Width = 438
+ Height = 41
+ Align = alBottom
+ Caption = 'Panel1'
+ TabOrder = 1
+ end
+end
diff --git a/bindings/bcppmake/MainTest.h b/bindings/bcppmake/MainTest.h
new file mode 100644
index 0000000..99802c8
--- /dev/null
+++ b/bindings/bcppmake/MainTest.h
@@ -0,0 +1,25 @@
+//---------------------------------------------------------------------------
+
+#ifndef MainTestH
+#define MainTestH
+//---------------------------------------------------------------------------
+#include <Classes.hpp>
+#include <Controls.hpp>
+#include <StdCtrls.hpp>
+#include <Forms.hpp>
+#include <ExtCtrls.hpp>
+//---------------------------------------------------------------------------
+class TForm1 : public TForm
+{
+__published: // IDE-managed Components
+ TMemo *Memo1;
+ TPanel *Panel1;
+ void __fastcall FormShow(TObject *Sender);
+private: // User declarations
+public: // User declarations
+ __fastcall TForm1(TComponent* Owner);
+};
+//---------------------------------------------------------------------------
+extern PACKAGE TForm1 *Form1;
+//---------------------------------------------------------------------------
+#endif
diff --git a/bindings/bcppmake/clxtest.bpr b/bindings/bcppmake/clxtest.bpr
new file mode 100644
index 0000000..0231ee9
--- /dev/null
+++ b/bindings/bcppmake/clxtest.bpr
@@ -0,0 +1,93 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!-- C++Builder XML Project -->
+<PROJECT>
+ <MACROS>
+ <VERSION value="BCB.05.03"/>
+ <PROJECT value="clxtest.exe"/>
+ <OBJFILES value="..\clx\Sword.obj clxtest.obj MainCLXTest.obj"/>
+ <RESFILES value="clxtest.res"/>
+ <DEFFILE value=""/>
+ <RESDEPEN value="$(RESFILES) MainCLXTest.dfm"/>
+ <LIBFILES value="sword.lib"/>
+ <LIBRARIES value=""/>
+ <SPARELIBS value="Vcl50.lib"/>
+ <PACKAGES value="Vcl50.bpi Vclx50.bpi bcbsmp50.bpi Qrpt50.bpi Vcldb50.bpi Vclbde50.bpi
+ ibsmp50.bpi vcldbx50.bpi TeeUI50.bpi TeeDB50.bpi Tee50.bpi TeeQR50.bpi
+ VCLIB50.bpi bcbie50.bpi vclie50.bpi Inetdb50.bpi Inet50.bpi NMFast50.bpi
+ dclocx50.bpi bcb2kaxserver50.bpi"/>
+ <PATHCPP value=".;"/>
+ <PATHPAS value=".;..\clx"/>
+ <PATHRC value=".;"/>
+ <PATHASM value=".;"/>
+ <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
+ <RELEASELIBPATH value="$(BCB)\lib\release"/>
+ <LINKER value="tlink32"/>
+ <USERDEFINES value="_DEBUG"/>
+ <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/>
+ <MAINSOURCE value="clxtest.cpp"/>
+ <INCLUDEPATH value="..\clx;$(BCB)\include;$(BCB)\include\vcl"/>
+ <LIBPATH value="..\clx;$(BCB)\lib\obj;$(BCB)\lib"/>
+ <WARNINGS value="-w-par"/>
+ </MACROS>
+ <OPTIONS>
+ <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c
+ -tW -tWM"/>
+ <PFLAGS value="-$YD -$W -$O- -v -JPHNE -M"/>
+ <RFLAGS value=""/>
+ <AFLAGS value="/mx /w2 /zd"/>
+ <LFLAGS value="-D&quot;&quot; -aa -Tpe -x -Gn -v"/>
+ </OPTIONS>
+ <LINKER>
+ <ALLOBJ value="c0w32.obj $(PACKAGES) Memmgr.Lib sysinit.obj $(OBJFILES)"/>
+ <ALLRES value="$(RESFILES)"/>
+ <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib"/>
+ </LINKER>
+ <IDEOPTIONS>
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[Debugging]
+DebugSourceDirs=$(BCB)\source\vcl
+
+[Parameters]
+RunParams=
+HostApplication=
+RemoteHost=
+RemotePath=
+RemoteDebug=0
+
+[Compiler]
+ShowInfoMsgs=0
+LinkDebugVcl=0
+LinkCGLIB=0
+
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+ </IDEOPTIONS>
+</PROJECT> \ No newline at end of file
diff --git a/bindings/bcppmake/clxtest.cpp b/bindings/bcppmake/clxtest.cpp
new file mode 100644
index 0000000..9c481eb
--- /dev/null
+++ b/bindings/bcppmake/clxtest.cpp
@@ -0,0 +1,24 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+USERES("clxtest.res");
+USEFORM("MainCLXTest.cpp", Form2);
+USEUNIT("..\clx\Sword.pas");
+USELIB("sword.lib");
+//---------------------------------------------------------------------------
+WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
+{
+ try
+ {
+ Application->Initialize();
+ Application->CreateForm(__classid(TForm2), &Form2);
+ Application->Run();
+ }
+ catch (Exception &exception)
+ {
+ Application->ShowException(&exception);
+ }
+ return 0;
+}
+//---------------------------------------------------------------------------
diff --git a/bindings/bcppmake/sword.bpf b/bindings/bcppmake/sword.bpf
new file mode 100644
index 0000000..6497780
--- /dev/null
+++ b/bindings/bcppmake/sword.bpf
@@ -0,0 +1,10 @@
+USEUNIT("sword.c");
+USEUNIT("..\flatapi.cpp");
+USELIB("..\..\lib\libsword.lib");
+USELIB("..\..\..\icu-sword\as_is\borland\icui18n.lib");
+USELIB("..\..\..\icu-sword\as_is\borland\icudatab.lib");
+USELIB("..\..\..\icu-sword\as_is\borland\icucommon.lib");
+//---------------------------------------------------------------------------
+This file is used by the project manager only and should be treated like the project file
+
+ DllEntryPoint \ No newline at end of file
diff --git a/bindings/bcppmake/sword.bpr b/bindings/bcppmake/sword.bpr
new file mode 100644
index 0000000..092cb6f
--- /dev/null
+++ b/bindings/bcppmake/sword.bpr
@@ -0,0 +1,111 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!-- C++Builder XML Project -->
+<PROJECT>
+ <MACROS>
+ <VERSION value="BCB.05.03"/>
+ <PROJECT value="sword.dll"/>
+ <OBJFILES value="sword.obj ..\flatapi.obj"/>
+ <RESFILES value=""/>
+ <DEFFILE value=""/>
+ <RESDEPEN value="$(RESFILES)"/>
+ <LIBFILES value="..\..\lib\libsword.lib ..\..\..\icu-sword\as_is\borland\icui18n.lib
+ ..\..\..\icu-sword\as_is\borland\icudatab.lib
+ ..\..\..\icu-sword\as_is\borland\icucommon.lib"/>
+ <LIBRARIES value=""/>
+ <SPARELIBS value=""/>
+ <PACKAGES value="Vcl50.bpi Vclx50.bpi bcbsmp50.bpi Qrpt50.bpi Vcldb50.bpi Vclbde50.bpi
+ ibsmp50.bpi vcldbx50.bpi TeeUI50.bpi TeeDB50.bpi Tee50.bpi TeeQR50.bpi
+ VCLIB50.bpi bcbie50.bpi vclie50.bpi Inetdb50.bpi Inet50.bpi NMFast50.bpi
+ dclocx50.bpi bcb2kaxserver50.bpi"/>
+ <PATHCPP value=".;.."/>
+ <PATHPAS value=".;"/>
+ <PATHRC value=".;"/>
+ <PATHASM value=".;"/>
+ <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
+ <RELEASELIBPATH value="$(BCB)\lib\release"/>
+ <LINKER value="tlink32"/>
+ <USERDEFINES value="_DEBUG;SWMAKINGDLL"/>
+ <SYSDEFINES value="NO_STRICT;_NO_VCL"/>
+ <MAINSOURCE value="sword.bpf"/>
+ <INCLUDEPATH value="..;..\..\include;$(BCB)\include;$(BCB)\include\vcl"/>
+ <LIBPATH value="..;$(BCB)\lib\obj;$(BCB)\lib"/>
+ <WARNINGS value="-w-par"/>
+ </MACROS>
+ <OPTIONS>
+ <CFLAG1 value="-WD -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi-
+ -tWD -tWM -c"/>
+ <PFLAGS value="-$YD -$W -$O- -v -JPHNE -M"/>
+ <RFLAGS value=""/>
+ <AFLAGS value="/mx /w2 /zi"/>
+ <LFLAGS value="-D&quot;&quot; -aa -Tpd -x -Gn -Gi -v"/>
+ </OPTIONS>
+ <LINKER>
+ <ALLOBJ value="c0d32.obj $(OBJFILES)"/>
+ <ALLRES value="$(RESFILES)"/>
+ <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cw32mt.lib"/>
+ </LINKER>
+ <IDEOPTIONS>
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[HistoryLists\hlIncludePath]
+Count=4
+Item0=..\;..;..\..\include;$(BCB)\include;$(BCB)\include\vcl
+Item1=..\;..\..\include;$(BCB)\include;$(BCB)\include\vcl
+Item2=..\..\include;$(BCB)\include;$(BCB)\include\vcl
+Item3=..\;$(BCB)\include;$(BCB)\include\vcl
+
+[HistoryLists\hlLibraryPath]
+Count=2
+Item0=..\;..;$(BCB)\lib\obj;$(BCB)\lib
+Item1=..\;$(BCB)\lib\obj;$(BCB)\lib
+
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=$(BCB)\source\vcl
+
+[HistoryLists\hlConditionals]
+Count=2
+Item0=_DEBUG;SWMAKINGDLL
+Item1=_DEBUG
+
+[Debugging]
+DebugSourceDirs=$(BCB)\source\vcl
+
+[Parameters]
+RunParams=
+HostApplication=
+RemoteHost=
+RemotePath=
+RemoteDebug=0
+
+[Compiler]
+ShowInfoMsgs=0
+LinkDebugVcl=0
+LinkCGLIB=0
+ </IDEOPTIONS>
+</PROJECT> \ No newline at end of file
diff --git a/bindings/bcppmake/sword.c b/bindings/bcppmake/sword.c
new file mode 100644
index 0000000..4c1c100
--- /dev/null
+++ b/bindings/bcppmake/sword.c
@@ -0,0 +1,31 @@
+//---------------------------------------------------------------------------
+
+#include <windows.h>
+//---------------------------------------------------------------------------
+// Important note about DLL memory management when your DLL uses the
+// static version of the RunTime Library:
+//
+// If your DLL exports any functions that pass String objects (or structs/
+// classes containing nested Strings) as parameter or function results,
+// you will need to add the library MEMMGR.LIB to both the DLL project and
+// any other projects that use the DLL. You will also need to use MEMMGR.LIB
+// if any other projects which use the DLL will be performing new or delete
+// operations on any non-TObject-derived classes which are exported from the
+// DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling
+// EXE's to use the BORLNDMM.DLL as their memory manager. In these cases,
+// the file BORLNDMM.DLL should be deployed along with your DLL.
+//
+// To avoid using BORLNDMM.DLL, pass string information using "char *" or
+// ShortString parameters.
+//
+// If your DLL uses the dynamic version of the RTL, you do not need to
+// explicitly add MEMMGR.LIB as this will be done implicitly for you
+//---------------------------------------------------------------------------
+
+#pragma argsused
+int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
+{
+ return 1;
+}
+//---------------------------------------------------------------------------
+ \ No newline at end of file
diff --git a/bindings/bcppmake/sworddll.bpg b/bindings/bcppmake/sworddll.bpg
new file mode 100644
index 0000000..7f3c269
--- /dev/null
+++ b/bindings/bcppmake/sworddll.bpg
@@ -0,0 +1,33 @@
+#------------------------------------------------------------------------------
+VERSION = BWS.01
+#------------------------------------------------------------------------------
+!ifndef ROOT
+ROOT = $(MAKEDIR)\..
+!endif
+#------------------------------------------------------------------------------
+MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
+DCC = $(ROOT)\bin\dcc32.exe $**
+BRCC = $(ROOT)\bin\brcc32.exe $**
+#------------------------------------------------------------------------------
+PROJECTS = libsword.lib sword.dll test.exe clxtest.exe
+#------------------------------------------------------------------------------
+default: $(PROJECTS)
+#------------------------------------------------------------------------------
+
+libsword.lib: ..\..\lib\bcppmake\libsword.bpr
+ $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+sword.dll: sword.bpr
+ $(ROOT)\bin\bpr2mak $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+test.exe: test.bpr
+ $(ROOT)\bin\bpr2mak $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+clxtest.exe: clxtest.bpr
+ $(ROOT)\bin\bpr2mak $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+
diff --git a/bindings/bcppmake/test.cpp b/bindings/bcppmake/test.cpp
new file mode 100644
index 0000000..1d02c50
--- /dev/null
+++ b/bindings/bcppmake/test.cpp
@@ -0,0 +1,23 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+USERES("test.res");
+USEFORM("MainTest.cpp", Form1);
+USELIB("sword.lib");
+//---------------------------------------------------------------------------
+WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
+{
+ try
+ {
+ Application->Initialize();
+ Application->CreateForm(__classid(TForm1), &Form1);
+ Application->Run();
+ }
+ catch (Exception &exception)
+ {
+ Application->ShowException(&exception);
+ }
+ return 0;
+}
+//---------------------------------------------------------------------------
diff --git a/bindings/clx/Sword.pas b/bindings/clx/Sword.pas
index 239f932..9fecc17 100644
--- a/bindings/clx/Sword.pas
+++ b/bindings/clx/Sword.pas
@@ -1,25 +1,27 @@
unit Sword;
+
interface
- function SWMgr_getPrefixPath(h: integer): PChar; cdecl; external 'libsword.so';
- function SWMgr_new: integer; cdecl; external 'libsword.so';
- procedure SWMgr_delete(h: integer); cdecl; external 'libsword.so';
- function SWMgr_getModulesIterator(h: integer) : integer; cdecl; external 'libsword.so';
- function SWMgr_getModuleByName(h: integer; name: PChar) : integer; cdecl; external 'libsword.so';
-
- procedure ModList_iterator_next(h: integer); cdecl; external 'libsword.so';
- function ModList_iterator_val(h: integer) : integer; cdecl; external 'libsword.so';
-
- function SWModule_getType(h: integer) : PChar; cdecl; external 'libsword.so';
- function SWModule_getName(h: integer) : PChar; cdecl; external 'libsword.so';
- function SWModule_getDescription(h: integer) : PChar; cdecl; external 'libsword.so';
- function SWModule_getStripText(h: integer) : PChar; cdecl; external 'libsword.so';
- function SWModule_getRenderText(h: integer) : PChar; cdecl; external 'libsword.so';
- function SWModule_getKeyText(h: integer) : PChar; cdecl; external 'libsword.so';
- procedure SWModule_setKeyText(h: integer; key: PChar); cdecl; external 'libsword.so';
- procedure SWModule_begin(h: integer); cdecl; external 'libsword.so';
- procedure SWModule_next(h: integer); cdecl; external 'libsword.so';
- procedure SWModule_previous(h: integer); cdecl; external 'libsword.so';
+ const LIBNAME = 'sword.dll';
+ function SWMgr_getPrefixPath(h: integer): PChar; cdecl; external libname;
+ function SWMgr_new: integer; cdecl; external LIBNAME;
+ procedure SWMgr_delete(h: integer); cdecl; external LIBNAME;
+ function SWMgr_getModulesIterator(h: integer) : integer; cdecl; external LIBNAME;
+ function SWMgr_getModuleByName(h: integer; name: PChar) : integer; cdecl; external LIBNAME;
+
+ procedure ModList_iterator_next(h: integer); cdecl; external LIBNAME;
+ function ModList_iterator_val(h: integer) : integer; cdecl; external LIBNAME;
+
+ function SWModule_getType(h: integer) : PChar; cdecl; external LIBNAME;
+ function SWModule_getName(h: integer) : PChar; cdecl; external LIBNAME;
+ function SWModule_getDescription(h: integer) : PChar; cdecl; external LIBNAME;
+ function SWModule_getStripText(h: integer) : PChar; cdecl; external LIBNAME;
+ function SWModule_getRenderText(h: integer) : PChar; cdecl; external LIBNAME;
+ function SWModule_getKeyText(h: integer) : PChar; cdecl; external LIBNAME;
+ procedure SWModule_setKeyText(h: integer; key: PChar); cdecl; external LIBNAME;
+ procedure SWModule_begin(h: integer); cdecl; external LIBNAME;
+ procedure SWModule_next(h: integer); cdecl; external LIBNAME;
+ procedure SWModule_previous(h: integer); cdecl; external LIBNAME;
type
SWModule = class(TObject)
diff --git a/bindings/corba/java/Makefile b/bindings/corba/java/Makefile
new file mode 100644
index 0000000..ff55983
--- /dev/null
+++ b/bindings/corba/java/Makefile
@@ -0,0 +1,19 @@
+all: src/org/crosswire/sword/orb/SWMgr.java classes/org/crosswire/sword/orb/SwordOrb.class
+
+src/org/crosswire/sword/orb/SWMgr.java: ../swordorb.idl
+ idlj -pkgTranslate swordorb org.crosswire.sword.orb -td src ../swordorb.idl
+
+classes/org/crosswire/sword/orb/SwordOrb.class: src/org/crosswire/sword/orb/SwordOrb.java
+ javac -classpath /var/tomcat/common/lib/servlet-api.jar -d classes -sourcepath src src/org/crosswire/sword/orb/*.java src/org/crosswire/util/*.java
+
+
+clean:
+ rm src/org/crosswire/sword/orb/SW*.java
+ rm src/org/crosswire/sword/orb/_SW*.java
+ rm src/org/crosswire/sword/orb/Mod*.java
+ rm src/org/crosswire/sword/orb/Search*.java
+ rm src/org/crosswire/sword/orb/String*.java
+ rm -rf classes/*
+
+install:
+ cp -a classes/org/ /var/tomcat/webapps/swordweb/WEB-INF/classes/
diff --git a/bindings/corba/java/src/org/crosswire/sword/orb/SwordOrb.java b/bindings/corba/java/src/org/crosswire/sword/orb/SwordOrb.java
new file mode 100644
index 0000000..cbb4c05
--- /dev/null
+++ b/bindings/corba/java/src/org/crosswire/sword/orb/SwordOrb.java
@@ -0,0 +1,143 @@
+package org.crosswire.sword.orb;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.io.StringWriter;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionBindingListener;
+import javax.servlet.http.HttpSessionBindingEvent;
+
+public class SwordOrb extends Object implements HttpSessionBindingListener {
+ public static final String BIBLES = "Biblical Texts";
+ public static final String COMMENTARIES = "Commentaries";
+ public static final String LEXDICTS = "Lexicons / Dictionaries";
+ public static final String GENBOOKS = "Generic Books";
+ public static final String DAILYDEVOS = "Daily Devotional";
+ static org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(new String[]{}, null);
+ String ior = null;
+
+ private SWMgr attach() {
+ SWMgr retVal = null;
+ try {
+System.out.println("attaching...");
+ org.omg.CORBA.Object obj = orb.string_to_object(ior);
+ retVal = SWMgrHelper.narrow(obj);
+System.out.println("calling testConnection");
+ retVal.testConnection();
+System.out.println("testConnection successful");
+ }
+ catch(org.omg.CORBA.SystemException e) {
+ e.printStackTrace();
+ retVal = null;
+System.out.println("failed in attach");
+ }
+ return retVal;
+ }
+
+ public SwordOrb() {
+ }
+
+
+// this doesn't seem to work. Never seems to get called for me
+ public void finalize () throws Throwable {
+ // shut down external process
+ try {
+ getSWMgrInstance().terminate();
+ }
+ catch (Exception e) {} // we know this doesn't return property cuz we killed the orb! :)
+
+ }
+
+
+ public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {}
+
+ public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
+ try {
+// throw new Exception("value unbound; showing stacktrace");
+ getSWMgrInstance().terminate();
+ }
+ catch (Exception e) {} // we know this doesn't return properly cuz we killed the orb! :)
+// catch (Exception e) {e.printStackTrace();} // we know this doesn't return properly cuz we killed the orb! :)
+ }
+
+
+ private void startOrb() {
+ try {
+ // start external process
+ java.lang.Process p = Runtime.getRuntime().exec("swordorbserver");
+ InputStream is = p.getInputStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ BufferedReader input = new BufferedReader(isr);
+
+ String line;
+ line = input.readLine();
+// retVal = p.waitFor();
+ ior = line;
+System.out.println("Launched ORB, IOR: " + ior);
+ }
+ catch (Exception e) {e.printStackTrace();}
+ }
+
+
+ public SWMgr getSWMgrInstance() {
+ SWMgr retVal = null;
+ try {
+System.out.println("trying to attach to running ORB");
+ retVal = attach();
+ }
+ catch(org.omg.CORBA.SystemException e) {
+ e.printStackTrace();
+ retVal = null;
+ }
+ if (retVal == null) {
+ try {
+System.out.println("no ORB running; trying to launch");
+ startOrb();
+System.out.println("trying to attach to newly launched ORB");
+ retVal = attach();
+ }
+ catch(org.omg.CORBA.SystemException e) {
+ e.printStackTrace();
+ }
+ }
+ return retVal;
+ }
+
+
+ public static SWMgr getSWMgrInstance(HttpSession session) {
+ SwordOrb orb = (SwordOrb)session.getAttribute("SwordOrb");
+ if (orb == null) {
+System.out.println("No ORB found in session; constructing a new instance");
+ orb = new SwordOrb();
+ session.setAttribute("SwordOrb", orb);
+ }
+ else {
+System.out.println("ORB found in session");
+ }
+ SWMgr mgr = orb.getSWMgrInstance();
+ return mgr;
+ }
+
+
+ public static void main(String args[]) throws Exception {
+ SWMgr mgr = new SwordOrb().getSWMgrInstance();
+
+ System.out.println("PrefixPath: " + mgr.getPrefixPath());
+ System.out.println("ConfigPath: " + mgr.getConfigPath());
+ ModInfo[] modInfoList = mgr.getModInfoList();
+ System.out.println("sequence size: " + modInfoList.length);
+ SWModule module;
+ for (int i = 0; i < modInfoList.length; i++) {
+ System.out.println(modInfoList[i].name + ": " + modInfoList[i].category + ": " + modInfoList[i].language);
+ module = mgr.getModuleByName(modInfoList[i].name);
+ module.setKeyText("jas1:19");
+ System.out.println(module.getRenderText());
+ }
+ module = mgr.getModuleByName("WEB");
+ SearchHit[] searchResults = module.search("God love world", SearchType.MULTIWORD, 0, "");
+ for (int i = 0; i < searchResults.length; i++)
+ System.out.println(searchResults[i].key);
+
+ }
+}
diff --git a/bindings/corba/java/src/org/crosswire/util/Base64.java b/bindings/corba/java/src/org/crosswire/util/Base64.java
new file mode 100644
index 0000000..984dc7b
--- /dev/null
+++ b/bindings/corba/java/src/org/crosswire/util/Base64.java
@@ -0,0 +1,1238 @@
+package org.crosswire.util;
+
+/**
+ * Changed last char from '/' to '-' because cookies can't use '/' so we're not really a BASE64
+ * standard encoder anymore
+ * Changed package name. --crosswire.
+ * Thanks to Robert Harder for placing this code into the public domain
+ *
+ * Encodes and decodes to and from Base64 notation.
+ *
+ * <p>
+ * Change Log:
+ * </p>
+ * <ul>
+ * <li>v1.3.5 - Added flag to turn on and off line breaks. Fixed bug in input stream
+ * where last buffer being read, if not completely full, was not returned.</li>
+ * <li>v1.3.4 - Fixed when "improperly padded stream" error was thrown at the wrong time.</li>
+ * <li>v1.3.3 - Fixed I/O streams which were totally messed up.</li>
+ * </ul>
+ *
+ * <p>
+ * I am placing this code in the Public Domain. Do with it as you will.
+ * This software comes with no guarantees or warranties but with
+ * plenty of well-wishing instead!
+ * Please visit <a href="http://iharder.net/xmlizable">http://iharder.net/xmlizable</a>
+ * periodically to check for updates or to contribute improvements.
+ * </p>
+ *
+ * @author Robert Harder
+ * @author rob@iharder.net
+ * @version 1.3.4
+ */
+public class Base64
+{
+
+ /** Specify encoding (value is <tt>true</tt>). */
+ public final static boolean ENCODE = true;
+
+
+ /** Specify decoding (value is <tt>false</tt>). */
+ public final static boolean DECODE = false;
+
+
+ /** Maximum line length (76) of Base64 output. */
+ private final static int MAX_LINE_LENGTH = java.lang.Integer.MAX_VALUE;
+
+
+ /** The equals sign (=) as a byte. */
+ private final static byte EQUALS_SIGN = (byte)'=';
+
+
+ /** The new line character (\n) as a byte. */
+ private final static byte NEW_LINE = (byte)'\n';
+
+
+ /** The 64 valid Base64 values. */
+ private final static byte[] ALPHABET =
+ {
+ (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'E', (byte)'F', (byte)'G',
+ (byte)'H', (byte)'I', (byte)'J', (byte)'K', (byte)'L', (byte)'M', (byte)'N',
+ (byte)'O', (byte)'P', (byte)'Q', (byte)'R', (byte)'S', (byte)'T', (byte)'U',
+ (byte)'V', (byte)'W', (byte)'X', (byte)'Y', (byte)'Z',
+ (byte)'a', (byte)'b', (byte)'c', (byte)'d', (byte)'e', (byte)'f', (byte)'g',
+ (byte)'h', (byte)'i', (byte)'j', (byte)'k', (byte)'l', (byte)'m', (byte)'n',
+ (byte)'o', (byte)'p', (byte)'q', (byte)'r', (byte)'s', (byte)'t', (byte)'u',
+ (byte)'v', (byte)'w', (byte)'x', (byte)'y', (byte)'z',
+ (byte)'0', (byte)'1', (byte)'2', (byte)'3', (byte)'4', (byte)'5',
+ (byte)'6', (byte)'7', (byte)'8', (byte)'9', (byte)'+', (byte)'-' // changed last char from '/' to '-' because cookies can't use '/'
+ };
+
+ /**
+ * Translates a Base64 value to either its 6-bit reconstruction value
+ * or a negative number indicating some other meaning.
+ **/
+ private final static byte[] DECODABET =
+ {
+ -9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 0 - 8
+ -5,-5, // Whitespace: Tab and Linefeed
+ -9,-9, // Decimal 11 - 12
+ -5, // Whitespace: Carriage Return
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 14 - 26
+ -9,-9,-9,-9,-9, // Decimal 27 - 31
+ -5, // Whitespace: Space
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 33 - 42
+ 62, // Plus sign at decimal 43
+ -9,-9,-9, // Decimal 44 - 46
+ 63, // Slash at decimal 47
+ 52,53,54,55,56,57,58,59,60,61, // Numbers zero through nine
+ -9,-9,-9, // Decimal 58 - 60
+ -1, // Equals sign at decimal 61
+ -9,-9,-9, // Decimal 62 - 64
+ 0,1,2,3,4,5,6,7,8,9,10,11,12,13, // Letters 'A' through 'N'
+ 14,15,16,17,18,19,20,21,22,23,24,25, // Letters 'O' through 'Z'
+ -9,-9,-9,-9,-9,-9, // Decimal 91 - 96
+ 26,27,28,29,30,31,32,33,34,35,36,37,38, // Letters 'a' through 'm'
+ 39,40,41,42,43,44,45,46,47,48,49,50,51, // Letters 'n' through 'z'
+ -9,-9,-9,-9 // Decimal 123 - 126
+ /*,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 127 - 139
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 140 - 152
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 153 - 165
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 166 - 178
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 179 - 191
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 192 - 204
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 205 - 217
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 218 - 230
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 231 - 243
+ -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9 // Decimal 244 - 255 */
+ };
+
+ private final static byte BAD_ENCODING = -9; // Indicates error in encoding
+ private final static byte WHITE_SPACE_ENC = -5; // Indicates white space in encoding
+ private final static byte EQUALS_SIGN_ENC = -1; // Indicates equals sign in encoding
+
+
+ /** Defeats instantiation. */
+ private Base64(){}
+
+
+
+ /**
+ * Testing. Feel free--in fact I encourage you--to throw out
+ * this entire "main" method when you actually deploy this code.
+ */
+ public static void main( String[] args )
+ {
+ try
+ {
+ // Test encoding/decoding byte arrays
+ {
+ byte[] bytes1 = { (byte)2,(byte)2,(byte)3,(byte)0,(byte)9 }; // My zip code
+ byte[] bytes2 = { (byte)99,(byte)2,(byte)2,(byte)3,(byte)0,(byte)9 };
+ System.out.println( "Bytes 2,2,3,0,9 as Base64: " + encodeBytes( bytes1 ) );
+ System.out.println( "Bytes 2,2,3,0,9 w/ offset: " + encodeBytes( bytes2, 1, bytes2.length-1 ) );
+ byte[] dbytes = decode( encodeBytes( bytes1 ) );
+ System.out.print( encodeBytes( bytes1 ) + " decoded: " );
+ for( int i = 0; i < dbytes.length; i++ )
+ System.out.print( dbytes[i] + (i<dbytes.length-1?",":"\n") );
+ } // end testing byte arrays
+
+
+
+
+ // Test Input Stream
+ {
+ // Read GIF stored in base64 form.
+ java.io.FileInputStream fis = new java.io.FileInputStream( "test.gif.b64" );
+ Base64.InputStream b64is = new Base64.InputStream( fis, DECODE );
+
+ byte[] bytes = new byte[0];
+ int b = -1;
+ while( (b = b64is.read()) >= 0 ){
+ byte[] temp = new byte[ bytes.length + 1 ];
+ System.arraycopy( bytes,0, temp,0,bytes.length );
+ temp[bytes.length] = (byte)b;
+ bytes = temp;
+ } // end while: terribly inefficient way to read data
+ b64is.close();
+ javax.swing.ImageIcon iicon = new javax.swing.ImageIcon( bytes );
+ javax.swing.JLabel jlabel = new javax.swing.JLabel( "Read from test.gif.b64", iicon,0 );
+ javax.swing.JFrame jframe = new javax.swing.JFrame();
+ jframe.getContentPane().add( jlabel );
+ jframe.pack();
+ jframe.show();
+
+ // Write raw bytes to file
+ java.io.FileOutputStream fos = new java.io.FileOutputStream( "test.gif_out" );
+ fos.write( bytes );
+ fos.close();
+
+ // Read raw bytes and encode
+ fis = new java.io.FileInputStream( "test.gif_out" );
+ b64is = new Base64.InputStream( fis, ENCODE );
+ byte[] ebytes = new byte[0];
+ b = -1;
+ while( (b = b64is.read()) >= 0 ){
+ byte[] temp = new byte[ ebytes.length + 1 ];
+ System.arraycopy( ebytes,0, temp,0,ebytes.length );
+ temp[ebytes.length] = (byte)b;
+ ebytes = temp;
+ } // end while: terribly inefficient way to read data
+ b64is.close();
+ String s = new String( ebytes );
+ javax.swing.JTextArea jta = new javax.swing.JTextArea( s );
+ javax.swing.JScrollPane jsp = new javax.swing.JScrollPane( jta );
+ jframe = new javax.swing.JFrame();
+ jframe.setTitle( "Read from test.gif_out" );
+ jframe.getContentPane().add( jsp );
+ jframe.pack();
+ jframe.show();
+
+ // Write encoded bytes to file
+ fos = new java.io.FileOutputStream( "test.gif.b64_out" );
+ fos.write( ebytes );
+
+ // Read GIF stored in base64 form.
+ fis = new java.io.FileInputStream( "test.gif.b64_out" );
+ b64is = new Base64.InputStream( fis, DECODE );
+ byte[] edbytes = new byte[0];
+ b = -1;
+ while( (b = b64is.read()) >= 0 ){
+ byte[] temp = new byte[ edbytes.length + 1 ];
+ System.arraycopy( edbytes,0, temp,0,edbytes.length );
+ temp[edbytes.length] = (byte)b;
+ edbytes = temp;
+ } // end while: terribly inefficient way to read data
+ b64is.close();
+ iicon = new javax.swing.ImageIcon( edbytes );
+ jlabel = new javax.swing.JLabel( "Read from test.gif.b64_out", iicon,0 );
+ jframe = new javax.swing.JFrame();
+ jframe.getContentPane().add( jlabel );
+ jframe.pack();
+ jframe.show();
+ } // end: Test Input Stream
+
+
+ // Test Output Stream
+ {
+ // Read raw bytes
+ java.io.FileInputStream fis = new java.io.FileInputStream( "test.gif_out" );
+ byte[] rbytes = new byte[0];
+ int b = -1;
+ while( (b = fis.read()) >= 0 ){
+ byte[] temp = new byte[ rbytes.length + 1 ];
+ System.arraycopy( rbytes,0, temp,0,rbytes.length );
+ temp[rbytes.length] = (byte)b;
+ rbytes = temp;
+ } // end while: terribly inefficient way to read data
+ fis.close();
+
+ // Write raw bytes to encoded file
+ java.io.FileOutputStream fos = new java.io.FileOutputStream("test.gif.b64_out2");
+ Base64.OutputStream b64os = new Base64.OutputStream( fos, ENCODE );
+ b64os.write( rbytes );
+ b64os.close();
+
+
+ // Read raw bytes that are actually encoded (but we'll ignore that)
+ fis = new java.io.FileInputStream( "test.gif.b64_out2" );
+ byte[] rebytes = new byte[0];
+ b = -1;
+ while( (b = fis.read()) >= 0 ){
+ byte[] temp = new byte[ rebytes.length + 1 ];
+ System.arraycopy( rebytes,0, temp,0,rebytes.length );
+ temp[rebytes.length] = (byte)b;
+ rebytes = temp;
+ } // end while: terribly inefficient way to read data
+ fis.close();
+ String s = new String( rebytes );
+ javax.swing.JTextArea jta = new javax.swing.JTextArea( s );
+ javax.swing.JScrollPane jsp = new javax.swing.JScrollPane( jta );
+ javax.swing.JFrame jframe = new javax.swing.JFrame();
+ jframe.setTitle( "Read from test.gif.b64_out2" );
+ jframe.getContentPane().add( jsp );
+ jframe.pack();
+ jframe.show();
+
+ // Write encoded bytes to decoded raw file
+ fos = new java.io.FileOutputStream("test.gif_out2");
+ b64os = new Base64.OutputStream( fos, DECODE );
+ b64os.write( rebytes );
+ b64os.close();
+ javax.swing.ImageIcon iicon = new javax.swing.ImageIcon( "test.gif_out2" );
+ javax.swing.JLabel jlabel = new javax.swing.JLabel( "Read from test.gif_out2", iicon,0 );
+ jframe = new javax.swing.JFrame();
+ jframe.getContentPane().add( jlabel );
+ jframe.pack();
+ jframe.show();
+
+ } // end: Test Output Stream
+
+
+ // Test wagner's files
+ {
+ java.io.FileInputStream fis = new java.io.FileInputStream("D:\\temp\\testencoding.txt");
+ Base64.InputStream b64is = new Base64.InputStream( fis, DECODE );
+ java.io.FileOutputStream fos = new java.io.FileOutputStream("D:\\temp\\file.zip");
+ int b;
+ while( (b=b64is.read()) >= 0 )
+ fos.write( b );
+ fos.close();
+ b64is.close();
+
+ } // end test wagner's file
+
+ } // end try
+ catch( Exception e)
+ { e.printStackTrace();
+ }
+ } // end main
+
+
+/* ******** E N C O D I N G M E T H O D S ******** */
+
+
+ /**
+ * Encodes the first three bytes of array <var>threeBytes</var>
+ * and returns a four-byte array in Base64 notation.
+ *
+ * @param threeBytes the array to convert
+ * @return four byte array in Base64 notation.
+ * @since 1.3
+ */
+ private static byte[] encode3to4( byte[] threeBytes )
+ { return encode3to4( threeBytes, 3 );
+ } // end encodeToBytes
+
+
+
+ /**
+ * Encodes up to the first three bytes of array <var>threeBytes</var>
+ * and returns a four-byte array in Base64 notation.
+ * The actual number of significant bytes in your array is
+ * given by <var>numSigBytes</var>.
+ * The array <var>threeBytes</var> needs only be as big as
+ * <var>numSigBytes</var>.
+ *
+ * @param threeBytes the array to convert
+ * @param numSigBytes the number of significant bytes in your array
+ * @return four byte array in Base64 notation.
+ * @since 1.3
+ */
+ private static byte[] encode3to4( byte[] threeBytes, int numSigBytes )
+ { byte[] dest = new byte[4];
+ encode3to4( threeBytes, 0, numSigBytes, dest, 0 );
+ return dest;
+ }
+
+
+
+ /**
+ * Encodes up to three bytes of the array <var>source</var>
+ * and writes the resulting four Base64 bytes to <var>destination</var>.
+ * The source and destination arrays can be manipulated
+ * anywhere along their length by specifying
+ * <var>srcOffset</var> and <var>destOffset</var>.
+ * This method does not check to make sure your arrays
+ * are large enough to accomodate <var>srcOffset</var> + 3 for
+ * the <var>source</var> array or <var>destOffset</var> + 4 for
+ * the <var>destination</var> array.
+ * The actual number of significant bytes in your array is
+ * given by <var>numSigBytes</var>.
+ *
+ * @param source the array to convert
+ * @param srcOffset the index where conversion begins
+ * @param numSigBytes the number of significant bytes in your array
+ * @param destination the array to hold the conversion
+ * @param destOffset the index where output will be put
+ * @return the <var>destination</var> array
+ * @since 1.3
+ */
+ private static byte[] encode3to4(
+ byte[] source, int srcOffset, int numSigBytes,
+ byte[] destination, int destOffset )
+ {
+ // 1 2 3
+ // 01234567890123456789012345678901 Bit position
+ // --------000000001111111122222222 Array position from threeBytes
+ // --------| || || || | Six bit groups to index ALPHABET
+ // >>18 >>12 >> 6 >> 0 Right shift necessary
+ // 0x3f 0x3f 0x3f Additional AND
+
+ // Create buffer with zero-padding if there are only one or two
+ // significant bytes passed in the array.
+ // We have to shift left 24 in order to flush out the 1's that appear
+ // when Java treats a value as negative that is cast from a byte to an int.
+ int inBuff = ( numSigBytes > 0 ? ((source[ srcOffset ] << 24) >>> 8) : 0 )
+ | ( numSigBytes > 1 ? ((source[ srcOffset + 1 ] << 24) >>> 16) : 0 )
+ | ( numSigBytes > 2 ? ((source[ srcOffset + 2 ] << 24) >>> 24) : 0 );
+
+ switch( numSigBytes )
+ {
+ case 3:
+ destination[ destOffset ] = ALPHABET[ (inBuff >>> 18) ];
+ destination[ destOffset + 1 ] = ALPHABET[ (inBuff >>> 12) & 0x3f ];
+ destination[ destOffset + 2 ] = ALPHABET[ (inBuff >>> 6) & 0x3f ];
+ destination[ destOffset + 3 ] = ALPHABET[ (inBuff ) & 0x3f ];
+ return destination;
+
+ case 2:
+ destination[ destOffset ] = ALPHABET[ (inBuff >>> 18) ];
+ destination[ destOffset + 1 ] = ALPHABET[ (inBuff >>> 12) & 0x3f ];
+ destination[ destOffset + 2 ] = ALPHABET[ (inBuff >>> 6) & 0x3f ];
+ destination[ destOffset + 3 ] = EQUALS_SIGN;
+ return destination;
+
+ case 1:
+ destination[ destOffset ] = ALPHABET[ (inBuff >>> 18) ];
+ destination[ destOffset + 1 ] = ALPHABET[ (inBuff >>> 12) & 0x3f ];
+ destination[ destOffset + 2 ] = EQUALS_SIGN;
+ destination[ destOffset + 3 ] = EQUALS_SIGN;
+ return destination;
+
+ default:
+ return destination;
+ } // end switch
+ } // end encode3to4
+
+ /**
+ * Serializes an object and returns the Base64-encoded
+ * version of that serialized object. If the object
+ * cannot be serialized or there is another error,
+ * the method will return <tt>null</tt>.
+ *
+ * @param serializableObject The object to encode
+ * @return The Base64-encoded object
+ * @since 1.4
+ */
+ public static String encodeObject( java.io.Serializable serializableObject )
+ {
+ return encodeObject( serializableObject, true );
+ } // end encodeObject
+
+ /**
+ * Serializes an object and returns the Base64-encoded
+ * version of that serialized object. If the object
+ * cannot be serialized or there is another error,
+ * the method will return <tt>null</tt>.
+ *
+ * @param serializableObject The object to encode
+ * @param breakLines Break lines at 80 characters or less.
+ * @return The Base64-encoded object
+ * @since 1.4
+ */
+ public static String encodeObject( java.io.Serializable serializableObject, boolean breakLines )
+ {
+ java.io.ByteArrayOutputStream baos = null;
+ java.io.OutputStream b64os = null;
+ java.io.ObjectOutputStream oos = null;
+
+ try
+ {
+ baos = new java.io.ByteArrayOutputStream();
+ b64os = new Base64.OutputStream( baos, Base64.ENCODE, breakLines );
+ oos = new java.io.ObjectOutputStream( b64os );
+
+ oos.writeObject( serializableObject );
+ } // end try
+ catch( java.io.IOException e )
+ {
+ e.printStackTrace();
+ return null;
+ } // end catch
+ finally
+ {
+ try{ oos.close(); } catch( Exception e ){}
+ try{ b64os.close(); } catch( Exception e ){}
+ try{ baos.close(); } catch( Exception e ){}
+ } // end finally
+
+ return new String( baos.toByteArray() );
+ } // end encode
+
+
+ /**
+ * Encodes a byte array into Base64 notation.
+ * Equivalen to calling
+ * <code>encodeBytes( source, 0, source.length )</code>
+ *
+ * @param source The data to convert
+ * @since 1.4
+ */
+ public static String encodeBytes( byte[] source )
+ {
+ return encodeBytes( source, true );
+ } // end encodeBytes
+
+ /**
+ * Encodes a byte array into Base64 notation.
+ * Equivalen to calling
+ * <code>encodeBytes( source, 0, source.length )</code>
+ *
+ * @param source The data to convert
+ * @param breakLines Break lines at 80 characters or less.
+ * @since 1.4
+ */
+ public static String encodeBytes( byte[] source, boolean breakLines )
+ {
+ return encodeBytes( source, 0, source.length, breakLines );
+ } // end encodeBytes
+
+
+ /**
+ * Encodes a byte array into Base64 notation.
+ *
+ * @param source The data to convert
+ * @param off Offset in array where conversion should begin
+ * @param len Length of data to convert
+ * @since 1.4
+ */
+ public static String encodeBytes( byte[] source, int off, int len )
+ {
+ return encodeBytes( source, off, len, true );
+ } // end encodeBytes
+
+
+ /**
+ * Encodes a byte array into Base64 notation.
+ *
+ * @param source The data to convert
+ * @param off Offset in array where conversion should begin
+ * @param len Length of data to convert
+ * @param breakLines Break lines at 80 characters or less.
+ * @since 1.4
+ */
+ public static String encodeBytes( byte[] source, int off, int len, boolean breakLines )
+ {
+ int len43 = len * 4 / 3;
+ byte[] outBuff = new byte[ ( len43 ) // Main 4:3
+ + ( (len % 3) > 0 ? 4 : 0 ) // Account for padding
+ + (breakLines ? ( len43 / MAX_LINE_LENGTH ) : 0) ]; // New lines
+ int d = 0;
+ int e = 0;
+ int len2 = len - 2;
+ int lineLength = 0;
+ for( ; d < len2; d+=3, e+=4 )
+ {
+ encode3to4( source, d+off, 3, outBuff, e );
+
+ lineLength += 4;
+ if( breakLines && lineLength == MAX_LINE_LENGTH )
+ {
+ outBuff[e+4] = NEW_LINE;
+ e++;
+ lineLength = 0;
+ } // end if: end of line
+ } // en dfor: each piece of array
+
+ if( d < len )
+ {
+ encode3to4( source, d+off, len - d, outBuff, e );
+ e += 4;
+ } // end if: some padding needed
+
+ return new String( outBuff, 0, e );
+ } // end encodeBytes
+
+
+ /**
+ * Encodes a string in Base64 notation with line breaks
+ * after every 75 Base64 characters.
+ *
+ * @param s the string to encode
+ * @return the encoded string
+ * @since 1.3
+ */
+ public static String encodeString( String s )
+ {
+ return encodeString( s, true );
+ } // end encodeString
+
+ /**
+ * Encodes a string in Base64 notation with line breaks
+ * after every 75 Base64 characters.
+ *
+ * @param s the string to encode
+ * @param breakLines Break lines at 80 characters or less.
+ * @return the encoded string
+ * @since 1.3
+ */
+ public static String encodeString( String s, boolean breakLines )
+ {
+ return encodeBytes( s.getBytes(), breakLines );
+ } // end encodeString
+
+
+
+
+/* ******** D E C O D I N G M E T H O D S ******** */
+
+
+ /**
+ * Decodes the first four bytes of array <var>fourBytes</var>
+ * and returns an array up to three bytes long with the
+ * decoded values.
+ *
+ * @param fourBytes the array with Base64 content
+ * @return array with decoded values
+ * @since 1.3
+ */
+ private static byte[] decode4to3( byte[] fourBytes )
+ {
+ byte[] outBuff1 = new byte[3];
+ int count = decode4to3( fourBytes, 0, outBuff1, 0 );
+ byte[] outBuff2 = new byte[ count ];
+
+ for( int i = 0; i < count; i++ )
+ outBuff2[i] = outBuff1[i];
+
+ return outBuff2;
+ }
+
+
+
+
+ /**
+ * Decodes four bytes from array <var>source</var>
+ * and writes the resulting bytes (up to three of them)
+ * to <var>destination</var>.
+ * The source and destination arrays can be manipulated
+ * anywhere along their length by specifying
+ * <var>srcOffset</var> and <var>destOffset</var>.
+ * This method does not check to make sure your arrays
+ * are large enough to accomodate <var>srcOffset</var> + 4 for
+ * the <var>source</var> array or <var>destOffset</var> + 3 for
+ * the <var>destination</var> array.
+ * This method returns the actual number of bytes that
+ * were converted from the Base64 encoding.
+ *
+ *
+ * @param source the array to convert
+ * @param srcOffset the index where conversion begins
+ * @param destination the array to hold the conversion
+ * @param destOffset the index where output will be put
+ * @return the number of decoded bytes converted
+ * @since 1.3
+ */
+ private static int decode4to3( byte[] source, int srcOffset, byte[] destination, int destOffset )
+ {
+ // Example: Dk==
+ if( source[ srcOffset + 2] == EQUALS_SIGN )
+ {
+ // Two ways to do the same thing. Don't know which way I like best.
+ //int outBuff = ( ( DECODABET[ source[ srcOffset ] ] << 24 ) >>> 6 )
+ // | ( ( DECODABET[ source[ srcOffset + 1] ] << 24 ) >>> 12 );
+ int outBuff = ( ( DECODABET[ source[ srcOffset ] ] & 0xFF ) << 18 )
+ | ( ( DECODABET[ source[ srcOffset + 1] ] & 0xFF ) << 12 );
+
+ destination[ destOffset ] = (byte)( outBuff >>> 16 );
+ return 1;
+ }
+
+ // Example: DkL=
+ else if( source[ srcOffset + 3 ] == EQUALS_SIGN )
+ {
+ // Two ways to do the same thing. Don't know which way I like best.
+ //int outBuff = ( ( DECODABET[ source[ srcOffset ] ] << 24 ) >>> 6 )
+ // | ( ( DECODABET[ source[ srcOffset + 1 ] ] << 24 ) >>> 12 )
+ // | ( ( DECODABET[ source[ srcOffset + 2 ] ] << 24 ) >>> 18 );
+ int outBuff = ( ( DECODABET[ source[ srcOffset ] ] & 0xFF ) << 18 )
+ | ( ( DECODABET[ source[ srcOffset + 1 ] ] & 0xFF ) << 12 )
+ | ( ( DECODABET[ source[ srcOffset + 2 ] ] & 0xFF ) << 6 );
+
+ destination[ destOffset ] = (byte)( outBuff >>> 16 );
+ destination[ destOffset + 1 ] = (byte)( outBuff >>> 8 );
+ return 2;
+ }
+
+ // Example: DkLE
+ else
+ {
+ try{
+ // Two ways to do the same thing. Don't know which way I like best.
+ //int outBuff = ( ( DECODABET[ source[ srcOffset ] ] << 24 ) >>> 6 )
+ // | ( ( DECODABET[ source[ srcOffset + 1 ] ] << 24 ) >>> 12 )
+ // | ( ( DECODABET[ source[ srcOffset + 2 ] ] << 24 ) >>> 18 )
+ // | ( ( DECODABET[ source[ srcOffset + 3 ] ] << 24 ) >>> 24 );
+ int outBuff = ( ( DECODABET[ source[ srcOffset ] ] & 0xFF ) << 18 )
+ | ( ( DECODABET[ source[ srcOffset + 1 ] ] & 0xFF ) << 12 )
+ | ( ( DECODABET[ source[ srcOffset + 2 ] ] & 0xFF ) << 6)
+ | ( ( DECODABET[ source[ srcOffset + 3 ] ] & 0xFF ) );
+
+
+ destination[ destOffset ] = (byte)( outBuff >> 16 );
+ destination[ destOffset + 1 ] = (byte)( outBuff >> 8 );
+ destination[ destOffset + 2 ] = (byte)( outBuff );
+
+ return 3;
+ }catch( Exception e){
+ System.out.println(""+source[srcOffset]+ ": " + ( DECODABET[ source[ srcOffset ] ] ) );
+ System.out.println(""+source[srcOffset+1]+ ": " + ( DECODABET[ source[ srcOffset + 1 ] ] ) );
+ System.out.println(""+source[srcOffset+2]+ ": " + ( DECODABET[ source[ srcOffset + 2 ] ] ) );
+ System.out.println(""+source[srcOffset+3]+ ": " + ( DECODABET[ source[ srcOffset + 3 ] ] ) );
+ return -1;
+ } //e nd catch
+ }
+ } // end decodeToBytes
+
+
+
+ /**
+ * Decodes data from Base64 notation.
+ *
+ * @param s the string to decode
+ * @return the decoded data
+ * @since 1.4
+ */
+ public static byte[] decode( String s )
+ {
+ byte[] bytes = s.getBytes();
+ return decode( bytes, 0, bytes.length );
+ } // end decode
+
+
+ /**
+ * Decodes data from Base64 notation and
+ * returns it as a string.
+ * Equivlaent to calling
+ * <code>new String( decode( s ) )</code>
+ *
+ * @param s the strind to decode
+ * @return The data as a string
+ * @since 1.4
+ */
+ public static String decodeToString( String s )
+ { return new String( decode( s ) );
+ } // end decodeToString
+
+
+ /**
+ * Attempts to decode Base64 data and deserialize a Java
+ * Object within. Returns <tt>null if there was an error.
+ *
+ * @param encodedObject The Base64 data to decode
+ * @return The decoded and deserialized object
+ * @since 1.4
+ */
+ public static Object decodeToObject( String encodedObject )
+ {
+ byte[] objBytes = decode( encodedObject );
+
+ java.io.ByteArrayInputStream bais = null;
+ java.io.ObjectInputStream ois = null;
+
+ try
+ {
+ bais = new java.io.ByteArrayInputStream( objBytes );
+ ois = new java.io.ObjectInputStream( bais );
+
+ return ois.readObject();
+ } // end try
+ catch( java.io.IOException e )
+ {
+ e.printStackTrace();
+ return null;
+ } // end catch
+ catch( java.lang.ClassNotFoundException e )
+ {
+ e.printStackTrace();
+ return null;
+ } // end catch
+ finally
+ {
+ try{ bais.close(); } catch( Exception e ){}
+ try{ ois.close(); } catch( Exception e ){}
+ } // end finally
+ } // end decodeObject
+
+
+ /**
+ * Decodes Base64 content in byte array format and returns
+ * the decoded byte array.
+ *
+ * @param source The Base64 encoded data
+ * @param off The offset of where to begin decoding
+ * @param len The length of characters to decode
+ * @return decoded data
+ * @since 1.3
+ */
+ public static byte[] decode( byte[] source, int off, int len )
+ {
+ int len34 = len * 3 / 4;
+ byte[] outBuff = new byte[ len34 ]; // Upper limit on size of output
+ int outBuffPosn = 0;
+
+ byte[] b4 = new byte[4];
+ int b4Posn = 0;
+ int i = 0;
+ byte sbiCrop = 0;
+ byte sbiDecode = 0;
+ for( i = 0; i < len; i++ )
+ {
+ sbiCrop = (byte)(source[i] & 0x7f); // Only the low seven bits
+ sbiDecode = DECODABET[ sbiCrop ];
+
+ if( sbiDecode >= WHITE_SPACE_ENC ) // White space, Equals sign or better
+ {
+ if( sbiDecode >= EQUALS_SIGN_ENC )
+ {
+ b4[ b4Posn++ ] = sbiCrop;
+ if( b4Posn > 3 )
+ {
+ outBuffPosn += decode4to3( b4, 0, outBuff, outBuffPosn );
+ b4Posn = 0;
+
+ // If that was the equals sign, break out of 'for' loop
+ if( sbiCrop == EQUALS_SIGN )
+ break;
+ } // end if: quartet built
+
+ } // end if: equals sign or better
+
+ } // end if: white space, equals sign or better
+ else
+ {
+ System.err.println( "Bad Base64 input character at " + i + ": " + source[i] + "(decimal)" );
+ return null;
+ } // end else:
+ } // each input character
+
+ byte[] out = new byte[ outBuffPosn ];
+ System.arraycopy( outBuff, 0, out, 0, outBuffPosn );
+ return out;
+ } // end decode
+
+
+
+
+ /* ******** I N N E R C L A S S I N P U T S T R E A M ******** */
+
+
+
+ /**
+ * A {@link Base64#InputStream} will read data from another
+ * {@link java.io.InputStream}, given in the constructor,
+ * and encode/decode to/from Base64 notation on the fly.
+ *
+ * @see Base64
+ * @see java.io.FilterInputStream
+ * @since 1.3
+ */
+ public static class InputStream extends java.io.FilterInputStream
+ {
+ private boolean encode; // Encoding or decoding
+ private int position; // Current position in the buffer
+ private byte[] buffer; // Small buffer holding converted data
+ private int bufferLength; // Length of buffer (3 or 4)
+ private int numSigBytes; // Number of meaningful bytes in the buffer
+ private int lineLength;
+ private boolean breakLines; // Break lines at less than 80 characters
+
+
+ /**
+ * Constructs a {@link Base64#InputStream} in DECODE mode.
+ *
+ * @param in the {@link java.io.InputStream} from which to read data.
+ * @since 1.3
+ */
+ public InputStream( java.io.InputStream in )
+ {
+ this( in, Base64.DECODE );
+ } // end constructor
+
+
+ /**
+ * Constructs a {@link Base64#InputStream} in
+ * either ENCODE or DECODE mode.
+ *
+ * @param in the {@link java.io.InputStream} from which to read data.
+ * @param encode Conversion direction
+ * @see Base64#ENCODE
+ * @see Base64#DECODE
+ * @since 1.3
+ */
+ public InputStream( java.io.InputStream in, boolean encode )
+ {
+ this( in, encode, true );
+ } // end constructor
+
+
+ /**
+ * Constructs a {@link Base64#InputStream} in
+ * either ENCODE or DECODE mode.
+ *
+ * @param in the {@link java.io.InputStream} from which to read data.
+ * @param encode Conversion direction
+ * @param breakLines Break lines at less than 80 characters.
+ * @see Base64#ENCODE
+ * @see Base64#DECODE
+ * @since 1.3
+ */
+ public InputStream( java.io.InputStream in, boolean encode, boolean breakLines )
+ {
+ super( in );
+ this.breakLines = breakLines;
+ this.encode = encode;
+ this.bufferLength = encode ? 4 : 3;
+ this.buffer = new byte[ bufferLength ];
+ this.position = -1;
+ this.lineLength = 0;
+ } // end constructor
+
+ /**
+ * Reads enough of the input stream to convert
+ * to/from Base64 and returns the next byte.
+ *
+ * @return next byte
+ * @since 1.3
+ */
+ public int read() throws java.io.IOException
+ {
+ // Do we need to get data?
+ if( position < 0 )
+ {
+ if( encode )
+ {
+ byte[] b3 = new byte[3];
+ int numBinaryBytes = 0;
+ for( int i = 0; i < 3; i++ )
+ {
+ try
+ {
+ int b = in.read();
+
+ // If end of stream, b is -1.
+ if( b >= 0 )
+ {
+ b3[i] = (byte)b;
+ numBinaryBytes++;
+ } // end if: not end of stream
+
+ } // end try: read
+ catch( java.io.IOException e )
+ {
+ // Only a problem if we got no data at all.
+ if( i == 0 )
+ throw e;
+
+ } // end catch
+ } // end for: each needed input byte
+
+ if( numBinaryBytes > 0 )
+ {
+ encode3to4( b3, 0, numBinaryBytes, buffer, 0 );
+ position = 0;
+ numSigBytes = 4;
+ } // end if: got data
+ else
+ {
+ return -1;
+ } // end else
+ } // end if: encoding
+
+ // Else decoding
+ else
+ {
+ byte[] b4 = new byte[4];
+ int i = 0;
+ for( i = 0; i < 4; i++ )
+ {
+ // Read four "meaningful" bytes:
+ int b = 0;
+ do{ b = in.read(); }
+ while( b >= 0 && DECODABET[ b & 0x7f ] <= WHITE_SPACE_ENC );
+
+ if( b < 0 )
+ break; // Reads a -1 if end of stream
+
+ b4[i] = (byte)b;
+ } // end for: each needed input byte
+
+ if( i == 4 )
+ {
+ numSigBytes = decode4to3( b4, 0, buffer, 0 );
+ position = 0;
+ } // end if: got four characters
+ else if( i == 0 ){
+ return -1;
+ } // end else if: also padded correctly
+ else
+ {
+ // Must have broken out from above.
+ throw new java.io.IOException( "Improperly padded Base64 input." );
+ } // end
+
+ } // end else: decode
+ } // end else: get data
+
+ // Got data?
+ if( position >= 0 )
+ {
+ // End of relevant data?
+ if( /*!encode &&*/ position >= numSigBytes )
+ return -1;
+
+ if( encode && breakLines && lineLength >= MAX_LINE_LENGTH )
+ {
+ lineLength = 0;
+ return '\n';
+ } // end if
+ else
+ {
+ lineLength++; // This isn't important when decoding
+ // but throwing an extra "if" seems
+ // just as wasteful.
+
+ int b = buffer[ position++ ];
+
+ if( position >= bufferLength )
+ position = -1;
+
+ return b & 0xFF; // This is how you "cast" a byte that's
+ // intended to be unsigned.
+ } // end else
+ } // end if: position >= 0
+
+ // Else error
+ else
+ {
+ // When JDK1.4 is more accepted, use an assertion here.
+ throw new java.io.IOException( "Error in Base64 code reading stream." );
+ } // end else
+ } // end read
+
+
+ /**
+ * Calls {@link #read} repeatedly until the end of stream
+ * is reached or <var>len</var> bytes are read.
+ * Returns number of bytes read into array or -1 if
+ * end of stream is encountered.
+ *
+ * @param dest array to hold values
+ * @param off offset for array
+ * @param len max number of bytes to read into array
+ * @return bytes read into array or -1 if end of stream is encountered.
+ * @since 1.3
+ */
+ public int read( byte[] dest, int off, int len ) throws java.io.IOException
+ {
+ int i;
+ int b;
+ for( i = 0; i < len; i++ )
+ {
+ b = read();
+
+ //if( b < 0 && i == 0 )
+ // return -1;
+
+ if( b >= 0 )
+ dest[off + i] = (byte)b;
+ else if( i == 0 )
+ return -1;
+ else
+ break; // Out of 'for' loop
+ } // end for: each byte read
+ return i;
+ } // end read
+
+ } // end inner class InputStream
+
+
+
+
+
+
+ /* ******** I N N E R C L A S S O U T P U T S T R E A M ******** */
+
+
+
+ /**
+ * A {@link Base64#OutputStream} will write data to another
+ * {@link java.io.OutputStream}, given in the constructor,
+ * and encode/decode to/from Base64 notation on the fly.
+ *
+ * @see Base64
+ * @see java.io.FilterOutputStream
+ * @since 1.3
+ */
+ public static class OutputStream extends java.io.FilterOutputStream
+ {
+ private boolean encode;
+ private int position;
+ private byte[] buffer;
+ private int bufferLength;
+ private int lineLength;
+ private boolean breakLines;
+
+
+ /**
+ * Constructs a {@link Base64#OutputStream} in ENCODE mode.
+ *
+ * @param out the {@link java.io.OutputStream} to which data will be written.
+ * @since 1.3
+ */
+ public OutputStream( java.io.OutputStream out )
+ {
+ this( out, Base64.ENCODE );
+ } // end constructor
+
+
+ /**
+ * Constructs a {@link Base64#OutputStream} in
+ * either ENCODE or DECODE mode.
+ *
+ * @param out the {@link java.io.OutputStream} to which data will be written.
+ * @param encode Conversion direction
+ * @see Base64#ENCODE
+ * @see Base64#DECODE
+ * @since 1.3
+ */
+ public OutputStream( java.io.OutputStream out, boolean encode )
+ {
+ this( out, encode, true );
+ } // end constructor
+
+
+ /**
+ * Constructs a {@link Base64#OutputStream} in
+ * either ENCODE or DECODE mode.
+ *
+ * @param out the {@link java.io.OutputStream} to which data will be written.
+ * @param encode Conversion direction
+ * @param breakLines Break lines to be less than 80 characters.
+ * @see Base64#ENCODE
+ * @see Base64#DECODE
+ * @since 1.3
+ */
+ public OutputStream( java.io.OutputStream out, boolean encode, boolean breakLines )
+ {
+ super( out );
+ this.breakLines = breakLines;
+ this.encode = encode;
+ this.bufferLength = encode ? 3 : 4;
+ this.buffer = new byte[ bufferLength ];
+ this.position = 0;
+ this.lineLength = 0;
+ } // end constructor
+
+
+ /**
+ * Writes the byte to the output stream after
+ * converting to/from Base64 notation.
+ * When encoding, bytes are buffered three
+ * at a time before the output stream actually
+ * gets a write() call.
+ * When decoding, bytes are buffered four
+ * at a time.
+ *
+ * @param theByte the byte to write
+ * @since 1.3
+ */
+ public void write(int theByte) throws java.io.IOException
+ {
+ if( encode )
+ {
+ buffer[ position++ ] = (byte)theByte;
+ if( position >= bufferLength ) // Enough to encode.
+ {
+ out.write( Base64.encode3to4( buffer, bufferLength ) );
+
+ lineLength += 4;
+ if( breakLines && lineLength >= MAX_LINE_LENGTH )
+ {
+ out.write( NEW_LINE );
+ lineLength = 0;
+ } // end if: end of line
+
+ position = 0;
+ } // end if: enough to output
+ } // end if: encoding
+
+ // Else, Decoding
+ else
+ {
+ // Meaningful Base64 character?
+ if( DECODABET[ theByte & 0x7f ] > WHITE_SPACE_ENC )
+ {
+ buffer[ position++ ] = (byte)theByte;
+ if( position >= bufferLength ) // Enough to output.
+ {
+ out.write( Base64.decode4to3( buffer ) );
+ position = 0;
+ } // end if: enough to output
+ } // end if: meaningful base64 character
+ else if( DECODABET[ theByte & 0x7f ] != WHITE_SPACE_ENC )
+ {
+ throw new java.io.IOException( "Invalid character in Base64 data." );
+ } // end else: not white space either
+ } // end else: decoding
+ } // end write
+
+
+
+ /**
+ * Calls {@link #write} repeatedly until <var>len</var>
+ * bytes are written.
+ *
+ * @param theBytes array from which to read bytes
+ * @param off offset for array
+ * @param len max number of bytes to read into array
+ * @since 1.3
+ */
+ public void write( byte[] theBytes, int off, int len ) throws java.io.IOException
+ {
+ for( int i = 0; i < len; i++ )
+ {
+ write( theBytes[ off + i ] );
+ } // end for: each byte written
+
+ } // end write
+
+
+ /**
+ * Appropriately pads Base64 notation when encoding
+ * or throws an exception if Base64 input is not
+ * properly padded when decoding.
+ *
+ * @since 1.3
+ */
+ public void flush() throws java.io.IOException
+ {
+ super.flush();
+
+ if( position > 0 )
+ {
+ if( encode )
+ {
+ out.write( Base64.encode3to4( buffer, position ) );
+ } // end if: encoding
+ else
+ {
+ throw new java.io.IOException( "Base64 input not properly padded." );
+ } // end else: decoding
+ } // end if: buffer partially full
+
+ out.flush();
+ } // end flush
+
+
+ /**
+ * Flushes and closes stream.
+ *
+ * @since 1.3
+ */
+ public void close() throws java.io.IOException
+ {
+ super.close();
+ //this.flush();
+
+ out.close();
+
+ buffer = null;
+ out = null;
+ } // end close
+
+ } // end inner class OutputStream
+
+
+} // end class Base64
diff --git a/bindings/corba/java/swordorb.jpx b/bindings/corba/java/swordorb.jpx
new file mode 100644
index 0000000..34642c6
--- /dev/null
+++ b/bindings/corba/java/swordorb.jpx
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--JBuilder XML Project-->
+<project>
+ <property category="debug.0" name="SmartStepRedefineClasses" value="0"/>
+ <property category="debug.0" name="SmartStepSkipStaticInitializers" value="0"/>
+ <property category="debug.0" name="SmartStepSkipSynthetics" value="0"/>
+ <property category="runtime" name="DefaultConfiguration" value="-1"/>
+ <property category="runtime.0" name="BuildTargetOnRun" value="com.borland.jbuilder.build.ProjectBuilder$ProjectBuildAction;make"/>
+ <property category="runtime.0" name="ConfigurationName" value="Untitled Runtime Configuration1"/>
+ <property category="runtime.0" name="RunnableType" value="com.borland.jbuilder.runtime.ApplicationRunner"/>
+ <property category="runtime.0" name="application.class" value="org.crosswire.sword.orb.SwordOrb"/>
+ <property category="serverservices" name="single.server.name" value="Tomcat 4.0"/>
+ <property category="sys" name="AuthorLabel" value="@author"/>
+ <property category="sys" name="BackupPath" value="bak"/>
+ <property category="sys" name="CheckStable" value="1"/>
+ <property category="sys" name="Company" value=""/>
+ <property category="sys" name="CompanyLabel" value="Company:"/>
+ <property category="sys" name="Copyright" value="Copyright (c) 2003"/>
+ <property category="sys" name="CopyrightLabel" value="Copyright:"/>
+ <property category="sys" name="DefaultPath" value="src"/>
+ <property category="sys" name="Description" value=""/>
+ <property category="sys" name="DescriptionLabel" value="Description:"/>
+ <property category="sys" name="DocPath" value="doc"/>
+ <property category="sys" name="ExcludeClassEnabled" value="0"/>
+ <property category="sys" name="IncludeTestPath" value="1"/>
+ <property category="sys" name="InstanceVisibility" value="2"/>
+ <property category="sys" name="JDK" value="java 1.3.1-b24"/>
+ <property category="sys" name="LastTag" value="0"/>
+ <property category="sys" name="Libraries" value="tomcat-common"/>
+ <property category="sys" name="MakeStable" value="0"/>
+ <property category="sys" name="OutPath" value="classes"/>
+ <property category="sys" name="SourcePath" value="src;test"/>
+ <property category="sys" name="TestPath" value="test"/>
+ <property category="sys" name="Title" value=""/>
+ <property category="sys" name="TitleLabel" value="Title:"/>
+ <property category="sys" name="Version" value="1.0"/>
+ <property category="sys" name="VersionLabel" value="@version"/>
+ <property category="sys" name="WorkingDirectory" value="."/>
+ <node name="org.crosswire.sword.orb" type="Package"/>
+ <file path="../swordorb.idl"/>
+</project>
diff --git a/bindings/corba/java/swordorb.jpx.local b/bindings/corba/java/swordorb.jpx.local
new file mode 100644
index 0000000..3303b21
--- /dev/null
+++ b/bindings/corba/java/swordorb.jpx.local
@@ -0,0 +1,10 @@
+debug.Breakpoints.1[0]=1 023 hellomodule.HelloClient32 src/hellomodule/HelloClient.java1 81 10 1 10 1 10 1 0 -1
+debug.Breakpoints.2[0]=1 032 org.crosswire.sword.orb.SwordOrb41 src/org/crosswire/sword/orb/SwordOrb.java2 991 10 1 10 1 10 1 0 -1
+debug.NoTracingClasses.1[0]=16 java.lang.Object1 1 -1
+debug.NoTracingClasses.2[0]=21 java.lang.ClassLoader1 1 -1
+debug.NoTracingClasses.3[0]=16 java.lang.String1 1 -1
+debug.SplitThreadsAndDataView[0]=0
+import.optimize.legacyPropertiesRead[0]=1
+sys.Author[0]=
+sys.DefaultPackage[0]=org.crosswire.sword.orb
+wizard.package.package_history.1[0]=helloworld
diff --git a/bindings/corba/java/testclient b/bindings/corba/java/testclient
new file mode 100755
index 0000000..44cb34f
--- /dev/null
+++ b/bindings/corba/java/testclient
@@ -0,0 +1,2 @@
+#!/bin/sh
+java -cp /var/tomcat/common/lib/servlet-api.jar:classes org.crosswire.sword.orb.SwordOrb $*
diff --git a/bindings/corba/orbitcpp/Makefile b/bindings/corba/orbitcpp/Makefile
new file mode 100644
index 0000000..0aabb16
--- /dev/null
+++ b/bindings/corba/orbitcpp/Makefile
@@ -0,0 +1,48 @@
+all: server testclient
+
+#comment these out if you didn't compile sword with lucene support
+luceneflags=-DUSELUCENE
+lucenelibs=-lclucene
+#----------------------------------
+
+LIBS += ${lucenelibs}
+CFLAGS += ${luceneflags}
+CXXFLAGS += ${luceneflags}
+
+server: swordorb-common.o server.cpp swordorb-impl.o swordorb-cpp.o swordorb-cpp-common.o swordorb-stubs.o swordorb-cpp-stubs.o swordorb-cpp-skels.o swordorb-skels.o swordorb-cpp.o
+ g++ -g -I. -I../../../include -I/usr/include/orbitcpp-2.0/ `orbit2-config --cflags` -o server server.cpp swordorb-impl.o swordorb-common.o swordorb-cpp-common.o swordorb-stubs.o swordorb-cpp-stubs.o swordorb-cpp-skels.o swordorb-skels.o `orbit2-config --libs` -lORBit-2-cpp -lsword -lz ${LIBS}
+
+testclient: testclient.cpp swordorb-impl.cpp swordorb-common.o swordorb-cpp-common.o swordorb-stubs.o swordorb-cpp-stubs.o swordorb-skels.o swordorb-cpp-skels.o
+ g++ -I. -I../../../include -I/usr/include/orbitcpp-2.0/ `orbit2-config --cflags` -o testclient testclient.cpp swordorb-common.o swordorb-cpp-common.o swordorb-stubs.o swordorb-cpp-stubs.o swordorb-skels.o swordorb-cpp-skels.o `orbit2-config --libs` -lORBit-2-cpp
+
+swordorb-cpp.o: swordorb-cpp.cc
+ g++ -I. -I../../../include -I/usr/include/orbitcpp-2.0/ `orbit2-config --cflags` -g -c swordorb-cpp.cc
+
+swordorb-impl.o: swordorb-impl.cpp
+ g++ -g -I. -I../../../include -I/usr/include/orbitcpp-2.0/ `orbit2-config --cflags` -g -c swordorb-impl.cpp
+
+swordorb-common.o: swordorb-common.c
+ gcc -I. -I../../../include -I/usr/include/orbitcpp-2.0/ `orbit2-config --cflags` -g -c swordorb-common.c
+
+swordorb-common.c: ./../swordorb.idl
+ orbit-idl-2 -l c ./../swordorb.idl
+ orbit-idl-2 -l cpp ./../swordorb.idl
+
+swordorb-cpp-common.o: swordorb-cpp-common.cc
+ g++ -I. -I../../../include -I/usr/include/orbitcpp-2.0/ `orbit2-config --cflags` -g -c swordorb-cpp-common.cc
+
+swordorb-stubs.o: swordorb-stubs.c
+ gcc -I. -I../../../include -I/usr/include/orbitcpp-2.0/ `orbit2-config --cflags` -g -c swordorb-stubs.c
+
+swordorb-cpp-stubs.o: swordorb-cpp-stubs.cc
+ g++ -I. -I../../../include -I/usr/include/orbitcpp-2.0/ `orbit2-config --cflags` -g -c swordorb-cpp-stubs.cc
+
+swordorb-skels.o: swordorb-skels.c
+ gcc -I. -I../../../include -I/usr/include/orbitcpp-2.0/ `orbit2-config --cflags` -g -c swordorb-skels.c
+
+swordorb-cpp-skels.o: swordorb-cpp-skels.cc
+ g++ -I. -I../../../include -I/usr/include/orbitcpp-2.0/ `orbit2-config --cflags` -g -c swordorb-cpp-skels.cc
+
+clean:
+ rm -f *.h *.cc *.o *.c server testclient
+
diff --git a/bindings/corba/orbitcpp/server.cpp b/bindings/corba/orbitcpp/server.cpp
new file mode 100644
index 0000000..b60e1d9
--- /dev/null
+++ b/bindings/corba/orbitcpp/server.cpp
@@ -0,0 +1,45 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+
+#include "swordorb-impl.hpp"
+#include <iostream>
+#include <swmgr.h>
+#include <markupfiltmgr.h>
+
+sword::SWMgr swordmgr(new sword::MarkupFilterMgr(sword::FMT_WEBIF));
+
+int main (int argc, char* argv[]) {
+ try {
+ // Initialize the CORBA orb
+ CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
+
+ // Get the root POA
+ CORBA::Object_var pfobj = orb->resolve_initial_references("RootPOA");
+
+ PortableServer::POA_var rootPOA =
+ PortableServer::POA::_narrow(pfobj);
+
+ // Activate the root POA's manager
+ PortableServer::POAManager_var mgr = rootPOA->the_POAManager();
+
+ mgr->activate();
+
+ // Create a Servant and explicitly create a CORBA object
+ swordorb::SWMgr_impl servant(&swordmgr);
+ CORBA::Object_var object = servant._this();
+
+ // Here we get the IOR for the Hello server object.
+ // Our "client" will use the IOR to find the object to connect to
+ CORBA::String_var ref = orb->object_to_string( object );
+
+ // print out the IOR
+ std::cout << ref << std::endl;
+
+ // run the server event loop
+ orb->run();
+ }
+ catch(const CORBA::Exception& ex)
+ {
+ std::cout << "Exception caught." << std::endl;
+ }
+
+}
diff --git a/bindings/corba/orbitcpp/swordorb-impl.cpp b/bindings/corba/orbitcpp/swordorb-impl.cpp
new file mode 100644
index 0000000..c775b41
--- /dev/null
+++ b/bindings/corba/orbitcpp/swordorb-impl.cpp
@@ -0,0 +1,231 @@
+#include "swordorb-impl.hpp"
+#include <iostream>
+#include <swmgr.h>
+#include <versekey.h>
+#include <treekeyidx.h>
+#include <swbuf.h>
+
+/*
+char* swordorb::SWModule_impl::helloWorld(const char* greeting) throw(CORBA::SystemException) {
+ std::cout << "Server: Greeting was \"" << greeting << "\"" << std::endl;
+ return CORBA::string_dup("Hello client, from server!");
+}
+*/
+
+using sword::VerseKey;
+using sword::SWBuf;
+using sword::TreeKeyIdx;
+
+namespace swordorb {
+
+sword::RawText NULLMod("/dev/null", SWNULL, SWNULL);
+
+ModInfoList *SWMgr_impl::getModInfoList() throw(CORBA::SystemException) {
+
+ ModInfoList *milist = new ModInfoList;
+ sword::SWModule *module = 0;
+ int size = 0;
+ for (sword::ModMap::iterator it = delegate->Modules.begin(); it != delegate->Modules.end(); it++) {
+ if ((!(it->second->getConfigEntry("CipherKey"))) || (*(it->second->getConfigEntry("CipherKey"))))
+ size++;
+ }
+ milist->length(size);
+ int i = 0;
+ for (sword::ModMap::iterator it = delegate->Modules.begin(); it != delegate->Modules.end(); it++) {
+ module = it->second;
+ if ((!(module->getConfigEntry("CipherKey"))) || (*(module->getConfigEntry("CipherKey")))) {
+ SWBuf type = module->Type();
+ SWBuf cat = module->getConfigEntry("Category");
+ if (cat.length() > 0)
+ type = cat;
+ (*milist)[i].name = CORBA::string_dup(module->Name());
+ (*milist)[i].description = CORBA::string_dup(module->Description());
+ (*milist)[i].category = CORBA::string_dup(type.c_str());
+ (*milist)[i++].language = CORBA::string_dup(module->Lang());
+ }
+ }
+ return milist;
+}
+
+
+
+SWModule_ptr SWMgr_impl::getModuleByName(const char *name) throw(CORBA::SystemException) {
+ SWModuleMap::iterator it;
+ SWModule_ptr retVal;
+ sword::SWModule *mod = delegate->Modules[name];
+ it = moduleImpls.find((mod)?name:SWNULL);
+ if (it == moduleImpls.end()) {
+ moduleImpls[(mod)?name:SWNULL] = new SWModule_impl((mod)?mod:&NULLMod);
+ it = moduleImpls.find((mod)?name:SWNULL);
+ }
+ if (it != moduleImpls.end()) {
+ retVal = it->second->_this();
+ }
+ return ::swordorb::SWModule::_duplicate(retVal);
+}
+
+
+StringList *SWMgr_impl::getGlobalOptions() throw(CORBA::SystemException) {
+ sword::StringList options = delegate->getGlobalOptions();
+ StringList *retVal = new StringList;
+ int count = 0;
+ for (sword::StringList::iterator it = options.begin(); it != options.end(); it++) {
+ count++;
+ }
+ retVal->length(count);
+ count = 0;
+ for (sword::StringList::iterator it = options.begin(); it != options.end(); it++) {
+ (*retVal)[count++] = CORBA::string_dup(it->c_str());
+ }
+ return retVal;
+}
+
+
+StringList *SWMgr_impl::getGlobalOptionValues(const char *option) throw(CORBA::SystemException) {
+ sword::StringList options = delegate->getGlobalOptionValues(option);
+ StringList *retVal = new StringList;
+ int count = 0;
+ for (sword::StringList::iterator it = options.begin(); it != options.end(); it++) {
+ count++;
+ }
+ retVal->length(count);
+ count = 0;
+ for (sword::StringList::iterator it = options.begin(); it != options.end(); it++) {
+ (*retVal)[count++] = CORBA::string_dup(it->c_str());
+ }
+ return retVal;
+}
+
+void SWMgr_impl::terminate() throw(CORBA::SystemException) {
+ exit(0);
+}
+
+
+CORBA::Boolean SWMgr_impl::testConnection() throw(CORBA::SystemException) {
+ return true;
+}
+
+
+char *SWModule_impl::getCategory() throw(CORBA::SystemException) {
+ SWBuf type = delegate->Type();
+ SWBuf cat = delegate->getConfigEntry("Category");
+ if (cat.length() > 0)
+ type = cat;
+ return CORBA::string_dup((char *)type.c_str());
+}
+
+
+SearchHitList *SWModule_impl::search(const char *istr, SearchType searchType, CORBA::Long flags, const char *scope) throw(CORBA::SystemException) {
+ int stype = 2;
+ sword::ListKey lscope;
+ sword::VerseKey parser;
+ if (searchType == REGEX) stype = 0;
+ if (searchType == PHRASE) stype = -1;
+ if (searchType == MULTIWORD) stype = -2;
+ sword::ListKey result;
+
+ if ((scope) && (strlen(scope)) > 0) {
+ lscope = parser.ParseVerseList(scope, parser, true);
+ result = delegate->Search(istr, stype, flags, &lscope);
+ }
+ else result = delegate->Search(istr, stype, flags);
+
+ SearchHitList *retVal = new SearchHitList;
+ int count = 0;
+ for (result = sword::TOP; !result.Error(); result++) count++;
+ retVal->length(count);
+ int i = 0;
+ for (result = sword::TOP; !result.Error(); result++) {
+ (*retVal)[i].modName = CORBA::string_dup(delegate->Name());
+ (*retVal)[i].key = CORBA::string_dup((const char *)result);
+ (*retVal)[i++].score = (long)result.getElement()->userData;
+ }
+
+ return retVal;
+}
+
+
+
+StringList *SWModule_impl::getEntryAttribute(const char *level1, const char *level2, const char *level3) throw(CORBA::SystemException) {
+ delegate->RenderText(); // force parse
+ sword::AttributeTypeList &entryAttribs = delegate->getEntryAttributes();
+ sword::AttributeTypeList::iterator i1 = entryAttribs.find(level1);
+ sword::AttributeList::iterator i2;
+ sword::AttributeValue::iterator i3, j3;
+ StringList *retVal = new StringList;
+ int count = 0;
+
+ if (i1 != entryAttribs.end()) {
+ i2 = i1->second.find(level2);
+ if (i2 != i1->second.end()) {
+ i3 = i2->second.find(level3);
+ if (i3 != i2->second.end()) {
+ for (j3 = i3; j3 != i2->second.end(); j3++)
+ count++;
+ retVal->length(count);
+ count = 0;
+ for (j3 = i3; j3 != i2->second.end(); j3++) {
+ (*retVal)[count++] = CORBA::string_dup(i3->second.c_str());
+ }
+ }
+ }
+ }
+ if (!count)
+ retVal->length(count);
+
+ return retVal;
+}
+
+
+StringList *SWModule_impl::getKeyChildren() throw(CORBA::SystemException) {
+ sword::SWKey *key = delegate->getKey();
+ StringList *retVal = new StringList;
+ int count = 0;
+
+ sword::VerseKey *vkey = SWDYNAMIC_CAST(VerseKey, key);
+ if (vkey) {
+ retVal->length(6);
+ SWBuf num;
+ num.appendFormatted("%d", vkey->Testament());
+ (*retVal)[0] = CORBA::string_dup(num.c_str());
+ num = "";
+ num.appendFormatted("%d", vkey->Book());
+ (*retVal)[1] = CORBA::string_dup(num.c_str());
+ num = "";
+ num.appendFormatted("%d", vkey->Chapter());
+ (*retVal)[2] = CORBA::string_dup(num.c_str());
+ num = "";
+ num.appendFormatted("%d", vkey->Verse());
+ (*retVal)[3] = CORBA::string_dup(num.c_str());
+ num = "";
+ num.appendFormatted("%d", vkey->books[vkey->Testament()-1][vkey->Book()-1].chapmax);
+ (*retVal)[4] = CORBA::string_dup(num.c_str());
+ num = "";
+ num.appendFormatted("%d", vkey->books[vkey->Testament()-1][vkey->Book()-1].versemax[vkey->Chapter()-1]);
+ (*retVal)[5] = CORBA::string_dup(num.c_str());
+ }
+ else {
+ TreeKeyIdx *tkey = SWDYNAMIC_CAST(TreeKeyIdx, key);
+ if (tkey) {
+ if (tkey->firstChild()) {
+ do {
+ count++;
+ }
+ while (tkey->nextSibling());
+ tkey->parent();
+ }
+ retVal->length(count);
+ count = 0;
+ if (tkey->firstChild()) {
+ do {
+ (*retVal)[count++] = CORBA::string_dup(tkey->getLocalName());
+ }
+ while (tkey->nextSibling());
+ tkey->parent();
+ }
+ }
+ }
+ return retVal;
+}
+
+}
diff --git a/bindings/corba/orbitcpp/swordorb-impl.hpp b/bindings/corba/orbitcpp/swordorb-impl.hpp
new file mode 100644
index 0000000..bd3be38
--- /dev/null
+++ b/bindings/corba/orbitcpp/swordorb-impl.hpp
@@ -0,0 +1,67 @@
+#ifndef _ORBIT_CPP_IDL_sword_IMPL_HH
+#define _ORBIT_CPP_IDL_sword_IMPL_HH
+
+#include "swordorb-cpp-skels.h"
+#include <swmodule.h>
+#include <swmgr.h>
+#include <rawtext.h>
+#include <map>
+
+
+namespace swordorb {
+
+static const char *SWNULL = "<SWNULL>";
+extern sword::RawText NULLMod;
+
+//Inherit from abstract Skeleton:
+class SWModule_impl : public POA_swordorb::SWModule {
+ sword::SWModule *delegate;
+public:
+ SWModule_impl(sword::SWModule *delegate) { this->delegate = delegate; }
+
+ SearchHitList *search(const char *istr, SearchType searchType, CORBA::Long flags, const char *scope) throw(CORBA::SystemException);
+ void terminateSearch() throw(CORBA::SystemException) { delegate->terminateSearch = true; }
+ char error() throw(CORBA::SystemException) { return delegate->Error(); }
+ CORBA::Long getEntrySize() throw(CORBA::SystemException) { return delegate->getEntrySize(); }
+ void setKeyText(const char *key) throw(CORBA::SystemException) { delegate->KeyText(key); }
+ char *getKeyText() throw(CORBA::SystemException) { return CORBA::string_dup((char *)delegate->KeyText()); }
+ StringList *getKeyChildren() throw(CORBA::SystemException);
+ char *getName() throw(CORBA::SystemException) { return CORBA::string_dup((char *)delegate->Name()); }
+ char *getDescription() throw(CORBA::SystemException) { return CORBA::string_dup((char *)delegate->Description()); }
+ char *getCategory() throw(CORBA::SystemException);
+ void previous() throw(CORBA::SystemException) { delegate->decrement(); }
+ void next() throw(CORBA::SystemException) { delegate->increment(); }
+ void begin() throw(CORBA::SystemException) { delegate->setPosition(sword::TOP); }
+ char *getStripText() throw(CORBA::SystemException) { return CORBA::string_dup((char *)delegate->StripText()); }
+ StringList *getEntryAttribute(const char *level1, const char *level2, const char *level3) throw(CORBA::SystemException);
+ char *getRenderText() throw(CORBA::SystemException) { return CORBA::string_dup((char *)delegate->RenderText()); }
+ char *getConfigEntry(const char *key) throw(CORBA::SystemException) { return CORBA::string_dup(((char *)delegate->getConfigEntry(key)) ? (char *)delegate->getConfigEntry(key):SWNULL); }
+
+};
+
+typedef std::map<std::string, SWModule_impl *> SWModuleMap;
+
+class SWMgr_impl : public POA_swordorb::SWMgr {
+ sword::SWMgr *delegate;
+ SWModuleMap moduleImpls;
+public:
+ SWMgr_impl(sword::SWMgr *delegate) { this->delegate = delegate; }
+
+ ModInfoList *getModInfoList() throw(CORBA::SystemException);
+ SWModule_ptr getModuleByName(const char *name) throw(CORBA::SystemException);
+ char *getPrefixPath() throw(CORBA::SystemException) { return CORBA::string_dup(delegate->prefixPath); }
+ char *getConfigPath() throw(CORBA::SystemException) { return CORBA::string_dup(delegate->configPath); }
+ void setGlobalOption(const char *option, const char *value) throw(CORBA::SystemException) { delegate->setGlobalOption(option, value); }
+ char *getGlobalOption(const char *option) throw(CORBA::SystemException) { return CORBA::string_dup((char *)delegate->getGlobalOption(option)); }
+ char *getGlobalOptionTip(const char *option) throw(CORBA::SystemException) { return CORBA::string_dup((char *)delegate->getGlobalOptionTip(option)); }
+ StringList *getGlobalOptions() throw(CORBA::SystemException);
+ StringList *getGlobalOptionValues(const char *option) throw(CORBA::SystemException);
+ void setCipherKey(const char *modName, const char *key) throw(CORBA::SystemException) { delegate->setCipherKey(modName, key); }
+ void terminate() throw(CORBA::SystemException);
+ CORBA::Boolean testConnection() throw(CORBA::SystemException);
+
+};
+}; // namespace hellomodule
+
+
+#endif //_ORBIT_CPP_IDL_helloworld_IMPL_HH
diff --git a/bindings/corba/orbitcpp/testclient.cpp b/bindings/corba/orbitcpp/testclient.cpp
new file mode 100644
index 0000000..2bbb60c
--- /dev/null
+++ b/bindings/corba/orbitcpp/testclient.cpp
@@ -0,0 +1,61 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: f; c-basic-offset: 4 -*- */
+
+#include "swordorb-cpp-stubs.h"
+#include "swordorb-cpp-common.h"
+#include <iostream>
+
+int main (int argc, char *argv[])
+{
+ if (argc != 2)
+ {
+ std::cerr << "Usage:" << std::endl
+ << " " << argv[0] << " IOR" << std::endl
+ << std::endl;
+ return -1;
+ }
+
+ try
+ {
+ // Initialize ORBit
+ CORBA::ORB_ptr orb = CORBA::ORB_init(argc, argv, "orbit-local-orb");
+
+ // Get a reference to the server from the IOR passed on the
+ // command line
+ CORBA::Object_var obj = orb->string_to_object(argv[1]);
+ swordorb::SWMgr_var mgr = swordorb::SWMgr::_narrow(obj);
+
+ swordorb::SWModule_ptr module;
+ swordorb::ModInfoList *modInfoList;
+
+ std::cout << "Connected: " << mgr->testConnection() << "\n";
+ std::cout << "PrefixPath: " << mgr->getPrefixPath() << "\n";
+ std::cout << "ConfigPath: " << mgr->getConfigPath() << "\n";
+ modInfoList = mgr->getModInfoList();
+ std::cout << "sequence length: " << modInfoList->length() << "\n";
+/*
+ for (int i = 0; i < modInfoList->length(); i++) {
+ std::cout << (*modInfoList)[i].name << ": " << (*modInfoList)[i].category << ": " << (*modInfoList)[i].language << "\n";
+ module = mgr->getModuleByName((*modInfoList)[i].name);
+ module->setKeyText("jas1:19");
+ std::cout << module->getRenderText() << "\n";
+ }
+*/
+ module = mgr->getModuleByName("NASB");
+ module->setKeyText("jn3:1");
+ std::cout << module->getRenderText();
+ /*
+ swordorb::SearchHitList *searchResults;
+ searchResults = module->search("God love world", swordorb::MULTIWORD, 0, "");
+ for (int i = 0; i < searchResults->length(); i++) {
+ std::cout << (*searchResults)[i].key << "\n";
+ }
+ */;
+
+
+
+ } catch(const CORBA::Exception& ex) {
+ std::cout << "Exception caught. Maybe the server is not running, or the IOR is wrong." << std::endl;
+ }
+
+ return 0;
+}
diff --git a/bindings/corba/swordorb.idl b/bindings/corba/swordorb.idl
new file mode 100644
index 0000000..4df5c52
--- /dev/null
+++ b/bindings/corba/swordorb.idl
@@ -0,0 +1,80 @@
+/******************************************************************************
+ * sword.idl - This file contains a simple idl for accessing sword
+ */
+
+#ifndef SWORDORB_IDL
+#define SWORDORB_IDL
+
+module swordorb {
+
+typedef sequence<string> StringList;
+
+struct ModInfo {
+ string name;
+ string description;
+ string category;
+ string language;
+};
+
+typedef sequence<ModInfo> ModInfoList;
+
+struct SearchHit {
+ string modName;
+ string key;
+ long score;
+};
+
+typedef sequence<SearchHit> SearchHitList;
+//-----------------------------------------------------------------
+// SWModule methods
+
+ enum SearchType {
+ REGEX,
+ PHRASE,
+ MULTIWORD
+ };
+
+
+interface SWModule {
+ void terminateSearch();
+ SearchHitList search(in string istr, in SearchType searchType, in long flags, in string scope);
+ char error();
+ long getEntrySize();
+ StringList getEntryAttribute(in string level1, in string level2, in string level3);
+ void setKeyText(in string key);
+ string getKeyText();
+ StringList getKeyChildren();
+ string getName();
+ string getDescription();
+ string getCategory();
+ void previous();
+ void next();
+ void begin();
+ string getStripText();
+ string getRenderText();
+ string getConfigEntry(in string key);
+};
+
+
+//-----------------------------------------------------------------
+// SWMgr methods
+//
+interface SWMgr {
+ ModInfoList getModInfoList();
+ SWModule getModuleByName(in string name);
+ string getPrefixPath();
+ string getConfigPath();
+ void setGlobalOption(in string option, in string value);
+ string getGlobalOption(in string option);
+ string getGlobalOptionTip(in string option);
+ StringList getGlobalOptions();
+ StringList getGlobalOptionValues(in string option);
+ void setCipherKey(in string modName, in string key);
+ void terminate();
+ boolean testConnection();
+
+};
+
+};
+
+#endif
diff --git a/bindings/flatapi.cpp b/bindings/flatapi.cpp
index 4611a28..bb9ae3f 100644
--- a/bindings/flatapi.cpp
+++ b/bindings/flatapi.cpp
@@ -14,8 +14,19 @@
#include <versekey.h>
#include <swmgr.h>
#include <markupfiltmgr.h>
-
+#ifndef NO_SWORD_NAMESPACE
+using namespace sword;
+#endif
+extern "C" {
#include "flatapi.h"
+}
+
+typedef struct {
+ ModMap::iterator it;
+// void *it;
+ ModMap::iterator end;
+// void *end;
+} ModItType;
//-----------------------------------------------------------------
@@ -61,47 +72,47 @@ SWHANDLE SWMgr_getModulesIterator(SWHANDLE hmgr) {
}
-SWHANDLE SWMgr_getModuleByName(SWHANDLE hmgr, char *name) {
+SWHANDLE SWMgr_getModuleByName(SWHANDLE hmgr, const char *name) {
SWMgr *mgr = (SWMgr *)hmgr;
return (mgr) ? (SWHANDLE) mgr->Modules[name] : 0;
}
-char *SWMgr_getPrefixPath(SWHANDLE hmgr) {
+const char *SWMgr_getPrefixPath(SWHANDLE hmgr) {
SWMgr *mgr = (SWMgr *)hmgr;
return (mgr) ? mgr->prefixPath : 0;
}
-char *SWMgr_getConfigPath(SWHANDLE hmgr) {
+const char *SWMgr_getConfigPath(SWHANDLE hmgr) {
SWMgr *mgr = (SWMgr *)hmgr;
return (mgr) ? mgr->configPath : 0;
}
-void SWMgr_setGlobalOption(SWHANDLE hmgr, char *option, char *value) {
+void SWMgr_setGlobalOption(SWHANDLE hmgr, const char *option, const char *value) {
SWMgr *mgr = (SWMgr *)hmgr;
if (mgr)
mgr->setGlobalOption(option, value);
}
-char *SWMgr_getGlobalOption(SWHANDLE hmgr, char *option) {
+const char *SWMgr_getGlobalOption(SWHANDLE hmgr, const char *option) {
SWMgr *mgr = (SWMgr *)hmgr;
- return (mgr) ? (char *)mgr->getGlobalOption(option) : 0;
+ return (mgr) ? (const char *)mgr->getGlobalOption(option) : 0;
}
-char *SWMgr_getGlobalOptionTip(SWHANDLE hmgr, char *option) {
+const char *SWMgr_getGlobalOptionTip(SWHANDLE hmgr, const char *option) {
SWMgr *mgr = (SWMgr *)hmgr;
- return (mgr) ? (char *)mgr->getGlobalOptionTip(option) : 0;
+ return (mgr) ? (const char *)mgr->getGlobalOptionTip(option) : 0;
}
// ret: forward_iterator
SWHANDLE SWMgr_getGlobalOptionsIterator(SWHANDLE hmgr) {
SWMgr *mgr = (SWMgr *)hmgr;
- static OptionsList::iterator it;
+ static StringList::iterator it;
if (mgr)
it = mgr->getGlobalOptions().begin();
@@ -110,9 +121,9 @@ SWHANDLE SWMgr_getGlobalOptionsIterator(SWHANDLE hmgr) {
// ret: forward_iterator
-SWHANDLE SWMgr_getGlobalOptionValuesIterator(SWHANDLE hmgr, char *option) {
+SWHANDLE SWMgr_getGlobalOptionValuesIterator(SWHANDLE hmgr, const char *option) {
SWMgr *mgr = (SWMgr *)hmgr;
- static OptionsList::iterator it;
+ static StringList::iterator it;
if (mgr)
it = mgr->getGlobalOptionValues(option).begin();
@@ -120,7 +131,7 @@ SWHANDLE SWMgr_getGlobalOptionValuesIterator(SWHANDLE hmgr, char *option) {
}
-void SWMgr_setCipherKey(SWHANDLE hmgr, char *modName, char *key) {
+void SWMgr_setCipherKey(SWHANDLE hmgr, const char *modName, const char *key) {
SWMgr *mgr = (SWMgr *)hmgr;
if (mgr)
mgr->setCipherKey(modName, key);
@@ -137,7 +148,7 @@ void SWModule_terminateSearch(SWHANDLE hmodule) {
module->terminateSearch = true;
}
-// SWModule (const char *imodname = 0, const char *imoddesc = 0, SWDisplay * idisp = 0, char *imodtype = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN, const char* modlang = 0);
+// SWModule (const const char *imodname = 0, const const char *imoddesc = 0, SWDisplay * idisp = 0, const char *imodtype = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN, const char* modlang = 0);
// virtual ~ SWModule ();
/** Gets and clears error status
@@ -156,39 +167,39 @@ int SWModule_getEntrySize(SWHANDLE hmodule) {
}
-void SWModule_setKeyText(SWHANDLE hmodule, char *key) {
+void SWModule_setKeyText(SWHANDLE hmodule, const char *key) {
SWModule *module = (SWModule *)hmodule;
if (module)
- module->Key(key);
+ module->setKey(key);
}
-// virtual char SetKey (const SWKey &ikey);
+// virtual char setKey (const SWKey &ikey);
// virtual SWKey & Key () const {
-char *SWModule_getKeyText(SWHANDLE hmodule) {
+const char *SWModule_getKeyText(SWHANDLE hmodule) {
SWModule *module = (SWModule *)hmodule;
- return (char *)((module) ? module->KeyText() : 0);
+ return (const char *)((module) ? module->KeyText() : 0);
}
// virtual char Display ();
// virtual SWDisplay *Disp (SWDisplay * idisp = 0);
-char *SWModule_getName(SWHANDLE hmodule) {
+const char *SWModule_getName(SWHANDLE hmodule) {
SWModule *module = (SWModule *)hmodule;
- return (char *)((module) ? module->Name() : 0);
+ return (const char *)((module) ? module->Name() : 0);
}
-char *SWModule_getDescription(SWHANDLE hmodule) {
+const char *SWModule_getDescription(SWHANDLE hmodule) {
SWModule *module = (SWModule *)hmodule;
- return (char *)((module) ? module->Description() : 0);
+ return (const char *)((module) ? module->Description() : 0);
}
-char *SWModule_getType(SWHANDLE hmodule) {
+const char *SWModule_getType(SWHANDLE hmodule) {
SWModule *module = (SWModule *)hmodule;
- return (char *)((module) ? module->Type() : 0);
+ return (const char *)((module) ? module->Type() : 0);
}
@@ -213,15 +224,15 @@ void SWModule_begin(SWHANDLE hmodule) {
}
-char *SWModule_getStripText(SWHANDLE hmodule) {
+const char *SWModule_getStripText(SWHANDLE hmodule) {
SWModule *module = (SWModule *)hmodule;
- return (char *)((module) ? module->StripText() : 0);
+ return (const char *)((module) ? module->StripText() : 0);
}
-char *SWModule_getRenderText(SWHANDLE hmodule) {
+const char *SWModule_getRenderText(SWHANDLE hmodule) {
SWModule *module = (SWModule *)hmodule;
- return (char *)((module) ? module->RenderText() : 0);
+ return (const char *)((module) ? module->RenderText() : 0);
}
@@ -230,14 +241,14 @@ char *SWModule_getRenderText(SWHANDLE hmodule) {
// stringlist_iterator methods
void stringlist_iterator_next(SWHANDLE hsli) {
- OptionsList::iterator *sli = (OptionsList::iterator *)hsli;
+ StringList::iterator *sli = (StringList::iterator *)hsli;
(*sli)++;
}
-char *stringlist_iterator_val(SWHANDLE hsli) {
- OptionsList::iterator *sli = (OptionsList::iterator *)hsli;
- return (char *)(*sli)->c_str();
+const char *stringlist_iterator_val(SWHANDLE hsli) {
+ StringList::iterator *sli = (StringList::iterator *)hsli;
+ return (const char *)(*sli)->c_str();
}
diff --git a/bindings/gsoap/Makefile b/bindings/gsoap/Makefile
new file mode 100644
index 0000000..639634a
--- /dev/null
+++ b/bindings/gsoap/Makefile
@@ -0,0 +1,12 @@
+all: gsoapsword testclient
+
+gsoapsword: gsoapsword.h gsoapsword.cpp stdsoap.o
+ ./soapcpp gsoapsword.h
+ g++ -g -ggdb -I/usr/include/sword -I./include -o gsoapsword gsoapsword.cpp yoyo.cpp stdsoap.o soapC.cpp soapServer.cpp -lsword -lz
+
+testclient: gsoapsword.h testclient.cpp stdsoap.o
+ ./soapcpp gsoapsword.h
+ g++ -I./include -o testclient testclient.cpp stdsoap.o soapC.cpp soapClient.cpp
+
+clean:
+ rm gsoapsword testclient soapC.cpp soapServer.cpp soapClient.cpp soapH.h soapStub.h sword.xsd sword.nsmap sword.wsdl
diff --git a/bindings/gsoap/gsoapsword.cpp b/bindings/gsoap/gsoapsword.cpp
new file mode 100644
index 0000000..cb3a58d
--- /dev/null
+++ b/bindings/gsoap/gsoapsword.cpp
@@ -0,0 +1,142 @@
+#include "soapH.h"
+#include <flatapi.h>
+#include <swmgr.h>
+#include <markupfiltmgr.h>
+
+
+SWMgr *mgr;
+
+int sword__ModList_iterator_next(xsd__int hmmi, xsd__int &noop) {
+ ModList_iterator_next(hmmi);
+ return SOAP_OK;
+}
+
+int sword__ModList_iterator_val(xsd__int hmmi, xsd__int &hmodule) {
+ hmodule = ModList_iterator_val(hmmi);
+ return SOAP_OK;
+}
+
+int sword__SWMgr_new(xsd__int &retVal) {
+ retVal = SWMgr_new();
+ return SOAP_OK;
+}
+
+int sword__SWMgr_delete(xsd__int hmgr, xsd__int &noop) {
+ SWMgr_delete(hmgr);
+ return SOAP_OK;
+}
+
+int sword__SWMgr_getModulesIterator(xsd__int hmgr, xsd__int &hmodIterator) {
+ hmodIterator = SWMgr_getModulesIterator(hmgr);
+ return SOAP_OK;
+}
+
+int sword__SWMgr_getModuleByName(xsd__int hmgr, xsd__string name, xsd__int &hmodule) {
+ hmodule = SWMgr_getModuleByName(hmodule, name);
+ return SOAP_OK;
+}
+
+
+
+int sword__SWModule_getName(xsd__int hmodule, xsd__string &name) {
+ name = (char *)SWModule_getName(hmodule);
+ return SOAP_OK;
+}
+
+int sword__SWModule_getDescription(xsd__int hmodule, xsd__string &description) {
+ description = (char *)SWModule_getDescription(hmodule);
+ return SOAP_OK;
+}
+
+
+int sword__Quick_getModuleRawEntry(xsd__string modName, xsd__string modKey, xsd__string &modText) {
+ SWModule *mod = mgr->Modules[modName];
+ if (mod) {
+ mod->setKey(modKey);
+ modText = mod->getRawEntry();
+ }
+ return SOAP_OK;
+}
+
+
+int sword__Quick_setModuleRawEntry(xsd__string modName, xsd__string modKey, xsd__string modText, xsd__int &noop) {
+ SWModule *mod = mgr->Modules[modName];
+ if (mod) {
+ mod->setKey(modKey);
+ (*mod) << modText;
+ }
+ return SOAP_OK;
+}
+
+
+int sword__Quick_getModuleRenderText(xsd__string modName, xsd__string modKey, xsd__string &modText) {
+ SWModule *mod = mgr->Modules[modName];
+ if (mod) {
+ mod->setKey(modKey);
+ modText = (char *)mod->RenderText();
+ }
+ return SOAP_OK;
+}
+
+
+int sword__Quick_getJScriptAttribArray(xsd__string modName, xsd__string modKey, xsd__string &arrayText) {
+ SWModule *mod = mgr->Modules[modName];
+ if (mod) {
+ mod->setKey(modKey);
+ AttributeTypeList::iterator i1;
+ AttributeList::iterator i2;
+ AttributeValue::iterator i3;
+ int l1, l2, l3;
+ char lbuf1[20], lbuf2[20], lbuf3[20];
+ static string retVal = "";
+ retVal = "var entryAttribs = new Array();\n";
+ string l1keys = "entryAttribs[0] = new Array(";
+ for (l1=0,i1 = target->getEntryAttributes().begin(); i1 != target->getEntryAttributes().end(); i1++,l1++) {
+ sprintf(lbuf1, "%d", l1+1);
+ retVal += "entryAttribs["+lbuf1+"] = new Array();\n";
+ string l2keys = "entryAttribs["+lbuf1+"][0] = new Array(";
+ cout << "[ " << i1->first << " ]\n";
+ for (l2=0,i2 = i1->second.begin(); i2 != i1->second.end(); i2++,l2++) {
+ sprintf(lbuf2, "%d", l2+1);
+ retVal += "entryAttribs["+lbuf1+"]["+lbuf2+"][0] = new Array();\n";
+ string l3keys = "entryAttribs["+lbuf1+"]["+lbuf2+"][0] = new Array(";
+ cout << "\t[ " << i2->first << " ]\n";
+ for (l3=0,i3 = i2->second.begin(); i3 != i2->second.end(); i3++,l3++) {
+ cout << "\t\t" << i3->first << " = " << i3->second << "\n";
+ }
+ }
+ }
+ }
+ return SOAP_OK;
+}
+
+
+
+
+main() {
+
+
+ int m, s;
+ mgr = new SWMgr(new MarkupFilterMgr());
+ m = soap_bind("localhost", 18083, 100);
+ if (m < 0) {
+ soap_print_fault(stderr);
+ exit(-1);
+ }
+ fprintf(stderr, "Socket connection successful: master socket = %d\n", m);
+ for (int i = 1; ; i++) {
+ s = soap_accept();
+ if (s < 0) {
+ soap_print_fault(stderr);
+ exit(-1);
+ }
+ fprintf(stderr, "%d: accepted connection from IP = %d.%d.%d.%d socket = %d", i, (soap_ip<<24)&0xFF, (soap_ip<<16)&0xFF, (soap_ip<<8)&0xFF, soap_ip&0xFF, s);
+ soap_serve(); // process RPC skeletons
+ fprintf(stderr, "request served\n");
+ soap_end(); // clean up everything and close socket
+ }
+ delete mgr;
+}
+
+#include "sword.nsmap"
+
diff --git a/bindings/gsoap/gsoapsword.h b/bindings/gsoap/gsoapsword.h
new file mode 100644
index 0000000..1a712a5
--- /dev/null
+++ b/bindings/gsoap/gsoapsword.h
@@ -0,0 +1,65 @@
+#ifndef GSOAPAPI_H
+#define GSOAPAPI_H
+
+typedef long xsd__int;
+typedef char * xsd__string;
+
+//-----------------------------------------------------------------
+// stringlist_iterator methods
+
+//int sword__stringlist_iterator_next(xsd__int hsli char **);
+//int sword__stringlist_iterator_val(xsd__int hsli, char **);
+
+
+//-----------------------------------------------------------------
+// modmap methods
+//
+int sword__ModList_iterator_next(xsd__int hmmi, xsd__int &noop);
+int sword__ModList_iterator_val(xsd__int hmmi, xsd__int &hmodule);
+
+
+//-----------------------------------------------------------------
+// SWMgr methods
+//
+int sword__SWMgr_new(xsd__int &retVal);
+// SWConfig *, SWConfig *, bool, SWFilterMgr *
+//xsd__int sword__SWMgr_newEx(xsd__int hiconfig, xsd__int hisysconfig, char autoload, xsd__int hfilterMgr);
+int sword__SWMgr_delete(xsd__int hmgr, xsd__int &noop);
+//xsd__int sword__SWMgr_getConfig(xsd__int hmgr);
+int sword__SWMgr_getModulesIterator(xsd__int hmgr, xsd__int &hmodIterator);
+int sword__SWMgr_getModuleByName(xsd__int hmgr, xsd__string name, xsd__int &hmodule);
+//char * sword__SWMgr_getPrefixPath(xsd__int hmgr);
+//char * sword__SWMgr_getConfigPath(xsd__int hmgr);
+//void sword__SWMgr_setGlobalOption(xsd__int hmgr, char *option, char *value);
+//char * sword__SWMgr_getGlobalOption(xsd__int hmgr, char *option);
+//char * sword__SWMgr_getGlobalOptionTip(xsd__int hmgr, char *option);
+// ret: forward_iterator
+//xsd__int sword__SWMgr_getGlobalOptionsIterator(xsd__int hmgr);
+// ret: forward_iterator
+//xsd__int sword__SWMgr_getGlobalOptionValuesIterator(xsd__int hmgr, char *option);
+//void sword__SWMgr_setCipherKey(xsd__int hmgr, char *modName, char *key);
+
+
+//-----------------------------------------------------------------
+// SWModule methods
+
+//void sword__SWModule_terminateSearch(xsd__int hmodule);
+//char sword__SWModule_error(xsd__int hmodule);
+//int sword__SWModule_getEntrySize(xsd__int hmodule);
+//void sword__SWModule_setKeyText(xsd__int hmodule, char *key);
+//char *sword__SWModule_getKeyText(xsd__int hmodule);
+int sword__SWModule_getName(xsd__int hmodule, xsd__string &name);
+int sword__SWModule_getDescription(xsd__int hmodule, xsd__string &description);
+//char *sword__SWModule_getType(xsd__int hmodule);
+//void sword__SWModule_previous(xsd__int hmodule);
+//void sword__SWModule_next(xsd__int hmodule);
+//void sword__SWModule_begin(xsd__int hmodule);
+//char *sword__SWModule_getStripText(xsd__int hmodule);
+//char *sword__SWModule_getRenderText(xsd__int hmodule);
+
+
+int sword__Quick_getModuleRawEntry(xsd__string modName, xsd__string modKey, xsd__string &modText);
+int sword__Quick_setModuleRawEntry(xsd__string modName, xsd__string modKey, xsd__string modText, xsd__int &noop);
+int sword__Quick_getModuleRenderText(xsd__string modName, xsd__string modKey, xsd__string &modText);
+int sword__Quick_getJScriptAttribArray(xsd__string modName, xsd__string modKey, xsd__string &arrayText);
+#endif
diff --git a/bindings/gsoap/include/stdsoap.h b/bindings/gsoap/include/stdsoap.h
new file mode 100644
index 0000000..462483a
--- /dev/null
+++ b/bindings/gsoap/include/stdsoap.h
@@ -0,0 +1,493 @@
+/* stdsoap.h
+
+ Copyright (C) 2001 Robert A. van Engelen, Florida State University.
+ All rights reserved.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+#include <sys/types.h>
+#ifndef WIN32
+#include <netinet/tcp.h> /* for TCP_NODELAY */
+#include <arpa/inet.h>
+#endif
+
+#ifdef WITH_OPENSSL
+#include <openssl/ssl.h>
+#include <openssl/err.h>
+#ifndef ALLOW_OLD_VERSIONS
+#if (OPENSSL_VERSION_NUMBER < 0x00905100L)
+#error "Must use OpenSSL 0.9.6 or later"
+#endif
+#endif
+#endif
+
+#include <math.h> /* for isnan(): remove if NAN and INF support is not required */
+#include <time.h> /* for time_t (xsd:dateTime) support, remove if not required */
+
+#ifndef _MATH_H
+#define isnan(_) (0)
+#else
+extern struct soap_double_nan { int n1, n2; } soap_double_nan;
+#endif
+
+#ifndef STDSOAP
+#define STDSOAP
+
+#ifndef WIN32
+#define LONG64 long long
+#define ULONG64 unsigned long long
+#endif
+
+/* #define DEBUG */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and messages (in file TEST.log) */
+
+#define SOAP_BUFLEN 8192 /* buffer length for socket packets */
+#define SOAP_MAXLEN 256 /* maximum length of buffer to hold XML number representations */
+#define SOAP_PTRHASH 1024 /* size of pointer analysis hash table (must be power of 2) */
+#define SOAP_IDHASH 16 /* size of hash table for element id's */
+#define SOAP_BLKLEN 256 /* size of blocks to collect long strings */
+#define SOAP_TAGLEN 256 /* maximum length of XML tag/element names + 1 */
+
+typedef long wchar; /* for compatibility */
+
+#ifndef FLT_NAN
+#ifdef _MATH_H
+#define FLT_NAN (*(float*)&soap_double_nan)
+#else
+#define FLT_NAN (0.0)
+#endif
+#endif
+#ifndef FLT_PINFTY
+#ifdef HUGE_VAL
+#define FLT_PINFTY (float)HUGE_VAL
+#else
+#ifdef FLT_MAX
+#define FLT_PINFTY FLT_MAX
+#else
+#ifdef FLOAT_MAX
+#define FLT_PINFTY FLOAT_MAX
+#else
+#define FLT_PINFTY (3.40282347e+38)
+#endif
+#endif
+#endif
+#endif
+#ifndef FLT_NINFTY
+#define FLT_NINFTY (-FLT_PINFTY)
+#endif
+
+#ifndef DBL_NAN
+#ifdef _MATH_H
+#define DBL_NAN (*(double*)&soap_double_nan)
+#else
+#define DBL_NAN (0.0)
+#endif
+#endif
+#ifndef DBL_PINFTY
+#ifdef HUGE_VAL
+#define DBL_PINFTY (double)HUGE_VAL
+#else
+#ifdef DBL_MAX
+#define DBL_PINFTY DBL_MAX
+#else
+#ifdef DOUBLE_MAX
+#define DBL_PINFTY DOUBLE_MAX
+#else
+#define DBL_PINFTY (1.7976931348623157e+308)
+#endif
+#endif
+#endif
+#endif
+#ifndef DBL_NINFTY
+#define DBL_NINFTY (-DBL_PINFTY)
+#endif
+
+extern int (*soap_fpost)(const char*, const char*, const char*, const char*, size_t);
+extern int (*soap_fresponse)(int, size_t);
+extern int (*soap_fparse)();
+extern int (*soap_fopen)(const char*, const char*, int);
+extern int (*soap_fclose)();
+extern int (*soap_fsend)(const char*, size_t);
+extern size_t (*soap_frecv)(char*, size_t);
+extern int (*soap_fignore)(const char*);
+
+extern const char *soap_float_format; /* points to user-definable format string */
+extern const char *soap_double_format; /* points to user-definable format string */
+
+extern const char *soap_http_version; /* default = "1.0" */
+extern const char *soap_encodingStyle; /* default = NULL which means that SOAP encoding is used for marshalling */
+extern const char *soap_defaultNamespace; /* default = NULL which means that no default namespace is used */
+extern int soap_disable_href; /* when !=0, disables hrefs so objects are duplicated on the output */
+extern int soap_enable_embedding; /* when !=0, enable hrefs within embedded elements */
+extern int soap_enable_null; /* when !=0, always sends null elements */
+extern int soap_enable_utf_string; /* when !=0, assume strings are UTF8/16 encoded and just emit them */
+extern int soap_disable_request_count; /* when !=0, do not include HTTP Content-Length in request */
+extern int soap_disable_response_count; /* when !=0, do not include HTTP Content-Length in service response (normally calculated by the Web server in case CGI is used so disabling saves time) */
+extern int soap_enable_array_overflow; /* when !=0, allows ignoring remaining elements that do not fit in a fixed-size array */
+extern int soap_keep_alive; /* when !=0, set SO_KEEPALIVE socket and do not close sockets, unless new host/port is accessed */
+
+extern const char *soap_proxy_host;
+extern int soap_proxy_port;
+
+#ifdef WITH_OPENSSL
+extern SSL_CTX *soap_ssl_ctx;
+extern BIO *soap_bio;
+extern SSL *soap_ssl;
+extern int soap_require_server_auth;
+extern const char *soap_keyfile;
+extern const char *soap_password;
+extern const char *soap_dhfile;
+extern const char *soap_cafile;
+#endif
+
+#ifdef WIN32
+#include <io.h>
+#include <winsock.h>
+#else
+#include <sys/socket.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <unistd.h>
+#define closesocket(n) close(n)
+#endif
+
+int soap_serve();
+
+extern void soap_serializeheader();
+extern void soap_putheader();
+extern int soap_getheader();
+extern void soap_serializefault();
+extern void soap_putfault();
+extern int soap_getfault();
+extern void soap_putindependent();
+extern int soap_getindependent();
+
+int soap_bind(const char *hostname, int port, int backlog);
+int soap_accept();
+int soap_ssl_accept();
+
+struct Namespace {const char *id, *ns, *in;};
+extern struct Namespace namespaces[];
+
+static FILE * fdebug;
+
+struct soap_entry
+{ int id;
+ void *entry;
+ int type;
+ short marked1;
+ short marked2;
+ struct soap_entry *next;
+};
+
+extern char soap_tag[SOAP_TAGLEN]; /* used by soap_element_begin_in */
+extern char soap_id[SOAP_TAGLEN]; /* set by soap_element_begin_in */
+extern char soap_href[SOAP_TAGLEN]; /* set by soap_element_begin_in */
+extern char soap_type[SOAP_TAGLEN];
+extern char soap_arrayType[SOAP_TAGLEN];
+extern char soap_arraySize[SOAP_TAGLEN];
+extern char soap_xmlns_name[SOAP_TAGLEN];
+extern char soap_xmlns_value[SOAP_TAGLEN];
+extern char soap_offset[SOAP_TAGLEN]; /* ditto */
+extern int soap_position; /* ditto */
+extern int soap_positions[32]; /* ditto */
+extern int soap_null; /* ditto */
+extern int soap_counting;
+extern int soap_level;
+extern int soap_is_in_header;
+
+/* Defining the std soap error codes */
+
+#define SOAP_OK 0
+#define SOAP_CLI_FAULT 1
+#define SOAP_SVR_FAULT 2
+#define SOAP_TAG_MISMATCH 3
+#define SOAP_TYPE_MISMATCH 4
+#define SOAP_SYNTAX_ERROR 5
+#define SOAP_NO_TAG 6
+#define SOAP_IOB 7
+#define SOAP_MUSTUNDERSTAND 8
+#define SOAP_NAMESPACE 9
+#define SOAP_OBJ_MISMATCH 10
+#define SOAP_FATAL_ERROR 11
+#define SOAP_FAULT 12
+#define SOAP_NO_METHOD 13
+#define SOAP_EOM 14
+#define SOAP_NULL 15
+#define SOAP_MULTI_ID 16
+#define SOAP_MISSING_ID 17
+#define SOAP_HREF 18
+#define SOAP_TCP_ERROR 19
+#define SOAP_HTTP_ERROR 20
+#define SOAP_SSL_ERROR 21
+#define SOAP_EOF EOF
+
+extern int soap_error ;
+
+/* DEBUG macros */
+
+#ifdef DEBUG
+#define DBGLOG(DBGFILE, DBGCMD) \
+{\
+ fdebug = fopen(#DBGFILE".log", "a");\
+ DBGCMD;\
+ fclose(fdebug);\
+}
+#else
+#define DBGLOG(DBGFILE, DBGCMD)
+#endif
+
+struct soap_class
+{ void *ptr;
+ int type;
+ int size;
+ struct soap_class *next;
+};
+
+extern struct soap_class *soap_class_chain;
+
+struct soap_stack
+{ struct soap_stack *next;
+ char *id;
+ int i;
+ int level;
+};
+
+/* Hash table (temporarily replaced by array indexing) */
+
+extern struct soap_entry *soap_ptr[SOAP_PTRHASH];
+
+/*int sock;*/
+extern int soap_socket;
+extern int soap_recvfd;
+extern int soap_sendfd;
+extern int soap_buffering;
+extern unsigned long soap_ip; /* IP address of connecting party after soap_accept() */
+
+/* send routine */
+int soap_send(const char *buf);
+
+int soap_send_hex(int);
+int soap_send_base64(const unsigned char *, size_t);
+
+int soap_gethex();
+unsigned char *soap_getbase64(int *, int);
+
+extern int errmode ;
+
+int soap_pointer_lookup(const void *p, int t,struct soap_entry **np1);
+int soap_array_pointer_lookup(const void *p, int n, int t, struct soap_entry **np1);
+int soap_pointer_lookup_id(void *p, int t,struct soap_entry **np1);
+int soap_pointer_enter(const void *p, int t,struct soap_entry **np1);
+int soap_array_pointer_enter(const void *p, int t, struct soap_entry **np1);
+void soap_pointer_dump();
+void soap_begin_count();
+void soap_begin_send();
+int soap_end_send();
+
+void soap_embedded(const void *p, int t);
+int soap_reference(const void *p, int t);
+int soap_array_reference(const void *p, int n, int t);
+int soap_embedded_id(int id, const void *p, int t);
+int soap_is_embedded(struct soap_entry *);
+int soap_is_single(struct soap_entry *);
+int soap_is_multi(struct soap_entry *);
+void soap_set_embedded(struct soap_entry *);
+
+int soap_begin_recv();
+int soap_end_recv();
+int soap_getline(char *, int);
+
+void soap_send_namespaces();
+
+#ifdef WIN32
+#define atoll atoi
+#else
+extern void itoa(int, char*);
+#endif
+
+/* The hash table to hold IDs needs entries of the form: */
+struct soap_hash_entry
+{ int type;
+ size_t size;
+ void *link;
+ void *copy;
+ void *ptr;
+ int level;
+ struct soap_hash_entry *next;
+ char s[4];
+};
+
+extern struct soap_hash_entry *soap_hash[SOAP_IDHASH];
+
+extern int soap_alloced ; /* keep this info so we know that object must be init'ed */
+extern void *soap_malloc_chain ;
+
+void * soap_malloc(size_t n);
+void soap_dealloc(void *p);
+
+int soap_lookup_type(const char *id);
+
+void * soap_id_lookup(const char *id, void **p, int t, size_t n, int k);
+
+void * soap_id_forward(const char *id, void *p, int t, size_t n);
+
+void * soap_id_enter(const char *id, void *p, int t, size_t n, int k);
+void * soap_class_id_enter(const char *id, void *p, int t, const char *type);
+
+extern int soap_size(const int *, int);
+extern int soap_getoffsets(const char *, const int *, int *, int);
+extern int soap_getsize(const char *, const char *, int *);
+extern int soap_getsizes(const char *, int *, int);
+extern int soap_getposition(const char *, int *);
+extern char * soap_putsize(const char *, int);
+extern char * soap_putsizesoffsets(const char *, const int *, const int *, int);
+extern char * soap_putsizes(const char *, const int *, int);
+extern char * soap_putoffset(int);
+extern char * soap_putoffsets(const int *, int);
+extern char * soap_putposition();
+
+extern int soap_peeked ;
+extern int soap_body;
+
+/* Support routines (library) */
+int soap_ignore_element();
+
+int soap_closesock();
+
+void soap_init();
+void soap_begin();
+
+int soap_match_tag(const char*, const char *);
+
+int soap_match_array(const char*);
+
+void soap_end();
+void soap_free();
+void soap_destroy();
+
+void soap_element_begin_out(const char *tag, int id, const char *type);
+void soap_array_begin_out(const char *tag, int id, const char *type, const char *offset);
+
+void soap_element_end_out(const char *tag);
+
+void soap_element_ref(const char *tag, int id, int href);
+
+void soap_element_null(const char *tag, int id, const char *type);
+
+int soap_element_begin_in(const char *tag);
+
+int soap_element_end_in(const char *tag);
+
+int soap_peek_element();
+void soap_revert();
+
+int soap_ignore_element();
+
+void soap_convert_string_out(const char *s);
+
+int soap_match_namespace(const char*, const char*, int, int);
+
+void soap_pop_namespace();
+int soap_push_namespace(const char *,const char *);
+
+extern int soap_block_size;
+extern int soap_new_block();
+extern void *soap_push_block(size_t);
+extern void soap_pop_block();
+extern void soap_store_block(char *);
+
+void *soap_instantiate(int t, const char *);
+void soap_delete(void *, int, int);
+
+void soap_outint(const char *tag, int id, const int *p, const char *, int);
+int * soap_inint(const char *tag, int *p, const char *, int);
+
+void soap_outbyte(const char *tag, int id, const char *p, const char *, int);
+char * soap_inbyte(const char *tag, char *p, const char *, int);
+
+void soap_outlong(const char *tag, int id, const long *p, const char *, int);
+long * soap_inlong(const char *tag, long *p, const char *, int);
+
+void soap_outLONG64(const char *tag, int id, const LONG64 *p, const char *, int);
+LONG64 * soap_inLONG64(const char *tag, LONG64 *p, const char *, int);
+
+void soap_outshort(const char *tag, int id, const short *p, const char *, int);
+short * soap_inshort(const char *tag, short *p, const char *, int);
+
+void soap_outfloat(const char *tag, int id, const float *p, const char *, int);
+float * soap_infloat(const char *tag, float *p, const char *, int);
+
+void soap_outdouble(const char *tag, int id, const double *p, const char *, int);
+double * soap_indouble(const char *tag, double *p, const char *, int);
+
+void soap_outunsignedByte(const char *tag, int id, const unsigned char *p, const char *, int);
+unsigned char * soap_inunsignedByte(const char *tag, unsigned char *p, const char *, int);
+
+void soap_outunsignedShort(const char *tag, int id, const unsigned short *p, const char *, int);
+unsigned short * soap_inunsignedShort(const char *tag, unsigned short *p, const char *, int);
+
+void soap_outunsignedInt(const char *tag, int id, const unsigned int *p, const char *, int);
+unsigned int * soap_inunsignedInt(const char *tag, unsigned int *p, const char *, int);
+
+void soap_outunsignedLong(const char *tag, int id, const unsigned long *p, const char *, int);
+unsigned long * soap_inunsignedLong(const char *tag, unsigned long *p, const char *, int);
+
+void soap_outunsignedLONG64(const char *tag, int id, const ULONG64 *p, const char *, int);
+ULONG64 * soap_inunsignedLONG64(const char *tag, ULONG64 *p, const char *, int);
+
+void soap_outstring(const char *tag, int id, char *const*p, const char *, int);
+char ** soap_instring(const char *tag, char **p, const char *, int);
+
+void soap_outwstring(const char *tag, int id, wchar_t *const*p, const char *, int);
+wchar_t **soap_inwstring(const char *tag, wchar_t **p, const char *, int);
+
+void soap_outliteral(const char *tag, char *const*p);
+char **soap_inliteral(const char *tag, char **p);
+
+void soap_outwliteral(const char *tag, wchar_t *const*p);
+wchar_t **soap_inwliteral(const char *tag, wchar_t **p);
+
+#ifdef _TIME_H
+void soap_outdateTime(const char *tag, int id, const time_t *p, const char *, int);
+time_t *soap_indateTime(const char *tag, time_t *p, const char *, int);
+#endif
+
+char *soap_value();
+
+wchar soap_skip();
+
+/* 1. generate the prototypes and encode all types (base types are defined above) */
+
+void soap_envelope_begin_out();
+void soap_envelope_end_out();
+
+int soap_envelope_begin_in();
+int soap_envelope_end_in();
+
+void soap_body_begin_out();
+void soap_body_end_out();
+
+int soap_body_begin_in();
+int soap_body_end_in();
+
+int soap_recv_header();
+
+int soap_connect(const char *URL, const char *action);
+
+int soap_response();
+
+/* Methods dealing with the fault struct*/
+
+int soap_send_fault();
+
+int soap_recv_fault();
+
+extern void soap_print_fault(FILE*);
+extern void soap_print_fault_location(FILE*);
+
+#endif
diff --git a/bindings/gsoap/soapcpp b/bindings/gsoap/soapcpp
new file mode 100755
index 0000000..462b1b5
--- /dev/null
+++ b/bindings/gsoap/soapcpp
Binary files differ
diff --git a/bindings/gsoap/stdsoap.o b/bindings/gsoap/stdsoap.o
new file mode 100644
index 0000000..2e4bae8
--- /dev/null
+++ b/bindings/gsoap/stdsoap.o
Binary files differ
diff --git a/bindings/gsoap/testclient.cpp b/bindings/gsoap/testclient.cpp
new file mode 100644
index 0000000..b0d4d94
--- /dev/null
+++ b/bindings/gsoap/testclient.cpp
@@ -0,0 +1,76 @@
+#include "soapH.h"
+#include <iostream.h>
+
+char server[] = "http://localhost:18083";
+
+int main(int argc, char **argv) {
+ xsd__int mgr;
+ xsd__int noop;
+
+ if (soap_call_sword__SWMgr_new(server, NULL, mgr)) {
+ soap_print_fault(stderr);
+ soap_print_fault_location(stderr);
+ exit(-1);
+ }
+
+ xsd__int modIt;
+ if (soap_call_sword__SWMgr_getModulesIterator(server, NULL, mgr, modIt)) {
+ soap_print_fault(stderr);
+ soap_print_fault_location(stderr);
+ exit(-1);
+ }
+
+ xsd__int module;
+ do {
+ if (soap_call_sword__ModList_iterator_val(server, NULL, modIt, module)) {
+ soap_print_fault(stderr);
+ soap_print_fault_location(stderr);
+ exit(-1);
+ }
+
+
+ if (module) {
+ char *name;
+ char *desc;
+ if (soap_call_sword__SWModule_getName(server, NULL, module, name)) {
+ soap_print_fault(stderr);
+ soap_print_fault_location(stderr);
+ exit(-1);
+ }
+ if (soap_call_sword__SWModule_getDescription(server, NULL, module, desc)) {
+ soap_print_fault(stderr);
+ soap_print_fault_location(stderr);
+ exit(-1);
+ }
+
+ cout << "[" << name << "] " << desc << endl;
+
+ if (soap_call_sword__ModList_iterator_next(server, NULL, modIt, noop)) {
+ soap_print_fault(stderr);
+ soap_print_fault_location(stderr);
+ exit(-1);
+ }
+ }
+
+
+ } while (module);
+
+ if (soap_call_sword__SWMgr_delete(server, NULL, mgr, noop)) {
+ soap_print_fault(stderr);
+ soap_print_fault_location(stderr);
+ exit(-1);
+ }
+ char *text;
+ if (soap_call_sword__Quick_getModuleRenderText(server, NULL, "KJV", "jas1:19", text)) {
+ soap_print_fault(stderr);
+ soap_print_fault_location(stderr);
+ exit(-1);
+ }
+ cout << text << endl;
+
+ printf("success: %d\n", mgr);
+ soap_free();
+ return 0;
+}
+
+#include "sword.nsmap"
diff --git a/bindings/perl/Changes b/bindings/perl/Changes
new file mode 100644
index 0000000..e21158d
--- /dev/null
+++ b/bindings/perl/Changes
@@ -0,0 +1,18 @@
+Revision history for Perl extension Sword.
+
+0.01 Mon Jul 16 12:08:07 2001
+ - original version; created by h2xs 1.21 with options
+ -A -n Sword
+ - Basic verse movement w/next and prev
+
+0.02 Thu Jul 20 2001
+ - Added search, go to verse movement
+
+0.3 Sat Jul 21 2001
+ - Added verse list, verse range support
+ - Added (untested) locale support
+ - Made documentation
+ - Fixed bugs
+
+0.31 Sun Jun 09 2002 Joachim Ansorg <jansorg@gmx.de>
+ -Fixed some compilation problems
diff --git a/bindings/perl/Makefile.PL b/bindings/perl/Makefile.PL
new file mode 100644
index 0000000..4255b5a
--- /dev/null
+++ b/bindings/perl/Makefile.PL
@@ -0,0 +1,91 @@
+use ExtUtils::MakeMaker;
+
+my $sword_lib_path;
+my $sword_lib_path_raw;
+my $sword_include_path;
+
+sub find_inc {
+ my ($inc_dir) = @_;
+ if(-f "$inc_dir/swmgr.h") {
+ print "$inc_dir.\n";
+ $sword_include_path = "-I$inc_dir ";
+ return 1;
+ } else {
+ if($inc_dir !~ /sword$/) {
+ return find_inc("$inc_dir/sword");
+ }
+ return;
+ }
+}
+
+sub find_lib {
+ my ($lib_dir) = @_;
+ if(-f "$lib_dir/libsword.a") {
+ print "$lib_dir.\n";
+ $sword_lib_path = "-L$lib_dir ";
+ $sword_lib_path_raw = "$lib_dir";
+ return 1;
+ } else {
+ return;
+ }
+}
+
+sub search_lib_path {
+ print "Searching for Sword library ... ";
+ foreach my $lib_dir (@_) {
+ if(find_lib($lib_dir)) {
+ return 1;
+ }
+ }
+ print join(" ", @_), "\n";
+ die "Sword not found! Set SWORD_LIB_PATH to the directory where your libsword.a is.
+You can download Sword from http://www.crosswire.org.
+";
+}
+
+sub search_inc_path {
+ print "Searching for Sword headers ... ";
+ foreach my $inc_dir (@_) {
+ if(find_inc($inc_dir)) {
+ return 1;
+ }
+ }
+ print join(" ", @_), "\n";
+ die "Sword headers not found! Set SWORD_INCLUDE_PATH to the directory where your Sword include files are.\n";
+}
+
+sub one_dir_up {
+ my ($dir) = @_;
+ $dir =~ s!/[^/]+/*$!!g;
+ return $dir ? $dir : "/";
+}
+
+search_lib_path($ENV{SWORD_LIB_PATH}, $ENV{SWORD_PATH}, one_dir_up($ENV{SWORD_PATH}) . "/lib", "/lib", "/usr/lib", "/usr/local/lib", split(":", $ENV{LD_LIBRARY_PATH}));
+
+search_inc_path(one_dir_up($sword_lib_path_raw) . "/include", $ENV{SWORD_INCLUDE_PATH}, $ENV{SWORD_PATH}, one_dir_up($ENV{SWORD_PATH}) . "/include", "/usr/include", "/usr/local/include");
+if(! $sword_include_path ) {
+}
+
+
+$CC = 'g++';
+
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+ 'NAME' => 'Sword',
+ 'VERSION_FROM' => 'Sword.pm', # finds $VERSION
+ 'PREREQ_PM' => {}, # e.g., Module::Name => 1.1
+ ($] >= 5.005 ? ## Add these new keywords supported since 5.005
+ (ABSTRACT_FROM => 'Sword.pm', # retrieve abstract from module
+ AUTHOR => 'John Keiser <jkeiser@iname.com>') : ()),
+ 'LIBS' => ["$sword_lib_path-lsword -lz"], # e.g., '-lm'
+ 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING'
+ 'CC' => $CC,
+ 'LD' => '$(CC)',
+ # Insert -I. if you add *.h files later:
+ 'INC' => "$sword_include_path", # e.g., '-I/usr/include/other'
+ # Un-comment this if you add C files to link with later:
+ # 'OBJECT' => '$(O_FILES)', # link all the C files too
+ 'XSOPT' => '-C++',
+ 'TYPEMAPS' => ['perlobject.map' ],
+);
diff --git a/bindings/perl/README b/bindings/perl/README
new file mode 100644
index 0000000..a03d9cb
--- /dev/null
+++ b/bindings/perl/README
@@ -0,0 +1,36 @@
+Sword version 0.31
+==================
+
+The README is used to introduce the module and provide instructions on
+how to install the module, any machine dependencies it may have (for
+example C compilers and installed libraries) and any other information
+that should be provided before the module is installed.
+
+A README file is required for CPAN modules since CPAN extracts the
+README file from a module distribution so that people browsing the
+archive can use it get an idea of the modules uses. It is usually a
+good idea to provide version information here so that people can
+decide whether fixes for the module are worth downloading.
+
+INSTALL
+-------
+
+tar xzvf Sword-0.01.tar.gz
+cd Sword-0.01
+perl Makefile.PL
+make
+make install
+
+If you have trouble with the first step, it's because the Makefile can't find Sword.  Set the lib path in your LD_LIBRARY_PATH or set the SWORD_LIB_PATH environment variable to the path to libsword.a.
+
+
+HELP
+---
+"man Sword" or "perldoc Sword" after install for examples that will help you.
+
+
+COPYRIGHT AND LICENCE
+
+This program is licensed under the GPL.
+
+Copyright (C) 2001 John Keiser
diff --git a/bindings/perl/Sword.pm b/bindings/perl/Sword.pm
new file mode 100644
index 0000000..04aa2fe
--- /dev/null
+++ b/bindings/perl/Sword.pm
@@ -0,0 +1,1087 @@
+package Sword;
+
+use 5.006;
+use strict;
+use warnings;
+
+require Exporter;
+require DynaLoader;
+
+our @ISA = qw(Exporter DynaLoader);
+
+# Items to export into callers namespace by default. Note: do not export
+# names by default without a very good reason. Use EXPORT_OK instead.
+# Do not simply export all your public functions/methods/constants.
+
+# This allows declaration use Sword ':all';
+# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
+# will save memory.
+our %EXPORT_TAGS = ( 'all' => [ qw(
+ get_modules
+ get_verse
+) ] );
+
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+
+our @EXPORT = qw(
+
+);
+our $VERSION = '0.31';
+
+bootstrap Sword $VERSION;
+
+# Preloaded methods go here.
+sub get_verse {
+ my ($verse, $mod) = @_;
+ if(!$mod) {
+ $mod = (get_modules())[0];
+ }
+
+ my $vi = new Sword::VerseIterator $mod;
+ if(!$vi->go_to_verse($verse)) {
+ return;
+ } else {
+ return $vi->get_verse();
+ }
+}
+
+my %base_modules;
+
+sub get_module {
+ my ($mod) = @_;
+ $base_modules{$mod} = new Sword::Module($mod) if !$base_modules{$mod};
+ return $base_modules{$mod}
+}
+
+1;
+
+
+package Sword::VerseIterator;
+
+sub set_book {
+ my $this = shift;
+
+ my ($book) = @_;
+ $this->go_to_verse($book . " 1:1");
+}
+
+1;
+
+
+package Sword::Module;
+
+sub new {
+ my $class = shift;
+ $class = ref($class) || $class;
+ my $this = {};
+ bless $this, $class;
+
+ my ($module_name) = @_;
+ $this->{MOD_NAME} = $module_name;
+ $this->{VI} = new Sword::VerseIterator($module_name);
+
+ return $this;
+}
+
+sub _initialize_book_list {
+ my $this = shift;
+ if(! $this->{BOOKS} ) {
+ $this->{BOOKS} = {};
+ $this->{BOOK_ARRAY} = [];
+ foreach my $book ($this->{VI}->_get_books) {
+ $book->{real_book_num} = @{$this->{BOOK_ARRAY}};
+ $this->{BOOKS}{$book->{name}} = $book;
+ push @{$this->{BOOK_ARRAY}}, $book->{name};
+ }
+ }
+}
+
+sub get_books {
+ my $this = shift;
+ $this->_initialize_book_list();
+
+ return @{$this->{BOOK_ARRAY}};
+}
+
+sub get_num_chapters {
+ my $this = shift;
+ $this->_initialize_book_list();
+
+ my ($book) = @_;
+ $book = $this->_canonicalize_book($book);
+ return $this->{BOOKS}{$book}{num_chapters};
+}
+
+sub get_num_verses_list {
+ my $this = shift;
+ $this->_initialize_book_list();
+
+ my ($book) = @_;
+ $book = $this->_canonicalize_book($book);
+ return @{$this->{BOOKS}{$book}{chapter_maxes}};
+}
+
+sub get_testament {
+ my $this = shift;
+ $this->_initialize_book_list();
+
+ my ($book) = @_;
+ $book = $this->_canonicalize_book($book);
+ return $this->{BOOKS}{$book}{testament_num} ? "NT" : "OT";
+}
+
+sub get_book_num {
+ my $this = shift;
+ $this->_initialize_book_list();
+
+ my ($book) = @_;
+ $book = $this->_canonicalize_book($book);
+ return $this->{BOOKS}{$book}{book_num};
+}
+
+sub get_iterator {
+ my $this = shift;
+ $this->_initialize_book_list();
+
+ my ($verse) = @_;
+ my $retval = new Sword::VerseIterator($this->{MOD_NAME});
+ $retval->go_to_verse($verse) if $verse;
+ return $retval;
+}
+
+sub get_verse {
+ my $this = shift;
+ $this->_initialize_book_list();
+
+ my ($verse) = @_;
+ $this->{VI}->go_to_verse($verse);
+ return $this->{VI}->get_verse;
+}
+
+sub search {
+ my $this = shift;
+
+ my ($term) = @_;
+ return $this->{VI}->_search($term);
+}
+
+sub search_verses {
+ my $this = shift;
+
+ my ($term) = @_;
+ return $this->{VI}->_search_verses($term);
+}
+
+sub get_name {
+ my $this = shift;
+
+ return $this->{VI}->_get_module_name();
+}
+
+sub get_description {
+ my $this = shift;
+
+ return $this->{VI}->_get_module_desc();
+}
+
+sub get_type {
+ my $this = shift;
+
+ return $this->{VI}->_get_module_type();
+}
+
+sub _canonicalize_book {
+ my $this = shift;
+ my ($book) = @_;
+ $this->_initialize_book_list();
+ return $book if $this->{BOOKS}{$book};
+ $this->{VI}->set_book($book);
+ return $this->{VI}->get_book();
+}
+
+
+# Verse stuff
+
+sub verse_greater {
+ my $this = shift;
+
+ my ($verse1, $verse2) = @_;
+ # Problem w/ sword comparing NT and OT?
+ #return $this->{VI}->_verse_greater($verse1, $verse2);
+
+ return -1 if ! $this->{VI}->go_to_verse($verse1);
+ my $chap1 = $this->{VI}->get_chapter_num();
+ my $verse_num1 = $this->{VI}->get_verse_num();
+ my $book_struct_1 = $this->{BOOKS}{$this->{VI}->get_book()};
+
+ return -1 if ! $this->{VI}->go_to_verse($verse2);
+ my $chap2 = $this->{VI}->get_chapter_num();
+ my $verse_num2 = $this->{VI}->get_verse_num();
+ my $book_struct_2 = $this->{BOOKS}{$this->{VI}->get_book()};
+
+ return 1 if $book_struct_1->{real_book_num} > $book_struct_2->{real_book_num};
+ return 0 if $book_struct_1->{real_book_num} < $book_struct_2->{real_book_num};
+ return 1 if $chap1 > $chap2;
+ return 0 if $chap1 < $chap2;
+ return 1 if $verse_num1 > $verse_num2;
+ return 0 if $verse_num1 < $verse_num2;
+ return 0;
+}
+
+# This method assumes that the lists are sorted.
+sub union_verse_list {
+ my $this = shift;
+
+ my ($list1, $list2) = @_;
+ my @retval;
+
+ my $i1 = 0;
+ my $i2 = 0;
+ my $val;
+ while($i1 < @{$list1} || $i2 < @{$list2}) {
+ if($i1 < @{$list1}) {
+ if($i2 < @{$list2} && $this->verse_greater($list1->[$i1], $list2->[$i2])) {
+ $val = $list2->[$i2];
+ } else {
+ $val = $list1->[$i1];
+ }
+ } else {
+ $val = $list2->[$i2];
+ }
+
+ push @retval, $val;
+
+ # Move past duplicates
+ while($i1 < @{$list1} && $list1->[$i1] eq $val) {
+ $i1++;
+ }
+ while($i2 < @{$list2} && $list2->[$i2] eq $val) {
+ $i2++;
+ }
+ }
+
+ return @retval;
+}
+
+
+# This method assumes that the lists are sorted.
+sub intersect_verse_list {
+ my $this = shift;
+
+ my ($list1, $list2) = @_;
+ my @retval;
+
+ my $i1 = 0;
+ my $i2 = 0;
+ my $val;
+ while($i1 < @{$list1} && $i2 < @{$list2}) {
+ if($list1->[$i1] eq $list2->[$i2]) {
+ $val = $list1->[$i1];
+ push @retval, $list1->[$i1];
+ } elsif($this->verse_greater($list1->[$i1], $list2->[$i2])) {
+ $val = $list2->[$i2];
+ } else {
+ $val = $list1->[$i1];
+ }
+
+ # Move past duplicates
+ while($i1 < @{$list1} && $list1->[$i1] eq $val) {
+ $i1++;
+ }
+ while($i2 < @{$list2} && $list2->[$i2] eq $val) {
+ $i2++;
+ }
+ }
+
+ return @retval;
+}
+
+# XXX this is somewhat inefficient right now (though not as bad as intersect)
+sub union_verse_range {
+ my $this = shift;
+ my ($list1, $list2) = @_;
+
+ my @full_list = (@{$list1}, @{$list2});
+ @full_list = $this->sort_verse_range(@full_list);
+ return $this->condense_verse_range(@full_list);
+}
+
+# XXX this is inefficient as heck right now
+sub intersect_verse_range {
+ my $this = shift;
+ my ($list1, $list2) = @_;
+
+ my @vlist1 = $this->expand_verse_range(@{$list1});
+ my @vlist2 = $this->expand_verse_range(@{$list2});
+
+ my @retval = $this->intersect_verse_list(\@vlist1, \@vlist2);
+
+ return $this->condense_verse_range(@retval);
+}
+
+sub _parse_verse_ref {
+ my $this = shift;
+
+ my ($verse_ref, $interpret_as_chapter) = @_;
+
+ return ("", -1, -1) if(!$verse_ref);
+
+ if (! ($verse_ref =~ /^\s*(.*[A-Za-z])?\s*(\d*\s*:?\s*\d*)\s*$/)) {
+ die " >> No book, chapter or verse found ($verse_ref).\n";
+ }
+
+ my $book = $1 ? $this->_canonicalize_book($1) : "";
+ my $num_ref = $2;
+ $num_ref =~ s/\s*//g;
+ return ($book, -1, -1) if ! $num_ref;
+ print " >> Bad numeric reference ($num_ref).\n" if ! ($num_ref =~ /^(\d+):?(\d*)$/);
+ return ($book, -1, $1) if ! $book && ! $2 && ! $interpret_as_chapter;
+ return ($book, $1, -1) if ! $2;
+ return ($book, $1, $2);
+}
+
+sub parse_verse_range {
+ my $this = shift;
+
+ my ($verse_list, $include_zeroes, $split_books, $default_book) = @_;
+
+ my @retval;
+
+ #
+ # The default book to use if the person decides to specify just
+ # chapters and verses. If the person specifies a book in the
+ # query string, that is the book that will be used thereafter.
+ #
+ my $prev_book = $default_book ? $default_book : "Genesis";
+ #
+ # Note that you can't specify a verse without first having specified
+ # a chapter (at some point), so this value won't be used.
+ #
+ my $prev_chapter = $include_zeroes ? 0 : 1;
+
+ foreach my $outer_part (split(/;/, $verse_list)) {
+ my $interpret_as_chapter = 1;
+ foreach my $part (split(/,/, $outer_part)) {
+ die "Too many dashes or nothing in front of the dash: $part" if !($part =~ /^([^-]+)-?([^-]*)$/);
+
+ #
+ # Get first verse part
+ #
+ my ($book1, $chap1, $verse1) = $this->_parse_verse_ref($1, $interpret_as_chapter);
+
+ # Save the specified book/chapter/verse.
+ my ($orig_book2, $orig_chap2, $orig_verse2) = ($book1, $chap1, $verse1);
+ # Start interpreting raw numbers as chapters if book was specified.
+ $interpret_as_chapter = 1 if $book1;
+ # Start interpreting raw numbers as verses if verse was specified.
+ $interpret_as_chapter = 0 if $verse1 != -1;
+
+ #
+ # Figure out the implied parts from the parts given
+ #
+ # book: chapter 1, verse 1
+ # book+chapter: verse 1
+ # book+verse: impossible
+ # book+chapter+verse: nothing
+ # chapter: prev. book, verse 1
+ # chapter+verse: prev. book
+ # verse: prev. book, prev. chapter
+ # nothing: impossible
+ #
+ # TRANSLATION:
+ # BOOK: prev. book
+ # CHAPTER: chapter 1 if book specified, prev. chapter if no book specified
+ # VERSE: verse 1
+ #
+ $chap1 = ($include_zeroes ? 0 : 1) if $book1 && $chap1 == -1;
+ $book1 = $prev_book if !$book1;
+ $chap1 = $prev_chapter if $chap1 == -1;
+ $verse1 = ($include_zeroes ? 0 : 1) if $verse1 == -1;
+
+ #
+ # Verify chapter/verse is in range
+ #
+ if($chap1 > $this->{BOOKS}{$book1}{num_chapters}) {
+ die "$book1 $chap1:$verse1 invalid: $chap1 is not a chapter in $book1 (valid chapters are 1-" . $this->{BOOKS}{$book1}{num_chapters} . ")";
+ }
+ if($verse1 > @{$this->{BOOKS}{$book1}{chapter_maxes}}[$chap1 - 1]) {
+ die "$book1 $chap1:$verse1 invalid: $verse1 is not a verse in $book1 $chap1 (valid chapters are 1-" . @{$this->{BOOKS}{$book1}{chapter_maxes}}[$chap1 - 1] . ")";
+ }
+
+
+ #
+ # Get second verse part
+ #
+ my ($book2, $chap2, $verse2) = $this->_parse_verse_ref($2, $interpret_as_chapter);
+
+ #
+ # Copy any elements specified from the first one into the second.
+ # "Genesis" = "Genesis-Genesis"
+ # "4:9" = "4:9-4:9"
+ # "5:1-12" = "5:1-5:12"
+ # "Exodus 4:8-Leviticus" = "Exodus 4:8-Leviticus"
+ #
+ if(!$book2) {
+ $book2 = $orig_book2;
+ if($chap2 == -1) {
+ $chap2 = $orig_chap2;
+ if($verse2 == -1) {
+ $verse2 = $orig_verse2;
+ }
+ }
+ }
+
+ #
+ # Figure out the implied parts from the parts given
+ #
+ # book: last chapter, last verse
+ # book+chapter: last verse
+ # book+verse: impossible
+ # book+chapter+verse: nothing
+ # chapter: same book, last verse
+ # chapter+verse: same book
+ # verse: same book, same chapter
+ # nothing: impossible (elements would be copied from first part)
+ #
+ # TRANSLATION:
+ # BOOK: same book
+ # CHAPTER: last chapter if book specified, same chapter if no book specified
+ # VERSE: last verse
+ #
+ $chap2 = $chap1 if !$book2 && $chap2 == -1;
+ $book2 = $book1 if !$book2;
+ $chap2 = $this->{BOOKS}{$book2}{num_chapters} if $chap2 == -1;
+ $verse2 = @{$this->{BOOKS}{$book2}{chapter_maxes}}[$chap2 - 1] if $verse2 == -1;
+
+ #
+ # Verify chapter/verse is in range
+ #
+ if($chap2 > $this->{BOOKS}{$book2}{num_chapters}) {
+ die "$book2 $chap2:$verse2 invalid: $chap2 is not a chapter in $book2 (valid chapters are 1-" . $this->{BOOKS}{$book2}{num_chapters} . ")";
+ }
+ if($verse2 > @{$this->{BOOKS}{$book2}{chapter_maxes}}[$chap2 - 1]) {
+ die "$book2 $chap2:$verse2 invalid: $verse2 is not a verse in $book2 $chap2 (valid chapters are 1-" . @{$this->{BOOKS}{$book2}{chapter_maxes}}[$chap2 - 1] . ")";
+ }
+
+ #print " > $book1 $chap1:$verse1 - $book2 $chap2:$verse2\n";
+
+ # Save previous book/chapter
+ $prev_book = $book2;
+ $prev_chapter = $chap2;
+
+ if ($this->verse_greater("$book1 $chap1:$verse1", "$book2 $chap2:$verse2")) {
+ die "Range $book1 $chap1:$verse1 - $book2 $chap2:$verse2 invalid: second verse must be the same or higher than the first verse.";
+ }
+
+ if(! $split_books || $book1 eq $book2) {
+ push @retval, [ "$book1 $chap1:$verse1", "$book2 $chap2:$verse2" ];
+ } else {
+ # First book
+ my $last_chapter = $this->{BOOKS}{$book1}{num_chapters};
+ push @retval, [ "$book1 $chap1:$verse1", "$book1 $last_chapter:" . @{$this->{BOOKS}{$book1}{chapter_maxes}}[$last_chapter - 1] ];
+
+ # Middle books
+ for(my $i=$this->{BOOKS}{$book1}{real_book_num}+1; $i<$this->{BOOKS}{$book2}{real_book_num}; $i++) {
+ my $middle_book = $this->{BOOK_ARRAY}[$i];
+ my $last_chapter = $this->{BOOKS}{$middle_book}{num_chapters};
+ push @retval, [
+ "$middle_book " . ($include_zeroes ? "0:0" : "1:1"),
+ "$middle_book $last_chapter:" . @{$this->{BOOKS}{$middle_book}{chapter_maxes}}[$last_chapter - 1]
+ ];
+ }
+
+ # Last book
+ push @retval, [ "$book2 " . ($include_zeroes ? "0:0" : "1:1"), "$book2 $chap2:$verse2" ];
+ }
+ }
+ }
+
+ return @retval;
+};
+
+sub next_verse {
+ my $this = shift;
+
+ my ($verse) = @_;
+ $this->{VI}->go_to_verse($verse);
+ $this->{VI}->next;
+ return $this->{VI}->get_key;
+}
+
+sub prev_verse {
+ my $this = shift;
+
+ my ($verse) = @_;
+ $this->{VI}->go_to_verse($verse);
+ $this->{VI}->prev;
+ return $this->{VI}->get_key;
+}
+
+sub parse_verse {
+ my $this = shift;
+
+ my ($verse) = @_;
+
+ $verse =~ /^(.*[A-Za-z])\s*(\d+)\s*:\s*(\d+)\s*$/;
+ return ($this->_canonicalize_book($1), $2, $3);
+}
+
+sub sort_verse_list {
+ my $this = shift;
+
+ my @verse_list = @_;
+ return sort { ($a eq $b) ? 0 : ($this->verse_greater($a, $b) ? 1 : -1) } @verse_list;
+}
+
+sub _compare_range {
+ my $this = shift;
+
+ my ($a, $b) = @_;
+ if($a->[0] eq $b->[0]) {
+ if($a->[1] eq $b->[1]) {
+ return 0;
+ } else {
+ return ($this->verse_greater($a->[1], $b->[1]) ? 1 : -1);
+ }
+ } else {
+ return ($this->verse_greater($a->[0], $b->[0]) ? 1 : -1);
+ }
+}
+
+sub sort_verse_range {
+ my $this = shift;
+
+ my @verse_range = @_;
+ return sort { $this->_compare_range($a, $b) } @verse_range;
+}
+
+sub _as_verse_range {
+ # THIS IS NOT AN OBJECT METHOD
+ return ref($_[0]) ? @{$_[0]} : ($_[0], $_[0]);
+}
+
+# This function will normalize an existing verse range or create a new one from a verse list.
+# This function assumes verses are in order (by lower part of range).
+# XXX This does not merge stuff with zeroes very well, I suspect.
+sub condense_verse_range {
+ my $this = shift;
+ my @verse_range = @_;
+ my @retval;
+
+ for(my $i=0;$i<@verse_range;$i++) {
+ my ($new_low, $new_high) = _as_verse_range($verse_range[$i]);
+ my $i2;
+ for($i2=$i+1; $i2<@verse_range; $i2++) {
+ my ($vr2_low, $vr2_high) = _as_verse_range($verse_range[$i2]);
+
+ # Check if it's 1 above the current verse and not in the same book
+ my $next_verse = $this->next_verse($new_high);
+ if($next_verse eq $vr2_low) {
+ my ($high_book) = $this->parse_verse($new_high);
+ my ($vr2_low_book) = $this->parse_verse($vr2_low);
+ last if $high_book ne $vr2_low_book;
+ } elsif($this->verse_greater($vr2_low, $new_high)) {
+ last;
+ }
+
+ $new_high = $vr2_high if $this->verse_greater($vr2_high, $new_high);
+ }
+ push @retval, [ $new_low, $new_high ];
+ $i = $i2 - 1;
+ }
+
+ return @retval;
+}
+
+sub expand_verse_range {
+ my $this = shift;
+ my @verse_range = @_;
+ my @retval;
+
+ foreach my $vr (@verse_range) {
+ my ($vr_low, $vr_high) = _as_verse_range($vr);
+ die "Verse not found in range $vr_low-$vr_high\n" if ! $this->{VI}->go_to_verse($vr_low);
+ do {
+ push @retval, $this->{VI}->get_key;
+ } while($this->{VI}->get_key ne $vr_high && $this->{VI}->next);
+ }
+
+ return @retval;
+}
+
+sub make_verse_range_str {
+ my $this = shift;
+ my @verse_range = @_;
+ my $retval;
+
+ my $prev_book = "";
+ my $prev_chapter = -1;
+ foreach my $vr (@verse_range) {
+ my ($vr_low, $vr_high) = _as_verse_range($vr);
+ my ($book_low, $chapter_low, $verse_low) = $this->parse_verse($vr_low);
+ my ($book_high, $chapter_high, $verse_high) = $this->parse_verse($vr_high);
+ if($book_low ne $prev_book || $book_high ne $book_low) {
+ # New book. Put semicolon and such.
+ $retval .= "; " if $prev_book;
+ $retval .= "$book_low $chapter_low:$verse_low";
+ } elsif($chapter_low != $prev_chapter || $chapter_high != $chapter_low) {
+ # Same book. New chapter.
+ $retval .= ", $chapter_low:$verse_low"
+ } else {
+ $retval .= ",$verse_low";
+ }
+
+ if($book_high ne $book_low) {
+ $retval .= "-$book_high $chapter_high:$verse_high";
+ } elsif($chapter_high != $chapter_low) {
+ $retval .= "-$chapter_high:$verse_high";
+ } elsif($verse_high != $verse_low) {
+ $retval .= "-$verse_high";
+ }
+
+ $prev_book = $book_high;
+ $prev_chapter = $chapter_high;
+ }
+ return $retval;
+}
+
+1;
+
+__END__
+# Below is stub documentation for your module. You better edit it!
+
+=head1 NAME
+
+Sword - Perl extension to grab Bible verses from Sword (http://www.crosswire.org/sword).
+
+=head1 SYNOPSIS
+
+ use Sword;
+ my $mod = new Sword::Module("KJV");
+ my $vi = $mod->get_iterator();
+ do {
+ print $vi->get_key(), " : ", $vi->get_verse(), "\n";
+ } while($vi->next());
+
+
+=head1 DESCRIPTION
+
+=head2 Summary
+
+ There are three basic ways of navigating the Bible with Sword:
+
+ 1. go directly to verses by name and then step through the Bible up and
+ down
+
+ This prints out everything from I John 2:3 to the end of the Bible:
+
+ use Sword;
+ my $mod = new Sword::Module("KJV");
+ my $vi = $mod->get_iterator("I John 2:3");
+ do {
+ print $vi->get_key(), " : ", $vi->get_verse(), "\n";
+ } while($vi->next());
+ # $vi->prev() would go to the beginning of the Bible backwards
+
+
+ 2. Browse by book, chapter and verse
+
+ This prints out the first verse of every book in the Bible:
+
+ use Sword;
+ my $mod = new Sword::Module("KJV");
+ my $vi = $mod->get_iterator();
+ foreach my $book ($mod->get_books()) {
+ $vi->set_book($book);
+ $vi->set_chapter_num(1);
+ $vi->set_verse_num(1);
+ print $vi->get_key(), " : ", $vi->get_verse(), "\n";
+ # You can use get_book, get_chapter_num
+ }
+
+
+ 3. Search for verses
+
+ And of course you can search!  This gets everything in the KJV with the
+ word "sword" in it:
+
+ use Sword;
+ my $mod = new Sword::Module("KJV");
+ foreach my $result ($mod->search("sword")) {
+ print "$result->[0] : $result->[1]\n";
+ }
+
+ This package has several other lesser-known but useful capabilities, as well,
+ including the ability to merge separate verse lists and work with ranges of
+ verses.
+
+
+=head2 PACKAGE Sword
+
+This package contains the generic routines not specific to any module.
+
+=item get_modules([$type])
+
+ my @modules = Sword::get_modules;
+
+Get an array of module names by type. Type is Biblical Texts by default. ALL not supported yet.
+
+=item get_module($module_name)
+
+ my $mod = Sword::get_module("KJV");
+
+Get an actual Sword::Module object using the given module name.
+
+=item get_locales
+
+ my @locales = Sword::get_locales;
+
+Get an array of available locale names
+
+=item set_locale
+
+ Sword::set_locale($locale);
+
+Sets the default locale for book names and verses and such. Subsequent Modules and VerseIterators will be affected.
+
+=item get_verse($verse, [$module_name])
+
+ print Sword::get_verse("Genesis 1:4"), "\n";
+
+Gets a verse from a module, by key. Module name defaults to the first Biblical Text module.
+
+
+=head2 CLASS Sword::Module
+
+ my $mod = Sword::get_module("KJV");
+ my $mod = new Sword::Module("KJV");
+
+Sword::Module represents a sword module, which is really a single text (like KJV or NIV). It is best to use
+Sword::get_module() to get this.
+
+=item new($module_name)
+
+ my $mod = new Sword::Module("KJV");
+
+Get a module object with the specified name HEY.
+
+
+=item get_verse($verse)
+
+ print $mod->get_verse("John 3:16"), "\n";
+
+Get the specifed verse.
+
+=item get_iterator([$verse])
+
+ my $vi = $mod->get_iterator("Malachi 4:6");
+ $vi->next;
+ print "The verse after Malachi 4:6 is ", $vi->get_key, "\n";
+
+Get a Sword::VerseIterator (see appropriate documentation. Assumes Genesis 1:1 if none specified.
+
+=item search($term)
+
+ foreach my $result ($mod->search("hope")) { print "$result->[0] : $result->[1]\n"; }
+
+Search for the specified terms using Sword, and return an array of results. Each result is a reference
+to a 2-element array containing the verse # and the actual verse.
+
+=item search_verses($term)
+
+ foreach my $result ($mod->search_verses("hope")) { print "$result : ", $mod->get_verse($result), "\n"; }
+
+Search for the specified terms using Sword, and return a simple array containing the verse #'s only.
+
+=item verse_greater($verse1, $verse2)
+
+ print "James 1:19 is ", $mod->verse_greater("James 1:19", "Hebrews 11:12") ? "after" : "before", " Hebrews 11:12\n";
+
+Find out whether verse 1 is greater than verse 2.
+Returns -1 on error, 0 for false and 1 for true.
+
+=item next_verse($verse)
+
+ print "The verse after James 1:19 is ", $mod->next_verse("James 1:19"), "\n";
+
+Get the verse after the given verse. This goes past book boundaries.
+
+=item prev_verse($verse)
+
+ print "The verse before James 1:19 is ", $mod->prev_verse("James 1:19"), "\n";
+
+Get the verse before the given verse. This goes past book boundaries.
+
+=item parse_verse($verse)
+
+ my @parsed = $mod->parse_verse("Revelation 4:5"); print "Revelation 4:5 parses to $parsed[0] $parsed[1]:$parsed[2]\n";
+
+Parse the given verse, canonicalizing the book (turning Revelation into "Revelation of John", for example).
+This returns three pieces, the book, the chapter and the verse. It returns 3 undefined values if it fails.
+
+
+=item get_books
+
+ print "Books in the Bible: ", join(", ", $mod->get_books()), "\n";
+
+Get an array of the books in this module. (Currently biblical modules that do not use some books are not supported.
+
+=item get_num_chapters($book)
+
+ for(my $i=0;$i<$mod->get_num_chapters("Genesis");$i++) { print $mod->get_verse("Genesis " . $i+1 . ":1" }
+
+Get the number of chapters in a book.
+
+=item get_num_verses_list($book)
+
+ my @verses_list = $mod->get_num_verses_list("Malachi"); print "Genesis 4 has $verses_list[3] chapters.\n";
+
+Get an array containing the number of verses in each chapter in a book.
+
+=item get_testament($book)
+
+ print "Testament of Malachi is ", $mod->get_testament("Malachi"), "\n";
+
+Returns the testament of a book (NT or OT for New Testament or Old Testament)
+
+=item get_book_num($book)
+
+ print "Malachi is the ", ($mod->get_book_num("Malachi")+1), "th book in the Old Testament.\n";
+
+Get the number of the specified book in its testament (Genesis = 0, Matthew = 0)
+
+
+=item get_name
+
+ print "Module Name: ", $mod->get_name, "\n";
+
+Get the name of the module (e.g. KJV).
+
+=item get_description
+
+ print "Module Description: ", $mod->get_description, "\n";
+
+Get the description of the module.
+
+=item get_type
+
+ print "Module Type: ", $mod->get_type, "\n";
+
+Get the type of the module (e.g. Biblical Texts).
+
+
+=item sort_verse_list(@verse_list)
+
+ my @sorted_list = $mod->sort_verse_list("Acts 1:2", "John 2:3", "Malachi 1:5");
+
+Sort a verse list (an array of verse names like "Acts 1:2") according to book/chapter/verse.
+
+=item union_verse_list($verse_list1, $verse_list2)
+
+ my @list1 = $mod->search_verses("trumpet");
+ my @list2 = $mod->search_verses("horn");
+ my @new_verse_list = $mod->union_verse_list(\@list1, \@list2);
+
+Take two arrays of verse names ("James 1:19", etc.) and merges them together, removing duplicates.
+(Tip: union a list with an empty list to just remove duplicates.)
+
+This assumes the two lists are sorted.
+
+=item intersect_verse_list($verse_list1, $verse_list2)
+
+ my @list1 = $mod->search_verses("hope");
+ my @list2 = $mod->search_verses("love");
+ my @new_verse_list = $mod->intersect_verse_list(\@list1, \@list2);
+
+Take two arrays of verse names ("James 1:19", etc.), takes all the verses in common, and puts them
+into a new list, removing duplicates.
+
+This assumes the two lists are sorted.
+
+=item parse_verse_range($verse_range_str, [$include_zeroes, $split_books, $default_book])
+
+ my @verse_ranges = $mod->parse_verse_range("James 1:19-24;Genesis 1-3;Exodus 4:2-4,6;Haggai");
+
+Parse a list of verses and turn it into a verse range structure, which is a list of lists, each
+containing 2 elements, the lower and then the upper bound, like so (this is the result of the
+above example):
+
+ ( [ "James 1:19", "James 1:24" ],
+ [ "Genesis 1:1", "Genesis 3:24" ],
+ [ "Exodus 4:2", "Exodus 4:4" ],
+ [ "Exodus 4:6", "Exodus 4:6" ],
+ [ "Haggai 1:1", "Haggai 2:23 ] )
+
+The $include_zeroes parameter specifies whether the default chapter/verse should be 1 or 0
+when it is unspecified. It will be 1 if include_zeroes is false or unspecified, or 0 if it
+is true.
+
+The $split_books parameter specifies what happens when the user specifies multiple books
+(e.g. "Genesis 20:12-Exodus 2:2"). Normally the system just creates one range entry
+( "Genesis 20:12", "Exodus 2:2" ). With this turned on the system creates a range entry
+for each book ("Genesis 20:12", "Genesis 50:26" and "Exodus 1:1", "Exodus 2:2"). This
+works even across multiple books (i.e. "Genesis-Revelation").
+
+=item condense_verse_range(@verse_range_or_list)
+
+ my @condensed_range = $mod->condense_verse_range($mod->parse_verse_range("Acts 8:1; Acts 8:2-5; Genesis 2:3-4,2-5"));
+ my @condensed_range = $mod->condense_verse_range("Acts 1:1", "Acts 1:2", "Acts 1:3", "James 1:19");
+
+Condense an existing range down to its minimum range (put overlapping or adjacent verses together).
+
+This assumes the verse range or list is sorted.
+
+=item sort_verse_range(@verse_range)
+
+ my @sorted_verse_range = $mod->sort_verse_range($mod->parse_verse_range("Acts 8:2-4,1; Acts 9; Genesis 2"));
+
+Sort a verse range (see parse_verse_range for structure) according to low end of
+range (low to high) and then size of range (from smallest to largest). This does not
+remove duplicates.
+
+=item union_verse_range($verse_range1, $verse_range2)
+
+ my @range1 = $mod->parse_verse_range("John 1:2-12,2:1-4,3:6-7,9-10");
+ my @range2 = $mod->parse_verse_range("John 1:1-2,2:2,4-6,3:5-8");
+ my @new_verse_range = $mod->union_verse_range(\@range1, \@range2);
+
+Take two verse range lists (see parse_verse_range for structure) and merges them together,
+removing duplicates. (Tip: union a range with an empty list to simply remove duplicates.)
+
+This assumes the two ranges are sorted.
+
+=item intersect_verse_range($verse_list1, $verse_list2)
+
+ my @range1 = $mod->parse_verse_range("John 1:2-12,2:1-4,3:6-7,9-10");
+ my @range2 = $mod->parse_verse_range("John 1:1-2,2:2,4-6,3:5-8");
+ my @new_verse_range = $mod->intersect_verse_range(\@range1, \@range2);
+
+Take two verse range lists (see parse_verse_range for structure), takes all the verses in common,
+and puts them into a new range set, removing duplicates.
+
+This assumes the two ranges are sorted.
+=item expand_verse_range(@verse_range)
+
+ my @verse_list = $mod->expand_verse_range($mod->parse_verse_range("Acts 8:2-4,1; Acts 9"));
+
+Take a verse range (see parse_verse_range for structure) and turn it into a simple list of verses.
+
+=item make_verse_range_str(@verse_range)
+
+ my @verse_list = $mod->make_verse_range_str($mod->parse_verse_range("James 1:19-24;Genesis 1-3;Exodus 4:2-4,6;Haggai"));
+
+Take a verse range (see parse_verse_range for structure) or verse list and turn it into a human-readable
+string suitable to pass into parse_verse_range.
+
+
+=head2 CLASS Sword::VerseIterator
+
+ my $vi = $mod->get_iterator("Genesis 1:1");
+ my $vi = new Sword::VerseIterator("KJV");
+
+VerseIterator provides functions for moving up and down through the Bible more efficiently than get_verse, next_verse and prev_verse in Sword::Module. It is best to get this using Sword::Module->get_iterator($verse).
+
+=item new($module_name)
+
+ my $vi = new Sword::VerseIterator("KJV");
+
+Create a new VerseIterator on the specified module.
+
+
+=item get_verse
+
+ print "Current verse (", $vi->get_key(), ") is ", $vi->get_verse(), "\n";
+
+Get the current verse text (meaning the actual Bible text at that verse).
+
+=item get_key
+
+ print "Current verse (", $vi->get_key(), ") is ", $vi->get_verse(), "\n";
+
+Get the current verse key (e.g. "Malachi 5:5")
+
+=item go_to_verse($verse)
+
+ die "Could not go to Malachi 5:5" if !$vi->go_to_verse("Malachi 5:5");
+
+Go to the specified verse (e.g. "Malachi 5:5").
+Returns 0 on success, nonzero on on failure.
+
+=item next([$how_far])
+
+ die "Could not go to the next verse after " . $vi->get_key if !$vi->next;
+
+Advance the iterator forward through the Bible. how_far (default 1) tells how many verses to go.
+Returns 0 on success, nonzero on on failure.
+
+=item prev([$how_far])
+
+ die "Could not go to the verse before " . $vi->get_key if !$vi->prev;
+
+Advance the iterator backward through the Bible. how_far (default 1) tells how many verses to go.
+Returns 0 on success, nonzero on on failure.
+
+
+=item get_book
+
+ print "Current verse is ", $vi->get_book, " ", $vi->get_chapter_num, ":", $vi->get_verse_num, ".\n";
+
+Get the current book (canonical--i.e. Revelation of John even if you specified Revelation in
+go_to_verse or set_book).
+
+=item get_chapter_num
+
+ print "Current verse is ", $vi->get_book, " ", $vi->get_chapter_num, ":", $vi->get_verse_num, ".\n";
+
+Get the current chapter #.
+
+=item get_verse_num
+
+ print "Current verse is ", $vi->get_book, " ", $vi->get_chapter_num, ":", $vi->get_verse_num, ".\n";
+
+Get the current verse # within the chapter.
+
+=item set_book
+
+ $vi->set_book("Genesis");
+ $vi->set_chapter_num(4);
+ $vi->set_verse_num(5);
+ print $vi->get_key, " : ", $vi->get_verse, "\n";
+
+Set the book the iterator is on. This resets chapter and verse to 1.
+
+=item set_chapter_num
+
+ $vi->set_book("Genesis");
+ $vi->set_chapter_num(4);
+ $vi->set_verse_num(5);
+ print $vi->get_key, " : ", $vi->get_verse, "\n";
+
+Set the chapter in the current book. This resets verse to 1.
+
+=item set_verse_num
+
+ $vi->set_book("Genesis");
+ $vi->set_chapter_num(4);
+ $vi->set_verse_num(5);
+ print $vi->get_key, " : ", $vi->get_verse, "\n";
+
+Set the verse in the current chapter.
+
+
+=item get_module_name
+
+ print "The module we're using is ", $vi->get_module_name, "\n";
+
+Get the name of the module this VerseIterator is going through.
+
+
+=head1 AUTHOR
+
+John Keiser, jkeiser@iname.com
+
+=head1 SEE ALSO
+
+L<perl>.
+
+=cut
diff --git a/bindings/perl/Sword.xs b/bindings/perl/Sword.xs
new file mode 100644
index 0000000..e78c3aa
--- /dev/null
+++ b/bindings/perl/Sword.xs
@@ -0,0 +1,254 @@
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#ifdef __cplusplus
+}
+#endif
+
+#undef list
+
+#include <iostream.h>
+#include <swmgr.h>
+#include <swmodule.h>
+#include <versekey.h>
+#include <localemgr.h>
+
+SWMgr manager;
+
+class VerseIterator {
+public:
+ SWModule * module;
+ VerseKey key;
+ VerseIterator(char * module_name);
+ ~VerseIterator();
+
+ // Iterator info
+ const char * get_module_name() { return module->Name(); }
+
+ // Verse info
+ const char * get_verse() { module->SetKey(key); return (const char*)*module; }
+ const char * get_key() { return key; }
+
+ // Iteration
+ int next(int how_far);
+ int prev(int how_far);
+
+ // Go to verse
+ int go_to_verse(char * verse);
+
+ // Book / Chapter / Verse traversal
+ const char * get_book() { return key.books[key.Testament() - 1][key.Book() - 1].name; }
+ int get_chapter_num() { return key.Chapter(); }
+ int get_verse_num() { return key.Verse(); }
+
+ void set_chapter_num(int chapter_num) { key.Chapter(chapter_num); }
+ void set_verse_num(int verse_num) { key.Verse(verse_num); }
+
+ // Stuff that should go into some sort of Module class
+ char * _get_module_name() { return module->Name(); }
+ char * _get_module_desc() { return module->Description(); }
+ char * _get_module_type() { return module->Type(); }
+ int _verse_greater(char * verse1, char * verse2);
+};
+
+VerseIterator::VerseIterator(char * module_name) {
+ module = manager.Modules[module_name];
+ key = module->Key();
+ key.setLocale(LocaleMgr::systemLocaleMgr.getDefaultLocaleName());
+
+ key = key.LowerBound();
+}
+
+VerseIterator::~VerseIterator() {
+}
+
+int VerseIterator::next(int how_far) {
+ if(key == key.UpperBound()) {
+ return 0;
+ }
+ module->SetKey(key);
+ (*module) += how_far;
+ key = module->Key();
+ return 1;
+}
+
+int VerseIterator::prev(int how_far) {
+ if(key == key.LowerBound()) {
+ return 0;
+ }
+ module->SetKey(key);
+ (*module) -= how_far;
+ key = module->Key();
+ return 1;
+}
+
+int VerseIterator::go_to_verse(char * verse) {
+ int retval = module->SetKey(verse);
+ key = module->Key();
+ return ! retval;
+}
+
+int VerseIterator::_verse_greater(char * verse1, char * verse2) {
+ if(module->SetKey(verse1)) {
+ return -1;
+ }
+ SWKey key1 = module->Key();
+ if(module->SetKey(verse2)) {
+ return -1;
+ }
+ SWKey key2 = module->Key();
+ return key1 > key2;
+}
+
+MODULE = Sword PACKAGE = Sword
+
+void
+get_modules(char * textType = "Biblical Texts")
+PPCODE:
+ ModMap::iterator modIterator;
+ for (modIterator = manager.Modules.begin(); modIterator != manager.Modules.end(); modIterator++) {
+ SWModule *module = (*modIterator).second;
+ if(!strcmp(module->Type(),textType)) {
+ string s = (*modIterator).first;
+ XPUSHs(sv_2mortal(newSVpv(s.c_str(), s.length())));
+ }
+ }
+
+void
+get_locales()
+PPCODE:
+ LocaleMgr lm = LocaleMgr::systemLocaleMgr;
+ list<string> loclist = lm.getAvailableLocales();
+ list<string>::iterator li = loclist.begin();
+ for (;li != loclist.end(); li++) {
+ XPUSHs(sv_2mortal(newSVpv(li->c_str(), li->length())));
+ }
+
+void
+set_locale(char * locale)
+CODE:
+ LocaleMgr::systemLocaleMgr.setDefaultLocaleName(locale);
+
+
+MODULE = Sword PACKAGE = Sword::VerseIterator
+
+VerseIterator *
+VerseIterator::new(char * module_name)
+
+void
+VerseIterator::DESTROY()
+
+const char *
+VerseIterator::get_module_name()
+
+const char *
+VerseIterator::get_verse()
+
+const char *
+VerseIterator::get_key()
+
+
+int
+VerseIterator::next(int how_far = 1)
+
+int
+VerseIterator::prev(int how_far = 1)
+
+
+int
+VerseIterator::go_to_verse(char * verse)
+
+
+const char *
+VerseIterator::get_book()
+
+int
+VerseIterator::get_chapter_num()
+
+int
+VerseIterator::get_verse_num()
+
+void
+VerseIterator::set_chapter_num(int chapter_num)
+
+void
+VerseIterator::set_verse_num(int verse_num)
+
+
+void
+VerseIterator::_get_books()
+PPCODE:
+
+ for(int testament_num=0;testament_num<2;testament_num++) {
+ for(int book_num=0;book_num<THIS->key.BMAX[testament_num];book_num++) {
+ int num_chapters = THIS->key.books[testament_num][book_num].chapmax;
+ HV * book_info = newHV();
+ hv_store(book_info, "name", 4, newSVpv(THIS->key.books[testament_num][book_num].name, 0), 0);
+ hv_store(book_info, "num_chapters", 12, newSVnv(num_chapters), 0);
+ hv_store(book_info, "testament_num", 13, newSVnv(testament_num), 0);
+ hv_store(book_info, "book_num", 8, newSVnv(book_num), 0);
+ AV * chapter_maxes = newAV();
+ for(int i=0;i<num_chapters;i++) {
+ av_push(chapter_maxes, newSVnv(THIS->key.books[testament_num][book_num].versemax[i]));
+ }
+ hv_store(book_info, "chapter_maxes", 13, newRV_noinc((SV *)chapter_maxes), 0);
+ XPUSHs(newRV_noinc((SV *)book_info));
+ }
+ }
+
+void
+VerseIterator::_search(char * searchStr)
+PPCODE:
+ ListKey &searchResults = THIS->module->Search(searchStr);
+
+ searchResults.Persist(true);
+
+ for(int i=0;i<searchResults.Count();i++) {
+ SWKey * key = searchResults.GetElement(i);
+ AV * search_result = newAV();
+ av_push(search_result, newSVpv(*key, 0));
+ THIS->module->SetKey(key);
+ av_push(search_result, newSVpv(*THIS->module, 0));
+ XPUSHs(newRV_noinc((SV *)search_result));
+ }
+
+void
+VerseIterator::_search_verses(char * searchStr)
+PPCODE:
+ ListKey &searchResults = THIS->module->Search(searchStr);
+
+ searchResults.Persist(true);
+
+ for(int i=0;i<searchResults.Count();i++) {
+ SWKey * key = searchResults.GetElement(i);
+ XPUSHs(newSVpv(*key, 0));
+ }
+
+void
+VerseIterator::_parse_verse_list(char * verseList)
+PPCODE:
+ ListKey searchResults = THIS->key.ParseVerseList(verseList, "Genesis 1:1", false);
+
+ searchResults.Persist(true);
+
+ for(int i=0;i<searchResults.Count();i++) {
+ SWKey * key = searchResults.GetElement(i);
+ XPUSHs(newSVpv(*key, 0));
+ }
+
+char *
+VerseIterator::_get_module_name()
+
+char *
+VerseIterator::_get_module_desc()
+
+char *
+VerseIterator::_get_module_type()
+
+int
+VerseIterator::_verse_greater(char * verse1, char * verse2)
+
diff --git a/bindings/perl/perlobject.map b/bindings/perl/perlobject.map
new file mode 100644
index 0000000..4795c47
--- /dev/null
+++ b/bindings/perl/perlobject.map
@@ -0,0 +1,106 @@
+# "perlobject.map" Dean Roehrich, version 19960302
+#
+# TYPEMAPs
+#
+# HV * -> unblessed Perl HV object.
+# AV * -> unblessed Perl AV object.
+#
+# INPUT/OUTPUT maps
+#
+# O_* -> opaque blessed objects
+# T_* -> opaque blessed or unblessed objects
+#
+# O_OBJECT -> link an opaque C or C++ object to a blessed Perl object.
+# T_OBJECT -> link an opaque C or C++ object to an unblessed Perl object.
+# O_HvRV -> a blessed Perl HV object.
+# T_HvRV -> an unblessed Perl HV object.
+# O_AvRV -> a blessed Perl AV object.
+# T_AvRV -> an unblessed Perl AV object.
+
+TYPEMAP
+
+HV * T_HvRV
+AV * T_AvRV
+
+
+######################################################################
+OUTPUT
+
+# The Perl object is blessed into 'CLASS', which should be a
+# char* having the name of the package for the blessing.
+O_OBJECT
+ sv_setref_pv( $arg, CLASS, (void*)$var );
+
+T_OBJECT
+ sv_setref_pv( $arg, Nullch, (void*)$var );
+
+# Cannot use sv_setref_pv() because that will destroy
+# the HV-ness of the object. Remember that newRV() will increment
+# the refcount.
+O_HvRV
+ $arg = sv_bless( newRV((SV*)$var), gv_stashpv(CLASS,1) );
+
+T_HvRV
+ $arg = newRV((SV*)$var);
+
+# Cannot use sv_setref_pv() because that will destroy
+# the AV-ness of the object. Remember that newRV() will increment
+# the refcount.
+O_AvRV
+ $arg = sv_bless( newRV((SV*)$var), gv_stashpv(CLASS,1) );
+
+T_AvRV
+ $arg = newRV((SV*)$var);
+
+
+######################################################################
+INPUT
+
+O_OBJECT
+ if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
+ $var = ($type)SvIV((SV*)SvRV( $arg ));
+ else{
+ warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
+ XSRETURN_UNDEF;
+ }
+
+T_OBJECT
+ if( SvROK($arg) )
+ $var = ($type)SvIV((SV*)SvRV( $arg ));
+ else{
+ warn( \"${Package}::$func_name() -- $var is not an SV reference\" );
+ XSRETURN_UNDEF;
+ }
+
+O_HvRV
+ if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVHV) )
+ $var = (HV*)SvRV( $arg );
+ else {
+ warn( \"${Package}::$func_name() -- $var is not a blessed HV reference\" );
+ XSRETURN_UNDEF;
+ }
+
+T_HvRV
+ if( SvROK($arg) && (SvTYPE(SvRV($arg)) == SVt_PVHV) )
+ $var = (HV*)SvRV( $arg );
+ else {
+ warn( \"${Package}::$func_name() -- $var is not an HV reference\" );
+ XSRETURN_UNDEF;
+ }
+
+O_AvRV
+ if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVAV) )
+ $var = (AV*)SvRV( $arg );
+ else {
+ warn( \"${Package}::$func_name() -- $var is not a blessed AV reference\" );
+ XSRETURN_UNDEF;
+ }
+
+T_AvRV
+ if( SvROK($arg) && (SvTYPE(SvRV($arg)) == SVt_PVAV) )
+ $var = (AV*)SvRV( $arg );
+ else {
+ warn( \"${Package}::$func_name() -- $var is not an AV reference\" );
+ XSRETURN_UNDEF;
+ }
+
diff --git a/bindings/perl/test.pl b/bindings/perl/test.pl
new file mode 100644
index 0000000..0a76142
--- /dev/null
+++ b/bindings/perl/test.pl
@@ -0,0 +1,163 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use Test;
+BEGIN { plan tests => 1 };
+use Sword;
+use Devel::Peek;
+ok(1); # If we made it this far, we're ok.
+#########################
+
+# Insert your test code below, the Test module is use()ed here so read
+# its man page ( perldoc Test ) for help writing this test script.
+
+my $test_name;
+my $old_test_name = -1;
+my $sub_test_num;
+sub print_if {
+ if($test_name ne $old_test_name) {
+ $old_test_name = $test_name;
+ $sub_test_num = 1;
+ } else {
+ $sub_test_num++;
+ }
+ print "not " if ! $_[0];
+ print "ok $test_name-$sub_test_num\n";
+}
+
+$test_name = "list";
+my @modules = Sword::get_modules;
+print_if (@modules > 0);
+$test_name = "get_verse";
+# Check get_verse
+print_if Sword::get_verse("James 1:19", $module_name) =~ /slow/i;
+$test_name = "init";
+my $module_name = $modules[0];
+my $b = new Sword::VerseIterator($module_name);
+# Make sure it initialized
+print_if $b;
+# Make sure it's initially Genesis 1:1
+print_if $b->get_key eq "Genesis 1:1" && $b->get_verse =~ /beginning/i;
+$test_name = "iter";
+# Test prev/next
+print_if $b->next(2) && $b->prev && $b->next(2);
+print_if $b->get_key eq "Genesis 1:4" && $b->get_verse =~ /darkness/i;
+# Test prev going back before beginning
+print_if $b->prev(4);
+print_if $b->get_key eq "Genesis 1:1" && $b->get_verse =~ /beginning/i;
+# Test failing prev
+print_if ! $b->prev;
+# Test go to verse
+print_if $b->go_to_verse("Revelation 4:11") && $b->get_key eq "Revelation of John 4:11";
+
+$test_name = "iter-thread";
+my $c = new Sword::VerseIterator($module_name);
+# Test multiple keys at once
+print_if $c && $c->get_key eq "Genesis 1:1" && $c->get_verse =~ /beginning/i;
+print_if $b->get_key eq "Revelation of John 4:11" && $b->get_verse =~ /worthy/i;
+
+$test_name = "iter-parts";
+# Test book/chapter/verse get
+print_if $b->get_key eq $b->get_book() . " " . $b->get_chapter_num . ":" . $b->get_verse_num;
+print_if $c->get_key eq $c->get_book() . " " . $c->get_chapter_num . ":" . $c->get_verse_num;
+# Test book/chapter/verse set
+$b->set_chapter_num(8);
+$b->set_verse_num(6);
+print_if $b->get_key eq "Revelation of John 8:6";
+$b->set_book("Genesis");
+$b->set_chapter_num(1);
+$b->set_verse_num(4);
+print_if $b->get_key eq "Genesis 1:4" && $b->get_verse =~ /darkness/i;
+$b->set_book("Revelation of John");
+$b->set_chapter_num(4);
+$b->set_verse_num(11);
+print_if $b->get_key eq "Revelation of John 4:11" && $b->get_verse =~ /worthy/i;
+
+$test_name = "module";
+my $module = Sword::get_module($module_name);
+# Test module attributes
+print_if $module->get_name eq $module_name;
+print_if $module->get_description;
+print_if $module->get_type eq "Biblical Texts";
+# Test get iterator
+my $d = $module->get_iterator();
+print_if $d->get_key eq "Genesis 1:1" && $d->get_verse =~ /beginning/i;
+my $e = $module->get_iterator("James 1:19");
+print_if $e->get_key eq "James 1:19" && $e->get_verse =~ /slow/i;
+# Test get_verse
+print_if $module->get_verse("Genesis 1:4") =~ /darkness/i;
+# Test verse module stuff
+my $retval = $module->verse_greater("James 3:4", "Malachi 4:5");
+print_if $retval != -1 && $retval;
+$retval = $module->verse_greater("Genesis 8:10", "Malachi 4:5");
+print_if $retval != -1 && ! $retval;
+$retval = $module->verse_greater("Genesis 12:1", "Genesis 12:1");
+print_if $retval != -1 && ! $retval;
+print_if $module->next_verse("Malachi 4:6") eq "Matthew 1:1";
+print_if $module->prev_verse("Matthew 1:1") eq "Malachi 4:6";
+print_if join(" ... ", $module->parse_verse("Revelation of John 21:12")) eq "Revelation of John ... 21 ... 12";
+
+$test_name = "books";
+my @books = $module->get_books;
+# Test get books list
+print_if @books == 66;
+print_if $books[0] eq "Genesis" && $books[27] eq "Hosea" && $books[65] eq "Revelation of John";
+# Test if # chapters is working
+print_if $module->get_num_chapters("Hosea") == 14;
+# Test testament stuff
+print_if $module->get_testament("Hosea") eq "OT" && $module->get_testament("Mark") eq "NT";
+# Test max verses
+my @verses_list = $module->get_num_verses_list("I Kings");
+print $verses_list[4] == 34;
+
+$test_name = "search";
+# Test search
+my $found = 0;
+foreach my $result ($module->search("pure")) {
+ $found = 1 if $result->[0] eq "I John 3:3";
+}
+print_if $found;
+$found = 0;
+foreach my $result ($module->search_verses("pure")) {
+ $found = 1 if $result eq "I John 3:3";
+}
+print_if $found;
+
+
+$test_name = "range";
+my $output_str;
+my $verse_range_str = "1:5;Judges 8:12-15,17,9:2-3;18;John 4-5:4,Revelation 5;Joshua 4-5;Exodus-Leviticus";
+print_if $module->make_verse_range_str($module->parse_verse_range($verse_range_str)) eq "Genesis 1:5; Judges 8:12-15,17, 9:2-3, 18:1-31; John 4:1-5:4; Revelation of John 5:1-14; Joshua 4:1-5:15; Exodus 1:1-Leviticus 27:34";
+print_if $module->make_verse_range_str($module->parse_verse_range($verse_range_str, 0, 0, "Romans")) eq "Romans 1:5; Judges 8:12-15,17, 9:2-3, 18:1-31; John 4:1-5:4; Revelation of John 5:1-14; Joshua 4:1-5:15; Exodus 1:1-Leviticus 27:34";
+print_if $module->make_verse_range_str($module->parse_verse_range($verse_range_str, 1)) eq "Genesis 1:5; Judges 8:12-15,17, 9:2-3, 18:0-31; John 4:0-5:4; Revelation of John 5:0-14; Joshua 4:0-5:15; Exodus 0:0-Leviticus 27:34";
+print_if $module->make_verse_range_str($module->parse_verse_range("Luke 9:27-Acts 2:3", 0, 1)) eq "Luke 9:27-24:53; John 1:1-21:25; Acts 1:1-2:3";
+
+my @verse_range = $module->parse_verse_range("Acts 21:8,4-6,40-22:1;Acts 28:31-Romans 1:1;Malachi 2:2");
+my @verse_list = $module->expand_verse_range(@verse_range);
+print_if $module->make_verse_range_str(@verse_list) eq "Acts 21:8,4,5,6,40, 22:1, 28:31; Romans 1:1; Malachi 2:2";
+@verse_list = $module->sort_verse_list(@verse_list);
+print_if $module->make_verse_range_str(@verse_list) eq "Malachi 2:2; Acts 21:4,5,6,8,40, 22:1, 28:31; Romans 1:1";
+
+my @sorted_verse_range = $module->sort_verse_range(@verse_range);
+print_if $module->make_verse_range_str(@sorted_verse_range) eq "Malachi 2:2; Acts 21:4-6,8, 21:40-22:1; Acts 28:31-Romans 1:1";
+
+my @difficult_verse_range = $module->parse_verse_range("Acts 4:5-8,4-9,4,28:31-Romans 1:6;Acts 28:30-Romans 1:4;Acts 4:4-12,13-15");
+my @made_verse_range = $module->condense_verse_range($module->sort_verse_range(@difficult_verse_range));
+print_if $module->make_verse_range_str(@made_verse_range) eq "Acts 4:4-15; Acts 28:30-Romans 1:6";
+my @made_verse_list = $module->condense_verse_range($module->sort_verse_list($module->expand_verse_range(@difficult_verse_range)));
+print_if $module->make_verse_range_str(@made_verse_list) eq "Acts 4:4-15, 28:30-31; Romans 1:1-6";
+
+my @verse_list1 = ("John 1:2", "John 3:4", "John 4:5", "John 4:5");
+my @verse_list2 = ("John 1:2", "John 3:4", "John 3:4", "John 7:8");
+print_if $module->make_verse_range_str($module->union_verse_list(\@verse_list1, \@verse_list2)) eq "John 1:2, 3:4, 4:5, 7:8";
+print_if $module->make_verse_range_str($module->intersect_verse_list(\@verse_list1, \@verse_list2)) eq "John 1:2, 3:4";
+
+my @verse_range1 = $module->parse_verse_range("John 1:2-12,2:1-4,3:6-7,9-10");
+my @verse_range2 = $module->parse_verse_range("John 1:1-2,2:2,4-6,3:5-8");
+print_if $module->make_verse_range_str($module->union_verse_range(\@verse_range1, \@verse_range2)) eq "John 1:1-12, 2:1-6, 3:5-10";
+print_if $module->make_verse_range_str($module->intersect_verse_range(\@verse_range1, \@verse_range2)) eq "John 1:2, 2:2,4, 3:6-7";
+
diff --git a/bindings/perl/typemap b/bindings/perl/typemap
new file mode 100644
index 0000000..1a1fe01
--- /dev/null
+++ b/bindings/perl/typemap
@@ -0,0 +1,3 @@
+TYPEMAP
+VerseIterator * O_OBJECT
+const char * T_PV
diff --git a/bindings/swig/Makefile.am b/bindings/swig/Makefile.am
new file mode 100644
index 0000000..45a37ef
--- /dev/null
+++ b/bindings/swig/Makefile.am
@@ -0,0 +1,95 @@
+
+if RUNSWIG
+PERLSWIG=perlswig
+TCLSWIG=tclswig
+PYTHONSWIG=pythonswig
+PHPSWIG=phpswig
+else
+PERLSWIG=
+TCLSWIG=
+PYTHONSWIG=
+PHPSWIG=
+endif
+
+all: $(PERLBUILD) $(TCLBUILD) $(PYTHONBUILD) $(PHPBUILD)
+ echo "built"
+
+perl_make: perl_makebuild
+ cd perl && make
+
+perlswig: sword.i
+ mkdir -p perl
+ $(SWIG) -perl -c++ -shadow -o perl/Sword.cxx -I$(top_srcdir) $(SWORD_INCLUDES) $(top_srcdir)/sword.i
+
+perl_makebuild: $(PERLSWIG)
+ mkdir -p perl
+ echo "writing perl/Makefile.PL"
+ @echo "#! /usr/bin/perl" > perl/Makefile.PL
+ @echo "" >> perl/Makefile.PL
+ @echo "use ExtUtils::MakeMaker;" >> perl/Makefile.PL
+ @echo "" >> perl/Makefile.PL
+ @echo "# See lib/ExtUtils/MakeMaker.pm for details of how to influence" >> perl/Makefile.PL
+ @echo "# the contents of the Makefile that is written." >> perl/Makefile.PL
+ @echo "WriteMakefile(" >> perl/Makefile.PL
+ @echo " 'NAME' => 'Sword'," >> perl/Makefile.PL
+ @echo " 'VERSION' => '$(VERSION)'," >> perl/Makefile.PL
+ @echo " 'INC' => '$(SWORD_INCLUDES)'," >> perl/Makefile.PL
+ @echo " 'DEFINE' => '-DSWIG'," >> perl/Makefile.PL
+ @echo " 'LIBS' => '$(LIB_SWORD) -lz'," >> perl/Makefile.PL
+ @echo " 'PREREQ_PM' => {}, # e.g., Module::Name => 1.1" >> perl/Makefile.PL
+ @echo " ($$] >= 5.005 ? ## Add these new keywords supported since 5.005" >> perl/Makefile.PL
+ @echo " (ABSTRACT => 'Sword Project perl bindings', # retrieve abstract from module" >> perl/Makefile.PL
+ @echo " AUTHOR => 'Sword Project <sword-devel@crosswire.org>') : ())," >> perl/Makefile.PL
+ @echo ");" >> perl/Makefile.PL
+ @echo "" >> perl/Makefile.PL
+ @echo "rename 'Makefile', 'Makefile.old' or die \"can't rename Makefile\";" >> perl/Makefile.PL
+ @echo "open(INPUT, '<Makefile.old') or die \"can't open input Makefile.old\";" >> perl/Makefile.PL
+ @echo "open(OUTPUT, '>Makefile') or die \"can't open output Makefile\";" >> perl/Makefile.PL
+ @echo "while (<INPUT>) {" >> perl/Makefile.PL
+ @echo " s/\-lsword/\-lsword \-lstdc\+\+/;" >> perl/Makefile.PL
+ @echo " print OUTPUT \"$$""_\";" >> perl/Makefile.PL
+ @echo "}" >> perl/Makefile.PL
+ @echo "" >> perl/Makefile.PL
+ @echo "close INPUT;" >> perl/Makefile.PL
+ @echo "close OUTPUT;" >> perl/Makefile.PL
+ cd perl && $(PERL) Makefile.PL && make clean
+ @echo "\.old" > perl/MANIFEST.SKIP
+ @echo "~$$" >> perl/MANIFEST.SKIP
+ @echo "\.bak" >> perl/MANIFEST.SKIP
+ @echo "^CVS" >> perl/MANIFEST.SKIP
+ @echo "Makefile$$" >> perl/MANIFEST.SKIP
+ cd perl && $(PERL) Makefile.PL && make manifest
+
+tclswig: sword.i
+ mkdir -p tcl
+ $(SWIG) -tcl -c++ -namespace -pkgversion $(VERSION) -o tcl/Sword.cxx -I$(top_srcdir) $(top_srcdir)/sword.i
+
+python_make: python_makebuild
+ cd python && $(PYTHON) setup.py build_ext $(SWORD_INCLUDES) $(LIB_SWORD)
+
+pythonswig: sword.i
+ mkdir -p python
+ $(SWIG) -python -c++ -shadow -o python/Sword.cxx -I$(top_srcdir) $(top_srcdir)/sword.i
+
+python_makebuild: $(PYTHONSWIG)
+ mkdir -p python
+ echo "writing python/setup.py"
+ @echo "#! /usr/bin/python" > python/setup.py
+ @echo "" >> python/setup.py
+ @echo "from distutils.core import setup, Extension" >> python/setup.py
+ @echo "setup (name = \"sword\"," >> python/setup.py
+ @echo " version = \"$(VERSION)\"," >> python/setup.py
+ @echo " maintainer = \"Sword Developers\"," >> python/setup.py
+ @echo " maintainer_email = \"sword-devel@crosswire.org\"," >> python/setup.py
+ @echo " url = \"http://www.crosswire.org/sword\"," >> python/setup.py
+ @echo " py_modules = [\"Sword\"]," >> python/setup.py
+ @echo " ext_modules = [Extension(\"sword\", [\"Sword.cxx\"]," >> python/setup.py
+ @echo " define_macros=[('SWIG',1)])], " >> python/setup.py
+ @echo ")" >> python/setup.py
+
+
+
+phpswig: sword.i
+ mkdir -p php
+ $(SWIG) -php4 -c++ -fullmake -o php/Sword.cxx -I$(top_srcdir) $(top_srcdir)/sword.i
+
diff --git a/bindings/swig/Makefile.oth b/bindings/swig/Makefile.oth
new file mode 100644
index 0000000..44f00ce
--- /dev/null
+++ b/bindings/swig/Makefile.oth
@@ -0,0 +1,22 @@
+TOP = $(PWD)
+SWIG = swig
+#SWIGOPT = -Wall -proxy
+SWIGOPT = -shadow
+CXXSRCS =
+TARGET = sword
+INTERFACE = sword.i
+LIBS = -lm -lz -lsword
+INCLUDE = -I$(TOP)/../../include/
+
+all::
+ $(MAKE) -f $(TOP)/Makefile.swig CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \
+ TARGET='$(TARGET)' SWIGOPT='$(SWIGOPT)' INTERFACE='$(INTERFACE)' LIBS='$(LIBS)' INCLUDE='$(INCLUDE)' perl5_cpp
+
+static::
+ $(MAKE) -f $(TOP)/Makefile.swig CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \
+ TARGET='myperl' INTERFACE='$(INTERFACE)' INCLUDE='$INCLUDE' perl5_cpp_static
+
+clean::
+ rm -f *_wrap* *.o *~ *.so myperl *.pyc .~* core
+
+check: all
diff --git a/bindings/swig/Makefile.swig b/bindings/swig/Makefile.swig
new file mode 100644
index 0000000..9b8271a
--- /dev/null
+++ b/bindings/swig/Makefile.swig
@@ -0,0 +1,578 @@
+# Generated automatically from Makefile.in by configure.
+# ------------------------------------------------------------
+# SWIG Examples Makefile
+#
+# This file is used by the examples to build modules. Assuming
+# you ran configure, this file will probably work. However,
+# it's not perfect so you might need to do some hand tweaking.
+#
+# Other notes:
+#
+# 1. Take a look at the prefixes below. Since SWIG works with
+# multiple target languages, you may need to find out where
+# certain packages have been installed. Set the prefixes
+# accordingly.
+#
+# 2. To use this makefile, simply set SRCS, INTERFACE, INCLUDE, LIBS,
+# TARGET, and do a
+# $(MAKE) -f Makefile.template.in SRCS='$(SRCS)' \
+# INCLUDE='$(INCLUDE) LIBS='$(LIBS)' INTERFACE='$(INTERFACE)' \
+# TARGET='$(TARGET)' method
+#
+# 'method' describes what is being built.
+#---------------------------------------------------------------
+
+TARGET =
+CC = gcc
+CXX = c++
+CFLAGS =
+prefix = /usr/local
+exec_prefix= ${prefix}
+SRCS =
+INCLUDE =
+LIBS =
+INTERFACE =
+SWIGOPT =
+SWIG = swig
+RUNTIMEDIR = $(exec_prefix)/lib
+
+LIBM = -lieee -lm
+LIBC =
+LIBCRYPT = -lcrypt
+SYSLIBS = $(LIBM) $(LIBC) $(LIBCRYPT)
+
+libtool_comp = $(TOP)/../Tools/libtool --mode compile
+libtool_link = $(TOP)/../Tools/libtool --mode link
+
+# X11 options
+
+XLIB = -L/usr/X11R6/lib -lX11
+XINCLUDE = -I/usr/X11R6/include
+
+IWRAP = $(INTERFACE:.i=_wrap.i)
+ISRCS = $(IWRAP:.i=.c)
+ICXXSRCS = $(IWRAP:.i=.cxx)
+IOBJS = $(IWRAP:.i=.o)
+
+##################################################################
+# Dynamic loading for C++
+# If you are going to be building dynamic loadable modules in C++,
+# you may need to edit this line appropriately.
+#
+# This line works for g++, but I'm not sure what it might be
+# for other C++ compilers
+##################################################################
+
+CPP_DLLIBS = #-L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \
+ -L/usr/local/lib -lg++ -lstdc++ -lgcc
+
+# Solaris workshop 5.0
+# CPP_DLLIBS = -L/opt/SUNWspro/lib -lCrun
+
+# Symbols used for using shared libraries
+SO= .so
+LDSHARED= gcc -shared
+CCSHARED= -fpic
+CXXSHARED= gcc -shared
+
+# This is used for building shared libraries with a number of C++
+# compilers. If it doesn't work, comment it out.
+CXXSHARED= c++ -shared
+
+OBJS = $(SRCS:.c=.o) $(CXXSRCS:.cxx=.o)
+
+##################################################################
+##### Tcl/Tk ######
+##################################################################
+
+# Set these to your local copy of Tcl/Tk.
+
+TCL_INCLUDE =
+TCL_LIB =
+TCL_OPTS = -ldl
+TK_OPTS = -ltk -ltcl -ldl
+
+# Extra Tcl specific dynamic linking options
+TCL_DLNK =
+
+# -----------------------------------------------------------
+# Build a new version of the tclsh shell
+# -----------------------------------------------------------
+
+
+tclsh: $(SRCS)
+ $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i $(INTERFACE)
+ $(CC) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(TCL_INCLUDE) \
+ $(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET)
+
+tclsh_cpp: $(SRCS)
+ $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i $(INTERFACE)
+ $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDE) $(TCL_INCLUDE) \
+ $(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET)
+
+# -----------------------------------------------------------
+# Build a new copy of wish
+# -----------------------------------------------------------
+
+wish: $(SRCS)
+ $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -lwish.i $(INTERFACE)
+ $(CC) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(TCL_INCLUDE) \
+ $(XINCLUDE) $(TCL_LIB) $(TK_OPTS) $(XLIB) $(LIBS) $(SYSLIBS) -o $(TARGET)
+
+
+wish_cpp: $(SRCS)
+ $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -lwish.i $(INTERFACE)
+ $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDE) $(TCL_INCLUDE) \
+ $(XINCLUDE) $(TCL_LIB) $(TK_OPTS) $(XLIB) $(LIBS) $(SYSLIBS) -o $(TARGET)
+
+# -----------------------------------------------------------
+# Build a Tcl dynamic loadable module (you might need to tweak this)
+# -----------------------------------------------------------
+
+tcl: $(SRCS)
+ $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(TCL_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) -o $(TARGET)$(SO)
+
+# -----------------------------------------------------------
+# Build a Tcl7.5 dynamic loadable module for C++
+# -----------------------------------------------------------
+
+tcl_cpp: $(SRCS)
+ $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDE) $(TCL_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)$(SO)
+
+# -----------------------------------------------------------
+# Build a Tcl7.5 dynamic loadable module, linked against SWIG runtime lib
+# -----------------------------------------------------------
+
+TCL_RUNTIME=-L$(RUNTIMEDIR) -lswigtcl8
+
+tcl_multi: $(SRCS)
+ $(SWIG) -c -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(TCL_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(TCL_RUNTIME) $(TCL_DLNK) $(LIBS) -o $(TARGET)$(SO)
+
+tcl_multi_cpp: $(SRCS)
+ $(SWIG) -c -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDE) $(TCL_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(TCL_RUNTIME) $(TCL_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)$(SO)
+
+##################################################################
+##### PERL 5 ######
+##################################################################
+
+# You need to set this variable to the Perl5 directory containing the
+# files "perl.h", "EXTERN.h" and "XSUB.h". With Perl5.003, it's
+# usually something like /usr/local/lib/perl5/arch-osname/5.003/CORE.
+
+PERL5_INCLUDE= /usr/lib/perl5/5.6.1/i386-linux/CORE
+
+# Extra Perl specific dynamic linking options
+PERL5_DLNK =
+
+# ----------------------------------------------------------------
+# Build a Perl5 dynamically loadable module (C)
+# ----------------------------------------------------------------
+
+perl5: $(SRCS)
+ $(SWIG) -perl5 $(SWIGOPT) $(INTERFACE)
+ $(CC) -c -Dbool=char $(CCSHARED) $(CFLAGS) -DSWIG $(SRCS) $(ISRCS) $(INCLUDE) -I$(PERL5_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(PERL5_DLNK) $(LIBS) -o $(TARGET)$(SO)
+
+# ----------------------------------------------------------------
+# Build a Perl5 dynamically loadable module (C++)
+# ----------------------------------------------------------------
+
+perl5_cpp: $(SRCS)
+ $(SWIG) -perl5 -c++ $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) -DSWIG -Dexplicit= $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDE) -I$(PERL5_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(PERL5_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)$(SO)
+
+# ----------------------------------------------------------------
+# Build a Perl5 dynamically loadable module, linked against SWIG runtime lib
+# ----------------------------------------------------------------
+
+PERL5_RUNTIME=-L$(RUNTIMEDIR) -lswigpl
+
+perl5_multi: $(SRCS)
+ $(SWIG) -c -perl5 $(SWIGOPT) $(INTERFACE)
+ $(CC) -c -DSWIG -Dbool=char $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) -I$(PERL5_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(PERL5_RUNTIME) $(PERL5_DLNK) $(LIBS) -o $(TARGET)$(SO)
+
+perl5_multi_cpp: $(SRCS)
+ $(SWIG) -c -perl5 -c++ $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) -DSWIG -Dexplicit= $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDE) -I$(PERL5_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(PERL5_RUNTIME) $(PERL5_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)$(SO)
+
+# ----------------------------------------------------------------
+# Build a module from existing XS C source code. (ie. from xsubpp).
+# ----------------------------------------------------------------
+perl5_xs: $(SRCS)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(INCLUDE) -I$(PERL5_INCLUDE)
+ $(LDSHARED) $(OBJS) $(LIBS) -o $(TARGET)$(SO)
+
+# ----------------------------------------------------------------
+# Build a statically linked Perl5 executable
+# ----------------------------------------------------------------
+
+PERL5_LIB = -L$(PERL5_INCLUDE) -lperl.so -ldl $(SYSLIBS)
+
+perl5_static: $(SRCS)
+ $(SWIG) -perl5 -static -lperlmain.i $(SWIGOPT) $(INTERFACE)
+ $(CC) $(CFLAGS) -Dbool=char $(SRCS) $(ISRCS) $(INCLUDE) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET)
+
+perl5_static_cpp: $(SRCS)
+ $(SWIG) -perl5 -c++ -static -lperlmain.i $(SWIGOPT) $(INTERFACE)
+ $(CXX) $(CFLAGS) -Dexplicit= $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDE) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET)
+
+
+##################################################################
+##### PYTHON ######
+##################################################################
+
+# Make sure these locate your Python installation
+PYTHON_INCLUDE= -DHAVE_CONFIG_H
+PYTHON_LIB =
+
+# Extra Python specific dynamic linking options
+PYTHON_DLNK =
+
+# ----------------------------------------------------------------
+# Build a C dynamically loadable module
+# ----------------------------------------------------------------
+
+python: $(SRCS)
+ $(SWIG) -python $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDE) $(PYTHON_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(PYTHON_DLNK) $(LIBS) -o $(TARGET)module$(SO)
+
+# -----------------------------------------------------------------
+# Build a C++ dynamically loadable module
+# -----------------------------------------------------------------
+
+python_cpp: $(SRCS)
+ $(SWIG) -c++ -python $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) $(PYTHON_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(PYTHON_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)module$(SO)
+
+# -----------------------------------------------------------------
+# Build a dynamically loadable module, linked against SWIG Runtime lib
+# -----------------------------------------------------------------
+
+PYTHON_RUNTIME=-L$(RUNTIMEDIR) -lswigpy
+
+python_multi: $(SRCS)
+ $(SWIG) -c -python $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDE) $(PYTHON_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(PYTHON_RUNTIME) $(PYTHON_DLNK) $(LIBS) -o $(TARGET)module$(SO)
+
+python_multi_cpp: $(SRCS)
+ $(SWIG) -c -c++ -python $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) $(PYTHON_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(PYTHON_RUNTIME) $(PYTHON_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)module$(SO)
+
+
+# -----------------------------------------------------------------
+# Build statically linked Python interpreter
+#
+# These should only be used in conjunction with the %include embed.i
+# library file
+# -----------------------------------------------------------------
+
+#TKINTER = -L/usr/X11R6.3/lib -L/usr/local/compat/lib -ltk4.0 -ltcl7.4 -lX11
+TKINTER =
+PYTHON_LIBOPTS = -lpython2.2 -ldl $(TKINTER) $(SYSLIBS)
+
+python_static: $(SRCS)
+ $(SWIG) -python -lembed.i $(SWIGOPT) $(INTERFACE)
+ $(CC) $(CFLAGS) -Xlinker -export-dynamic $(ISRCS) $(SRCS) $(INCLUDE) \
+ $(PYTHON_INCLUDE) $(LIBS) -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET)
+
+python_static_cpp: $(SRCS)
+ $(SWIG) -c++ -python -lembed.i $(SWIGOPT) $(INTERFACE)
+ $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) \
+ $(PYTHON_INCLUDE) $(LIBS) -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET)
+
+# -----------------------------------------------------------------
+# Cleaning the python examples
+# -----------------------------------------------------------------
+
+python_clean:
+ rm -f *_wrap* *.o *~ *$(SO) mypython *.pyc .~* core
+
+##################################################################
+##### GUILE ######
+##################################################################
+
+# Make sure these locate your Guile installation
+GUILE_INCLUDE =
+GUILE_LIB =
+
+# ----------------------------------------------------------------
+# Build a C dynamically loadable module
+# ----------------------------------------------------------------
+
+guile: $(SRCS)
+ $(SWIG) -guile -Linkage ltdlmod $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDE) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(LIBS) -o lib$(TARGET)$(SO)
+
+# -----------------------------------------------------------------
+# Build a C++ dynamically loadable module
+# -----------------------------------------------------------------
+
+guile_cpp: $(SRCS)
+ $(SWIG) -c++ -guile -Linkage ltdlmod $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDE) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o lib$(TARGET)$(SO)
+
+# -----------------------------------------------------------------
+# Build a dynamically loadable module with passive linkage
+# -----------------------------------------------------------------
+
+guile_passive: $(SRCS)
+ $(SWIG) -guile -Linkage passive $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDE) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(LIBS) -o lib$(TARGET)$(SO)
+
+guile_passive_cpp: $(SRCS)
+ $(SWIG) -c++ -guile -Linkage passive $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDE) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o lib$(TARGET)$(SO)
+
+# -----------------------------------------------------------------
+# Build a dynamically loadable module with passive linkage,
+# linked against SWIG runtime lib
+# -----------------------------------------------------------------
+
+GUILE_RUNTIME=-L$(RUNTIMEDIR) -lswigguile
+
+guile_passive_multi: $(SRCS)
+ $(SWIG) -c -guile -Linkage passive $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDE) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(GUILE_RUNTIME) $(LIBS) -o lib$(TARGET)$(SO)
+
+guile_passive_multi_cpp: $(SRCS)
+ $(SWIG) -c -c++ -guile -Linkage passive $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDE) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(GUILE_RUNTIME) $(LIBS) $(CPP_DLLIBS) -o lib$(TARGET)$(SO)
+
+# -----------------------------------------------------------------
+# Build statically linked Guile interpreter
+# -----------------------------------------------------------------
+
+GUILE_LIBOPTS = -ldl $(SYSLIBS)
+
+guile_static: $(SRCS)
+ $(SWIG) -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACE)
+ $(CC) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDE) \
+ -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \
+ $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
+
+guile_static_cpp: $(SRCS)
+ $(SWIG) -c++ -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACE)
+ $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) \
+ -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \
+ $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
+
+guile_simple: $(SRCS)
+ $(SWIG) -guile -lguilemain.i -Linkage simple $(SWIGOPT) $(INTERFACE)
+ $(CC) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDE) \
+ $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
+
+guile_simple_cpp: $(SRCS)
+ $(SWIG) -c++ -guile -lguilemain.i -Linkage simple $(SWIGOPT) $(INTERFACE)
+ $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) \
+ $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
+
+##################################################################
+##### JAVA ######
+##################################################################
+
+# You need to set this variable to the java directories containing the
+# files "jni.h" and "md.h"
+# usually something like /usr/java/include and /usr/java/include/<arch-osname>.
+JAVA_INCLUDE=
+
+# Extra Java specific dynamic linking options
+JAVA_DLNK =
+JAVALIBPREFIX = lib
+
+# ----------------------------------------------------------------
+# Build a java dynamically loadable module (C)
+# ----------------------------------------------------------------
+
+java: $(SRCS)
+ $(SWIG) -java $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(JAVA_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(JAVA_DLNK) $(LIBS) -o $(JAVALIBPREFIX)$(TARGET)$(SO)
+
+# ----------------------------------------------------------------
+# Build a java dynamically loadable module (C++)
+# ----------------------------------------------------------------
+
+java_cpp: $(SRCS)
+ $(SWIG) -java -c++ $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDE) $(JAVA_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(JAVA_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(JAVALIBPREFIX)$(TARGET)$(SO)
+
+# ----------------------------------------------------------------
+# Build a java dynamically loadable module
+# ----------------------------------------------------------------
+
+java_multi: $(SRCS)
+ $(SWIG) -java $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(JAVA_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(JAVA_DLNK) $(LIBS) -o $(JAVALIBPREFIX)$(TARGET)$(SO)
+
+java_multi_cpp: $(SRCS)
+ $(SWIG) -java -c++ $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDE) $(JAVA_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(JAVA_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(JAVALIBPREFIX)$(TARGET)$(SO)
+
+# -----------------------------------------------------------------
+# Cleaning the java examples
+# -----------------------------------------------------------------
+
+java_clean:
+ mv main.java main.java.tmp
+ rm -f *_wrap* *.o core *~ *$(SO) *.class *.java
+ mv main.java.tmp main.java
+
+##################################################################
+##### MZSCHEME ######
+##################################################################
+
+MZC = test -n "" &&
+
+# ----------------------------------------------------------------
+# Build a C/C++ dynamically loadable module
+# ----------------------------------------------------------------
+
+mzscheme: $(SRCS)
+ $(SWIG) -mzscheme $(SWIGOPT) $(INTERFACE)
+ $(MZC) ++ccf "$(INCLUDE)" --cc $(ISRCS) $(SRCS)
+ $(MZC) --ld $(TARGET)$(SO) $(OBJS) $(IOBJS)
+
+mzscheme_cpp: $(SRCS)
+ $(SWIG) -mzscheme -c++ $(SWIGOPT) $(INTERFACE)
+ $(MZC) ++ccf "$(INCLUDE)" --cc $(ICXXSRCS) $(SRCS) $(CXXSRCS)
+ $(MZC) --ld $(TARGET)$(SO) $(OBJS) $(IOBJS) $(CPP_DLLIBS)
+
+# ----------------------------------------------------------------
+# Build a dynamically loadable module, linked against SWIG runtime
+# ----------------------------------------------------------------
+
+MZSCHEME_RUNTIME=-L$(RUNTIMEDIR) -lswigmz
+
+mzscheme_multi: $(SRCS)
+ $(SWIG) -c -mzscheme $(SWIGOPT) $(INTERFACE)
+ $(MZC) ++ccf "$(INCLUDE)" --cc $(ISRCS) $(SRCS)
+ $(MZC) --ld $(TARGET)$(SO) $(OBJS) $(IOBJS) $(MZSCHEME_RUNTIME)
+
+mzscheme_multi_cpp: $(SRCS)
+ $(SWIG) -c -mzscheme -c++ $(SWIGOPT) $(INTERFACE)
+ $(MZC) ++ccf "$(INCLUDE)" --cc $(ICXXSRCS) $(SRCS) $(CXXSRCS)
+ $(MZC) --ld $(TARGET)$(SO) $(OBJS) $(IOBJS) $(MZSCHEME_RUNTIME) $(CPP_DLLIBS)
+
+##################################################################
+##### RUBY ######
+##################################################################
+
+# Make sure these locate your Ruby installation
+RUBY_CFLAGS= -DHAVE_CONFIG_H
+RUBY_INCLUDE= -I/usr/local/lib/ruby/1.4/arch
+RUBY_LIB = /usr/local/lib/ruby/1.4/arch
+RUBY_DLNK =
+
+# ----------------------------------------------------------------
+# Build a C dynamically loadable module
+# ----------------------------------------------------------------
+
+ruby: $(SRCS)
+ $(SWIG) -ruby $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ISRCS) $(SRCS) $(INCLUDE) $(RUBY_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) -o $(TARGET)$(SO)
+
+# -----------------------------------------------------------------
+# Build a C++ dynamically loadable module
+# -----------------------------------------------------------------
+
+ruby_cpp: $(SRCS)
+ $(SWIG) -c++ -ruby $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) $(RUBY_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)$(SO)
+
+# -----------------------------------------------------------------
+# Build a dynamically loadable module, linked against SWIG runtime lib
+# -----------------------------------------------------------------
+
+RUBY_RUNTIME=-L$(RUNTIMEDIR) -lswigrb
+
+ruby_multi: $(SRCS)
+ $(SWIG) -c -ruby $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ISRCS) $(SRCS) $(INCLUDE) $(RUBY_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(RUBY_RUNTIME) $(RUBY_DLNK) $(LIBS) -o $(TARGET)$(SO)
+
+ruby_multi_cpp: $(SRCS)
+ $(SWIG) -c -c++ -ruby $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) $(RUBY_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(RUBY_RUNTIME) $(RUBY_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)$(SO)
+
+# -----------------------------------------------------------------
+# Build statically linked Ruby interpreter
+#
+# These should only be used in conjunction with the %include embed.i
+# library file
+# -----------------------------------------------------------------
+
+RUBY_LIBOPTS = -lruby -lm -ldl $(SYSLIBS)
+
+ruby_static: $(SRCS)
+ $(SWIG) -ruby -lembed.i $(SWIGOPT) $(INTERFACE)
+ $(CC) $(CFLAGS) $(RUBY_CFLAGS) -Xlinker -export-dynamic $(ISRCS) $(SRCS) $(INCLUDE) \
+ $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET)
+
+ruby_cpp_static: $(SRCS)
+ $(SWIG) -c++ -ruby -lembed.i $(SWIGOPT) $(INTERFACE)
+ $(CXX) $(CFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) \
+ $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET)
+
+
+# -------------------------------------------------------------------
+# Build a PHP4 dynamically loadable module (C)
+# -------------------------------------------------------------------
+
+PHP4_INCLUDE =
+
+php4: $(SRCS)
+ $(SWIG) -php4 $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(PHP4_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(LIBS) -o $(TARGET)$(SO)
+
+# --------------------------------------------------------------------
+# Build a PHP4 dynamically loadable module (C++)
+# --------------------------------------------------------------------
+
+php4_cpp: $(SRCS)
+ $(SWIG) -php4 -c++ $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDE) $(PHP4_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)$(SO)
+
+# ---------------------------------------------------------------------
+# Build a dynamically loadable module, linked against SWIG Runtime lib
+# ---------------------------------------------------------------------
+
+PHP4_RUNTIME=-L$(RUNTIMEDIR) -lswigphp4
+
+php4_multi: $(SRCS)
+ $(SWIG) -c -php4 $(SWIGOPT) $(INTERFACE)
+ $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDE) $(PHP4_INCLUDE)
+ $(LDSHARED) $(OBJS) $(IOBJS) $(PHP4_RUNTIME) $(PHP4_DLNK) $(LIBS) -o $(TARGET)module$(SO)
+
+php4_multi_cpp: $(SRCS)
+ $(SWIG) -c -c++ -php4 $(SWIGOPT) $(INTERFACE)
+ $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) $(PHP4_INCLUDE)
+ $(CXXSHARED) $(OBJS) $(IOBJS) $(PHP4_RUNTIME) $(PHP4_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)module$(SO)
diff --git a/bindings/swig/examples/mod2zmod.pl b/bindings/swig/examples/mod2zmod.pl
new file mode 100755
index 0000000..2cc205c
--- /dev/null
+++ b/bindings/swig/examples/mod2zmod.pl
@@ -0,0 +1,84 @@
+#!/usr/bin/perl
+
+# This program converts a given module into a compressed module of the same type.
+# This is just an example to demomstrate the power of the Perl Sword bindings.
+# The code is almost written the same way the C++ of mod2zmod.cpp code was written
+
+use Sword;
+use strict;
+
+my $appname = "mod2zmod.pl";
+
+sub printUsage()
+{
+ print "\n$appname - Convert a module into a compressed module of the same type.\n";
+ print "Usage: $appname <module> <datapth> [blocktype [compresstype]]\n";
+ print("datapath: the directory in which to write the zModule\n");
+ print("blockType : (default 4)\n\t2 - verses\n\t3 - chapters\n\t4 - books\n");
+ print("compressType: (default 1):\n\t1 - LZSS\n\t2 - Zip\n\n");
+
+ exit(-1);
+}
+
+#main part of the program
+if (scalar(@ARGV) < 2 || scalar(@ARGV) > 4) {
+ printUsage;
+}
+
+#initialization stuff
+my $datapath = $ARGV[1];
+my $blockType = defined $ARGV[2] ? $ARGV[2] : 4;
+my $compressType = defined $ARGV[3] ? $ARGV[3] : 1;
+my $mgr = new Sword::SWMgr();
+my $module = $mgr->module($ARGV[0]);
+my $compressor = ($compressType == 1) ? new Sword::LZSSCompress() : new Sword::ZipCompress();
+
+my $newmod;
+
+if ($module->Type() eq "Biblical Texts") {
+ if (!Sword::zText::createModule( $datapath, $blockType )) {
+ print "$appname: Couldn't create module in $datapath";
+ exit(-1);
+ }
+ $newmod = new Sword::zText( $datapath, 0, 0, $blockType, $compressor );
+
+} elsif ($module->Type() eq "Lexicons / Dictionaries") {
+ if (!Sword::zLD::createModule( $datapath )){
+ print "$appname: Couldn't create module in $datapath";
+ exit(-1);
+ }
+ $newmod = new Sword::zLD( $datapath, 0, 0, $blockType, $compressor)
+} elsif ($module->Type() eq "Commentaries") {
+ if (!Sword::zCom::createModule( $datapath, $blockType )){
+ print "$appname: Couldn't create module in $datapath";
+ exit(-1);
+ }
+ $newmod = new Sword::zCom( $datapath, 0, 0, $blockType, $compressor)
+}
+
+# now copy the content of the module!
+
+my $buffer;
+
+$module->top();
+$module->setSkipConsecutiveLinks(0);
+do {
+ my $key = $module->Key();
+ if (($buffer eq $module->getRawEntry()) &&($buffer ne "")) {
+ print "Adding [", $key->getText(), "] link to: \n";
+ $newmod->writeLink($key);
+ }
+ else {
+ $buffer = $module->getRawEntry();
+ if ($buffer ne "") {
+ $newmod->SetKey($key);
+ $newmod->write($buffer);
+ # print "Added ", $key->getText(), "\n";
+ }
+ else {
+ print "Skipping empty ", $key->getText(), "\n";
+ }
+ }
+} while($module->next());
+
+print "The new module is now available in $datapath!\n";
diff --git a/bindings/swig/listkey.i b/bindings/swig/listkey.i
new file mode 100644
index 0000000..62fe87d
--- /dev/null
+++ b/bindings/swig/listkey.i
@@ -0,0 +1,92 @@
+%{
+#include "listkey.h"
+using namespace sword;
+%}
+
+class ListKey : public SWKey {
+public:
+ /** initializes instance of ListKey
+ *
+ * @param ikey text key
+ */
+ ListKey (const char *ikey = 0);
+ ListKey (ListKey const &k);
+
+ /** Cleans up instance of ListKey
+ */
+ virtual ~ ListKey ();
+
+ virtual SWKey *clone () const;
+
+ /** Clears out elements of list
+ */
+ virtual void ClearList ();
+
+ /** Returns number of elements in list
+ * @return number of elements in list
+ */
+ virtual int Count ();
+
+ /** Removes current element from list
+ */
+ virtual void Remove ();
+
+ /** Sets key to element number
+ *
+ * @param ielement element number to set to
+ * @return error status
+ */
+ //virtual char SetToElement (int ielement, SW_POSITION = TOP);
+%extend {
+ virtual char SetToElement(int element) {
+ return self->SetToElement(element, TOP);
+ };
+}
+
+ /** Gets a key element number
+ *
+ * @param pos element number to get (or default current)
+ * @return Key or null on error
+ */
+ virtual SWKey* GetElement (int pos = -1);
+
+ /** Adds an element to the list
+ * @param ikey the element to add
+ */
+ //ListKey & operator << (const SWKey &ikey);
+ virtual void add(const SWKey &ikey);
+
+ /** Equates this ListKey to another ListKey object
+ *
+ * @param ikey other ListKey object
+ */
+ virtual void copyFrom(const ListKey & ikey);
+ //virtual void copyFrom(const SWKey & ikey) { SWKey::copyFrom(ikey); }
+
+ /** Positions this key
+ *
+ * @param p position
+ * @return *this
+ */
+ virtual void setPosition(SW_POSITION);
+
+ /** Decrements a number of elements
+ */
+ virtual void decrement(int step);
+
+ /** Increments a number of elements
+ */
+ virtual void increment(int step);
+
+ virtual char Traversable ();
+ virtual long Index () const;
+
+ /**
+ * Returns the index for the new one given as as parameter.
+ * The first parameter is the new index.
+ */
+ virtual long Index (long index);
+
+ //SWKEY_OPERATORS
+ //ListKey & operator =(const ListKey &key) { copyFrom(key); return *this; }
+};
diff --git a/bindings/swig/localemgr.i b/bindings/swig/localemgr.i
new file mode 100644
index 0000000..8fb7487
--- /dev/null
+++ b/bindings/swig/localemgr.i
@@ -0,0 +1,25 @@
+%{
+#include <localemgr.h>
+
+using namespace std;
+using namespace sword;
+%}
+
+typedef map < SWBuf, SWLocale *, less < string > >LocaleMap;
+
+class LocaleMgr {
+public:
+ LocaleMgr (const char *iConfigPath = 0);
+ virtual ~LocaleMgr ();
+ virtual SWLocale *getLocale (const char *name);
+ virtual std::list < SWBuf > getAvailableLocales ();
+ //virtual const char *translate (const char *name, const char *text);
+ virtual const char *getDefaultLocaleName();
+ virtual void setDefaultLocaleName (const char *name);
+
+%extend {
+ static LocaleMgr* const getSystemLocaleMgr() {
+ return &(LocaleMgr::systemLocaleMgr);
+ };
+}
+};
diff --git a/bindings/swig/lzsscompress.i b/bindings/swig/lzsscompress.i
new file mode 100644
index 0000000..e83ba24
--- /dev/null
+++ b/bindings/swig/lzsscompress.i
@@ -0,0 +1,12 @@
+%{
+#include <lzsscomprs.h>
+using namespace sword;
+%}
+
+class LZSSCompress : public SWCompress {
+public:
+ LZSSCompress ();
+ virtual ~LZSSCompress ();
+ virtual void Encode (void);
+ virtual void Decode (void);
+};
diff --git a/bindings/swig/package/Makefile.am b/bindings/swig/package/Makefile.am
new file mode 100644
index 0000000..c8a50e3
--- /dev/null
+++ b/bindings/swig/package/Makefile.am
@@ -0,0 +1,96 @@
+EXTRA_DIST = *.i
+
+if RUNSWIG
+PERLSWIG=perlswig
+TCLSWIG=tclswig
+PYTHONSWIG=pythonswig
+PHPSWIG=phpswig
+else
+PERLSWIG=
+TCLSWIG=
+PYTHONSWIG=
+PHPSWIG=
+endif
+
+all: $(PERLBUILD) $(TCLBUILD) $(PYTHONBUILD) $(PHPBUILD)
+ echo "built"
+
+perl_make: perl_makebuild
+ cd perl && make
+
+perlswig: sword.i
+ mkdir -p perl
+ $(SWIG) -perl -c++ -shadow -o perl/Sword.cxx -I$(top_srcdir) $(SWORD_INCLUDES) $(top_srcdir)/sword.i
+
+perl_makebuild: $(PERLSWIG)
+ mkdir -p perl
+ echo "writing perl/Makefile.PL"
+ @echo "#! /usr/bin/perl" > perl/Makefile.PL
+ @echo "" >> perl/Makefile.PL
+ @echo "use ExtUtils::MakeMaker;" >> perl/Makefile.PL
+ @echo "" >> perl/Makefile.PL
+ @echo "# See lib/ExtUtils/MakeMaker.pm for details of how to influence" >> perl/Makefile.PL
+ @echo "# the contents of the Makefile that is written." >> perl/Makefile.PL
+ @echo "WriteMakefile(" >> perl/Makefile.PL
+ @echo " 'NAME' => 'Sword'," >> perl/Makefile.PL
+ @echo " 'VERSION' => '$(VERSION)'," >> perl/Makefile.PL
+ @echo " 'INC' => '$(SWORD_INCLUDES)'," >> perl/Makefile.PL
+ @echo " 'DEFINE' => '-DSWIG'," >> perl/Makefile.PL
+ @echo " 'LIBS' => '$(LIB_SWORD) -lz'," >> perl/Makefile.PL
+ @echo " 'PREREQ_PM' => {}, # e.g., Module::Name => 1.1" >> perl/Makefile.PL
+ @echo " ($$] >= 5.005 ? ## Add these new keywords supported since 5.005" >> perl/Makefile.PL
+ @echo " (ABSTRACT => 'Sword Project perl bindings', # retrieve abstract from module" >> perl/Makefile.PL
+ @echo " AUTHOR => 'Sword Project <sword-devel@crosswire.org>') : ())," >> perl/Makefile.PL
+ @echo ");" >> perl/Makefile.PL
+ @echo "" >> perl/Makefile.PL
+ @echo "rename 'Makefile', 'Makefile.old' or die \"can't rename Makefile\";" >> perl/Makefile.PL
+ @echo "open(INPUT, '<Makefile.old') or die \"can't open input Makefile.old\";" >> perl/Makefile.PL
+ @echo "open(OUTPUT, '>Makefile') or die \"can't open output Makefile\";" >> perl/Makefile.PL
+ @echo "while (<INPUT>) {" >> perl/Makefile.PL
+ @echo " s/\-lsword/\-lsword \-lstdc\+\+/;" >> perl/Makefile.PL
+ @echo " print OUTPUT \"$$""_\";" >> perl/Makefile.PL
+ @echo "}" >> perl/Makefile.PL
+ @echo "" >> perl/Makefile.PL
+ @echo "close INPUT;" >> perl/Makefile.PL
+ @echo "close OUTPUT;" >> perl/Makefile.PL
+ cd perl && $(PERL) Makefile.PL && make clean
+ @echo "\.old" > perl/MANIFEST.SKIP
+ @echo "~$$" >> perl/MANIFEST.SKIP
+ @echo "\.bak" >> perl/MANIFEST.SKIP
+ @echo "^CVS" >> perl/MANIFEST.SKIP
+ @echo "Makefile$$" >> perl/MANIFEST.SKIP
+ cd perl && $(PERL) Makefile.PL && make manifest
+
+tclswig: sword.i
+ mkdir -p tcl
+ $(SWIG) -tcl -c++ -namespace -pkgversion $(VERSION) -o tcl/Sword.cxx -I$(top_srcdir) $(top_srcdir)/sword.i
+
+python_make: python_makebuild
+ cd python && $(PYTHON) setup.py build_ext $(SWORD_INCLUDES) $(LIB_SWORD)
+
+pythonswig: sword.i
+ mkdir -p python
+ $(SWIG) -python -c++ -shadow -o python/Sword.cxx -I$(top_srcdir) $(top_srcdir)/sword.i
+
+python_makebuild: $(PYTHONSWIG)
+ mkdir -p python
+ echo "writing python/setup.py"
+ @echo "#! /usr/bin/python" > python/setup.py
+ @echo "" >> python/setup.py
+ @echo "from distutils.core import setup, Extension" >> python/setup.py
+ @echo "setup (name = \"sword\"," >> python/setup.py
+ @echo " version = \"$(VERSION)\"," >> python/setup.py
+ @echo " maintainer = \"Sword Developers\"," >> python/setup.py
+ @echo " maintainer_email = \"sword-devel@crosswire.org\"," >> python/setup.py
+ @echo " url = \"http://www.crosswire.org/sword\"," >> python/setup.py
+ @echo " py_modules = [\"Sword\"]," >> python/setup.py
+ @echo " ext_modules = [Extension(\"sword\", [\"Sword.cxx\"]," >> python/setup.py
+ @echo " define_macros=[('SWIG',1)])], " >> python/setup.py
+ @echo ")" >> python/setup.py
+
+
+
+phpswig: sword.i
+ mkdir -p php
+ $(SWIG) -php4 -c++ -fullmake -o php/Sword.cxx -I$(top_srcdir) $(top_srcdir)/sword.i
+
diff --git a/bindings/swig/package/README.cvs b/bindings/swig/package/README.cvs
new file mode 100644
index 0000000..db24038
--- /dev/null
+++ b/bindings/swig/package/README.cvs
@@ -0,0 +1,10 @@
+README
+------
+
+To build the sword bindings for Sword you require
+
+SWIG 1.3 (see http://www.swig.org)
+one of perl, python, tcl, php
+Sword 1.5.6
+
+First run ./autogen.sh to generate this directory
diff --git a/bindings/swig/package/autogen.sh b/bindings/swig/package/autogen.sh
new file mode 100755
index 0000000..dac8704
--- /dev/null
+++ b/bindings/swig/package/autogen.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+echo "*** copying swig files"
+cp -a ../*.i .
+
+ACLOCAL="$AUTODIR""aclocal"
+echo "*** Recreating aclocal.m4"
+echo "$ACLOCAL"
+ $ACLOCAL -I .;
+
+echo "*** Recreating configure"
+AUTOCONF="$AUTODIR""autoconf"
+ $AUTOCONF;
+
+echo "*** Recreating the Makefile.in files"
+AUTOMAKE="$AUTODIR""automake"
+ $AUTOMAKE -ac --foreign;
diff --git a/bindings/swig/package/configure.ac b/bindings/swig/package/configure.ac
new file mode 100644
index 0000000..63b7a43
--- /dev/null
+++ b/bindings/swig/package/configure.ac
@@ -0,0 +1,41 @@
+# ---------------------------------------------------------------------
+# Initialisation
+# ---------------------------------------------------------------------
+AC_INIT(swordbindings, 1.5.6, sword-bugs@crosswire.org)
+AC_CONFIG_SRCDIR(sword.i)
+AC_PREREQ(2.52)
+AC_REVISION($Revision: 1.1 $)
+AM_INIT_AUTOMAKE(swordbindings,1.5.6)
+
+# ---------------------------------------------------------------------
+# Check Programs
+# ---------------------------------------------------------------------
+AC_LANG(C++)
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_INSTALL
+SW_PROG_SWIG
+
+# ---------------------------------------------------------------------
+# Check libraries
+# ---------------------------------------------------------------------
+SW_CHECK_SWORD(1.5.5.99)
+
+# ---------------------------------------------------------------------
+# Misc
+# ---------------------------------------------------------------------
+AM_MAINTAINER_MODE
+
+# ---------------------------------------------------------------------
+# Check Scripting languages
+# ---------------------------------------------------------------------
+SW_FIND_PERL
+SW_FIND_PYTHON
+SW_FIND_PHP4
+SW_FIND_TCL
+
+# ---------------------------------------------------------------------
+# Final output
+# ---------------------------------------------------------------------
+AC_CONFIG_FILES(Makefile)
+AC_OUTPUT
diff --git a/bindings/swig/package/perl.m4 b/bindings/swig/package/perl.m4
new file mode 100644
index 0000000..9add0b3
--- /dev/null
+++ b/bindings/swig/package/perl.m4
@@ -0,0 +1,71 @@
+#----------------------------------------------------------------
+# Look for Perl5
+#----------------------------------------------------------------
+
+AC_DEFUN(SW_FIND_PERL,
+[
+
+
+PERLBIN=
+PERLSWIG=
+
+AC_ARG_WITH(perl,[ --with-perl=path Set location of Perl5 executable],[ PERLBIN="$withval"], [PERLBIN=])
+
+# First figure out what the name of Perl5 is
+
+if test -z "$PERLBIN"; then
+AC_PATH_PROGS(PERL, perl perl5.6.1 perl5.6.0 perl5.004 perl5.003 perl5.002 perl5.001 perl5 perl)
+else
+AC_PATH_PROG(PERL, perl, , $PERLBIN)
+#PERL="$PERLBIN"
+fi
+
+
+AC_MSG_CHECKING(for Perl5 header files)
+if test -n "$PERL"; then
+ PERL5DIR=`($PERL -e 'use Config; print $Config{archlib};') 2>/dev/null`
+ if test "$PERL5DIR" != ""; then
+ dirs="$PERL5DIR $PERL5DIR/CORE"
+ PERL5EXT=none
+ PERLBUILD=perl_make
+ for i in $dirs; do
+ if test -r $i/perl.h; then
+ AC_MSG_RESULT($i)
+ PERL5EXT="$i"
+ break;
+ fi
+ done
+ if test "$PERL5EXT" = none; then
+ PERL5EXT="$PERL5DIR/CORE"
+ AC_MSG_RESULT(could not locate perl.h...using $PERL5EXT)
+ fi
+
+ AC_MSG_CHECKING(for Perl5 library)
+ PERL5LIB=`($PERL -e 'use Config; $_=$Config{libperl}; s/^lib//; s/$Config{_a}$//; print $_') 2>/dev/null`
+ if test "$PERL5LIB" = "" ; then
+ AC_MSG_RESULT(not found)
+ else
+ AC_MSG_RESULT($PERL5LIB)
+ fi
+ else
+ AC_MSG_RESULT(unable to determine perl5 configuration)
+ PERL5EXT=$PERL5DIR
+ fi
+else
+ AC_MSG_RESULT(could not figure out how to run perl5)
+# PERL5EXT="/usr/local/lib/perl/archname/5.003/CORE"
+fi
+
+# Only cygwin (Windows) needs the library for dynamic linking
+case $ac_sys_system/$ac_sys_release in
+CYGWIN*) PERL5DYNAMICLINKING="-L$PERL5EXT -l$PERL5LIB";;
+*)PERL5DYNAMICLINKING="";;
+esac
+
+
+AC_SUBST(PERL5EXT)
+AC_SUBST(PERL5DYNAMICLINKING)
+AC_SUBST(PERL5LIB)
+AC_SUBST(PERLBUILD)
+
+])
diff --git a/bindings/swig/package/php4.m4 b/bindings/swig/package/php4.m4
new file mode 100644
index 0000000..d184ec2
--- /dev/null
+++ b/bindings/swig/package/php4.m4
@@ -0,0 +1,33 @@
+#-------------------------------------------------------------------------
+# Look for Php4
+#-------------------------------------------------------------------------
+
+AC_DEFUN(SW_FIND_PHP4,
+[
+
+PHP4BIN=
+
+AC_ARG_WITH(php4,[ --with-php4=path Set location of PHP4 executable],[ PHP4BIN="$withval"], [PHP4BIN=])
+
+if test -z "$PHP4BIN"; then
+AC_PATH_PROGS(PHP4, php php4)
+else
+PHP4="$PHP4BIN"
+fi
+AC_MSG_CHECKING(for PHP4 header files)
+dirs="/usr/include/php /usr/local/include/php /usr/local/apache/php /usr/include/php4 /usr/local/include/php4 /usr/local/apache/php4"
+for i in $dirs; do
+ if test -r $i/php_config.h -o -r $i/php_version.h; then
+ AC_MSG_RESULT($i)
+ PHP4EXT="$i"
+ PHP4INC="-I$PHP4EXT -I$PHP4EXT/Zend -I$PHP4EXT/main -I$PHP4EXT/TSRM"
+ break;
+ fi
+done
+if test -z "$PHP4INC"; then
+ AC_MSG_RESULT(not found)
+fi
+
+AC_SUBST(PHP4INC)
+
+])
diff --git a/bindings/swig/package/python.m4 b/bindings/swig/package/python.m4
new file mode 100644
index 0000000..a047ea4
--- /dev/null
+++ b/bindings/swig/package/python.m4
@@ -0,0 +1,117 @@
+#----------------------------------------------------------------
+# Look for Python
+#----------------------------------------------------------------
+
+AC_DEFUN(SW_FIND_PYTHON,
+[
+
+PYINCLUDE=
+PYLIB=
+PYPACKAGE=
+PYTHONBUILD=
+
+# I don't think any of this commented stuff works anymore
+
+#PYLINK="-lModules -lPython -lObjects -lParser"
+
+#AC_ARG_WITH(py,[ --with-py=path Set location of Python],[
+# PYPACKAGE="$withval"], [PYPACKAGE=])
+#AC_ARG_WITH(pyincl,[ --with-pyincl=path Set location of Python include directory],[
+# PYINCLUDE="$withval"], [PYINCLUDE=])
+#AC_ARG_WITH(pylib,[ --with-pylib=path Set location of Python library directory],[
+# PYLIB="$withval"], [PYLIB=])
+
+#if test -z "$PYINCLUDE"; then
+# if test -n "$PYPACKAGE"; then
+# PYINCLUDE="$PYPACKAGE/include"
+# fi
+#fi
+
+#if test -z "$PYLIB"; then
+# if test -n "$PYPACKAGE"; then
+# PYLIB="$PYPACKAGE/lib"
+# fi
+#fi
+
+AC_ARG_WITH(python,[ --with-python=path Set location of Python executable],[ PYBIN="$withval"], [PYBIN=])
+
+# First figure out the name of the Python executable
+
+if test -z "$PYBIN"; then
+AC_PATH_PROGS(PYTHON, $prefix/bin/python python python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 python1.4 python)
+else
+PYTHON="$PYBIN"
+fi
+
+if test -n "$PYTHON"; then
+ AC_MSG_CHECKING(for Python prefix)
+ PYPREFIX=`($PYTHON -c "import sys; print sys.prefix") 2>/dev/null`
+ AC_MSG_RESULT($PYPREFIX)
+ AC_MSG_CHECKING(for Python exec-prefix)
+ PYEPREFIX=`($PYTHON -c "import sys; print sys.exec_prefix") 2>/dev/null`
+ AC_MSG_RESULT($PYEPREFIX)
+
+
+ # Note: I could not think of a standard way to get the version string from different versions.
+ # This trick pulls it out of the file location for a standard library file.
+
+ AC_MSG_CHECKING(for Python version)
+
+ # Need to do this hack since autoconf replaces __file__ with the name of the configure file
+ filehack="file__"
+ PYVERSION=`($PYTHON -c "import string,operator; print operator.getitem(string.split(string.__$filehack,'/'),-2)")`
+ AC_MSG_RESULT($PYVERSION)
+
+ # Set the include directory
+
+ AC_MSG_CHECKING(for Python header files)
+ if test -r $PYPREFIX/include/$PYVERSION/Python.h; then
+ PYINCLUDE="-I$PYPREFIX/include/$PYVERSION -I$PYEPREFIX/lib/$PYVERSION/config"
+ fi
+ if test -z "$PYINCLUDE"; then
+ if test -r $PYPREFIX/include/Py/Python.h; then
+ PYINCLUDE="-I$PYPREFIX/include/Py -I$PYEPREFIX/lib/python/lib"
+ fi
+ fi
+ AC_MSG_RESULT($PYINCLUDE)
+
+ # Set the library directory blindly. This probably won't work with older versions
+ AC_MSG_CHECKING(for Python library)
+ dirs="$PYVERSION/config $PYVERSION/lib python/lib"
+ for i in $dirs; do
+ if test -d $PYEPREFIX/lib/$i; then
+ PYLIB="$PYEPREFIX/lib/$i"
+ PYTHONBUILD=python_make
+ break
+ fi
+ done
+ if test -z "$PYLIB"; then
+ AC_MSG_RESULT(Not found)
+ else
+ AC_MSG_RESULT($PYLIB)
+ fi
+
+ # Check for really old versions
+ if test -r $PYLIB/libPython.a; then
+ PYLINK="-lModules -lPython -lObjects -lParser"
+ else
+ PYLINK="-l$PYVERSION"
+ fi
+fi
+
+# Only cygwin (Windows) needs the library for dynamic linking
+case $ac_sys_system/$ac_sys_release in
+CYGWIN*) PYTHONDYNAMICLINKING="-L$PYLIB $PYLINK"
+ PYINCLUDE="-DUSE_DL_IMPORT $PYINCLUDE"
+ ;;
+*)PYTHONDYNAMICLINKING="";;
+esac
+
+
+AC_SUBST(PYINCLUDE)
+AC_SUBST(PYLIB)
+AC_SUBST(PYLINK)
+AC_SUBST(PYTHONBUILD)
+AC_SUBST(PYTHONDYNAMICLINKING)
+
+])
diff --git a/bindings/swig/package/swig.m4 b/bindings/swig/package/swig.m4
new file mode 100644
index 0000000..9ff89d7
--- /dev/null
+++ b/bindings/swig/package/swig.m4
@@ -0,0 +1,29 @@
+#----------------------------------------------------------------
+# Look for SWIG
+#----------------------------------------------------------------
+
+AC_DEFUN(SW_PROG_SWIG,
+[
+
+AC_ARG_WITH(swigbin,[ --with-swigbin=path Set location of swig executable],[ SWIGBIN="$withval"], [SWIGBIN=])
+AC_ARG_ENABLE(swig,[ --enable-swig=path Run swig to generate new source default=no],, enable_swig=no)
+
+if test -z "$SWIGBIN"; then
+AC_PATH_PROG(SWIG, swig)
+else
+AC_PATH_PROG(SWIG, swig, "not found", $SWIGBIN)
+fi
+
+runswig=true
+if test x"$SWIG"="xnot found"; then
+ runswig=false
+fi
+if test x"$enable_swig"="xno"; then
+ runswig=false
+fi
+
+AM_CONDITIONAL(RUNSWIG, test x$runswig = xtrue)
+
+#ac_cv_swigversion=``
+
+])
diff --git a/bindings/swig/package/sword.m4 b/bindings/swig/package/sword.m4
new file mode 100644
index 0000000..f22da68
--- /dev/null
+++ b/bindings/swig/package/sword.m4
@@ -0,0 +1,172 @@
+## -*- autoconf -*-
+dnl This file was created by Joachim Ansorg <jansorg@gmx.de>
+dnl It provides macord for the autoconf package to find the Sword library on your system.
+
+dnl ----------------------------------------------------------------------
+dnl Check wheter to use static linking
+dnl first parameter is the required version
+dnl second is whether to use static sword library
+dnl ----------------------------------------------------------------------
+AC_DEFUN(SW_CHECK_SWORD,
+[
+dnl AC_MSG_CHECKING([for a Sword installation])
+
+dnl The option for the configure script
+AC_ARG_WITH(sword-dir,
+[ --with-sword-dir=DIR Patch where Sword is being installed (default=/usr) ],
+[
+ ac_sword_dir=$withval
+],ac_sword_dir=/usr
+)
+
+AC_ARG_ENABLE(static-sword,
+[ --enable-static-sword Link to the static Sword library],
+ ac_static_sword="YES",
+ [ ac_static_sword="$2" ]
+)
+
+dnl try to find Sword library files
+AC_MSG_CHECKING([for Sword library files])
+AC_REQUIRE([AC_FIND_ZLIB])
+ac_sword_library_dirs="$ac_sword_dir/lib /usr/lib /usr/lib/sword /usr/local/lib /usr/local/lib/sword /usr/local/sword/lib"
+
+if test "$ac_static_sword" = "YES"; then
+ SEARCH_LIBS="libsword.a";
+else
+ SEARCH_LIBS="libsword.a libsword.so";
+fi
+
+
+AC_CACHE_VAL(ac_cv_sword_libdir, AC_FIND_FILE($SEARCH_LIBS, $ac_sword_library_dirs, ac_cv_sword_libdir))
+
+if test "$ac_cv_sword_libdir" = "NO"; then
+ AC_MSG_ERROR(SWORD library not found. Try to use configure with --with-sword-dir=/your/SWORD/path!);
+fi
+
+if test "$ac_static_sword" = "YES"; then
+ LIB_SWORD="$ac_cv_sword_libdir/libsword.a";
+else
+ LIB_SWORD="-L$ac_cv_sword_libdir -lsword";
+fi
+
+#AC_SUBST(SWORD_LIBRARY_PATH)
+AC_SUBST(LIB_SWORD)
+all_libraries="$all_libraries -L$ac_cv_sword_libdir"
+
+if test "$ac_static_sword" = "YES"; then
+ MESSAGE="static library $ac_cv_sword_libdir/libsword.a";
+else
+ MESSAGE="$ac_cv_sword_libdir";
+fi
+AC_MSG_RESULT([$MESSAGE])
+
+
+
+dnl -- try to find Swords include files --
+AC_MSG_CHECKING([for Sword include files])
+ac_sword_include_dirs="$ac_sword_dir/include/sword $ac_sword_dir/include /usr/include/sword /usr/include /usr/local/include/sword /usr/local/include /usr/local/sword/include /usr/local/sword/include/sword"
+
+AC_CACHE_VAL(ac_cv_sword_incdir, AC_FIND_FILE(swmgr.h, $ac_sword_include_dirs, ac_cv_sword_incdir))
+
+if test "$ac_cv_sword_incdir" = "NO"; then
+ AC_MSG_ERROR([The Sword include file files were not found.
+Please try to use configure with --with-sword-dir=/your/SWORD/path !
+])
+fi
+
+SWORD_INCLUDES="-I$ac_cv_sword_incdir"
+AC_SUBST(SWORD_INCLUDES)
+all_includes="$all_includes -I$ac_cv_sword_incdir"
+
+AC_MSG_RESULT([$ac_cv_sword_incdir])
+
+
+
+dnl -- check if Sword matches the minimum version --
+AC_MSG_CHECKING([if you have Sword $1 or later])
+
+AC_CACHE_VAL(ac_cv_installed_sword_version,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+ac_LD_LIBRARY_PATH_safe=$LD_LIBRARY_PATH
+ac_LIBRARY_PATH="$LIBRARY_PATH"
+ac_cxxflags_safe="$CXXFLAGS"
+ac_ldflags_safe="$LDFLAGS"
+ac_libs_safe="$LIBS"
+
+CXXFLAGS="$CXXFLAGS -I$"
+LDFLAGS="$LDFLAGS -L$ac_cv_sword_libdir"
+LIBS="$LIB_SWORD -lz"
+LD_LIBRARY_PATH="$ac_cv_sword_libdir"
+export LD_LIBRARY_PATH
+LIBRARY_PATH=
+export LIBRARY_PATH
+
+cat > conftest.$ac_ext <<EOF
+#include <iostream.h>
+#include <swversion.h>
+using std::cout;
+using std::endl;
+using sword::SWVersion;
+
+int main(int argc, char* argv[]) {
+ if (argc != 2) {
+ cout << SWVersion::currentVersion << endl;
+ }
+ else if (argc == 2)
+ {
+ if (SWVersion(&argv[[1]]) < SWVersion::currentVersion || SWVersion(&argv[[1]]) == SWVersion::currentVersion)
+ {
+ cout << 0 << endl;
+ return 0;
+ }
+ else
+ {
+ cout << 1 << endl;
+ return 1; //version not recent enough
+ }
+ }
+ return 0;
+}
+EOF
+
+ac_link='${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+if AC_TRY_EVAL(ac_link) && test -s conftest; then
+ if test -x conftest; then
+ eval ac_cv_installed_sword_version=`./conftest 2>&5`
+ echo "configure: ac_cv_installed_sword_version=$ac_cv_installed_sword_version" >&AC_FD_CC
+ eval sword_test_returncode=`./conftest $1 2>&5`;
+ echo "configure: sword_test_returncode=$sword_test_returncode" >&AC_FD_CC
+ fi
+else
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat conftest.$ac_ext >&AC_FD_CC
+fi
+
+rm -f conftest*
+CXXFLAGS="$ac_cxxflags_safe"
+LDFLAGS="$ac_ldflags_safe"
+LIBS="$ac_libs_safe"
+
+LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe"
+export LD_LIBRARY_PATH
+LIBRARY_PATH="$ac_LIBRARY_PATH"
+export LIBRARY_PATH
+AC_LANG_RESTORE
+])
+
+right_version="ok";
+if test "x$sword_test_returncode" = "x1"; then
+ echo "configure: changing right_version" >&AC_FD_CC
+ right_version="wrong version";
+fi;
+
+AC_MSG_RESULT([$ac_cv_installed_sword_version])
+echo "configure: right_version=$right_version" >&AC_FD_CC
+if test "x$right_version" != "xok"; then
+ AC_MSG_ERROR([Your Sword installation is not recent enough! $sword_test_returncode Please
+upgrade to version $1!]);
+fi;
+
+])
diff --git a/bindings/swig/package/tcl.m4 b/bindings/swig/package/tcl.m4
new file mode 100644
index 0000000..9b99c7f
--- /dev/null
+++ b/bindings/swig/package/tcl.m4
@@ -0,0 +1,114 @@
+#--------------------------------------------------------------------
+# Try to locate the Tcl package
+#--------------------------------------------------------------------
+
+AC_DEFUN(SW_FIND_TCL,
+[
+
+
+TCLINCLUDE=
+TCLLIB=
+TCLPACKAGE=
+#TCLSWIG=
+
+AC_ARG_WITH(tclconfig,[ --with-tclconfig=path Set location of tclConfig.sh],
+ with_tclconfig="$withval")
+AC_ARG_WITH(tcl,[ --with-tcl=path Set location of Tcl package],[
+ TCLPACKAGE="$withval"], [TCLPACKAGE=])
+AC_ARG_WITH(tclincl,[ --with-tclincl=path Set location of Tcl include directory],[
+ TCLINCLUDE="-I$withval"], [TCLINCLUDE=])
+AC_ARG_WITH(tcllib,[ --with-tcllib=path Set location of Tcl library directory],[
+ TCLLIB="-L$withval"], [TCLLIB=])
+
+AC_MSG_CHECKING([for Tcl configuration])
+# First check to see if --with-tclconfig was specified.
+if test x"${with_tclconfig}" != x ; then
+ if test -f "${with_tclconfig}/tclConfig.sh" ; then
+ TCLCONFIG=`(cd ${with_tclconfig}; pwd)`
+ else
+ AC_MSG_ERROR([${with_tcl} directory doesn't contain tclConfig.sh])
+ fi
+fi
+# check in a few common install locations
+if test x"${TCLCONFIG}" = x ; then
+ for i in `ls -d /usr/lib 2>/dev/null` \
+ `ls -d ${prefix}/lib 2>/dev/null` \
+ `ls -d /usr/local/lib 2>/dev/null` ; do
+ if test -f "$i/tclConfig.sh" ; then
+ TCLCONFIG=`(cd $i; pwd)`
+ break
+ fi
+ done
+fi
+if test x"${TCLCONFIG}" = x ; then
+ AC_MSG_RESULT(no)
+else
+ AC_MSG_RESULT(found $TCLCONFIG/tclConfig.sh)
+ . $TCLCONFIG/tclConfig.sh
+ TCLINCLUDE=-I$TCL_PREFIX/include
+ TCLLIB=$TCL_LIB_SPEC
+fi
+
+if test -z "$TCLINCLUDE"; then
+ if test -n "$TCLPACKAGE"; then
+ TCLINCLUDE="-I$TCLPACKAGE/include"
+ fi
+fi
+
+if test -z "$TCLLIB"; then
+ if test -n "$TCLPACKAGE"; then
+ TCLLIB="-L$TCLPACKAGE/lib -ltcl"
+ fi
+fi
+
+AC_MSG_CHECKING(for Tcl header files)
+if test -z "$TCLINCLUDE"; then
+AC_TRY_CPP([#include <tcl.h>], , TCLINCLUDE="")
+if test -z "$TCLINCLUDE"; then
+ dirs="$prefix/include /usr/local/include /usr/include /opt/local/include"
+ for i in $dirs ; do
+ if test -r $i/tcl.h; then
+ AC_MSG_RESULT($i)
+ TCLINCLUDE="-I$i"
+ break
+ fi
+ done
+fi
+if test -z "$TCLINCLUDE"; then
+# TCLINCLUDE="-I/usr/local/include"
+ AC_MSG_RESULT(not found)
+fi
+else
+ AC_MSG_RESULT($TCLINCLUDE)
+fi
+
+AC_MSG_CHECKING(for Tcl library)
+if test -z "$TCLLIB"; then
+dirs="$prefix/lib /usr/local/lib /usr/lib /opt/local/lib"
+for i in $dirs ; do
+ if test -r $i/libtcl.a; then
+ AC_MSG_RESULT($i)
+ TCLLIB="-L$i -ltcl"
+ break
+ fi
+done
+if test -z "$TCLLIB"; then
+ AC_MSG_RESULT(not found)
+# TCLLIB="-L/usr/local/lib"
+fi
+else
+AC_MSG_RESULT($TCLLIB)
+fi
+
+# Only cygwin (Windows) needs the library for dynamic linking
+case $ac_sys_system/$ac_sys_release in
+CYGWIN*) TCLDYNAMICLINKING="$TCLLIB";;
+*)TCLDYNAMICLINKING="";;
+esac
+
+AC_SUBST(TCLINCLUDE)
+AC_SUBST(TCLLIB)
+AC_SUBST(TCLDYNAMICLINKING)
+#AC_SUBST(TCLSWIG)
+
+])
diff --git a/bindings/swig/package/zlib.m4 b/bindings/swig/package/zlib.m4
new file mode 100644
index 0000000..952e5bd
--- /dev/null
+++ b/bindings/swig/package/zlib.m4
@@ -0,0 +1,111 @@
+## -*- autoconf -*-
+
+
+AC_DEFUN(AC_FIND_ZLIB,
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_MSG_CHECKING([for libz])
+AC_CACHE_VAL(ac_cv_lib_z,
+[
+AC_LANG_C
+kde_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET"
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+AC_TRY_LINK(dnl
+[
+#include<zlib.h>
+],
+ [return (zlibVersion() == ZLIB_VERSION); ],
+ eval "ac_cv_lib_z='-lz'",
+ eval "ac_cv_lib_z=no")
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+])dnl
+if test ! "$ac_cv_lib_z" = no; then
+ AC_DEFINE_UNQUOTED(HAVE_LIBZ, 1, [Define if you have libz])
+ LIBZ="$ac_cv_lib_z"
+ AC_SUBST(LIBZ)
+ AC_MSG_RESULT($ac_cv_lib_z)
+else
+ AC_MSG_ERROR(not found. Check your installation and look into config.log)
+ LIBZ=""
+ AC_SUBST(LIBZ)
+fi
+])
+
+AC_DEFUN(KDE_CHECK_EXTRA_LIBS,
+[
+AC_MSG_CHECKING(for extra includes)
+AC_ARG_WITH(extra-includes, [ --with-extra-includes=DIR
+ adds non standard include paths],
+ kde_use_extra_includes="$withval",
+ kde_use_extra_includes=NONE
+)
+kde_extra_includes=
+if test -n "$kde_use_extra_includes" && \
+ test "$kde_use_extra_includes" != "NONE"; then
+
+ ac_save_ifs=$IFS
+ IFS=':'
+ for dir in $kde_use_extra_includes; do
+ kde_extra_includes="$kde_extra_includes $dir"
+ USER_INCLUDES="$USER_INCLUDES -I$dir"
+ done
+ IFS=$ac_save_ifs
+ kde_use_extra_includes="added"
+else
+ kde_use_extra_includes="no"
+fi
+AC_SUBST(USER_INCLUDES)
+
+AC_MSG_RESULT($kde_use_extra_includes)
+
+kde_extra_libs=
+AC_MSG_CHECKING(for extra libs)
+AC_ARG_WITH(extra-libs, [ --with-extra-libs=DIR adds non standard library paths],
+ kde_use_extra_libs=$withval,
+ kde_use_extra_libs=NONE
+)
+if test -n "$kde_use_extra_libs" && \
+ test "$kde_use_extra_libs" != "NONE"; then
+
+ ac_save_ifs=$IFS
+ IFS=':'
+ for dir in $kde_use_extra_libs; do
+ kde_extra_libs="$kde_extra_libs $dir"
+ KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir"
+ USER_LDFLAGS="$USER_LDFLAGS -L$dir"
+ done
+ IFS=$ac_save_ifs
+ kde_use_extra_libs="added"
+else
+ kde_use_extra_libs="no"
+fi
+
+AC_SUBST(USER_LDFLAGS)
+
+AC_MSG_RESULT($kde_use_extra_libs)
+
+])
+
+dnl ------------------------------------------------------------------------
+dnl Find a file (or one of more files in a list of dirs)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN(AC_FIND_FILE,
+[
+$3=NO
+for i in $2;
+do
+ for j in $1;
+ do
+ echo "configure: __oline__: $i/$j" >&AC_FD_CC
+ if test -r "$i/$j"; then
+ echo "taking that" >&AC_FD_CC
+ $3=$i
+ break 2
+ fi
+ done
+done
+])
diff --git a/bindings/swig/perl/Changes b/bindings/swig/perl/Changes
new file mode 100644
index 0000000..724061a
--- /dev/null
+++ b/bindings/swig/perl/Changes
@@ -0,0 +1,6 @@
+Revision history for Perl extension sword.
+
+1.5.5 Wed Oct 2 23:52:35 2002
+ - original version; created by h2xs 1.21 with options
+ -X -n Sword -v 1.5.5
+
diff --git a/bindings/swig/perl/README b/bindings/swig/perl/README
new file mode 100644
index 0000000..af3aace
--- /dev/null
+++ b/bindings/swig/perl/README
@@ -0,0 +1,35 @@
+sword version 1.5.5
+===================
+
+The README is used to introduce the module and provide instructions on
+how to install the module, any machine dependencies it may have (for
+example C compilers and installed libraries) and any other information
+that should be provided before the module is installed.
+
+A README file is required for CPAN modules since CPAN extracts the
+README file from a module distribution so that people browsing the
+archive can use it get an idea of the modules uses. It is usually a
+good idea to provide version information here so that people can
+decide whether fixes for the module are worth downloading.
+
+INSTALLATION
+
+To install this module type the following:
+
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+DEPENDENCIES
+
+This module requires these other modules and libraries:
+
+ blah blah blah
+
+COPYRIGHT AND LICENCE
+
+Put the correct copyright and licence information here.
+
+Copyright (C) 2002 Crosswire Bible Society
+
diff --git a/bindings/swig/perl/Sword.cxx b/bindings/swig/perl/Sword.cxx
new file mode 100644
index 0000000..f7384b0
--- /dev/null
+++ b/bindings/swig/perl/Sword.cxx
@@ -0,0 +1,10209 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.19
+ *
+ * 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.
+ * ----------------------------------------------------------------------------- */
+
+
+#ifdef __cplusplus
+template<class T> class SwigValueWrapper {
+ T *tt;
+public:
+ inline SwigValueWrapper() : tt(0) { }
+ inline ~SwigValueWrapper() { if (tt) delete tt; }
+ inline SwigValueWrapper& operator=(const T& t) { tt = new T(t); return *this; }
+ inline operator T&() const { return *tt; }
+ inline T *operator&() { return tt; }
+};
+#endif
+
+/***********************************************************************
+ * common.swg
+ *
+ * This file contains generic SWIG runtime support for pointer
+ * type checking as well as a few commonly used macros to control
+ * external linkage.
+ *
+ * Author : David Beazley (beazley@cs.uchicago.edu)
+ *
+ * Copyright (c) 1999-2000, The University of Chicago
+ *
+ * This file may be freely redistributed without license or fee provided
+ * this copyright message remains intact.
+ ************************************************************************/
+
+#include <string.h>
+
+#if defined(_WIN32) || defined(__WIN32__)
+# if defined(_MSC_VER)
+# if defined(STATIC_LINKED)
+# define SWIGEXPORT(a) a
+# define SWIGIMPORT(a) extern a
+# else
+# define SWIGEXPORT(a) __declspec(dllexport) a
+# define SWIGIMPORT(a) extern a
+# endif
+# else
+# if defined(__BORLANDC__)
+# define SWIGEXPORT(a) a _export
+# define SWIGIMPORT(a) a _export
+# else
+# define SWIGEXPORT(a) a
+# define SWIGIMPORT(a) a
+# endif
+# endif
+#else
+# define SWIGEXPORT(a) a
+# define SWIGIMPORT(a) a
+#endif
+
+#ifdef SWIG_GLOBAL
+#define SWIGRUNTIME(a) SWIGEXPORT(a)
+#else
+#define SWIGRUNTIME(a) static a
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(*swig_converter_func)(void *);
+typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+typedef struct swig_type_info {
+ const char *name;
+ swig_converter_func converter;
+ const char *str;
+ void *clientdata;
+ swig_dycast_func dcast;
+ struct swig_type_info *next;
+ struct swig_type_info *prev;
+} swig_type_info;
+
+#ifdef SWIG_NOINCLUDE
+
+SWIGIMPORT(swig_type_info *) SWIG_TypeRegister(swig_type_info *);
+SWIGIMPORT(swig_type_info *) SWIG_TypeCheck(char *c, swig_type_info *);
+SWIGIMPORT(void *) SWIG_TypeCast(swig_type_info *, void *);
+SWIGIMPORT(swig_type_info *) SWIG_TypeDynamicCast(swig_type_info *, void **);
+SWIGIMPORT(const char *) SWIG_TypeName(const swig_type_info *);
+SWIGIMPORT(swig_type_info *) SWIG_TypeQuery(const char *);
+SWIGIMPORT(void) SWIG_TypeClientData(swig_type_info *, void *);
+
+#else
+
+static swig_type_info *swig_type_list = 0;
+
+/* Register a type mapping with the type-checking */
+SWIGRUNTIME(swig_type_info *)
+SWIG_TypeRegister(swig_type_info *ti)
+{
+ swig_type_info *tc, *head, *ret, *next;
+ /* Check to see if this type has already been registered */
+ tc = swig_type_list;
+ while (tc) {
+ if (strcmp(tc->name, ti->name) == 0) {
+ /* Already exists in the table. Just add additional types to the list */
+ if (tc->clientdata) ti->clientdata = tc->clientdata;
+ head = tc;
+ next = tc->next;
+ goto l1;
+ }
+ tc = tc->prev;
+ }
+ head = ti;
+ next = 0;
+
+ /* Place in list */
+ ti->prev = swig_type_list;
+ swig_type_list = ti;
+
+ /* Build linked lists */
+ l1:
+ ret = head;
+ tc = ti + 1;
+ /* Patch up the rest of the links */
+ while (tc->name) {
+ head->next = tc;
+ tc->prev = head;
+ head = tc;
+ tc++;
+ }
+ if (next) next->prev = head; /**/
+ head->next = next;
+ return ret;
+}
+
+/* Check the typename */
+SWIGRUNTIME(swig_type_info *)
+SWIG_TypeCheck(char *c, swig_type_info *ty)
+{
+ swig_type_info *s;
+ if (!ty) return 0; /* Void pointer */
+ s = ty->next; /* First element always just a name */
+ do {
+ if (strcmp(s->name,c) == 0) {
+ if (s == ty->next) return s;
+ /* Move s to the top of the linked list */
+ s->prev->next = s->next;
+ if (s->next) {
+ s->next->prev = s->prev;
+ }
+ /* Insert s as second element in the list */
+ s->next = ty->next;
+ if (ty->next) ty->next->prev = s;
+ ty->next = s;
+ s->prev = ty; /**/
+ return s;
+ }
+ s = s->next;
+ } while (s && (s != ty->next));
+ return 0;
+}
+
+/* Cast a pointer up an inheritance hierarchy */
+SWIGRUNTIME(void *)
+SWIG_TypeCast(swig_type_info *ty, void *ptr)
+{
+ if ((!ty) || (!ty->converter)) return ptr;
+ return (*ty->converter)(ptr);
+}
+
+/* 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 */
+SWIGRUNTIME(const char *)
+SWIG_TypeName(const swig_type_info *ty) {
+ return ty->name;
+}
+
+/* Search for a swig_type_info structure */
+SWIGRUNTIME(swig_type_info *)
+SWIG_TypeQuery(const char *name) {
+ swig_type_info *ty = swig_type_list;
+ while (ty) {
+ if (ty->str && (strcmp(name,ty->str) == 0)) return ty;
+ if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
+ ty = ty->prev;
+ }
+ return 0;
+}
+
+/* Set the clientdata field for a type */
+SWIGRUNTIME(void)
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+ swig_type_info *tc, *equiv;
+ if (ti->clientdata == clientdata) return;
+ ti->clientdata = clientdata;
+ equiv = ti->next;
+ while (equiv) {
+ if (!equiv->converter) {
+ tc = swig_type_list;
+ while (tc) {
+ if ((strcmp(tc->name, equiv->name) == 0))
+ SWIG_TypeClientData(tc,clientdata);
+ tc = tc->prev;
+ }
+ }
+ equiv = equiv->next;
+ }
+}
+#endif
+
+#ifdef __cplusplus
+}
+
+#endif
+
+/* -----------------------------------------------------------------------------
+ * perl5.swg
+ *
+ * Perl5 runtime library
+ * $Header: /cvs/core/sword/bindings/swig/perl/Sword.cxx,v 1.14 2003/07/17 21:38:30 dglassey Exp $
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGPERL
+#define SWIGPERL5
+#ifdef __cplusplus
+/* Needed on some windows machines---since MS plays funny
+ games with the header files under C++ */
+#include <math.h>
+#include <stdlib.h>
+extern "C" {
+#endif
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+/* Get rid of free and malloc defined by perl */
+#undef free
+#undef malloc
+
+#ifndef pTHX_
+#define pTHX_
+#endif
+
+#include <string.h>
+#ifdef __cplusplus
+}
+#endif
+
+/* Macro to call an XS function */
+
+#ifdef PERL_OBJECT
+#define SWIG_CALLXS(_name) _name(cv,pPerl)
+#else
+#ifndef MULTIPLICITY
+#define SWIG_CALLXS(_name) _name(cv)
+#else
+#define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv)
+#endif
+#endif
+
+/* Macros for low-level exception handling */
+#define SWIG_fail goto fail
+#define SWIG_croak(x) { if ((_swigerr = (const char *) x)) goto fail; }
+#define SWIG_MAX_ERRMSG 256
+
+/* Note: SwigMagicFuncHack is a typedef used to get the C++
+ compiler to just shut up already */
+
+#ifdef PERL_OBJECT
+#define MAGIC_PPERL CPerlObj *pPerl = (CPerlObj *) this;
+typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef int (CPerlObj::*SwigMagicFuncHack)(SV *, MAGIC *);
+#ifdef __cplusplus
+}
+#endif
+
+#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
+#define SWIGCLASS_STATIC
+#else
+#define MAGIC_PPERL
+#define SWIGCLASS_STATIC static
+#ifndef MULTIPLICITY
+#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
+typedef int (*SwigMagicFunc)(SV *, MAGIC *);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef int (*SwigMagicFuncHack)(SV *, MAGIC *);
+#ifdef __cplusplus
+}
+#endif
+
+
+#else
+#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
+typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef int (*SwigMagicFuncHack)(struct interpreter *, SV *, MAGIC *);
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+#endif
+
+#if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
+#define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
+#endif
+
+/* Modifications for newer Perl 5.005 releases */
+
+#if !defined(PERL_REVISION) || ((PERL_REVISION >= 5) && ((PERL_VERSION < 5) || ((PERL_VERSION == 5) && (PERL_SUBVERSION < 50))))
+#ifndef PL_sv_yes
+#define PL_sv_yes sv_yes
+#endif
+#ifndef PL_sv_undef
+#define PL_sv_undef sv_undef
+#endif
+#ifndef PL_na
+#define PL_na na
+#endif
+#endif
+
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef SWIG_NOINCLUDE
+
+#ifndef PERL_OBJECT
+extern int SWIG_ConvertPtr(SV *, void **, swig_type_info *, int flags);
+extern void SWIG_MakePtr(SV *, void *, swig_type_info *, int flags);
+#else
+extern int _SWIG_ConvertPtr(CPerlObj *, SV *, void **, swig_type_info *,int flags);
+extern void _SWIG_MakePtr(CPerlObj *, SV *, void *, swig_type_info *, int flags);
+#define SWIG_ConvertPtr(a,b,c,d) _SWIG_ConvertPtr(pPerl,a,b,c,d)
+#define SWIG_MakePtr(a,b,c,d) _SWIG_MakePtr(pPerl,a,b,c,d)
+#endif
+
+#else
+
+/* Function for getting a pointer value */
+
+#ifndef PERL_OBJECT
+SWIGRUNTIME(int)
+SWIG_ConvertPtr(SV *sv, void **ptr, swig_type_info *_t, int flags)
+#else
+#define SWIG_ConvertPtr(a,b,c,d) _SWIG_ConvertPtr(pPerl,a,b,c,d)
+SWIGRUNTIME(int)
+_SWIG_ConvertPtr(CPerlObj *pPerl, SV *sv, void **ptr, swig_type_info *_t, int flags)
+#endif
+{
+ char *_c;
+ swig_type_info *tc;
+ IV tmp;
+
+ /* If magical, apply more magic */
+ if (SvGMAGICAL(sv))
+ mg_get(sv);
+
+ /* Check to see if this is an object */
+ if (sv_isobject(sv)) {
+ SV *tsv = (SV*) SvRV(sv);
+ if ((SvTYPE(tsv) == SVt_PVHV)) {
+ MAGIC *mg;
+ if (SvMAGICAL(tsv)) {
+ mg = mg_find(tsv,'P');
+ if (mg) {
+ SV *rsv = mg->mg_obj;
+ if (sv_isobject(rsv)) {
+ tmp = SvIV((SV*)SvRV(rsv));
+ }
+ }
+ } else {
+ return -1;
+ }
+ } else {
+ tmp = SvIV((SV*)SvRV(sv));
+ }
+ if (!_t) {
+ *(ptr) = (void *) tmp;
+ return 0;
+ }
+ } else if (! SvOK(sv)) { /* Check for undef */
+ *(ptr) = (void *) 0;
+ return 0;
+ } else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */
+ *(ptr) = (void *) 0;
+ if (!SvROK(sv))
+ return 0;
+ else
+ return -1;
+ } else { /* Don't know what it is */
+ *(ptr) = (void *) 0;
+ return -1;
+ }
+ if (_t) {
+ /* Now see if the types match */
+ _c = HvNAME(SvSTASH(SvRV(sv)));
+ tc = SWIG_TypeCheck(_c,_t);
+ if (!tc) {
+ *ptr = (void *) tmp;
+ return -1;
+ }
+ *ptr = SWIG_TypeCast(tc,(void *)tmp);
+ return 0;
+ }
+ *ptr = (void *) tmp;
+ return 0;
+}
+#ifndef PERL_OBJECT
+SWIGRUNTIME(void)
+SWIG_MakePtr(SV *sv, void *ptr, swig_type_info *t,int flags)
+#else
+#define SWIG_MakePtr(a,b,c,d) _SWIG_MakePtr(pPerl,a,b,c,d)
+SWIGRUNTIME(void)
+_SWIG_MakePtr(CPerlObj *pPerl, SV *sv, void *ptr, swig_type_info *t, int flags)
+#endif
+{
+ sv_setref_pv(sv, (char *) t->name, ptr);
+}
+
+#endif
+
+typedef XS(SwigPerlWrapper);
+typedef SwigPerlWrapper *SwigPerlWrapperPtr;
+
+/* Structure for command table */
+typedef struct {
+ const char *name;
+ SwigPerlWrapperPtr wrapper;
+} swig_command_info;
+
+/* Information for constant table */
+
+#define SWIG_INT 1
+#define SWIG_FLOAT 2
+#define SWIG_STRING 3
+#define SWIG_POINTER 4
+#define SWIG_BINARY 5
+
+/* Constant information structure */
+typedef struct swig_constant_info {
+ int type;
+ const char *name;
+ long lvalue;
+ double dvalue;
+ void *pvalue;
+ swig_type_info **ptype;
+} swig_constant_info;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Structure for variable table */
+typedef struct {
+ const char *name;
+ SwigMagicFunc set;
+ SwigMagicFunc get;
+ swig_type_info **type;
+} swig_variable_info;
+
+/* Magic variable code */
+#ifndef PERL_OBJECT
+#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c)
+ #ifndef MULTIPLICITY
+ static void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int \
+(*get)(SV *,MAGIC *)) {
+ #else
+ static void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*,\
+ SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) {
+ #endif
+#else
+#define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
+static void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) {
+#endif
+ MAGIC *mg;
+ sv_magic(sv,sv,'U',(char *) name,strlen(name));
+ mg = mg_find(sv,'U');
+ mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
+ mg->mg_virtual->svt_get = (SwigMagicFuncHack) get;
+ mg->mg_virtual->svt_set = (SwigMagicFuncHack) set;
+ mg->mg_virtual->svt_len = 0;
+ mg->mg_virtual->svt_clear = 0;
+ mg->mg_virtual->svt_free = 0;
+}
+
+
+
+
+
+
+#ifdef do_open
+ #undef do_open
+#endif
+#ifdef do_close
+ #undef do_close
+#endif
+#ifdef scalar
+ #undef scalar
+#endif
+#ifdef list
+ #undef list
+#endif
+#ifdef apply
+ #undef apply
+#endif
+#ifdef convert
+ #undef convert
+#endif
+#ifdef Error
+ #undef Error
+#endif
+#ifdef form
+ #undef form
+#endif
+#ifdef vform
+ #undef vform
+#endif
+#ifdef LABEL
+ #undef LABEL
+#endif
+#ifdef METHOD
+ #undef METHOD
+#endif
+#ifdef Move
+ #undef Move
+#endif
+#ifdef yylex
+ #undef yylex
+#endif
+#ifdef yyparse
+ #undef yyparse
+#endif
+#ifdef yyerror
+ #undef yyerror
+#endif
+#ifdef invert
+ #undef invert
+#endif
+#ifdef ref
+ #undef ref
+#endif
+
+
+/* -------- TYPES TABLE (BEGIN) -------- */
+
+#define SWIGTYPE_p_SWLocale swig_types[0]
+#define SWIGTYPE_p_SWMgr swig_types[1]
+#define SWIGTYPE_p_SWCom swig_types[2]
+#define SWIGTYPE_p_RawLD4 swig_types[3]
+#define SWIGTYPE_p_ListKey swig_types[4]
+#define SWIGTYPE_p_SWKey swig_types[5]
+#define SWIGTYPE_p_ConfigEntMap swig_types[6]
+#define SWIGTYPE_p_p_char swig_types[7]
+#define SWIGTYPE_p_RawLD swig_types[8]
+#define SWIGTYPE_p_char swig_types[9]
+#define SWIGTYPE_p_TreeKey swig_types[10]
+#define SWIGTYPE_p_StringList swig_types[11]
+#define SWIGTYPE_p_bool swig_types[12]
+#define SWIGTYPE_p_SWFilterMgr swig_types[13]
+#define SWIGTYPE_p_SWLD swig_types[14]
+#define SWIGTYPE_p_SWTextDirection swig_types[15]
+#define SWIGTYPE_p_RawText swig_types[16]
+#define SWIGTYPE_p_f_char_p_void__void swig_types[17]
+#define SWIGTYPE_p_VerseKey swig_types[18]
+#define SWIGTYPE_p_SWBuf swig_types[19]
+#define SWIGTYPE_p_ModMap swig_types[20]
+#define SWIGTYPE_p_zCom swig_types[21]
+#define SWIGTYPE_p_SectionMap swig_types[22]
+#define SWIGTYPE_p_SWDisplay swig_types[23]
+#define SWIGTYPE_p_AttributeTypeList swig_types[24]
+#define SWIGTYPE_p_SWText swig_types[25]
+#define SWIGTYPE_p_std__listTSWBuf_t swig_types[26]
+#define SWIGTYPE_p_TreeKeyIdx swig_types[27]
+#define SWIGTYPE_p_SWCompress swig_types[28]
+#define SWIGTYPE_p_LZSSCompress swig_types[29]
+#define SWIGTYPE_p_ZipCompress swig_types[30]
+#define SWIGTYPE_p_SW_POSITION swig_types[31]
+#define SWIGTYPE_p_SWModule swig_types[32]
+#define SWIGTYPE_p_zLD swig_types[33]
+#define SWIGTYPE_p_SWGenBook swig_types[34]
+#define SWIGTYPE_p_RawCom swig_types[35]
+#define SWIGTYPE_p_RawGenBook swig_types[36]
+#define SWIGTYPE_p_SWConfig swig_types[37]
+#define SWIGTYPE_p_LocaleMgr swig_types[38]
+#define SWIGTYPE_p_int swig_types[39]
+#define SWIGTYPE_p_SWTextMarkup swig_types[40]
+#define SWIGTYPE_p_zText swig_types[41]
+#define SWIGTYPE_p_SWTextEncoding swig_types[42]
+#define SWIGTYPE_p_unsigned_long swig_types[43]
+static swig_type_info *swig_types[45];
+
+/* -------- TYPES TABLE (END) -------- */
+
+#define SWIG_init boot_Sword
+
+#define SWIG_name "Swordc::boot_Sword"
+#define SWIG_prefix "Swordc::"
+
+#ifdef __cplusplus
+extern "C"
+#endif
+#ifndef PERL_OBJECT
+#ifndef MULTIPLICITY
+SWIGEXPORT(void) SWIG_init (CV* cv);
+#else
+SWIGEXPORT(void) SWIG_init (pTHXo_ CV* cv);
+#endif
+#else
+SWIGEXPORT(void) SWIG_init (CV *cv, CPerlObj *);
+#endif
+
+
+#undef bool
+#undef assert
+#undef LOCAL
+#undef list
+
+
+#include <stdio.h>
+#include <string>
+//#include <map>
+#include <defs.h>
+//#include <multimapwdef.h>
+#include "swconfig.h"
+
+using namespace sword;
+using namespace std;
+
+
+#define SWIG_MemoryError 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_UnknownError 99
+
+
+#define SWIG_exception(a,b) SWIG_croak(b)
+
+
+#include <vector>
+#include <algorithm>
+#include <stdexcept>
+
+
+#include <string>
+
+void SWConfig_set(SWConfig *self,char const *group,char const *entry,char const *value){
+ self->Sections[group][entry] = value;
+ }
+char const *SWConfig_get(SWConfig *self,char const *group,char const *entry){
+ return self->Sections[group][entry].c_str();
+ }
+
+#include <swmgr.h>
+using namespace sword;
+
+int const SWMgr_moduleCount(SWMgr *self){
+ return self->Modules.size();
+ }
+SWModule *SWMgr_getModuleAt(SWMgr *self,int const pos){
+ if (pos < 0 || pos > self->Modules.size() )
+ return 0;
+
+ ModMap::iterator it = self->Modules.begin();
+
+ for (int i = 0; i < pos; ++i) {
+ it++;
+ }
+
+ if ( it != self->Modules.end() ) {
+ return (*it).second;
+ }
+
+ return 0;
+ }
+
+#include "swmodule.h"
+using namespace sword;
+
+bool const SWModule_next(SWModule *self){
+ (*self)++;
+ return !self->Error();
+ }
+bool const SWModule_prev(SWModule *self){
+ (*self)--;
+ return !self->Error();
+ }
+bool const SWModule_inc(SWModule *self,int const howFar){
+ (*self)+=howFar;
+ return !self->Error();
+ }
+bool const SWModule_dec(SWModule *self,int const howFar){
+ (*self)-=howFar;
+ return !self->Error();
+ }
+void SWModule_setPosition(SWModule *self,SW_POSITION pos){
+ (*self) = pos;
+ }
+void SWModule_top(SWModule *self){
+ (*self) = TOP;
+ }
+void SWModule_bottom(SWModule *self){
+ (*self) = BOTTOM;
+ }
+char const *SWModule_text(SWModule *self){
+ return (const char*)*self;
+ }
+char const *SWModule_StripText(SWModule *self){
+ return self->StripText();
+ }
+void SWModule_write(SWModule *self,char const *text){
+ (*self) << text;
+ }
+void SWModule_writeLink(SWModule *self,SWKey const *key){
+ (*self) << key;
+ }
+
+#include "swkey.h"
+#include "versekey.h"
+using namespace sword;
+
+void SWKey_setPersist(SWKey *self,signed char persists){
+ self->Persist(persists);
+ }
+void SWKey_next(SWKey *self){
+ (*self)++;
+ }
+void SWKey_prev(SWKey *self){
+ (*self)++;
+ }
+void SWKey_setKey(SWKey *self,SWKey const *key){
+ self->copyFrom(*key);
+ }
+VerseKey *SWKey_toVerseKey(SWKey *self){
+ return dynamic_cast<VerseKey*>(self);
+ }
+
+#include "versekey.h"
+#include "listkey.h"
+using namespace sword;
+
+int const VerseKey_bookCount(VerseKey *self,int const testament){
+ if ( (testament < 1) || (testament > 2) ) {
+ return 0;
+ };
+ return self->BMAX[testament-1];
+ }
+char const *VerseKey_bookName(VerseKey *self,int const testament,int const book){
+ if ( (testament < 1) || (testament > 2) ) {
+ return "";
+ };
+ if ( (book < 1) || (book > self->BMAX[testament-1]) ) {
+ return "";
+ }
+
+ return self->books[testament-1][book-1].name;
+ }
+int const VerseKey_chapterCount(VerseKey *self,int const testament,int const book){
+ if ( (testament < 1) || (testament > 2) ) {
+ return 0;
+ };
+ if ( (book < 1) || (book > self->BMAX[testament-1]) ) {
+ return 0;
+ }
+
+ return self->books[testament-1][book-1].chapmax;
+ }
+int const VerseKey_verseCount(VerseKey *self,int const testament,int const book,int const chapter){
+ if ( (testament < 1) || (testament > 2) ) {
+ return 0;
+ };
+ if ( (book < 1) || (book > self->BMAX[testament-1]) ) {
+ return 0;
+ }
+ if ( (chapter < 1) || (chapter > self->books[testament-1][book-1].chapmax) ) {
+ return 0;
+ }
+
+ return self->books[testament-1][book-1].versemax[chapter-1];
+
+ }
+
+#include "listkey.h"
+using namespace sword;
+
+char ListKey_SetToElement(ListKey *self,int element){
+ return self->SetToElement(element, SW_POSITION(((char)1)));
+ }
+
+#include "treekey.h"
+using namespace sword;
+
+
+#include "treekeyidx.h"
+using namespace sword;
+
+
+#include <localemgr.h>
+
+using namespace std;
+using namespace sword;
+
+LocaleMgr *const LocaleMgr_getSystemLocaleMgr(){
+ return &(LocaleMgr::systemLocaleMgr);
+ }
+
+#include <swfiltermgr.h>
+using namespace sword;
+
+
+#include "swtext.h"
+using namespace sword;
+
+
+#include "rawtext.h"
+using namespace sword;
+
+
+#include "ztext.h"
+using namespace sword;
+
+
+#include "swcom.h"
+using namespace sword;
+
+
+#include "rawcom.h"
+using namespace sword;
+
+
+#include "zcom.h"
+using namespace sword;
+
+
+#include "swgenbook.h"
+using namespace sword;
+
+
+#include "rawgenbook.h"
+#include "treekeyidx.h"
+#include "swkey.h"
+using namespace sword;
+
+TreeKeyIdx *RawGenBook_getTreeKey(RawGenBook *self){
+ return ( (TreeKeyIdx *) ( (SWKey *) (*self) ) );
+ }
+
+#include "swld.h"
+using namespace sword;
+
+
+#include "rawld.h"
+using namespace sword;
+
+
+#include "rawld4.h"
+using namespace sword;
+
+
+#include "zld.h"
+using namespace sword;
+
+
+#include <swcomprs.h>
+using namespace sword;
+
+
+#include <lzsscomprs.h>
+using namespace sword;
+
+
+#include <zipcomprs.h>
+using namespace sword;
+
+
+#include "swbuf.h"
+using namespace sword;
+
+#ifdef PERL_OBJECT
+#define MAGIC_CLASS _wrap_Sword_var::
+class _wrap_Sword_var : public CPerlObj {
+public:
+#else
+#define MAGIC_CLASS
+#endif
+SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *sv, MAGIC *mg) {
+ MAGIC_PPERL
+ sv = sv; mg = mg;
+ croak("Value is read-only.");
+ return 0;
+}
+
+
+#ifdef PERL_OBJECT
+};
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+XS(_wrap_SWConfig_filename_set) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWConfig *arg1 = (SWConfig *) 0 ;
+ SWBuf *arg2 = (SWBuf *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWConfig_filename_set(self,filename);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWConfig_filename_set. Expected _p_SWConfig");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWConfig_filename_set. Expected _p_SWBuf");
+ }
+ }
+ if (arg1) (arg1)->filename = *arg2;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWConfig_filename_get) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWConfig *arg1 = (SWConfig *) 0 ;
+ SWBuf *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWConfig_filename_get(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWConfig_filename_get. Expected _p_SWConfig");
+ }
+ }
+ result = (SWBuf *)& ((arg1)->filename);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWBuf,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWConfig_Sections_set) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWConfig *arg1 = (SWConfig *) 0 ;
+ SectionMap arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWConfig_Sections_set(self,Sections);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWConfig_Sections_set. Expected _p_SWConfig");
+ }
+ }
+ {
+ SectionMap * argp;
+ if (SWIG_ConvertPtr(ST(1),(void **) &argp, SWIGTYPE_p_SectionMap,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWConfig_Sections_set. Expected _p_SectionMap");
+ }
+ arg2 = *argp;
+ }
+ if (arg1) (arg1)->Sections = arg2;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWConfig_Sections_get) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWConfig *arg1 = (SWConfig *) 0 ;
+ SectionMap result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWConfig_Sections_get(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWConfig_Sections_get. Expected _p_SWConfig");
+ }
+ }
+ result = ((arg1)->Sections);
+
+ {
+ SectionMap * resultobj = new SectionMap((SectionMap &)result);
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_SectionMap,0);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWConfig) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ SWConfig *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: new_SWConfig(ifilename);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ result = (SWConfig *)new SWConfig((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWConfig,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_SWConfig) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWConfig *arg1 = (SWConfig *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_SWConfig(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_SWConfig. Expected _p_SWConfig");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWConfig_Load) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWConfig *arg1 = (SWConfig *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWConfig_Load(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWConfig_Load. Expected _p_SWConfig");
+ }
+ }
+ (arg1)->Load();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWConfig_Save) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWConfig *arg1 = (SWConfig *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWConfig_Save(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWConfig_Save. Expected _p_SWConfig");
+ }
+ }
+ (arg1)->Save();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWConfig_set) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWConfig *arg1 = (SWConfig *) 0 ;
+ char *arg2 ;
+ char *arg3 ;
+ char *arg4 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 4) || (items > 4)) {
+ SWIG_croak("Usage: SWConfig_set(self,group,entry,value);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWConfig_set. Expected _p_SWConfig");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ if (!SvOK((SV*) ST(3))) arg4 = 0;
+ else arg4 = (char *) SvPV(ST(3), PL_na);
+ SWConfig_set(arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWConfig_get) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWConfig *arg1 = (SWConfig *) 0 ;
+ char *arg2 ;
+ char *arg3 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 3) || (items > 3)) {
+ SWIG_croak("Usage: SWConfig_get(self,group,entry);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWConfig_get. Expected _p_SWConfig");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ result = (char *)SWConfig_get(arg1,(char const *)arg2,(char const *)arg3);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_findConfig) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char **arg2 = (char **) 0 ;
+ char **arg3 = (char **) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 3) || (items > 3)) {
+ SWIG_croak("Usage: SWMgr_findConfig(configType,prefixPath,configPath);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_p_char,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWMgr_findConfig. Expected _p_p_char");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_p_char,0) < 0) {
+ SWIG_croak("Type error in argument 3 of SWMgr_findConfig. Expected _p_p_char");
+ }
+ }
+ SWMgr::findConfig(arg1,arg2,arg3);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_config_set) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ SWConfig *arg2 = (SWConfig *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_config_set(self,config);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_config_set. Expected _p_SWMgr");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWMgr_config_set. Expected _p_SWConfig");
+ }
+ }
+ if (arg1) (arg1)->config = arg2;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_config_get) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ SWConfig *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWMgr_config_get(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_config_get. Expected _p_SWMgr");
+ }
+ }
+ result = (SWConfig *) ((arg1)->config);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWConfig,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_sysconfig_set) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ SWConfig *arg2 = (SWConfig *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_sysconfig_set(self,sysconfig);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_sysconfig_set. Expected _p_SWMgr");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWMgr_sysconfig_set. Expected _p_SWConfig");
+ }
+ }
+ if (arg1) (arg1)->sysconfig = arg2;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_sysconfig_get) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ SWConfig *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWMgr_sysconfig_get(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_sysconfig_get. Expected _p_SWMgr");
+ }
+ }
+ result = (SWConfig *) ((arg1)->sysconfig);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWConfig,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_Modules_set) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ ModMap arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_Modules_set(self,Modules);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_Modules_set. Expected _p_SWMgr");
+ }
+ }
+ {
+ ModMap * argp;
+ if (SWIG_ConvertPtr(ST(1),(void **) &argp, SWIGTYPE_p_ModMap,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWMgr_Modules_set. Expected _p_ModMap");
+ }
+ arg2 = *argp;
+ }
+ if (arg1) (arg1)->Modules = arg2;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_Modules_get) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ ModMap result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWMgr_Modules_get(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_Modules_get. Expected _p_SWMgr");
+ }
+ }
+ result = ((arg1)->Modules);
+
+ {
+ ModMap * resultobj = new ModMap((ModMap &)result);
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_ModMap,0);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_prefixPath_set) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_prefixPath_set(self,prefixPath);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_prefixPath_set. Expected _p_SWMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ {
+ if (arg1->prefixPath) delete [] arg1->prefixPath;
+ if (arg2) {
+ arg1->prefixPath = (char *) (new char[strlen(arg2)+1]);
+ strcpy((char *) arg1->prefixPath,arg2);
+ }else {
+ arg1->prefixPath = 0;
+ }
+ }
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_prefixPath_get) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWMgr_prefixPath_get(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_prefixPath_get. Expected _p_SWMgr");
+ }
+ }
+ result = (char *) ((arg1)->prefixPath);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_configPath_set) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_configPath_set(self,configPath);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_configPath_set. Expected _p_SWMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ {
+ if (arg1->configPath) delete [] arg1->configPath;
+ if (arg2) {
+ arg1->configPath = (char *) (new char[strlen(arg2)+1]);
+ strcpy((char *) arg1->configPath,arg2);
+ }else {
+ arg1->configPath = 0;
+ }
+ }
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_configPath_get) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWMgr_configPath_get(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_configPath_get. Expected _p_SWMgr");
+ }
+ }
+ result = (char *) ((arg1)->configPath);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWMgr__SWIG_0) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWConfig *arg1 = (SWConfig *) 0 ;
+ SWConfig *arg2 = (SWConfig *) 0 ;
+ bool arg3 = (bool) true ;
+ SWFilterMgr *arg4 = (SWFilterMgr *) 0 ;
+ SWMgr *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 4)) {
+ SWIG_croak("Usage: new_SWMgr(iconfig,isysconfig,autoload,filterMgr);");
+ }
+ if (items > 0) {
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 1 of new_SWMgr. Expected _p_SWConfig");
+ }
+ }
+ }
+ if (items > 1) {
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWConfig,0) < 0) {
+ SWIG_croak("Type error in argument 2 of new_SWMgr. Expected _p_SWConfig");
+ }
+ }
+ }
+ if (items > 2) {
+ arg3 = (bool) SvIV(ST(2));
+ }
+ if (items > 3) {
+ {
+ if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_SWFilterMgr,0) < 0) {
+ SWIG_croak("Type error in argument 4 of new_SWMgr. Expected _p_SWFilterMgr");
+ }
+ }
+ }
+ result = (SWMgr *)new SWMgr(arg1,arg2,arg3,arg4);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWMgr,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWMgr__SWIG_1) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ bool arg2 = (bool) true ;
+ SWFilterMgr *arg3 = (SWFilterMgr *) 0 ;
+ SWMgr *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 3)) {
+ SWIG_croak("Usage: new_SWMgr(iConfigPath,autoload,filterMgr);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ if (items > 1) {
+ arg2 = (bool) SvIV(ST(1));
+ }
+ if (items > 2) {
+ {
+ if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_SWFilterMgr,0) < 0) {
+ SWIG_croak("Type error in argument 3 of new_SWMgr. Expected _p_SWFilterMgr");
+ }
+ }
+ }
+ result = (SWMgr *)new SWMgr((char const *)arg1,arg2,arg3);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWMgr,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWMgr) {
+ dXSARGS;
+
+ if ((items >= 0) && (items <= 4)) {
+ int _v;
+ if (items <= 0) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWMgr__SWIG_0); return;
+ }
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_SWConfig, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ if (items <= 1) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWMgr__SWIG_0); return;
+ }
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_SWConfig, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ if (items <= 2) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWMgr__SWIG_0); return;
+ }
+ {
+ _v = SvIOK(ST(2)) ? 1 : 0;
+ }
+ if (_v) {
+ if (items <= 3) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWMgr__SWIG_0); return;
+ }
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(3), (void **) &tmp, SWIGTYPE_p_SWFilterMgr, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWMgr__SWIG_0); return;
+ }
+ }
+ }
+ }
+ }
+ if ((items >= 1) && (items <= 3)) {
+ int _v;
+ {
+ _v = SvPOK(ST(0)) ? 1 : 0;
+ }
+ if (_v) {
+ if (items <= 1) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWMgr__SWIG_1); return;
+ }
+ {
+ _v = SvIOK(ST(1)) ? 1 : 0;
+ }
+ if (_v) {
+ if (items <= 2) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWMgr__SWIG_1); return;
+ }
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_SWFilterMgr, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWMgr__SWIG_1); return;
+ }
+ }
+ }
+ }
+
+ croak("No matching function for overloaded 'new_SWMgr'");
+ XSRETURN(0);
+}
+
+
+XS(_wrap_delete_SWMgr) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_SWMgr(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_SWMgr. Expected _p_SWMgr");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_Load) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ signed char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWMgr_Load(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_Load. Expected _p_SWMgr");
+ }
+ }
+ result = (signed char)(arg1)->Load();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_setGlobalOption) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *arg2 ;
+ char *arg3 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 3) || (items > 3)) {
+ SWIG_croak("Usage: SWMgr_setGlobalOption(self,option,value);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_setGlobalOption. Expected _p_SWMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ (arg1)->setGlobalOption((char const *)arg2,(char const *)arg3);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_getGlobalOption) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *arg2 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_getGlobalOption(self,option);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_getGlobalOption. Expected _p_SWMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ result = (char *)(arg1)->getGlobalOption((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_getGlobalOptionTip) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *arg2 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_getGlobalOptionTip(self,option);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_getGlobalOptionTip. Expected _p_SWMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ result = (char *)(arg1)->getGlobalOptionTip((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_getGlobalOptions) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ StringList result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWMgr_getGlobalOptions(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_getGlobalOptions. Expected _p_SWMgr");
+ }
+ }
+ result = (arg1)->getGlobalOptions();
+
+ {
+ StringList * resultobj = new StringList((StringList &)result);
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_StringList,0);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_getGlobalOptionValues) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *arg2 ;
+ StringList result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_getGlobalOptionValues(self,option);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_getGlobalOptionValues. Expected _p_SWMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ result = (arg1)->getGlobalOptionValues((char const *)arg2);
+
+ {
+ StringList * resultobj = new StringList((StringList &)result);
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_StringList,0);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_setCipherKey) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *arg2 ;
+ char *arg3 ;
+ signed char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 3) || (items > 3)) {
+ SWIG_croak("Usage: SWMgr_setCipherKey(self,modName,key);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_setCipherKey. Expected _p_SWMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ result = (signed char)(arg1)->setCipherKey((char const *)arg2,(char const *)arg3);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_getModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *arg2 ;
+ SWModule *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_getModule(self,modName);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_getModule. Expected _p_SWMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ result = (SWModule *)(arg1)->getModule((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWModule,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_InstallScan) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ char *arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_InstallScan(self,dir);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_InstallScan. Expected _p_SWMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ (arg1)->InstallScan((char const *)arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_moduleCount) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWMgr_moduleCount(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_moduleCount. Expected _p_SWMgr");
+ }
+ }
+ result = (int)SWMgr_moduleCount(arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWMgr_getModuleAt) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWMgr *arg1 = (SWMgr *) 0 ;
+ int arg2 ;
+ SWModule *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWMgr_getModuleAt(self,pos);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWMgr_getModuleAt. Expected _p_SWMgr");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ result = (SWModule *)SWMgr_getModuleAt(arg1,arg2);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWModule,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_terminateSearch_set) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_terminateSearch_set(self,terminateSearch);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_terminateSearch_set. Expected _p_SWModule");
+ }
+ }
+ arg2 = (bool) SvIV(ST(1));
+ if (arg1) (arg1)->terminateSearch = arg2;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_terminateSearch_get) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_terminateSearch_get(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_terminateSearch_get. Expected _p_SWModule");
+ }
+ }
+ result = (bool) ((arg1)->terminateSearch);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 = (char *) 0 ;
+ char *arg2 = (char *) 0 ;
+ SWDisplay *arg3 = (SWDisplay *) 0 ;
+ char *arg4 = (char *) 0 ;
+ SWTextEncoding arg5 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg6 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg7 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg8 = (char *) 0 ;
+ SWModule *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 8)) {
+ SWIG_croak("Usage: new_SWModule(imodname,imoddesc,idisp,imodtype,encoding,dir,markup,modlang);");
+ }
+ if (items > 0) {
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ }
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ {
+ if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 3 of new_SWModule. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 3) {
+ if (!SvOK((SV*) ST(3))) arg4 = 0;
+ else arg4 = (char *) SvPV(ST(3), PL_na);
+ }
+ if (items > 4) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(4),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_SWModule. Expected _p_SWTextEncoding");
+ }
+ arg5 = *argp;
+ }
+ }
+ if (items > 5) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(5),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_SWModule. Expected _p_SWTextDirection");
+ }
+ arg6 = *argp;
+ }
+ }
+ if (items > 6) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(6),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 7 of new_SWModule. Expected _p_SWTextMarkup");
+ }
+ arg7 = *argp;
+ }
+ }
+ if (items > 7) {
+ if (!SvOK((SV*) ST(7))) arg8 = 0;
+ else arg8 = (char *) SvPV(ST(7), PL_na);
+ }
+ result = (SWModule *)new SWModule((char const *)arg1,(char const *)arg2,arg3,arg4,arg5,arg6,arg7,(char const *)arg8);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWModule,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Error) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_Error(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Error. Expected _p_SWModule");
+ }
+ }
+ result = (char)(arg1)->Error();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_isUnicode) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_isUnicode(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_isUnicode. Expected _p_SWModule");
+ }
+ }
+ result = (bool)((SWModule const *)arg1)->isUnicode();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_getConfig) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ ConfigEntMap *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_getConfig(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_getConfig. Expected _p_SWModule");
+ }
+ }
+ {
+ ConfigEntMap const &_result_ref = ((SWModule const *)arg1)->getConfig();
+ result = (ConfigEntMap *) &_result_ref;
+ }
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_ConfigEntMap,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_getConfigEntry) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *arg2 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_getConfigEntry(self,key);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_getConfigEntry. Expected _p_SWModule");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ result = (char *)((SWModule const *)arg1)->getConfigEntry((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_SetKey) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ SWKey *arg2 = (SWKey *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_SetKey(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_SetKey. Expected _p_SWModule");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWModule_SetKey. Expected _p_SWKey");
+ }
+ }
+ result = (char)(arg1)->SetKey((SWKey const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Key) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ SWKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_Key(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Key. Expected _p_SWModule");
+ }
+ }
+ {
+ SWKey &_result_ref = ((SWModule const *)arg1)->Key();
+ result = (SWKey *) &_result_ref;
+ }
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_CreateKey) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ SWKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_CreateKey(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_CreateKey. Expected _p_SWModule");
+ }
+ }
+ result = (SWKey *)(arg1)->CreateKey();
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_KeyText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_KeyText(self,imodtype);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_KeyText. Expected _p_SWModule");
+ }
+ }
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ result = (char *)(arg1)->KeyText((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Display) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_Display(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Display. Expected _p_SWModule");
+ }
+ }
+ result = (char)(arg1)->Display();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_nullPercent) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char arg1 ;
+ void *arg2 = (void *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_nullPercent(percent,userData);");
+ }
+ arg1 = (char) *SvPV(ST(0),PL_na);
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, 0,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWModule_nullPercent. Expected _p_void");
+ }
+ }
+ SWModule::nullPercent(arg1,arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Search) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *arg2 ;
+ int arg3 = (int) 0 ;
+ int arg4 = (int) 0 ;
+ SWKey *arg5 = (SWKey *) 0 ;
+ bool *arg6 = (bool *) 0 ;
+ void (*arg7)(char,void *) = (void (*)(char,void *)) &SWModule::nullPercent ;
+ void *arg8 = (void *) 0 ;
+ ListKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 8)) {
+ SWIG_croak("Usage: SWModule_Search(self,istr,searchType,flags,scope,justCheckIfSupported,percent,percentUserData);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Search. Expected _p_SWModule");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ if (items > 2) {
+ arg3 = (int) SvIV(ST(2));
+ }
+ if (items > 3) {
+ arg4 = (int) SvIV(ST(3));
+ }
+ if (items > 4) {
+ {
+ if (SWIG_ConvertPtr(ST(4), (void **) &arg5, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 5 of SWModule_Search. Expected _p_SWKey");
+ }
+ }
+ }
+ if (items > 5) {
+ {
+ if (SWIG_ConvertPtr(ST(5), (void **) &arg6, SWIGTYPE_p_bool,0) < 0) {
+ SWIG_croak("Type error in argument 6 of SWModule_Search. Expected _p_bool");
+ }
+ }
+ }
+ if (items > 6) {
+ {
+ if (SWIG_ConvertPtr(ST(6), (void **) &arg7, SWIGTYPE_p_f_char_p_void__void,0) < 0) {
+ SWIG_croak("Type error in argument 7 of SWModule_Search. Expected _p_f_char_p_void__void");
+ }
+ }
+ }
+ if (items > 7) {
+ {
+ if (SWIG_ConvertPtr(ST(7), (void **) &arg8, 0,0) < 0) {
+ SWIG_croak("Type error in argument 8 of SWModule_Search. Expected _p_void");
+ }
+ }
+ }
+ {
+ ListKey &_result_ref = (arg1)->Search((char const *)arg2,arg3,arg4,arg5,arg6,arg7,arg8);
+ result = (ListKey *) &_result_ref;
+ }
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_ListKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_createSearchFramework) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ signed char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_createSearchFramework(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_createSearchFramework. Expected _p_SWModule");
+ }
+ }
+ result = (signed char)(arg1)->createSearchFramework();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_hasSearchFramework) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_hasSearchFramework(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_hasSearchFramework. Expected _p_SWModule");
+ }
+ }
+ result = (bool)(arg1)->hasSearchFramework();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_isSearchOptimallySupported) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *arg2 ;
+ int arg3 ;
+ int arg4 ;
+ SWKey *arg5 = (SWKey *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 5) || (items > 5)) {
+ SWIG_croak("Usage: SWModule_isSearchOptimallySupported(self,istr,searchType,flags,scope);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_isSearchOptimallySupported. Expected _p_SWModule");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ arg3 = (int) SvIV(ST(2));
+ arg4 = (int) SvIV(ST(3));
+ {
+ if (SWIG_ConvertPtr(ST(4), (void **) &arg5, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 5 of SWModule_isSearchOptimallySupported. Expected _p_SWKey");
+ }
+ }
+ result = (bool)(arg1)->isSearchOptimallySupported((char const *)arg2,arg3,arg4,arg5);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_next) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_next(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_next. Expected _p_SWModule");
+ }
+ }
+ result = (bool)SWModule_next(arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_prev) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_prev(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_prev. Expected _p_SWModule");
+ }
+ }
+ result = (bool)SWModule_prev(arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_inc) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ int arg2 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_inc(self,howFar);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_inc. Expected _p_SWModule");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ result = (bool)SWModule_inc(arg1,arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_dec) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ int arg2 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_dec(self,howFar);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_dec. Expected _p_SWModule");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ result = (bool)SWModule_dec(arg1,arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_setPosition) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ SwigValueWrapper< SW_POSITION > arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_setPosition(self,pos);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_setPosition. Expected _p_SWModule");
+ }
+ }
+ {
+ SW_POSITION * argp;
+ if (SWIG_ConvertPtr(ST(1),(void **) &argp, SWIGTYPE_p_SW_POSITION,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWModule_setPosition. Expected _p_SW_POSITION");
+ }
+ arg2 = *argp;
+ }
+ SWModule_setPosition(arg1,arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_top) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_top(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_top. Expected _p_SWModule");
+ }
+ }
+ SWModule_top(arg1);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_bottom) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_bottom(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_bottom. Expected _p_SWModule");
+ }
+ }
+ SWModule_bottom(arg1);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_text) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_text(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_text. Expected _p_SWModule");
+ }
+ }
+ result = (char *)SWModule_text(arg1);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_StripText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_StripText(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_StripText. Expected _p_SWModule");
+ }
+ }
+ result = (char *)SWModule_StripText(arg1);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_getRawEntry) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_getRawEntry(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_getRawEntry. Expected _p_SWModule");
+ }
+ }
+ result = (char *)(arg1)->getRawEntry();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_setSkipConsecutiveLinks) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_setSkipConsecutiveLinks(self,val);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_setSkipConsecutiveLinks. Expected _p_SWModule");
+ }
+ }
+ arg2 = (bool) SvIV(ST(1));
+ (arg1)->setSkipConsecutiveLinks(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_getSkipConsecutiveLinks) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_getSkipConsecutiveLinks(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_getSkipConsecutiveLinks. Expected _p_SWModule");
+ }
+ }
+ result = (bool)(arg1)->getSkipConsecutiveLinks();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_getEntryAttributes) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ AttributeTypeList *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_getEntryAttributes(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_getEntryAttributes. Expected _p_SWModule");
+ }
+ }
+ {
+ AttributeTypeList &_result_ref = ((SWModule const *)arg1)->getEntryAttributes();
+ result = (AttributeTypeList *) &_result_ref;
+ }
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_AttributeTypeList,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_processEntryAttributes) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_processEntryAttributes(self,val);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_processEntryAttributes. Expected _p_SWModule");
+ }
+ }
+ arg2 = (bool) SvIV(ST(1));
+ ((SWModule const *)arg1)->processEntryAttributes(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_isProcessEntryAttributes) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_isProcessEntryAttributes(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_isProcessEntryAttributes. Expected _p_SWModule");
+ }
+ }
+ result = (bool)((SWModule const *)arg1)->isProcessEntryAttributes();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Name) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_Name(self,imodname);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Name. Expected _p_SWModule");
+ }
+ }
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ result = (char *)(arg1)->Name((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Description) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_Description(self,imoddesc);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Description. Expected _p_SWModule");
+ }
+ }
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ result = (char *)(arg1)->Description((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Type) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_Type(self,imodtype);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Type. Expected _p_SWModule");
+ }
+ }
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ result = (char *)(arg1)->Type((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Direction) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ signed char arg2 = (signed char) -1 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_Direction(self,newdir);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Direction. Expected _p_SWModule");
+ }
+ }
+ if (items > 1) {
+ arg2 = (signed char) SvIV(ST(1));
+ }
+ result = (char)(arg1)->Direction(arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Encoding) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ signed char arg2 = (signed char) -1 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_Encoding(self,enc);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Encoding. Expected _p_SWModule");
+ }
+ }
+ if (items > 1) {
+ arg2 = (signed char) SvIV(ST(1));
+ }
+ result = (char)(arg1)->Encoding(arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Markup) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ signed char arg2 = (signed char) -1 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_Markup(self,enc);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Markup. Expected _p_SWModule");
+ }
+ }
+ if (items > 1) {
+ arg2 = (signed char) SvIV(ST(1));
+ }
+ result = (char)(arg1)->Markup(arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_Lang) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_Lang(self,imodlang);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_Lang. Expected _p_SWModule");
+ }
+ }
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ result = (char *)(arg1)->Lang((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_isWritable) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_isWritable(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_isWritable. Expected _p_SWModule");
+ }
+ }
+ result = (bool)(arg1)->isWritable();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_createModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ signed char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_createModule(char const *);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ result = (signed char)SWModule::createModule((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_setEntry) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *arg2 ;
+ long arg3 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 3) || (items > 3)) {
+ SWIG_croak("Usage: SWModule_setEntry(self,inbuf,len);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_setEntry. Expected _p_SWModule");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ arg3 = (long) SvIV(ST(2));
+ (arg1)->setEntry((char const *)arg2,arg3);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_deleteEntry) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWModule_deleteEntry(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_deleteEntry. Expected _p_SWModule");
+ }
+ }
+ (arg1)->deleteEntry();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_write) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ char *arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_write(self,text);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_write. Expected _p_SWModule");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ SWModule_write(arg1,(char const *)arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWModule_writeLink) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ SWKey *arg2 = (SWKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWModule_writeLink(self,key);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWModule_writeLink. Expected _p_SWModule");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWModule_writeLink. Expected _p_SWKey");
+ }
+ }
+ SWModule_writeLink(arg1,(SWKey const *)arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_SWModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWModule *arg1 = (SWModule *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_SWModule(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWModule,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_SWModule. Expected _p_SWModule");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SW_POSITION) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char arg1 ;
+ SW_POSITION *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: new_SW_POSITION(ipos);");
+ }
+ arg1 = (char) *SvPV(ST(0),PL_na);
+ result = (SW_POSITION *)new SW_POSITION(arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SW_POSITION,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_SW_POSITION) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SW_POSITION *arg1 = (SW_POSITION *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_SW_POSITION(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SW_POSITION,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_SW_POSITION. Expected _p_SW_POSITION");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWKey__SWIG_0) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 = (char *) 0 ;
+ SWKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 1)) {
+ SWIG_croak("Usage: new_SWKey(ikey);");
+ }
+ if (items > 0) {
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ }
+ result = (SWKey *)new SWKey((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWKey__SWIG_1) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = 0 ;
+ SWKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: new_SWKey(k);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of new_SWKey. Expected _p_SWKey");
+ }
+ }
+ result = (SWKey *)new SWKey((SWKey const &)*arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWKey) {
+ dXSARGS;
+
+ if ((items >= 0) && (items <= 1)) {
+ int _v;
+ if (items <= 0) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWKey__SWIG_0); return;
+ }
+ {
+ _v = SvPOK(ST(0)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWKey__SWIG_0); return;
+ }
+ }
+ if (items == 1) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_SWKey, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWKey__SWIG_1); return;
+ }
+ }
+
+ croak("No matching function for overloaded 'new_SWKey'");
+ XSRETURN(0);
+}
+
+
+XS(_wrap_SWKey_clone) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ SWKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWKey_clone(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_clone. Expected _p_SWKey");
+ }
+ }
+ result = (SWKey *)((SWKey const *)arg1)->clone();
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_SWKey) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_SWKey(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_SWKey. Expected _p_SWKey");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_Persist) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWKey_Persist(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_Persist. Expected _p_SWKey");
+ }
+ }
+ result = (char)((SWKey const *)arg1)->Persist();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_setPersist) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ signed char arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWKey_setPersist(self,persists);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_setPersist. Expected _p_SWKey");
+ }
+ }
+ arg2 = (signed char) SvIV(ST(1));
+ SWKey_setPersist(arg1,arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_Error) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWKey_Error(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_Error. Expected _p_SWKey");
+ }
+ }
+ result = (char)(arg1)->Error();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_setText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ char *arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWKey_setText(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_setText. Expected _p_SWKey");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ (arg1)->setText((char const *)arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_getText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWKey_getText(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_getText. Expected _p_SWKey");
+ }
+ }
+ result = (char *)((SWKey const *)arg1)->getText();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_getShortText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWKey_getShortText(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_getShortText. Expected _p_SWKey");
+ }
+ }
+ result = (char *)((SWKey const *)arg1)->getShortText();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_compare) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ SWKey *arg2 = 0 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWKey_compare(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_compare. Expected _p_SWKey");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWKey_compare. Expected _p_SWKey");
+ }
+ }
+ result = (int)(arg1)->compare((SWKey const &)*arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_equals) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ SWKey *arg2 = 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWKey_equals(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_equals. Expected _p_SWKey");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWKey_equals. Expected _p_SWKey");
+ }
+ }
+ result = (bool)(arg1)->equals((SWKey const &)*arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_decrement) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ int arg2 = (int) 1 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: SWKey_decrement(self,steps);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_decrement. Expected _p_SWKey");
+ }
+ }
+ if (items > 1) {
+ arg2 = (int) SvIV(ST(1));
+ }
+ (arg1)->decrement(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_increment) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ int arg2 = (int) 1 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: SWKey_increment(self,steps);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_increment. Expected _p_SWKey");
+ }
+ }
+ if (items > 1) {
+ arg2 = (int) SvIV(ST(1));
+ }
+ (arg1)->increment(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_Traversable) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWKey_Traversable(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_Traversable. Expected _p_SWKey");
+ }
+ }
+ result = (char)(arg1)->Traversable();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_Index) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ long result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWKey_Index(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_Index. Expected _p_SWKey");
+ }
+ }
+ result = (long)((SWKey const *)arg1)->Index();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_next) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWKey_next(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_next. Expected _p_SWKey");
+ }
+ }
+ SWKey_next(arg1);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_prev) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWKey_prev(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_prev. Expected _p_SWKey");
+ }
+ }
+ SWKey_prev(arg1);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_setKey) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ SWKey *arg2 = (SWKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWKey_setKey(self,key);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_setKey. Expected _p_SWKey");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWKey_setKey. Expected _p_SWKey");
+ }
+ }
+ SWKey_setKey(arg1,(SWKey const *)arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWKey_toVerseKey) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ VerseKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWKey_toVerseKey(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWKey_toVerseKey. Expected _p_SWKey");
+ }
+ }
+ result = (VerseKey *)SWKey_toVerseKey(arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_VerseKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_VerseKey__SWIG_0) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 = (char *) 0 ;
+ VerseKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 1)) {
+ SWIG_croak("Usage: new_VerseKey(ikey);");
+ }
+ if (items > 0) {
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ }
+ result = (VerseKey *)new VerseKey((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_VerseKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_VerseKey__SWIG_1) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWKey *arg1 = (SWKey *) 0 ;
+ VerseKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: new_VerseKey(ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of new_VerseKey. Expected _p_SWKey");
+ }
+ }
+ result = (VerseKey *)new VerseKey((SWKey const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_VerseKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_VerseKey__SWIG_2) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char *arg2 ;
+ VerseKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: new_VerseKey(min,max);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ result = (VerseKey *)new VerseKey((char const *)arg1,(char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_VerseKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_VerseKey__SWIG_3) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = 0 ;
+ VerseKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: new_VerseKey(k);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of new_VerseKey. Expected _p_VerseKey");
+ }
+ }
+ result = (VerseKey *)new VerseKey((VerseKey const &)*arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_VerseKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_VerseKey) {
+ dXSARGS;
+
+ if ((items >= 0) && (items <= 1)) {
+ int _v;
+ if (items <= 0) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_VerseKey__SWIG_0); return;
+ }
+ {
+ _v = SvPOK(ST(0)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_VerseKey__SWIG_0); return;
+ }
+ }
+ if (items == 1) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_VerseKey, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_VerseKey__SWIG_3); return;
+ }
+ }
+ if (items == 1) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_SWKey, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_VerseKey__SWIG_1); return;
+ }
+ }
+ if (items == 2) {
+ int _v;
+ {
+ _v = SvPOK(ST(0)) ? 1 : 0;
+ }
+ if (_v) {
+ {
+ _v = SvPOK(ST(1)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_VerseKey__SWIG_2); return;
+ }
+ }
+ }
+
+ croak("No matching function for overloaded 'new_VerseKey'");
+ XSRETURN(0);
+}
+
+
+XS(_wrap_delete_VerseKey) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_VerseKey(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_VerseKey. Expected _p_VerseKey");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_clone) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ SWKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_clone(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_clone. Expected _p_VerseKey");
+ }
+ }
+ result = (SWKey *)((VerseKey const *)arg1)->clone();
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_LowerBound) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ VerseKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_LowerBound(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_LowerBound. Expected _p_VerseKey");
+ }
+ }
+ {
+ VerseKey &_result_ref = ((VerseKey const *)arg1)->LowerBound();
+ result = (VerseKey *) &_result_ref;
+ }
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_VerseKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_UpperBound) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ VerseKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_UpperBound(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_UpperBound. Expected _p_VerseKey");
+ }
+ }
+ {
+ VerseKey &_result_ref = ((VerseKey const *)arg1)->UpperBound();
+ result = (VerseKey *) &_result_ref;
+ }
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_VerseKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_ClearBounds) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_ClearBounds(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_ClearBounds. Expected _p_VerseKey");
+ }
+ }
+ (arg1)->ClearBounds();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_ParseVerseList) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char *arg2 ;
+ char *arg3 = (char *) "Genesis 1:1" ;
+ bool arg4 = (bool) false ;
+ ListKey result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 4)) {
+ SWIG_croak("Usage: VerseKey_ParseVerseList(self,buf,defaultKey,expandRange);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_ParseVerseList. Expected _p_VerseKey");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ if (items > 2) {
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ }
+ if (items > 3) {
+ arg4 = (bool) SvIV(ST(3));
+ }
+ result = (arg1)->ParseVerseList((char const *)arg2,(char const *)arg3,arg4);
+
+ {
+ ListKey * resultobj = new ListKey((ListKey &)result);
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_ListKey,0);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_setText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char *arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: VerseKey_setText(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_setText. Expected _p_VerseKey");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ (arg1)->setText((char const *)arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_getText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_getText(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_getText. Expected _p_VerseKey");
+ }
+ }
+ result = (char *)((VerseKey const *)arg1)->getText();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_getRangeText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_getRangeText(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_getRangeText. Expected _p_VerseKey");
+ }
+ }
+ result = (char *)((VerseKey const *)arg1)->getRangeText();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_getShortText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_getShortText(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_getShortText. Expected _p_VerseKey");
+ }
+ }
+ result = (char *)((VerseKey const *)arg1)->getShortText();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_Traversable) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_Traversable(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_Traversable. Expected _p_VerseKey");
+ }
+ }
+ result = (char)(arg1)->Traversable();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_decrement) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ int arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: VerseKey_decrement(self,step);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_decrement. Expected _p_VerseKey");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ (arg1)->decrement(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_increment) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ int arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: VerseKey_increment(self,step);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_increment. Expected _p_VerseKey");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ (arg1)->increment(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_getBookName) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_getBookName(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_getBookName. Expected _p_VerseKey");
+ }
+ }
+ result = (char *)((VerseKey const *)arg1)->getBookName();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_getBookAbbrev) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_getBookAbbrev(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_getBookAbbrev. Expected _p_VerseKey");
+ }
+ }
+ result = (char *)((VerseKey const *)arg1)->getBookAbbrev();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_Testament) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_Testament(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_Testament. Expected _p_VerseKey");
+ }
+ }
+ result = (char)((VerseKey const *)arg1)->Testament();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_Book) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_Book(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_Book. Expected _p_VerseKey");
+ }
+ }
+ result = (char)((VerseKey const *)arg1)->Book();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_Chapter) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_Chapter(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_Chapter. Expected _p_VerseKey");
+ }
+ }
+ result = (int)((VerseKey const *)arg1)->Chapter();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_Verse) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_Verse(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_Verse. Expected _p_VerseKey");
+ }
+ }
+ result = (int)((VerseKey const *)arg1)->Verse();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_Normalize) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char arg2 = (char) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: VerseKey_Normalize(self,autocheck);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_Normalize. Expected _p_VerseKey");
+ }
+ }
+ if (items > 1) {
+ arg2 = (char) *SvPV(ST(1),PL_na);
+ }
+ (arg1)->Normalize(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_AutoNormalize) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char arg2 = (char) MAXPOS(char) ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: VerseKey_AutoNormalize(self,iautonorm);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_AutoNormalize. Expected _p_VerseKey");
+ }
+ }
+ if (items > 1) {
+ arg2 = (char) *SvPV(ST(1),PL_na);
+ }
+ result = (char)(arg1)->AutoNormalize(arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_Headings) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char arg2 = (char) MAXPOS(char) ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: VerseKey_Headings(self,iheadings);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_Headings. Expected _p_VerseKey");
+ }
+ }
+ if (items > 1) {
+ arg2 = (char) *SvPV(ST(1),PL_na);
+ }
+ result = (char)(arg1)->Headings(arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_getOSISRef) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_getOSISRef(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_getOSISRef. Expected _p_VerseKey");
+ }
+ }
+ result = (char *)((VerseKey const *)arg1)->getOSISRef();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_compare) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ SWKey *arg2 = 0 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: VerseKey_compare(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_compare. Expected _p_VerseKey");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 2 of VerseKey_compare. Expected _p_SWKey");
+ }
+ }
+ result = (int)(arg1)->compare((SWKey const &)*arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey__compare) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ VerseKey *arg2 = 0 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: VerseKey__compare(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey__compare. Expected _p_VerseKey");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 2 of VerseKey__compare. Expected _p_VerseKey");
+ }
+ }
+ result = (int)(arg1)->_compare((VerseKey const &)*arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_setLocale) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char *arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: VerseKey_setLocale(self,name);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_setLocale. Expected _p_VerseKey");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ (arg1)->setLocale((char const *)arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_getLocale) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: VerseKey_getLocale(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_getLocale. Expected _p_VerseKey");
+ }
+ }
+ result = (char *)((VerseKey const *)arg1)->getLocale();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_bookCount) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ int arg2 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: VerseKey_bookCount(self,testament);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_bookCount. Expected _p_VerseKey");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ result = (int)VerseKey_bookCount(arg1,arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_bookName) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ int arg2 ;
+ int arg3 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 3) || (items > 3)) {
+ SWIG_croak("Usage: VerseKey_bookName(self,testament,book);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_bookName. Expected _p_VerseKey");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ arg3 = (int) SvIV(ST(2));
+ result = (char *)VerseKey_bookName(arg1,arg2,arg3);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_chapterCount) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ int arg2 ;
+ int arg3 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 3) || (items > 3)) {
+ SWIG_croak("Usage: VerseKey_chapterCount(self,testament,book);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_chapterCount. Expected _p_VerseKey");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ arg3 = (int) SvIV(ST(2));
+ result = (int)VerseKey_chapterCount(arg1,arg2,arg3);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_VerseKey_verseCount) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ VerseKey *arg1 = (VerseKey *) 0 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 4) || (items > 4)) {
+ SWIG_croak("Usage: VerseKey_verseCount(self,testament,book,chapter);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_VerseKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of VerseKey_verseCount. Expected _p_VerseKey");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ arg3 = (int) SvIV(ST(2));
+ arg4 = (int) SvIV(ST(3));
+ result = (int)VerseKey_verseCount(arg1,arg2,arg3,arg4);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_ListKey__SWIG_0) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 = (char *) 0 ;
+ ListKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 1)) {
+ SWIG_croak("Usage: new_ListKey(ikey);");
+ }
+ if (items > 0) {
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ }
+ result = (ListKey *)new ListKey((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_ListKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_ListKey__SWIG_1) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = 0 ;
+ ListKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: new_ListKey(k);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of new_ListKey. Expected _p_ListKey");
+ }
+ }
+ result = (ListKey *)new ListKey((ListKey const &)*arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_ListKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_ListKey) {
+ dXSARGS;
+
+ if ((items >= 0) && (items <= 1)) {
+ int _v;
+ if (items <= 0) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_ListKey__SWIG_0); return;
+ }
+ {
+ _v = SvPOK(ST(0)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_ListKey__SWIG_0); return;
+ }
+ }
+ if (items == 1) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_ListKey, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_ListKey__SWIG_1); return;
+ }
+ }
+
+ croak("No matching function for overloaded 'new_ListKey'");
+ XSRETURN(0);
+}
+
+
+XS(_wrap_delete_ListKey) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_ListKey(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_ListKey. Expected _p_ListKey");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_clone) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ SWKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: ListKey_clone(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_clone. Expected _p_ListKey");
+ }
+ }
+ result = (SWKey *)((ListKey const *)arg1)->clone();
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_ClearList) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: ListKey_ClearList(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_ClearList. Expected _p_ListKey");
+ }
+ }
+ (arg1)->ClearList();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_Count) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: ListKey_Count(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_Count. Expected _p_ListKey");
+ }
+ }
+ result = (int)(arg1)->Count();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_Remove) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: ListKey_Remove(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_Remove. Expected _p_ListKey");
+ }
+ }
+ (arg1)->Remove();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_SetToElement) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ int arg2 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: ListKey_SetToElement(self,element);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_SetToElement. Expected _p_ListKey");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ result = (char)ListKey_SetToElement(arg1,arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_GetElement) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ int arg2 = (int) -1 ;
+ SWKey *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: ListKey_GetElement(self,pos);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_GetElement. Expected _p_ListKey");
+ }
+ }
+ if (items > 1) {
+ arg2 = (int) SvIV(ST(1));
+ }
+ result = (SWKey *)(arg1)->GetElement(arg2);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWKey,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_add) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ SWKey *arg2 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: ListKey_add(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_add. Expected _p_ListKey");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWKey,0) < 0) {
+ SWIG_croak("Type error in argument 2 of ListKey_add. Expected _p_SWKey");
+ }
+ }
+ (arg1)->add((SWKey const &)*arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_copyFrom) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ ListKey *arg2 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: ListKey_copyFrom(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_copyFrom. Expected _p_ListKey");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 2 of ListKey_copyFrom. Expected _p_ListKey");
+ }
+ }
+ (arg1)->copyFrom((ListKey const &)*arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_setPosition) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ SwigValueWrapper< SW_POSITION > arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: ListKey_setPosition(self,SW_POSITION);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_setPosition. Expected _p_ListKey");
+ }
+ }
+ {
+ SW_POSITION * argp;
+ if (SWIG_ConvertPtr(ST(1),(void **) &argp, SWIGTYPE_p_SW_POSITION,0) < 0) {
+ SWIG_croak("Type error in argument 2 of ListKey_setPosition. Expected _p_SW_POSITION");
+ }
+ arg2 = *argp;
+ }
+ (arg1)->setPosition(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_decrement) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ int arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: ListKey_decrement(self,step);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_decrement. Expected _p_ListKey");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ (arg1)->decrement(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_increment) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ int arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: ListKey_increment(self,step);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_increment. Expected _p_ListKey");
+ }
+ }
+ arg2 = (int) SvIV(ST(1));
+ (arg1)->increment(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_Traversable) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: ListKey_Traversable(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_Traversable. Expected _p_ListKey");
+ }
+ }
+ result = (char)(arg1)->Traversable();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_Index__SWIG_0) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ long result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: ListKey_Index(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_Index. Expected _p_ListKey");
+ }
+ }
+ result = (long)((ListKey const *)arg1)->Index();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_Index__SWIG_1) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ListKey *arg1 = (ListKey *) 0 ;
+ long arg2 ;
+ long result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: ListKey_Index(self,index);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ListKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ListKey_Index. Expected _p_ListKey");
+ }
+ }
+ arg2 = (long) SvIV(ST(1));
+ result = (long)(arg1)->Index(arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ListKey_Index) {
+ dXSARGS;
+
+ if (items == 1) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_ListKey, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_ListKey_Index__SWIG_0); return;
+ }
+ }
+ if (items == 2) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_ListKey, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ {
+ _v = SvIOK(ST(1)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_ListKey_Index__SWIG_1); return;
+ }
+ }
+ }
+
+ croak("No matching function for overloaded 'ListKey_Index'");
+ XSRETURN(0);
+}
+
+
+XS(_wrap_TreeKey_getLocalName) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_getLocalName(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_getLocalName. Expected _p_TreeKey");
+ }
+ }
+ result = (char *)(arg1)->getLocalName();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_setLocalName) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ char *arg2 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: TreeKey_setLocalName(self,char const *);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_setLocalName. Expected _p_TreeKey");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ result = (char *)(arg1)->setLocalName((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_getUserData) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ int *arg2 = (int *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 2)) {
+ SWIG_croak("Usage: TreeKey_getUserData(self,size);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_getUserData. Expected _p_TreeKey");
+ }
+ }
+ if (items > 1) {
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_int,0) < 0) {
+ SWIG_croak("Type error in argument 2 of TreeKey_getUserData. Expected _p_int");
+ }
+ }
+ }
+ result = (char *)(arg1)->getUserData(arg2);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_setUserData) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ char *arg2 ;
+ int arg3 = (int) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 3)) {
+ SWIG_croak("Usage: TreeKey_setUserData(self,userData,size);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_setUserData. Expected _p_TreeKey");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ if (items > 2) {
+ arg3 = (int) SvIV(ST(2));
+ }
+ (arg1)->setUserData((char const *)arg2,arg3);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_getFullName) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_getFullName(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_getFullName. Expected _p_TreeKey");
+ }
+ }
+ result = (char *)((TreeKey const *)arg1)->getFullName();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_root) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_root(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_root. Expected _p_TreeKey");
+ }
+ }
+ (arg1)->root();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_parent) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_parent(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_parent. Expected _p_TreeKey");
+ }
+ }
+ result = (bool)(arg1)->parent();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_firstChild) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_firstChild(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_firstChild. Expected _p_TreeKey");
+ }
+ }
+ result = (bool)(arg1)->firstChild();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_nextSibling) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_nextSibling(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_nextSibling. Expected _p_TreeKey");
+ }
+ }
+ result = (bool)(arg1)->nextSibling();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_previousSibling) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_previousSibling(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_previousSibling. Expected _p_TreeKey");
+ }
+ }
+ result = (bool)(arg1)->previousSibling();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_hasChildren) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ bool result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_hasChildren(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_hasChildren. Expected _p_TreeKey");
+ }
+ }
+ result = (bool)(arg1)->hasChildren();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_append) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_append(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_append. Expected _p_TreeKey");
+ }
+ }
+ (arg1)->append();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_appendChild) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_appendChild(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_appendChild. Expected _p_TreeKey");
+ }
+ }
+ (arg1)->appendChild();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_insertBefore) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_insertBefore(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_insertBefore. Expected _p_TreeKey");
+ }
+ }
+ (arg1)->insertBefore();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_remove) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_remove(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_remove. Expected _p_TreeKey");
+ }
+ }
+ (arg1)->remove();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_setOffset) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ unsigned long arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: TreeKey_setOffset(self,offset);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_setOffset. Expected _p_TreeKey");
+ }
+ }
+ arg2 = (unsigned long) SvUV(ST(1));
+ (arg1)->setOffset(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_getOffset) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ unsigned long result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_getOffset(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_getOffset. Expected _p_TreeKey");
+ }
+ }
+ result = (unsigned long)((TreeKey const *)arg1)->getOffset();
+
+ ST(argvi) = sv_newmortal();
+ sv_setuv(ST(argvi++), (UV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_setPosition) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ SwigValueWrapper< SW_POSITION > arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: TreeKey_setPosition(self,p);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_setPosition. Expected _p_TreeKey");
+ }
+ }
+ {
+ SW_POSITION * argp;
+ if (SWIG_ConvertPtr(ST(1),(void **) &argp, SWIGTYPE_p_SW_POSITION,0) < 0) {
+ SWIG_croak("Type error in argument 2 of TreeKey_setPosition. Expected _p_SW_POSITION");
+ }
+ arg2 = *argp;
+ }
+ (arg1)->setPosition(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_Traversable) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_Traversable(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_Traversable. Expected _p_TreeKey");
+ }
+ }
+ result = (char)(arg1)->Traversable();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKey_Index) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKey *arg1 = (TreeKey *) 0 ;
+ long result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKey_Index(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKey,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKey_Index. Expected _p_TreeKey");
+ }
+ }
+ result = (long)((TreeKey const *)arg1)->Index();
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_TreeKeyIdx) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKeyIdx *arg1 = (TreeKeyIdx *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_TreeKeyIdx(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKeyIdx,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_TreeKeyIdx. Expected _p_TreeKeyIdx");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKeyIdx_save) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKeyIdx *arg1 = (TreeKeyIdx *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKeyIdx_save(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKeyIdx,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKeyIdx_save. Expected _p_TreeKeyIdx");
+ }
+ }
+ (arg1)->save();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKeyIdx_copyFrom) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKeyIdx *arg1 = (TreeKeyIdx *) 0 ;
+ TreeKeyIdx *arg2 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: TreeKeyIdx_copyFrom(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKeyIdx,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKeyIdx_copyFrom. Expected _p_TreeKeyIdx");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_TreeKeyIdx,0) < 0) {
+ SWIG_croak("Type error in argument 2 of TreeKeyIdx_copyFrom. Expected _p_TreeKeyIdx");
+ }
+ }
+ (arg1)->copyFrom((TreeKeyIdx const &)*arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKeyIdx__compare) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ TreeKeyIdx *arg1 = (TreeKeyIdx *) 0 ;
+ TreeKeyIdx *arg2 = 0 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: TreeKeyIdx__compare(self,ikey);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_TreeKeyIdx,0) < 0) {
+ SWIG_croak("Type error in argument 1 of TreeKeyIdx__compare. Expected _p_TreeKeyIdx");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_TreeKeyIdx,0) < 0) {
+ SWIG_croak("Type error in argument 2 of TreeKeyIdx__compare. Expected _p_TreeKeyIdx");
+ }
+ }
+ result = (int)(arg1)->_compare((TreeKeyIdx const &)*arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_TreeKeyIdx_create) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ signed char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: TreeKeyIdx_create(path);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ result = (signed char)TreeKeyIdx::create((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_LocaleMgr) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 = (char *) 0 ;
+ LocaleMgr *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 1)) {
+ SWIG_croak("Usage: new_LocaleMgr(iConfigPath);");
+ }
+ if (items > 0) {
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ }
+ result = (LocaleMgr *)new LocaleMgr((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_LocaleMgr,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_LocaleMgr) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ LocaleMgr *arg1 = (LocaleMgr *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_LocaleMgr(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_LocaleMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_LocaleMgr. Expected _p_LocaleMgr");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_LocaleMgr_getLocale) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ LocaleMgr *arg1 = (LocaleMgr *) 0 ;
+ char *arg2 ;
+ SWLocale *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: LocaleMgr_getLocale(self,name);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_LocaleMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of LocaleMgr_getLocale. Expected _p_LocaleMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ result = (SWLocale *)(arg1)->getLocale((char const *)arg2);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWLocale,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_LocaleMgr_getAvailableLocales) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ LocaleMgr *arg1 = (LocaleMgr *) 0 ;
+ std::list<SWBuf > result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: LocaleMgr_getAvailableLocales(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_LocaleMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of LocaleMgr_getAvailableLocales. Expected _p_LocaleMgr");
+ }
+ }
+ result = (arg1)->getAvailableLocales();
+
+ {
+ std::list<SWBuf > * resultobj = new std::list<SWBuf >((std::list<SWBuf > &)result);
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__listTSWBuf_t,0);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_LocaleMgr_getDefaultLocaleName) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ LocaleMgr *arg1 = (LocaleMgr *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: LocaleMgr_getDefaultLocaleName(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_LocaleMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of LocaleMgr_getDefaultLocaleName. Expected _p_LocaleMgr");
+ }
+ }
+ result = (char *)(arg1)->getDefaultLocaleName();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_LocaleMgr_setDefaultLocaleName) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ LocaleMgr *arg1 = (LocaleMgr *) 0 ;
+ char *arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: LocaleMgr_setDefaultLocaleName(self,name);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_LocaleMgr,0) < 0) {
+ SWIG_croak("Type error in argument 1 of LocaleMgr_setDefaultLocaleName. Expected _p_LocaleMgr");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ (arg1)->setDefaultLocaleName((char const *)arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_LocaleMgr_getSystemLocaleMgr) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ LocaleMgr *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 0)) {
+ SWIG_croak("Usage: LocaleMgr_getSystemLocaleMgr();");
+ }
+ result = (LocaleMgr *)LocaleMgr_getSystemLocaleMgr();
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_LocaleMgr,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 = (char *) 0 ;
+ char *arg2 = (char *) 0 ;
+ SWDisplay *arg3 = (SWDisplay *) 0 ;
+ SWTextEncoding arg4 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg5 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg6 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg7 = (char *) 0 ;
+ SWText *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 7)) {
+ SWIG_croak("Usage: new_SWText(imodname,imoddesc,idisp,encoding,dir,markup,ilang);");
+ }
+ if (items > 0) {
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ }
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ {
+ if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 3 of new_SWText. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 3) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(3),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 4 of new_SWText. Expected _p_SWTextEncoding");
+ }
+ arg4 = *argp;
+ }
+ }
+ if (items > 4) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(4),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_SWText. Expected _p_SWTextDirection");
+ }
+ arg5 = *argp;
+ }
+ }
+ if (items > 5) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(5),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_SWText. Expected _p_SWTextMarkup");
+ }
+ arg6 = *argp;
+ }
+ }
+ if (items > 6) {
+ if (!SvOK((SV*) ST(6))) arg7 = 0;
+ else arg7 = (char *) SvPV(ST(6), PL_na);
+ }
+ result = (SWText *)new SWText((char const *)arg1,(char const *)arg2,arg3,arg4,arg5,arg6,(char const *)arg7);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWText,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_SWText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWText *arg1 = (SWText *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_SWText(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWText,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_SWText. Expected _p_SWText");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_RawText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+ SWDisplay *arg4 = (SWDisplay *) 0 ;
+ SWTextEncoding arg5 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg6 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg7 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg8 = (char *) 0 ;
+ RawText *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 8)) {
+ SWIG_croak("Usage: new_RawText(ipath,iname,idesc,idisp,encoding,dir,markup,ilang);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ }
+ if (items > 3) {
+ {
+ if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 4 of new_RawText. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 4) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(4),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_RawText. Expected _p_SWTextEncoding");
+ }
+ arg5 = *argp;
+ }
+ }
+ if (items > 5) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(5),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_RawText. Expected _p_SWTextDirection");
+ }
+ arg6 = *argp;
+ }
+ }
+ if (items > 6) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(6),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 7 of new_RawText. Expected _p_SWTextMarkup");
+ }
+ arg7 = *argp;
+ }
+ }
+ if (items > 7) {
+ if (!SvOK((SV*) ST(7))) arg8 = 0;
+ else arg8 = (char *) SvPV(ST(7), PL_na);
+ }
+ result = (RawText *)new RawText((char const *)arg1,(char const *)arg2,(char const *)arg3,arg4,arg5,arg6,arg7,(char const *)arg8);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_RawText,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_RawText_createModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: RawText_createModule(path);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ result = (char)RawText::createModule((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_RawText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ RawText *arg1 = (RawText *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_RawText(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_RawText,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_RawText. Expected _p_RawText");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_zText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+ int arg4 = (int) CHAPTERBLOCKS ;
+ SWCompress *arg5 = (SWCompress *) 0 ;
+ SWDisplay *arg6 = (SWDisplay *) 0 ;
+ SWTextEncoding arg7 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg8 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg9 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg10 = (char *) 0 ;
+ zText *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 10)) {
+ SWIG_croak("Usage: new_zText(ipath,iname,idesc,blockType,icomp,idisp,encoding,dir,markup,ilang);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ }
+ if (items > 3) {
+ arg4 = (int) SvIV(ST(3));
+ }
+ if (items > 4) {
+ {
+ if (SWIG_ConvertPtr(ST(4), (void **) &arg5, SWIGTYPE_p_SWCompress,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_zText. Expected _p_SWCompress");
+ }
+ }
+ }
+ if (items > 5) {
+ {
+ if (SWIG_ConvertPtr(ST(5), (void **) &arg6, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_zText. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 6) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(6),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 7 of new_zText. Expected _p_SWTextEncoding");
+ }
+ arg7 = *argp;
+ }
+ }
+ if (items > 7) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(7),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 8 of new_zText. Expected _p_SWTextDirection");
+ }
+ arg8 = *argp;
+ }
+ }
+ if (items > 8) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(8),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 9 of new_zText. Expected _p_SWTextMarkup");
+ }
+ arg9 = *argp;
+ }
+ }
+ if (items > 9) {
+ if (!SvOK((SV*) ST(9))) arg10 = 0;
+ else arg10 = (char *) SvPV(ST(9), PL_na);
+ }
+ result = (zText *)new zText((char const *)arg1,(char const *)arg2,(char const *)arg3,arg4,arg5,arg6,arg7,arg8,arg9,(char const *)arg10);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_zText,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_zText) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ zText *arg1 = (zText *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_zText(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_zText,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_zText. Expected _p_zText");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_zText_createModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ int arg2 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: zText_createModule(path,blockBound);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ arg2 = (int) SvIV(ST(1));
+ result = (char)zText::createModule((char const *)arg1,arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_RawCom) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+ SWDisplay *arg4 = (SWDisplay *) 0 ;
+ SWTextEncoding arg5 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg6 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg7 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg8 = (char *) 0 ;
+ RawCom *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 8)) {
+ SWIG_croak("Usage: new_RawCom(ipath,iname,idesc,idisp,encoding,dir,markup,ilang);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ }
+ if (items > 3) {
+ {
+ if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 4 of new_RawCom. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 4) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(4),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_RawCom. Expected _p_SWTextEncoding");
+ }
+ arg5 = *argp;
+ }
+ }
+ if (items > 5) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(5),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_RawCom. Expected _p_SWTextDirection");
+ }
+ arg6 = *argp;
+ }
+ }
+ if (items > 6) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(6),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 7 of new_RawCom. Expected _p_SWTextMarkup");
+ }
+ arg7 = *argp;
+ }
+ }
+ if (items > 7) {
+ if (!SvOK((SV*) ST(7))) arg8 = 0;
+ else arg8 = (char *) SvPV(ST(7), PL_na);
+ }
+ result = (RawCom *)new RawCom((char const *)arg1,(char const *)arg2,(char const *)arg3,arg4,arg5,arg6,arg7,(char const *)arg8);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_RawCom,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_RawCom) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ RawCom *arg1 = (RawCom *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_RawCom(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_RawCom,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_RawCom. Expected _p_RawCom");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_RawCom_createModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: RawCom_createModule(path);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ result = (char)RawCom::createModule((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_zCom) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+ int arg4 = (int) CHAPTERBLOCKS ;
+ SWCompress *arg5 = (SWCompress *) 0 ;
+ SWDisplay *arg6 = (SWDisplay *) 0 ;
+ SWTextEncoding arg7 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg8 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg9 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg10 = (char *) 0 ;
+ zCom *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 10)) {
+ SWIG_croak("Usage: new_zCom(ipath,iname,idesc,blockType,icomp,idisp,encoding,dir,markup,ilang);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ }
+ if (items > 3) {
+ arg4 = (int) SvIV(ST(3));
+ }
+ if (items > 4) {
+ {
+ if (SWIG_ConvertPtr(ST(4), (void **) &arg5, SWIGTYPE_p_SWCompress,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_zCom. Expected _p_SWCompress");
+ }
+ }
+ }
+ if (items > 5) {
+ {
+ if (SWIG_ConvertPtr(ST(5), (void **) &arg6, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_zCom. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 6) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(6),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 7 of new_zCom. Expected _p_SWTextEncoding");
+ }
+ arg7 = *argp;
+ }
+ }
+ if (items > 7) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(7),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 8 of new_zCom. Expected _p_SWTextDirection");
+ }
+ arg8 = *argp;
+ }
+ }
+ if (items > 8) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(8),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 9 of new_zCom. Expected _p_SWTextMarkup");
+ }
+ arg9 = *argp;
+ }
+ }
+ if (items > 9) {
+ if (!SvOK((SV*) ST(9))) arg10 = 0;
+ else arg10 = (char *) SvPV(ST(9), PL_na);
+ }
+ result = (zCom *)new zCom((char const *)arg1,(char const *)arg2,(char const *)arg3,arg4,arg5,arg6,arg7,arg8,arg9,(char const *)arg10);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_zCom,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_zCom) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ zCom *arg1 = (zCom *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_zCom(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_zCom,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_zCom. Expected _p_zCom");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_zCom_createModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ int arg2 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: zCom_createModule(path,blockBound);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ arg2 = (int) SvIV(ST(1));
+ result = (char)zCom::createModule((char const *)arg1,arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_RawGenBook) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+ SWDisplay *arg4 = (SWDisplay *) 0 ;
+ SWTextEncoding arg5 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg6 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg7 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg8 = (char *) 0 ;
+ RawGenBook *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 8)) {
+ SWIG_croak("Usage: new_RawGenBook(ipath,iname,idesc,idisp,encoding,dir,markup,ilang);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ }
+ if (items > 3) {
+ {
+ if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 4 of new_RawGenBook. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 4) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(4),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_RawGenBook. Expected _p_SWTextEncoding");
+ }
+ arg5 = *argp;
+ }
+ }
+ if (items > 5) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(5),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_RawGenBook. Expected _p_SWTextDirection");
+ }
+ arg6 = *argp;
+ }
+ }
+ if (items > 6) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(6),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 7 of new_RawGenBook. Expected _p_SWTextMarkup");
+ }
+ arg7 = *argp;
+ }
+ }
+ if (items > 7) {
+ if (!SvOK((SV*) ST(7))) arg8 = 0;
+ else arg8 = (char *) SvPV(ST(7), PL_na);
+ }
+ result = (RawGenBook *)new RawGenBook((char const *)arg1,(char const *)arg2,(char const *)arg3,arg4,arg5,arg6,arg7,(char const *)arg8);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_RawGenBook,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_RawGenBook) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ RawGenBook *arg1 = (RawGenBook *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_RawGenBook(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_RawGenBook,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_RawGenBook. Expected _p_RawGenBook");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_RawGenBook_createModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: RawGenBook_createModule(ipath);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ result = (char)RawGenBook::createModule((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_RawGenBook_getTreeKey) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ RawGenBook *arg1 = (RawGenBook *) 0 ;
+ TreeKeyIdx *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: RawGenBook_getTreeKey(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_RawGenBook,0) < 0) {
+ SWIG_croak("Type error in argument 1 of RawGenBook_getTreeKey. Expected _p_RawGenBook");
+ }
+ }
+ result = (TreeKeyIdx *)RawGenBook_getTreeKey(arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_TreeKeyIdx,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWLD) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 = (char *) 0 ;
+ char *arg2 = (char *) 0 ;
+ SWDisplay *arg3 = (SWDisplay *) 0 ;
+ SWTextEncoding arg4 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg5 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg6 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg7 = (char *) 0 ;
+ SWLD *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 7)) {
+ SWIG_croak("Usage: new_SWLD(imodname,imoddesc,idisp,encoding,dir,markup,ilang);");
+ }
+ if (items > 0) {
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ }
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ {
+ if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 3 of new_SWLD. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 3) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(3),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 4 of new_SWLD. Expected _p_SWTextEncoding");
+ }
+ arg4 = *argp;
+ }
+ }
+ if (items > 4) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(4),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_SWLD. Expected _p_SWTextDirection");
+ }
+ arg5 = *argp;
+ }
+ }
+ if (items > 5) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(5),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_SWLD. Expected _p_SWTextMarkup");
+ }
+ arg6 = *argp;
+ }
+ }
+ if (items > 6) {
+ if (!SvOK((SV*) ST(6))) arg7 = 0;
+ else arg7 = (char *) SvPV(ST(6), PL_na);
+ }
+ result = (SWLD *)new SWLD((char const *)arg1,(char const *)arg2,arg3,arg4,arg5,arg6,(char const *)arg7);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWLD,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_SWLD) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWLD *arg1 = (SWLD *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_SWLD(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWLD,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_SWLD. Expected _p_SWLD");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_RawLD) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+ SWDisplay *arg4 = (SWDisplay *) 0 ;
+ SWTextEncoding arg5 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg6 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg7 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg8 = (char *) 0 ;
+ RawLD *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 8)) {
+ SWIG_croak("Usage: new_RawLD(ipath,iname,idesc,idisp,encoding,dir,markup,ilang);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ }
+ if (items > 3) {
+ {
+ if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 4 of new_RawLD. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 4) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(4),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_RawLD. Expected _p_SWTextEncoding");
+ }
+ arg5 = *argp;
+ }
+ }
+ if (items > 5) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(5),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_RawLD. Expected _p_SWTextDirection");
+ }
+ arg6 = *argp;
+ }
+ }
+ if (items > 6) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(6),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 7 of new_RawLD. Expected _p_SWTextMarkup");
+ }
+ arg7 = *argp;
+ }
+ }
+ if (items > 7) {
+ if (!SvOK((SV*) ST(7))) arg8 = 0;
+ else arg8 = (char *) SvPV(ST(7), PL_na);
+ }
+ result = (RawLD *)new RawLD((char const *)arg1,(char const *)arg2,(char const *)arg3,arg4,arg5,arg6,arg7,(char const *)arg8);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_RawLD,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_RawLD) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ RawLD *arg1 = (RawLD *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_RawLD(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_RawLD,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_RawLD. Expected _p_RawLD");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_RawLD_createModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: RawLD_createModule(path);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ result = (char)RawLD::createModule((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_RawLD4) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+ SWDisplay *arg4 = (SWDisplay *) 0 ;
+ SWTextEncoding arg5 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg6 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg7 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg8 = (char *) 0 ;
+ RawLD4 *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 8)) {
+ SWIG_croak("Usage: new_RawLD4(ipath,iname,idesc,idisp,encoding,dir,markup,ilang);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ }
+ if (items > 3) {
+ {
+ if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 4 of new_RawLD4. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 4) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(4),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_RawLD4. Expected _p_SWTextEncoding");
+ }
+ arg5 = *argp;
+ }
+ }
+ if (items > 5) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(5),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_RawLD4. Expected _p_SWTextDirection");
+ }
+ arg6 = *argp;
+ }
+ }
+ if (items > 6) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(6),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 7 of new_RawLD4. Expected _p_SWTextMarkup");
+ }
+ arg7 = *argp;
+ }
+ }
+ if (items > 7) {
+ if (!SvOK((SV*) ST(7))) arg8 = 0;
+ else arg8 = (char *) SvPV(ST(7), PL_na);
+ }
+ result = (RawLD4 *)new RawLD4((char const *)arg1,(char const *)arg2,(char const *)arg3,arg4,arg5,arg6,arg7,(char const *)arg8);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_RawLD4,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_RawLD4) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ RawLD4 *arg1 = (RawLD4 *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_RawLD4(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_RawLD4,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_RawLD4. Expected _p_RawLD4");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_RawLD4_createModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: RawLD4_createModule(path);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ result = (char)RawLD4::createModule((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_zLD) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+ long arg4 = (long) 200 ;
+ SWCompress *arg5 = (SWCompress *) 0 ;
+ SWDisplay *arg6 = (SWDisplay *) 0 ;
+ SWTextEncoding arg7 = (SWTextEncoding) ENC_UNKNOWN ;
+ SWTextDirection arg8 = (SWTextDirection) DIRECTION_LTR ;
+ SWTextMarkup arg9 = (SWTextMarkup) FMT_UNKNOWN ;
+ char *arg10 = (char *) 0 ;
+ zLD *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 10)) {
+ SWIG_croak("Usage: new_zLD(ipath,iname,idesc,blockCount,icomp,idisp,encoding,dir,markup,ilang);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ }
+ if (items > 3) {
+ arg4 = (long) SvIV(ST(3));
+ }
+ if (items > 4) {
+ {
+ if (SWIG_ConvertPtr(ST(4), (void **) &arg5, SWIGTYPE_p_SWCompress,0) < 0) {
+ SWIG_croak("Type error in argument 5 of new_zLD. Expected _p_SWCompress");
+ }
+ }
+ }
+ if (items > 5) {
+ {
+ if (SWIG_ConvertPtr(ST(5), (void **) &arg6, SWIGTYPE_p_SWDisplay,0) < 0) {
+ SWIG_croak("Type error in argument 6 of new_zLD. Expected _p_SWDisplay");
+ }
+ }
+ }
+ if (items > 6) {
+ {
+ SWTextEncoding * argp;
+ if (SWIG_ConvertPtr(ST(6),(void **) &argp, SWIGTYPE_p_SWTextEncoding,0) < 0) {
+ SWIG_croak("Type error in argument 7 of new_zLD. Expected _p_SWTextEncoding");
+ }
+ arg7 = *argp;
+ }
+ }
+ if (items > 7) {
+ {
+ SWTextDirection * argp;
+ if (SWIG_ConvertPtr(ST(7),(void **) &argp, SWIGTYPE_p_SWTextDirection,0) < 0) {
+ SWIG_croak("Type error in argument 8 of new_zLD. Expected _p_SWTextDirection");
+ }
+ arg8 = *argp;
+ }
+ }
+ if (items > 8) {
+ {
+ SWTextMarkup * argp;
+ if (SWIG_ConvertPtr(ST(8),(void **) &argp, SWIGTYPE_p_SWTextMarkup,0) < 0) {
+ SWIG_croak("Type error in argument 9 of new_zLD. Expected _p_SWTextMarkup");
+ }
+ arg9 = *argp;
+ }
+ }
+ if (items > 9) {
+ if (!SvOK((SV*) ST(9))) arg10 = 0;
+ else arg10 = (char *) SvPV(ST(9), PL_na);
+ }
+ result = (zLD *)new zLD((char const *)arg1,(char const *)arg2,(char const *)arg3,arg4,arg5,arg6,arg7,arg8,arg9,(char const *)arg10);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_zLD,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_zLD) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ zLD *arg1 = (zLD *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_zLD(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_zLD,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_zLD. Expected _p_zLD");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_zLD_createModule) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: zLD_createModule(path);");
+ }
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ result = (char)zLD::createModule((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWCompress) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWCompress *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 0)) {
+ SWIG_croak("Usage: new_SWCompress();");
+ }
+ result = (SWCompress *)new SWCompress();
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWCompress,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_SWCompress) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWCompress *arg1 = (SWCompress *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_SWCompress(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_SWCompress. Expected _p_SWCompress");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWCompress_Buf) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWCompress *arg1 = (SWCompress *) 0 ;
+ char *arg2 = (char *) 0 ;
+ unsigned long *arg3 = (unsigned long *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 3)) {
+ SWIG_croak("Usage: SWCompress_Buf(self,buf,len);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWCompress_Buf. Expected _p_SWCompress");
+ }
+ }
+ if (items > 1) {
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ }
+ if (items > 2) {
+ {
+ if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_unsigned_long,0) < 0) {
+ SWIG_croak("Type error in argument 3 of SWCompress_Buf. Expected _p_unsigned_long");
+ }
+ }
+ }
+ result = (char *)(arg1)->Buf((char const *)arg2,arg3);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWCompress_zBuf) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWCompress *arg1 = (SWCompress *) 0 ;
+ unsigned long *arg2 = (unsigned long *) 0 ;
+ char *arg3 = (char *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 3)) {
+ SWIG_croak("Usage: SWCompress_zBuf(self,len,buf);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWCompress_zBuf. Expected _p_SWCompress");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_unsigned_long,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWCompress_zBuf. Expected _p_unsigned_long");
+ }
+ }
+ if (items > 2) {
+ if (!SvOK((SV*) ST(2))) arg3 = 0;
+ else arg3 = (char *) SvPV(ST(2), PL_na);
+ }
+ result = (char *)(arg1)->zBuf(arg2,arg3);
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWCompress_GetChars) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWCompress *arg1 = (SWCompress *) 0 ;
+ char *arg2 ;
+ unsigned long arg3 ;
+ unsigned long result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 3) || (items > 3)) {
+ SWIG_croak("Usage: SWCompress_GetChars(self,buf,len);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWCompress_GetChars. Expected _p_SWCompress");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ arg3 = (unsigned long) SvUV(ST(2));
+ result = (unsigned long)(arg1)->GetChars(arg2,arg3);
+
+ ST(argvi) = sv_newmortal();
+ sv_setuv(ST(argvi++), (UV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWCompress_SendChars) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWCompress *arg1 = (SWCompress *) 0 ;
+ char *arg2 ;
+ unsigned long arg3 ;
+ unsigned long result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 3) || (items > 3)) {
+ SWIG_croak("Usage: SWCompress_SendChars(self,buf,len);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWCompress_SendChars. Expected _p_SWCompress");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ arg3 = (unsigned long) SvUV(ST(2));
+ result = (unsigned long)(arg1)->SendChars(arg2,arg3);
+
+ ST(argvi) = sv_newmortal();
+ sv_setuv(ST(argvi++), (UV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWCompress_Encode) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWCompress *arg1 = (SWCompress *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWCompress_Encode(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWCompress_Encode. Expected _p_SWCompress");
+ }
+ }
+ (arg1)->Encode();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWCompress_Decode) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWCompress *arg1 = (SWCompress *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWCompress_Decode(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWCompress_Decode. Expected _p_SWCompress");
+ }
+ }
+ (arg1)->Decode();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_LZSSCompress) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ LZSSCompress *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 0)) {
+ SWIG_croak("Usage: new_LZSSCompress();");
+ }
+ result = (LZSSCompress *)new LZSSCompress();
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_LZSSCompress,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_LZSSCompress) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ LZSSCompress *arg1 = (LZSSCompress *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_LZSSCompress(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_LZSSCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_LZSSCompress. Expected _p_LZSSCompress");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_LZSSCompress_Encode) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ LZSSCompress *arg1 = (LZSSCompress *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: LZSSCompress_Encode(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_LZSSCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of LZSSCompress_Encode. Expected _p_LZSSCompress");
+ }
+ }
+ (arg1)->Encode();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_LZSSCompress_Decode) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ LZSSCompress *arg1 = (LZSSCompress *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: LZSSCompress_Decode(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_LZSSCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of LZSSCompress_Decode. Expected _p_LZSSCompress");
+ }
+ }
+ (arg1)->Decode();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_ZipCompress) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ZipCompress *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 0)) {
+ SWIG_croak("Usage: new_ZipCompress();");
+ }
+ result = (ZipCompress *)new ZipCompress();
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_ZipCompress,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_delete_ZipCompress) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ZipCompress *arg1 = (ZipCompress *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_ZipCompress(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ZipCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_ZipCompress. Expected _p_ZipCompress");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ZipCompress_Encode) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ZipCompress *arg1 = (ZipCompress *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: ZipCompress_Encode(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ZipCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ZipCompress_Encode. Expected _p_ZipCompress");
+ }
+ }
+ (arg1)->Encode();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_ZipCompress_Decode) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ ZipCompress *arg1 = (ZipCompress *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: ZipCompress_Decode(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_ZipCompress,0) < 0) {
+ SWIG_croak("Type error in argument 1 of ZipCompress_Decode. Expected _p_ZipCompress");
+ }
+ }
+ (arg1)->Decode();
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWBuf__SWIG_0) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char *arg1 = (char *) 0 ;
+ SWBuf *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 0) || (items > 1)) {
+ SWIG_croak("Usage: new_SWBuf(initVal);");
+ }
+ if (items > 0) {
+ if (!SvOK((SV*) ST(0))) arg1 = 0;
+ else arg1 = (char *) SvPV(ST(0), PL_na);
+ }
+ result = (SWBuf *)new SWBuf((char const *)arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWBuf,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWBuf__SWIG_1) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ char arg1 ;
+ SWBuf *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: new_SWBuf(initVal);");
+ }
+ arg1 = (char) *SvPV(ST(0),PL_na);
+ result = (SWBuf *)new SWBuf(arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWBuf,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWBuf__SWIG_2) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = 0 ;
+ SWBuf *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: new_SWBuf(other);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of new_SWBuf. Expected _p_SWBuf");
+ }
+ }
+ result = (SWBuf *)new SWBuf((SWBuf const &)*arg1);
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SWBuf,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_new_SWBuf) {
+ dXSARGS;
+
+ if ((items >= 0) && (items <= 1)) {
+ int _v;
+ if (items <= 0) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWBuf__SWIG_0); return;
+ }
+ {
+ _v = SvPOK(ST(0)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWBuf__SWIG_0); return;
+ }
+ }
+ if (items == 1) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_SWBuf, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWBuf__SWIG_2); return;
+ }
+ }
+ if (items == 1) {
+ int _v;
+ {
+ _v = SvPOK(ST(0)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_SWBuf__SWIG_1); return;
+ }
+ }
+
+ croak("No matching function for overloaded 'new_SWBuf'");
+ XSRETURN(0);
+}
+
+
+XS(_wrap_delete_SWBuf) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_SWBuf(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of delete_SWBuf. Expected _p_SWBuf");
+ }
+ }
+ delete arg1;
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_setFillByte) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ char arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWBuf_setFillByte(self,ch);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_setFillByte. Expected _p_SWBuf");
+ }
+ }
+ arg2 = (char) *SvPV(ST(1),PL_na);
+ (arg1)->setFillByte(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_getFillByte) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ char result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWBuf_getFillByte(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_getFillByte. Expected _p_SWBuf");
+ }
+ }
+ result = (char)(arg1)->getFillByte();
+
+ ST(argvi) = sv_newmortal();
+ sv_setpvn((SV*)ST(argvi++), &result, 1);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_c_str) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWBuf_c_str(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_c_str. Expected _p_SWBuf");
+ }
+ }
+ result = (char *)((SWBuf const *)arg1)->c_str();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_charAt) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ unsigned int arg2 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWBuf_charAt(self,pos);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_charAt. Expected _p_SWBuf");
+ }
+ }
+ arg2 = (unsigned int) SvUV(ST(1));
+ {
+ char &_result_ref = (arg1)->charAt(arg2);
+ result = (char *) &_result_ref;
+ }
+
+ ST(argvi) = sv_newmortal();
+ SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_char,0);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_size) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ unsigned int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWBuf_size(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_size. Expected _p_SWBuf");
+ }
+ }
+ result = (unsigned int)((SWBuf const *)arg1)->size();
+
+ ST(argvi) = sv_newmortal();
+ sv_setuv(ST(argvi++), (UV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_length) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ unsigned int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWBuf_length(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_length. Expected _p_SWBuf");
+ }
+ }
+ result = (unsigned int)((SWBuf const *)arg1)->length();
+
+ ST(argvi) = sv_newmortal();
+ sv_setuv(ST(argvi++), (UV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_set__SWIG_0) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ char *arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWBuf_set(self,newVal);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_set. Expected _p_SWBuf");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ (arg1)->set((char const *)arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_set__SWIG_1) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ SWBuf *arg2 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWBuf_set(self,newVal);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_set. Expected _p_SWBuf");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWBuf_set. Expected _p_SWBuf");
+ }
+ }
+ (arg1)->set((SWBuf const &)*arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_set) {
+ dXSARGS;
+
+ if (items == 2) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_SWBuf, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_SWBuf, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_SWBuf_set__SWIG_1); return;
+ }
+ }
+ }
+ if (items == 2) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_SWBuf, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ {
+ _v = SvPOK(ST(1)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_SWBuf_set__SWIG_0); return;
+ }
+ }
+ }
+
+ croak("No matching function for overloaded 'SWBuf_set'");
+ XSRETURN(0);
+}
+
+
+XS(_wrap_SWBuf_setSize) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ unsigned int arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWBuf_setSize(self,len);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_setSize. Expected _p_SWBuf");
+ }
+ }
+ arg2 = (unsigned int) SvUV(ST(1));
+ (arg1)->setSize(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_append__SWIG_0) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ char *arg2 ;
+ int arg3 = (int) -1 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 3)) {
+ SWIG_croak("Usage: SWBuf_append(self,str,max);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_append. Expected _p_SWBuf");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ if (items > 2) {
+ arg3 = (int) SvIV(ST(2));
+ }
+ (arg1)->append((char const *)arg2,arg3);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_append__SWIG_1) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ SWBuf *arg2 = 0 ;
+ int arg3 = (int) -1 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 3)) {
+ SWIG_croak("Usage: SWBuf_append(self,str,max);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_append. Expected _p_SWBuf");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWBuf_append. Expected _p_SWBuf");
+ }
+ }
+ if (items > 2) {
+ arg3 = (int) SvIV(ST(2));
+ }
+ (arg1)->append((SWBuf const &)*arg2,arg3);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_append__SWIG_2) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ char arg2 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWBuf_append(self,ch);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_append. Expected _p_SWBuf");
+ }
+ }
+ arg2 = (char) *SvPV(ST(1),PL_na);
+ (arg1)->append(arg2);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_append) {
+ dXSARGS;
+
+ if ((items >= 2) && (items <= 3)) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_SWBuf, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_SWBuf, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ if (items <= 2) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_SWBuf_append__SWIG_1); return;
+ }
+ {
+ _v = SvIOK(ST(2)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_SWBuf_append__SWIG_1); return;
+ }
+ }
+ }
+ }
+ if (items == 2) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_SWBuf, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ {
+ _v = SvPOK(ST(1)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_SWBuf_append__SWIG_2); return;
+ }
+ }
+ }
+ if ((items >= 2) && (items <= 3)) {
+ int _v;
+ {
+ void *tmp;
+ if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_SWBuf, 0) == -1) {
+ _v = 0;
+ }else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ {
+ _v = SvPOK(ST(1)) ? 1 : 0;
+ }
+ if (_v) {
+ if (items <= 2) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_SWBuf_append__SWIG_0); return;
+ }
+ {
+ _v = SvIOK(ST(2)) ? 1 : 0;
+ }
+ if (_v) {
+ (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_SWBuf_append__SWIG_0); return;
+ }
+ }
+ }
+ }
+
+ croak("No matching function for overloaded 'SWBuf_append'");
+ XSRETURN(0);
+}
+
+
+XS(_wrap_SWBuf_appendFormatted) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ char *arg2 ;
+ void *arg3 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if (items < 2) {
+ SWIG_croak("Usage: SWBuf_appendFormatted(self,format,...);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_appendFormatted. Expected _p_SWBuf");
+ }
+ }
+ if (!SvOK((SV*) ST(1))) arg2 = 0;
+ else arg2 = (char *) SvPV(ST(1), PL_na);
+ (arg1)->appendFormatted((char const *)arg2,arg3);
+
+
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_getRawData) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ char *result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: SWBuf_getRawData(self);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_getRawData. Expected _p_SWBuf");
+ }
+ }
+ result = (char *)(arg1)->getRawData();
+
+ ST(argvi) = sv_newmortal();
+ if (result) {
+ sv_setpv((SV*)ST(argvi++), (char *) result);
+ }else {
+ sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
+ }
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+XS(_wrap_SWBuf_compare) {
+ char _swigmsg[SWIG_MAX_ERRMSG] = "";
+ const char *_swigerr = _swigmsg;
+ {
+ SWBuf *arg1 = (SWBuf *) 0 ;
+ SWBuf *arg2 = 0 ;
+ int result;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: SWBuf_compare(self,other);");
+ }
+ {
+ if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 1 of SWBuf_compare. Expected _p_SWBuf");
+ }
+ }
+ {
+ if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_SWBuf,0) < 0) {
+ SWIG_croak("Type error in argument 2 of SWBuf_compare. Expected _p_SWBuf");
+ }
+ }
+ result = (int)((SWBuf const *)arg1)->compare((SWBuf const &)*arg2);
+
+ ST(argvi) = sv_newmortal();
+ sv_setiv(ST(argvi++), (IV) result);
+ XSRETURN(argvi);
+ fail:
+ (void) _swigerr;
+ }
+ croak(_swigerr);
+}
+
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+static void *_p_zComTo_p_SWCom(void *x) {
+ return (void *)((SWCom *) ((zCom *) x));
+}
+static void *_p_RawComTo_p_SWCom(void *x) {
+ return (void *)((SWCom *) ((RawCom *) x));
+}
+static void *_p_TreeKeyIdxTo_p_TreeKey(void *x) {
+ return (void *)((TreeKey *) ((TreeKeyIdx *) x));
+}
+static void *_p_RawTextTo_p_SWText(void *x) {
+ return (void *)((SWText *) ((RawText *) x));
+}
+static void *_p_zTextTo_p_SWText(void *x) {
+ return (void *)((SWText *) ((zText *) x));
+}
+static void *_p_ListKeyTo_p_SWKey(void *x) {
+ return (void *)((SWKey *) ((ListKey *) x));
+}
+static void *_p_TreeKeyIdxTo_p_SWKey(void *x) {
+ return (void *)((SWKey *) (TreeKey *) ((TreeKeyIdx *) x));
+}
+static void *_p_VerseKeyTo_p_SWKey(void *x) {
+ return (void *)((SWKey *) ((VerseKey *) x));
+}
+static void *_p_TreeKeyTo_p_SWKey(void *x) {
+ return (void *)((SWKey *) ((TreeKey *) x));
+}
+static void *_p_LZSSCompressTo_p_SWCompress(void *x) {
+ return (void *)((SWCompress *) ((LZSSCompress *) x));
+}
+static void *_p_ZipCompressTo_p_SWCompress(void *x) {
+ return (void *)((SWCompress *) ((ZipCompress *) x));
+}
+static void *_p_SWComTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) ((SWCom *) x));
+}
+static void *_p_zLDTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) (SWLD *) ((zLD *) x));
+}
+static void *_p_SWTextTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) ((SWText *) x));
+}
+static void *_p_SWGenBookTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) ((SWGenBook *) x));
+}
+static void *_p_RawGenBookTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) (SWGenBook *) ((RawGenBook *) x));
+}
+static void *_p_RawTextTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) (SWText *) ((RawText *) x));
+}
+static void *_p_zComTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) (SWCom *) ((zCom *) x));
+}
+static void *_p_RawLD4To_p_SWModule(void *x) {
+ return (void *)((SWModule *) (SWLD *) ((RawLD4 *) x));
+}
+static void *_p_zTextTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) (SWText *) ((zText *) x));
+}
+static void *_p_RawComTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) (SWCom *) ((RawCom *) x));
+}
+static void *_p_SWLDTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) ((SWLD *) x));
+}
+static void *_p_RawLDTo_p_SWModule(void *x) {
+ return (void *)((SWModule *) (SWLD *) ((RawLD *) x));
+}
+static void *_p_RawGenBookTo_p_SWGenBook(void *x) {
+ return (void *)((SWGenBook *) ((RawGenBook *) x));
+}
+static void *_p_zLDTo_p_SWLD(void *x) {
+ return (void *)((SWLD *) ((zLD *) x));
+}
+static void *_p_RawLD4To_p_SWLD(void *x) {
+ return (void *)((SWLD *) ((RawLD4 *) x));
+}
+static void *_p_RawLDTo_p_SWLD(void *x) {
+ return (void *)((SWLD *) ((RawLD *) x));
+}
+static swig_type_info _swigt__p_SWLocale[] = {{"_p_SWLocale", 0, "SWLocale *", 0},{"_p_SWLocale"},{0}};
+static swig_type_info _swigt__p_SWMgr[] = {{"Sword::SWMgr", 0, "SWMgr *", 0},{"Sword::SWMgr"},{0}};
+static swig_type_info _swigt__p_SWCom[] = {{"Sword::SWCom", 0, "SWCom *", 0},{"Sword::zCom", _p_zComTo_p_SWCom},{"Sword::SWCom"},{"Sword::RawCom", _p_RawComTo_p_SWCom},{0}};
+static swig_type_info _swigt__p_RawLD4[] = {{"Sword::RawLD4", 0, "RawLD4 *", 0},{"Sword::RawLD4"},{0}};
+static swig_type_info _swigt__p_ListKey[] = {{"Sword::ListKey", 0, "ListKey *", 0},{"Sword::ListKey"},{0}};
+static swig_type_info _swigt__p_SWKey[] = {{"Sword::SWKey", 0, "SWKey *", 0},{"Sword::SWKey"},{"Sword::ListKey", _p_ListKeyTo_p_SWKey},{"Sword::TreeKeyIdx", _p_TreeKeyIdxTo_p_SWKey},{"Sword::VerseKey", _p_VerseKeyTo_p_SWKey},{"Sword::TreeKey", _p_TreeKeyTo_p_SWKey},{0}};
+static swig_type_info _swigt__p_ConfigEntMap[] = {{"_p_ConfigEntMap", 0, "ConfigEntMap *", 0},{"_p_ConfigEntMap"},{0}};
+static swig_type_info _swigt__p_p_char[] = {{"_p_p_char", 0, "char **", 0},{"_p_p_char"},{0}};
+static swig_type_info _swigt__p_RawLD[] = {{"Sword::RawLD", 0, "RawLD *", 0},{"Sword::RawLD"},{0}};
+static swig_type_info _swigt__p_char[] = {{"_p_char", 0, "char *", 0},{"_p_char"},{0}};
+static swig_type_info _swigt__p_TreeKey[] = {{"Sword::TreeKey", 0, "TreeKey *", 0},{"Sword::TreeKeyIdx", _p_TreeKeyIdxTo_p_TreeKey},{"Sword::TreeKey"},{0}};
+static swig_type_info _swigt__p_StringList[] = {{"_p_StringList", 0, "StringList *", 0},{"_p_StringList"},{0}};
+static swig_type_info _swigt__p_bool[] = {{"_p_bool", 0, "bool *", 0},{"_p_bool"},{0}};
+static swig_type_info _swigt__p_SWFilterMgr[] = {{"Sword::SWFilterMgr", 0, "SWFilterMgr *", 0},{"Sword::SWFilterMgr"},{0}};
+static swig_type_info _swigt__p_SWLD[] = {{"Sword::SWLD", 0, "SWLD *", 0},{"Sword::zLD", _p_zLDTo_p_SWLD},{"Sword::SWLD"},{"Sword::RawLD4", _p_RawLD4To_p_SWLD},{"Sword::RawLD", _p_RawLDTo_p_SWLD},{0}};
+static swig_type_info _swigt__p_SWTextDirection[] = {{"_p_SWTextDirection", 0, "SWTextDirection *", 0},{"_p_SWTextDirection"},{0}};
+static swig_type_info _swigt__p_RawText[] = {{"Sword::RawText", 0, "RawText *", 0},{"Sword::RawText"},{0}};
+static swig_type_info _swigt__p_f_char_p_void__void[] = {{"_p_f_char_p_void__void", 0, "void (*)(char,void *)", 0},{"_p_f_char_p_void__void"},{0}};
+static swig_type_info _swigt__p_VerseKey[] = {{"Sword::VerseKey", 0, "VerseKey *", 0},{"Sword::VerseKey"},{0}};
+static swig_type_info _swigt__p_SWBuf[] = {{"Sword::SWBuf", 0, "SWBuf *", 0},{"Sword::SWBuf"},{0}};
+static swig_type_info _swigt__p_ModMap[] = {{"_p_ModMap", 0, "ModMap *", 0},{"_p_ModMap"},{0}};
+static swig_type_info _swigt__p_zCom[] = {{"Sword::zCom", 0, "zCom *", 0},{"Sword::zCom"},{0}};
+static swig_type_info _swigt__p_SectionMap[] = {{"_p_SectionMap", 0, "SectionMap *", 0},{"_p_SectionMap"},{0}};
+static swig_type_info _swigt__p_SWDisplay[] = {{"_p_SWDisplay", 0, "SWDisplay *", 0},{"_p_SWDisplay"},{0}};
+static swig_type_info _swigt__p_AttributeTypeList[] = {{"_p_AttributeTypeList", 0, "AttributeTypeList *", 0},{"_p_AttributeTypeList"},{0}};
+static swig_type_info _swigt__p_SWText[] = {{"Sword::SWText", 0, "SWText *", 0},{"Sword::SWText"},{"Sword::RawText", _p_RawTextTo_p_SWText},{"Sword::zText", _p_zTextTo_p_SWText},{0}};
+static swig_type_info _swigt__p_std__listTSWBuf_t[] = {{"_p_std__listTSWBuf_t", 0, "std::list<SWBuf > *", 0},{"_p_std__listTSWBuf_t"},{0}};
+static swig_type_info _swigt__p_TreeKeyIdx[] = {{"Sword::TreeKeyIdx", 0, "TreeKeyIdx *", 0},{"Sword::TreeKeyIdx"},{0}};
+static swig_type_info _swigt__p_SWCompress[] = {{"Sword::SWCompress", 0, "SWCompress *", 0},{"Sword::SWCompress"},{"Sword::LZSSCompress", _p_LZSSCompressTo_p_SWCompress},{"Sword::ZipCompress", _p_ZipCompressTo_p_SWCompress},{0}};
+static swig_type_info _swigt__p_LZSSCompress[] = {{"Sword::LZSSCompress", 0, "LZSSCompress *", 0},{"Sword::LZSSCompress"},{0}};
+static swig_type_info _swigt__p_ZipCompress[] = {{"Sword::ZipCompress", 0, "ZipCompress *", 0},{"Sword::ZipCompress"},{0}};
+static swig_type_info _swigt__p_SW_POSITION[] = {{"Sword::SW_POSITION", 0, "SW_POSITION *", 0},{"Sword::SW_POSITION"},{0}};
+static swig_type_info _swigt__p_SWModule[] = {{"Sword::SWModule", 0, "SWModule *", 0},{"Sword::SWModule"},{"Sword::SWGenBook", _p_SWGenBookTo_p_SWModule},{"Sword::RawGenBook", _p_RawGenBookTo_p_SWModule},{"Sword::SWText", _p_SWTextTo_p_SWModule},{"Sword::RawText", _p_RawTextTo_p_SWModule},{"Sword::zLD", _p_zLDTo_p_SWModule},{"Sword::zCom", _p_zComTo_p_SWModule},{"Sword::zText", _p_zTextTo_p_SWModule},{"Sword::RawLD4", _p_RawLD4To_p_SWModule},{"Sword::SWLD", _p_SWLDTo_p_SWModule},{"Sword::RawLD", _p_RawLDTo_p_SWModule},{"Sword::SWCom", _p_SWComTo_p_SWModule},{"Sword::RawCom", _p_RawComTo_p_SWModule},{0}};
+static swig_type_info _swigt__p_zLD[] = {{"Sword::zLD", 0, "zLD *", 0},{"Sword::zLD"},{0}};
+static swig_type_info _swigt__p_SWGenBook[] = {{"Sword::SWGenBook", 0, "SWGenBook *", 0},{"Sword::SWGenBook"},{"Sword::RawGenBook", _p_RawGenBookTo_p_SWGenBook},{0}};
+static swig_type_info _swigt__p_RawCom[] = {{"Sword::RawCom", 0, "RawCom *", 0},{"Sword::RawCom"},{0}};
+static swig_type_info _swigt__p_RawGenBook[] = {{"Sword::RawGenBook", 0, "RawGenBook *", 0},{"Sword::RawGenBook"},{0}};
+static swig_type_info _swigt__p_SWConfig[] = {{"Sword::SWConfig", 0, "SWConfig *", 0},{"Sword::SWConfig"},{0}};
+static swig_type_info _swigt__p_LocaleMgr[] = {{"Sword::LocaleMgr", 0, "LocaleMgr *", 0},{"Sword::LocaleMgr"},{0}};
+static swig_type_info _swigt__p_int[] = {{"_p_int", 0, "int *", 0},{"_p_int"},{0}};
+static swig_type_info _swigt__p_SWTextMarkup[] = {{"_p_SWTextMarkup", 0, "SWTextMarkup *", 0},{"_p_SWTextMarkup"},{0}};
+static swig_type_info _swigt__p_zText[] = {{"Sword::zText", 0, "zText *", 0},{"Sword::zText"},{0}};
+static swig_type_info _swigt__p_SWTextEncoding[] = {{"_p_SWTextEncoding", 0, "SWTextEncoding *", 0},{"_p_SWTextEncoding"},{0}};
+static swig_type_info _swigt__p_unsigned_long[] = {{"_p_unsigned_long", 0, "unsigned long *", 0},{"_p_unsigned_long"},{0}};
+
+static swig_type_info *swig_types_initial[] = {
+_swigt__p_SWLocale,
+_swigt__p_SWMgr,
+_swigt__p_SWCom,
+_swigt__p_RawLD4,
+_swigt__p_ListKey,
+_swigt__p_SWKey,
+_swigt__p_ConfigEntMap,
+_swigt__p_p_char,
+_swigt__p_RawLD,
+_swigt__p_char,
+_swigt__p_TreeKey,
+_swigt__p_StringList,
+_swigt__p_bool,
+_swigt__p_SWFilterMgr,
+_swigt__p_SWLD,
+_swigt__p_SWTextDirection,
+_swigt__p_RawText,
+_swigt__p_f_char_p_void__void,
+_swigt__p_VerseKey,
+_swigt__p_SWBuf,
+_swigt__p_ModMap,
+_swigt__p_zCom,
+_swigt__p_SectionMap,
+_swigt__p_SWDisplay,
+_swigt__p_AttributeTypeList,
+_swigt__p_SWText,
+_swigt__p_std__listTSWBuf_t,
+_swigt__p_TreeKeyIdx,
+_swigt__p_SWCompress,
+_swigt__p_LZSSCompress,
+_swigt__p_ZipCompress,
+_swigt__p_SW_POSITION,
+_swigt__p_SWModule,
+_swigt__p_zLD,
+_swigt__p_SWGenBook,
+_swigt__p_RawCom,
+_swigt__p_RawGenBook,
+_swigt__p_SWConfig,
+_swigt__p_LocaleMgr,
+_swigt__p_int,
+_swigt__p_SWTextMarkup,
+_swigt__p_zText,
+_swigt__p_SWTextEncoding,
+_swigt__p_unsigned_long,
+0
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+
+static swig_constant_info swig_constants[] = {
+{0}
+};
+#ifdef __cplusplus
+}
+#endif
+static swig_variable_info swig_variables[] = {
+{0}
+};
+static swig_command_info swig_commands[] = {
+{"Swordc::SWConfig_filename_set", _wrap_SWConfig_filename_set},
+{"Swordc::SWConfig_filename_get", _wrap_SWConfig_filename_get},
+{"Swordc::SWConfig_Sections_set", _wrap_SWConfig_Sections_set},
+{"Swordc::SWConfig_Sections_get", _wrap_SWConfig_Sections_get},
+{"Swordc::new_SWConfig", _wrap_new_SWConfig},
+{"Swordc::delete_SWConfig", _wrap_delete_SWConfig},
+{"Swordc::SWConfig_Load", _wrap_SWConfig_Load},
+{"Swordc::SWConfig_Save", _wrap_SWConfig_Save},
+{"Swordc::SWConfig_set", _wrap_SWConfig_set},
+{"Swordc::SWConfig_get", _wrap_SWConfig_get},
+{"Swordc::SWMgr_findConfig", _wrap_SWMgr_findConfig},
+{"Swordc::SWMgr_config_set", _wrap_SWMgr_config_set},
+{"Swordc::SWMgr_config_get", _wrap_SWMgr_config_get},
+{"Swordc::SWMgr_sysconfig_set", _wrap_SWMgr_sysconfig_set},
+{"Swordc::SWMgr_sysconfig_get", _wrap_SWMgr_sysconfig_get},
+{"Swordc::SWMgr_Modules_set", _wrap_SWMgr_Modules_set},
+{"Swordc::SWMgr_Modules_get", _wrap_SWMgr_Modules_get},
+{"Swordc::SWMgr_prefixPath_set", _wrap_SWMgr_prefixPath_set},
+{"Swordc::SWMgr_prefixPath_get", _wrap_SWMgr_prefixPath_get},
+{"Swordc::SWMgr_configPath_set", _wrap_SWMgr_configPath_set},
+{"Swordc::SWMgr_configPath_get", _wrap_SWMgr_configPath_get},
+{"Swordc::new_SWMgr", _wrap_new_SWMgr},
+{"Swordc::delete_SWMgr", _wrap_delete_SWMgr},
+{"Swordc::SWMgr_Load", _wrap_SWMgr_Load},
+{"Swordc::SWMgr_setGlobalOption", _wrap_SWMgr_setGlobalOption},
+{"Swordc::SWMgr_getGlobalOption", _wrap_SWMgr_getGlobalOption},
+{"Swordc::SWMgr_getGlobalOptionTip", _wrap_SWMgr_getGlobalOptionTip},
+{"Swordc::SWMgr_getGlobalOptions", _wrap_SWMgr_getGlobalOptions},
+{"Swordc::SWMgr_getGlobalOptionValues", _wrap_SWMgr_getGlobalOptionValues},
+{"Swordc::SWMgr_setCipherKey", _wrap_SWMgr_setCipherKey},
+{"Swordc::SWMgr_getModule", _wrap_SWMgr_getModule},
+{"Swordc::SWMgr_InstallScan", _wrap_SWMgr_InstallScan},
+{"Swordc::SWMgr_moduleCount", _wrap_SWMgr_moduleCount},
+{"Swordc::SWMgr_getModuleAt", _wrap_SWMgr_getModuleAt},
+{"Swordc::SWModule_terminateSearch_set", _wrap_SWModule_terminateSearch_set},
+{"Swordc::SWModule_terminateSearch_get", _wrap_SWModule_terminateSearch_get},
+{"Swordc::new_SWModule", _wrap_new_SWModule},
+{"Swordc::SWModule_Error", _wrap_SWModule_Error},
+{"Swordc::SWModule_isUnicode", _wrap_SWModule_isUnicode},
+{"Swordc::SWModule_getConfig", _wrap_SWModule_getConfig},
+{"Swordc::SWModule_getConfigEntry", _wrap_SWModule_getConfigEntry},
+{"Swordc::SWModule_SetKey", _wrap_SWModule_SetKey},
+{"Swordc::SWModule_Key", _wrap_SWModule_Key},
+{"Swordc::SWModule_CreateKey", _wrap_SWModule_CreateKey},
+{"Swordc::SWModule_KeyText", _wrap_SWModule_KeyText},
+{"Swordc::SWModule_Display", _wrap_SWModule_Display},
+{"Swordc::SWModule_nullPercent", _wrap_SWModule_nullPercent},
+{"Swordc::SWModule_Search", _wrap_SWModule_Search},
+{"Swordc::SWModule_createSearchFramework", _wrap_SWModule_createSearchFramework},
+{"Swordc::SWModule_hasSearchFramework", _wrap_SWModule_hasSearchFramework},
+{"Swordc::SWModule_isSearchOptimallySupported", _wrap_SWModule_isSearchOptimallySupported},
+{"Swordc::SWModule_next", _wrap_SWModule_next},
+{"Swordc::SWModule_prev", _wrap_SWModule_prev},
+{"Swordc::SWModule_inc", _wrap_SWModule_inc},
+{"Swordc::SWModule_dec", _wrap_SWModule_dec},
+{"Swordc::SWModule_setPosition", _wrap_SWModule_setPosition},
+{"Swordc::SWModule_top", _wrap_SWModule_top},
+{"Swordc::SWModule_bottom", _wrap_SWModule_bottom},
+{"Swordc::SWModule_text", _wrap_SWModule_text},
+{"Swordc::SWModule_StripText", _wrap_SWModule_StripText},
+{"Swordc::SWModule_getRawEntry", _wrap_SWModule_getRawEntry},
+{"Swordc::SWModule_setSkipConsecutiveLinks", _wrap_SWModule_setSkipConsecutiveLinks},
+{"Swordc::SWModule_getSkipConsecutiveLinks", _wrap_SWModule_getSkipConsecutiveLinks},
+{"Swordc::SWModule_getEntryAttributes", _wrap_SWModule_getEntryAttributes},
+{"Swordc::SWModule_processEntryAttributes", _wrap_SWModule_processEntryAttributes},
+{"Swordc::SWModule_isProcessEntryAttributes", _wrap_SWModule_isProcessEntryAttributes},
+{"Swordc::SWModule_Name", _wrap_SWModule_Name},
+{"Swordc::SWModule_Description", _wrap_SWModule_Description},
+{"Swordc::SWModule_Type", _wrap_SWModule_Type},
+{"Swordc::SWModule_Direction", _wrap_SWModule_Direction},
+{"Swordc::SWModule_Encoding", _wrap_SWModule_Encoding},
+{"Swordc::SWModule_Markup", _wrap_SWModule_Markup},
+{"Swordc::SWModule_Lang", _wrap_SWModule_Lang},
+{"Swordc::SWModule_isWritable", _wrap_SWModule_isWritable},
+{"Swordc::SWModule_createModule", _wrap_SWModule_createModule},
+{"Swordc::SWModule_setEntry", _wrap_SWModule_setEntry},
+{"Swordc::SWModule_deleteEntry", _wrap_SWModule_deleteEntry},
+{"Swordc::SWModule_write", _wrap_SWModule_write},
+{"Swordc::SWModule_writeLink", _wrap_SWModule_writeLink},
+{"Swordc::delete_SWModule", _wrap_delete_SWModule},
+{"Swordc::new_SW_POSITION", _wrap_new_SW_POSITION},
+{"Swordc::delete_SW_POSITION", _wrap_delete_SW_POSITION},
+{"Swordc::new_SWKey", _wrap_new_SWKey},
+{"Swordc::SWKey_clone", _wrap_SWKey_clone},
+{"Swordc::delete_SWKey", _wrap_delete_SWKey},
+{"Swordc::SWKey_Persist", _wrap_SWKey_Persist},
+{"Swordc::SWKey_setPersist", _wrap_SWKey_setPersist},
+{"Swordc::SWKey_Error", _wrap_SWKey_Error},
+{"Swordc::SWKey_setText", _wrap_SWKey_setText},
+{"Swordc::SWKey_getText", _wrap_SWKey_getText},
+{"Swordc::SWKey_getShortText", _wrap_SWKey_getShortText},
+{"Swordc::SWKey_compare", _wrap_SWKey_compare},
+{"Swordc::SWKey_equals", _wrap_SWKey_equals},
+{"Swordc::SWKey_decrement", _wrap_SWKey_decrement},
+{"Swordc::SWKey_increment", _wrap_SWKey_increment},
+{"Swordc::SWKey_Traversable", _wrap_SWKey_Traversable},
+{"Swordc::SWKey_Index", _wrap_SWKey_Index},
+{"Swordc::SWKey_next", _wrap_SWKey_next},
+{"Swordc::SWKey_prev", _wrap_SWKey_prev},
+{"Swordc::SWKey_setKey", _wrap_SWKey_setKey},
+{"Swordc::SWKey_toVerseKey", _wrap_SWKey_toVerseKey},
+{"Swordc::new_VerseKey", _wrap_new_VerseKey},
+{"Swordc::delete_VerseKey", _wrap_delete_VerseKey},
+{"Swordc::VerseKey_clone", _wrap_VerseKey_clone},
+{"Swordc::VerseKey_LowerBound", _wrap_VerseKey_LowerBound},
+{"Swordc::VerseKey_UpperBound", _wrap_VerseKey_UpperBound},
+{"Swordc::VerseKey_ClearBounds", _wrap_VerseKey_ClearBounds},
+{"Swordc::VerseKey_ParseVerseList", _wrap_VerseKey_ParseVerseList},
+{"Swordc::VerseKey_setText", _wrap_VerseKey_setText},
+{"Swordc::VerseKey_getText", _wrap_VerseKey_getText},
+{"Swordc::VerseKey_getRangeText", _wrap_VerseKey_getRangeText},
+{"Swordc::VerseKey_getShortText", _wrap_VerseKey_getShortText},
+{"Swordc::VerseKey_Traversable", _wrap_VerseKey_Traversable},
+{"Swordc::VerseKey_decrement", _wrap_VerseKey_decrement},
+{"Swordc::VerseKey_increment", _wrap_VerseKey_increment},
+{"Swordc::VerseKey_getBookName", _wrap_VerseKey_getBookName},
+{"Swordc::VerseKey_getBookAbbrev", _wrap_VerseKey_getBookAbbrev},
+{"Swordc::VerseKey_Testament", _wrap_VerseKey_Testament},
+{"Swordc::VerseKey_Book", _wrap_VerseKey_Book},
+{"Swordc::VerseKey_Chapter", _wrap_VerseKey_Chapter},
+{"Swordc::VerseKey_Verse", _wrap_VerseKey_Verse},
+{"Swordc::VerseKey_Normalize", _wrap_VerseKey_Normalize},
+{"Swordc::VerseKey_AutoNormalize", _wrap_VerseKey_AutoNormalize},
+{"Swordc::VerseKey_Headings", _wrap_VerseKey_Headings},
+{"Swordc::VerseKey_getOSISRef", _wrap_VerseKey_getOSISRef},
+{"Swordc::VerseKey_compare", _wrap_VerseKey_compare},
+{"Swordc::VerseKey__compare", _wrap_VerseKey__compare},
+{"Swordc::VerseKey_setLocale", _wrap_VerseKey_setLocale},
+{"Swordc::VerseKey_getLocale", _wrap_VerseKey_getLocale},
+{"Swordc::VerseKey_bookCount", _wrap_VerseKey_bookCount},
+{"Swordc::VerseKey_bookName", _wrap_VerseKey_bookName},
+{"Swordc::VerseKey_chapterCount", _wrap_VerseKey_chapterCount},
+{"Swordc::VerseKey_verseCount", _wrap_VerseKey_verseCount},
+{"Swordc::new_ListKey", _wrap_new_ListKey},
+{"Swordc::delete_ListKey", _wrap_delete_ListKey},
+{"Swordc::ListKey_clone", _wrap_ListKey_clone},
+{"Swordc::ListKey_ClearList", _wrap_ListKey_ClearList},
+{"Swordc::ListKey_Count", _wrap_ListKey_Count},
+{"Swordc::ListKey_Remove", _wrap_ListKey_Remove},
+{"Swordc::ListKey_SetToElement", _wrap_ListKey_SetToElement},
+{"Swordc::ListKey_GetElement", _wrap_ListKey_GetElement},
+{"Swordc::ListKey_add", _wrap_ListKey_add},
+{"Swordc::ListKey_copyFrom", _wrap_ListKey_copyFrom},
+{"Swordc::ListKey_setPosition", _wrap_ListKey_setPosition},
+{"Swordc::ListKey_decrement", _wrap_ListKey_decrement},
+{"Swordc::ListKey_increment", _wrap_ListKey_increment},
+{"Swordc::ListKey_Traversable", _wrap_ListKey_Traversable},
+{"Swordc::ListKey_Index", _wrap_ListKey_Index},
+{"Swordc::TreeKey_getLocalName", _wrap_TreeKey_getLocalName},
+{"Swordc::TreeKey_setLocalName", _wrap_TreeKey_setLocalName},
+{"Swordc::TreeKey_getUserData", _wrap_TreeKey_getUserData},
+{"Swordc::TreeKey_setUserData", _wrap_TreeKey_setUserData},
+{"Swordc::TreeKey_getFullName", _wrap_TreeKey_getFullName},
+{"Swordc::TreeKey_root", _wrap_TreeKey_root},
+{"Swordc::TreeKey_parent", _wrap_TreeKey_parent},
+{"Swordc::TreeKey_firstChild", _wrap_TreeKey_firstChild},
+{"Swordc::TreeKey_nextSibling", _wrap_TreeKey_nextSibling},
+{"Swordc::TreeKey_previousSibling", _wrap_TreeKey_previousSibling},
+{"Swordc::TreeKey_hasChildren", _wrap_TreeKey_hasChildren},
+{"Swordc::TreeKey_append", _wrap_TreeKey_append},
+{"Swordc::TreeKey_appendChild", _wrap_TreeKey_appendChild},
+{"Swordc::TreeKey_insertBefore", _wrap_TreeKey_insertBefore},
+{"Swordc::TreeKey_remove", _wrap_TreeKey_remove},
+{"Swordc::TreeKey_setOffset", _wrap_TreeKey_setOffset},
+{"Swordc::TreeKey_getOffset", _wrap_TreeKey_getOffset},
+{"Swordc::TreeKey_setPosition", _wrap_TreeKey_setPosition},
+{"Swordc::TreeKey_Traversable", _wrap_TreeKey_Traversable},
+{"Swordc::TreeKey_Index", _wrap_TreeKey_Index},
+{"Swordc::delete_TreeKeyIdx", _wrap_delete_TreeKeyIdx},
+{"Swordc::TreeKeyIdx_save", _wrap_TreeKeyIdx_save},
+{"Swordc::TreeKeyIdx_copyFrom", _wrap_TreeKeyIdx_copyFrom},
+{"Swordc::TreeKeyIdx__compare", _wrap_TreeKeyIdx__compare},
+{"Swordc::TreeKeyIdx_create", _wrap_TreeKeyIdx_create},
+{"Swordc::new_LocaleMgr", _wrap_new_LocaleMgr},
+{"Swordc::delete_LocaleMgr", _wrap_delete_LocaleMgr},
+{"Swordc::LocaleMgr_getLocale", _wrap_LocaleMgr_getLocale},
+{"Swordc::LocaleMgr_getAvailableLocales", _wrap_LocaleMgr_getAvailableLocales},
+{"Swordc::LocaleMgr_getDefaultLocaleName", _wrap_LocaleMgr_getDefaultLocaleName},
+{"Swordc::LocaleMgr_setDefaultLocaleName", _wrap_LocaleMgr_setDefaultLocaleName},
+{"Swordc::LocaleMgr_getSystemLocaleMgr", _wrap_LocaleMgr_getSystemLocaleMgr},
+{"Swordc::new_SWText", _wrap_new_SWText},
+{"Swordc::delete_SWText", _wrap_delete_SWText},
+{"Swordc::new_RawText", _wrap_new_RawText},
+{"Swordc::RawText_createModule", _wrap_RawText_createModule},
+{"Swordc::delete_RawText", _wrap_delete_RawText},
+{"Swordc::new_zText", _wrap_new_zText},
+{"Swordc::delete_zText", _wrap_delete_zText},
+{"Swordc::zText_createModule", _wrap_zText_createModule},
+{"Swordc::new_RawCom", _wrap_new_RawCom},
+{"Swordc::delete_RawCom", _wrap_delete_RawCom},
+{"Swordc::RawCom_createModule", _wrap_RawCom_createModule},
+{"Swordc::new_zCom", _wrap_new_zCom},
+{"Swordc::delete_zCom", _wrap_delete_zCom},
+{"Swordc::zCom_createModule", _wrap_zCom_createModule},
+{"Swordc::new_RawGenBook", _wrap_new_RawGenBook},
+{"Swordc::delete_RawGenBook", _wrap_delete_RawGenBook},
+{"Swordc::RawGenBook_createModule", _wrap_RawGenBook_createModule},
+{"Swordc::RawGenBook_getTreeKey", _wrap_RawGenBook_getTreeKey},
+{"Swordc::new_SWLD", _wrap_new_SWLD},
+{"Swordc::delete_SWLD", _wrap_delete_SWLD},
+{"Swordc::new_RawLD", _wrap_new_RawLD},
+{"Swordc::delete_RawLD", _wrap_delete_RawLD},
+{"Swordc::RawLD_createModule", _wrap_RawLD_createModule},
+{"Swordc::new_RawLD4", _wrap_new_RawLD4},
+{"Swordc::delete_RawLD4", _wrap_delete_RawLD4},
+{"Swordc::RawLD4_createModule", _wrap_RawLD4_createModule},
+{"Swordc::new_zLD", _wrap_new_zLD},
+{"Swordc::delete_zLD", _wrap_delete_zLD},
+{"Swordc::zLD_createModule", _wrap_zLD_createModule},
+{"Swordc::new_SWCompress", _wrap_new_SWCompress},
+{"Swordc::delete_SWCompress", _wrap_delete_SWCompress},
+{"Swordc::SWCompress_Buf", _wrap_SWCompress_Buf},
+{"Swordc::SWCompress_zBuf", _wrap_SWCompress_zBuf},
+{"Swordc::SWCompress_GetChars", _wrap_SWCompress_GetChars},
+{"Swordc::SWCompress_SendChars", _wrap_SWCompress_SendChars},
+{"Swordc::SWCompress_Encode", _wrap_SWCompress_Encode},
+{"Swordc::SWCompress_Decode", _wrap_SWCompress_Decode},
+{"Swordc::new_LZSSCompress", _wrap_new_LZSSCompress},
+{"Swordc::delete_LZSSCompress", _wrap_delete_LZSSCompress},
+{"Swordc::LZSSCompress_Encode", _wrap_LZSSCompress_Encode},
+{"Swordc::LZSSCompress_Decode", _wrap_LZSSCompress_Decode},
+{"Swordc::new_ZipCompress", _wrap_new_ZipCompress},
+{"Swordc::delete_ZipCompress", _wrap_delete_ZipCompress},
+{"Swordc::ZipCompress_Encode", _wrap_ZipCompress_Encode},
+{"Swordc::ZipCompress_Decode", _wrap_ZipCompress_Decode},
+{"Swordc::new_SWBuf", _wrap_new_SWBuf},
+{"Swordc::delete_SWBuf", _wrap_delete_SWBuf},
+{"Swordc::SWBuf_setFillByte", _wrap_SWBuf_setFillByte},
+{"Swordc::SWBuf_getFillByte", _wrap_SWBuf_getFillByte},
+{"Swordc::SWBuf_c_str", _wrap_SWBuf_c_str},
+{"Swordc::SWBuf_charAt", _wrap_SWBuf_charAt},
+{"Swordc::SWBuf_size", _wrap_SWBuf_size},
+{"Swordc::SWBuf_length", _wrap_SWBuf_length},
+{"Swordc::SWBuf_set", _wrap_SWBuf_set},
+{"Swordc::SWBuf_setSize", _wrap_SWBuf_setSize},
+{"Swordc::SWBuf_append", _wrap_SWBuf_append},
+{"Swordc::SWBuf_appendFormatted", _wrap_SWBuf_appendFormatted},
+{"Swordc::SWBuf_getRawData", _wrap_SWBuf_getRawData},
+{"Swordc::SWBuf_compare", _wrap_SWBuf_compare},
+{0,0}
+};
+
+#ifdef __cplusplus
+extern "C"
+#endif
+
+XS(SWIG_init) {
+ dXSARGS;
+ int i;
+ static int _init = 0;
+ if (!_init) {
+ for (i = 0; swig_types_initial[i]; i++) {
+ swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
+ }
+ _init = 1;
+ }
+
+ /* Install commands */
+ for (i = 0; swig_commands[i].name; i++) {
+ newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__);
+ }
+
+ /* Install variables */
+ for (i = 0; swig_variables[i].name; i++) {
+ SV *sv;
+ sv = perl_get_sv((char*) swig_variables[i].name, TRUE | 0x2);
+ if (swig_variables[i].type) {
+ SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
+ }else {
+ sv_setiv(sv,(IV) 0);
+ }
+ swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get);
+ }
+
+ /* Install constant */
+ for (i = 0; swig_constants[i].type; i++) {
+ SV *sv;
+ sv = perl_get_sv((char*)swig_constants[i].name, TRUE | 0x2);
+ switch(swig_constants[i].type) {
+ case SWIG_INT:
+ sv_setiv(sv, (IV) swig_constants[i].lvalue);
+ break;
+ case SWIG_FLOAT:
+ sv_setnv(sv, (double) swig_constants[i].dvalue);
+ break;
+ case SWIG_STRING:
+ sv_setpv(sv, (char *) swig_constants[i].pvalue);
+ break;
+ case SWIG_POINTER:
+ SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);
+ break;
+ case SWIG_BINARY:
+ /* obj = SWIG_NewPackedObj(swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype)); */
+ break;
+ default:
+ break;
+ }
+ SvREADONLY_on(sv);
+ }
+
+ SWIG_TypeClientData(SWIGTYPE_p_SWConfig, (void*) "Sword::SWConfig");
+ SWIG_TypeClientData(SWIGTYPE_p_SWMgr, (void*) "Sword::SWMgr");
+ SWIG_TypeClientData(SWIGTYPE_p_SWModule, (void*) "Sword::SWModule");
+ SWIG_TypeClientData(SWIGTYPE_p_SW_POSITION, (void*) "Sword::SW_POSITION");
+ SWIG_TypeClientData(SWIGTYPE_p_SWKey, (void*) "Sword::SWKey");
+ SWIG_TypeClientData(SWIGTYPE_p_VerseKey, (void*) "Sword::VerseKey");
+ SWIG_TypeClientData(SWIGTYPE_p_ListKey, (void*) "Sword::ListKey");
+ SWIG_TypeClientData(SWIGTYPE_p_TreeKey, (void*) "Sword::TreeKey");
+ SWIG_TypeClientData(SWIGTYPE_p_TreeKeyIdx, (void*) "Sword::TreeKeyIdx");
+ SWIG_TypeClientData(SWIGTYPE_p_LocaleMgr, (void*) "Sword::LocaleMgr");
+ SWIG_TypeClientData(SWIGTYPE_p_SWFilterMgr, (void*) "Sword::SWFilterMgr");
+ SWIG_TypeClientData(SWIGTYPE_p_SWText, (void*) "Sword::SWText");
+ SWIG_TypeClientData(SWIGTYPE_p_RawText, (void*) "Sword::RawText");
+ SWIG_TypeClientData(SWIGTYPE_p_zText, (void*) "Sword::zText");
+ SWIG_TypeClientData(SWIGTYPE_p_SWCom, (void*) "Sword::SWCom");
+ SWIG_TypeClientData(SWIGTYPE_p_RawCom, (void*) "Sword::RawCom");
+ SWIG_TypeClientData(SWIGTYPE_p_zCom, (void*) "Sword::zCom");
+ SWIG_TypeClientData(SWIGTYPE_p_SWGenBook, (void*) "Sword::SWGenBook");
+ SWIG_TypeClientData(SWIGTYPE_p_RawGenBook, (void*) "Sword::RawGenBook");
+ SWIG_TypeClientData(SWIGTYPE_p_SWLD, (void*) "Sword::SWLD");
+ SWIG_TypeClientData(SWIGTYPE_p_RawLD, (void*) "Sword::RawLD");
+ SWIG_TypeClientData(SWIGTYPE_p_RawLD4, (void*) "Sword::RawLD4");
+ SWIG_TypeClientData(SWIGTYPE_p_zLD, (void*) "Sword::zLD");
+ SWIG_TypeClientData(SWIGTYPE_p_SWCompress, (void*) "Sword::SWCompress");
+ SWIG_TypeClientData(SWIGTYPE_p_LZSSCompress, (void*) "Sword::LZSSCompress");
+ SWIG_TypeClientData(SWIGTYPE_p_ZipCompress, (void*) "Sword::ZipCompress");
+ SWIG_TypeClientData(SWIGTYPE_p_SWBuf, (void*) "Sword::SWBuf");
+ ST(0) = &PL_sv_yes;
+ XSRETURN(1);
+}
+
diff --git a/bindings/swig/perl/Sword.pm b/bindings/swig/perl/Sword.pm
new file mode 100644
index 0000000..1b76a95
--- /dev/null
+++ b/bindings/swig/perl/Sword.pm
@@ -0,0 +1,1426 @@
+# This file was automatically generated by SWIG
+package Sword;
+require Exporter;
+require DynaLoader;
+@ISA = qw(Exporter DynaLoader);
+package Swordc;
+bootstrap Sword;
+package Sword;
+@EXPORT = qw( );
+
+# ---------- BASE METHODS -------------
+
+package Sword;
+
+sub TIEHASH {
+ my ($classname,$obj) = @_;
+ return bless $obj, $classname;
+}
+
+sub CLEAR { }
+
+sub FIRSTKEY { }
+
+sub NEXTKEY { }
+
+sub this {
+ my $ptr = shift;
+ return tied(%$ptr);
+}
+
+
+# ------- FUNCTION WRAPPERS --------
+
+package Sword;
+
+
+############# Class : Sword::SWConfig ##############
+
+package Sword::SWConfig;
+@ISA = qw( Sword );
+%OWNER = ();
+%BLESSEDMEMBERS = (
+ filename => 'Sword::SWBuf',
+);
+
+%ITERATORS = ();
+*swig_filename_get = *Swordc::SWConfig_filename_get;
+*swig_filename_set = *Swordc::SWConfig_filename_set;
+*swig_Sections_get = *Swordc::SWConfig_Sections_get;
+*swig_Sections_set = *Swordc::SWConfig_Sections_set;
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_SWConfig(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::SWConfig", $self;
+ return bless \%retval, $pkg;
+}
+
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_SWConfig($self);
+ delete $OWNER{$self};
+ }
+}
+
+*Load = *Swordc::SWConfig_Load;
+*Save = *Swordc::SWConfig_Save;
+*set = *Swordc::SWConfig_set;
+*get = *Swordc::SWConfig_get;
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+sub FETCH {
+ my ($self,$field) = @_;
+ my $member_func = "swig_${field}_get";
+ my $val = $self->$member_func();
+ if (exists $BLESSEDMEMBERS{$field}) {
+ return undef if (!defined($val));
+ my %retval;
+ tie %retval,$BLESSEDMEMBERS{$field},$val;
+ return bless \%retval, $BLESSEDMEMBERS{$field};
+ }
+ return $val;
+}
+
+sub STORE {
+ my ($self,$field,$newval) = @_;
+ my $member_func = "swig_${field}_set";
+ if (exists $BLESSEDMEMBERS{$field}) {
+ $self->$member_func(tied(%{$newval}));
+ } else {
+ $self->$member_func($newval);
+ }
+}
+
+
+############# Class : Sword::SWMgr ##############
+
+package Sword::SWMgr;
+@ISA = qw( Sword );
+%OWNER = ();
+%BLESSEDMEMBERS = (
+ config => 'Sword::SWConfig',
+ sysconfig => 'Sword::SWConfig',
+);
+
+%ITERATORS = ();
+*findConfig = *Swordc::SWMgr_findConfig;
+*swig_config_get = *Swordc::SWMgr_config_get;
+*swig_config_set = *Swordc::SWMgr_config_set;
+*swig_sysconfig_get = *Swordc::SWMgr_sysconfig_get;
+*swig_sysconfig_set = *Swordc::SWMgr_sysconfig_set;
+*swig_Modules_get = *Swordc::SWMgr_Modules_get;
+*swig_Modules_set = *Swordc::SWMgr_Modules_set;
+*swig_prefixPath_get = *Swordc::SWMgr_prefixPath_get;
+*swig_prefixPath_set = *Swordc::SWMgr_prefixPath_set;
+*swig_configPath_get = *Swordc::SWMgr_configPath_get;
+*swig_configPath_set = *Swordc::SWMgr_configPath_set;
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_SWMgr(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::SWMgr", $self;
+ return bless \%retval, $pkg;
+}
+
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_SWMgr($self);
+ delete $OWNER{$self};
+ }
+}
+
+*Load = *Swordc::SWMgr_Load;
+*setGlobalOption = *Swordc::SWMgr_setGlobalOption;
+*getGlobalOption = *Swordc::SWMgr_getGlobalOption;
+*getGlobalOptionTip = *Swordc::SWMgr_getGlobalOptionTip;
+*getGlobalOptions = *Swordc::SWMgr_getGlobalOptions;
+*getGlobalOptionValues = *Swordc::SWMgr_getGlobalOptionValues;
+*setCipherKey = *Swordc::SWMgr_setCipherKey;
+sub getModule {
+ my @args = @_;
+ my $result = Swordc::SWMgr_getModule(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+*InstallScan = *Swordc::SWMgr_InstallScan;
+*moduleCount = *Swordc::SWMgr_moduleCount;
+sub getModuleAt {
+ my @args = @_;
+ my $result = Swordc::SWMgr_getModuleAt(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+sub FETCH {
+ my ($self,$field) = @_;
+ my $member_func = "swig_${field}_get";
+ my $val = $self->$member_func();
+ if (exists $BLESSEDMEMBERS{$field}) {
+ return undef if (!defined($val));
+ my %retval;
+ tie %retval,$BLESSEDMEMBERS{$field},$val;
+ return bless \%retval, $BLESSEDMEMBERS{$field};
+ }
+ return $val;
+}
+
+sub STORE {
+ my ($self,$field,$newval) = @_;
+ my $member_func = "swig_${field}_set";
+ if (exists $BLESSEDMEMBERS{$field}) {
+ $self->$member_func(tied(%{$newval}));
+ } else {
+ $self->$member_func($newval);
+ }
+}
+
+
+############# Class : Sword::SWModule ##############
+
+package Sword::SWModule;
+@ISA = qw( Sword );
+%OWNER = ();
+%BLESSEDMEMBERS = (
+);
+
+%ITERATORS = ();
+*swig_terminateSearch_get = *Swordc::SWModule_terminateSearch_get;
+*swig_terminateSearch_set = *Swordc::SWModule_terminateSearch_set;
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_SWModule(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::SWModule", $self;
+ return bless \%retval, $pkg;
+}
+
+*Error = *Swordc::SWModule_Error;
+*isUnicode = *Swordc::SWModule_isUnicode;
+*getConfig = *Swordc::SWModule_getConfig;
+*getConfigEntry = *Swordc::SWModule_getConfigEntry;
+*SetKey = *Swordc::SWModule_SetKey;
+sub Key {
+ my @args = @_;
+ my $result = Swordc::SWModule_Key(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+sub CreateKey {
+ my @args = @_;
+ my $result = Swordc::SWModule_CreateKey(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+*KeyText = *Swordc::SWModule_KeyText;
+*Display = *Swordc::SWModule_Display;
+*nullPercent = *Swordc::SWModule_nullPercent;
+sub Search {
+ my @args = @_;
+ my $result = Swordc::SWModule_Search(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+*createSearchFramework = *Swordc::SWModule_createSearchFramework;
+*hasSearchFramework = *Swordc::SWModule_hasSearchFramework;
+*isSearchOptimallySupported = *Swordc::SWModule_isSearchOptimallySupported;
+*next = *Swordc::SWModule_next;
+*prev = *Swordc::SWModule_prev;
+*inc = *Swordc::SWModule_inc;
+*dec = *Swordc::SWModule_dec;
+*setPosition = *Swordc::SWModule_setPosition;
+*top = *Swordc::SWModule_top;
+*bottom = *Swordc::SWModule_bottom;
+*text = *Swordc::SWModule_text;
+*StripText = *Swordc::SWModule_StripText;
+*getRawEntry = *Swordc::SWModule_getRawEntry;
+*setSkipConsecutiveLinks = *Swordc::SWModule_setSkipConsecutiveLinks;
+*getSkipConsecutiveLinks = *Swordc::SWModule_getSkipConsecutiveLinks;
+*getEntryAttributes = *Swordc::SWModule_getEntryAttributes;
+*processEntryAttributes = *Swordc::SWModule_processEntryAttributes;
+*isProcessEntryAttributes = *Swordc::SWModule_isProcessEntryAttributes;
+*Name = *Swordc::SWModule_Name;
+*Description = *Swordc::SWModule_Description;
+*Type = *Swordc::SWModule_Type;
+*Direction = *Swordc::SWModule_Direction;
+*Encoding = *Swordc::SWModule_Encoding;
+*Markup = *Swordc::SWModule_Markup;
+*Lang = *Swordc::SWModule_Lang;
+*isWritable = *Swordc::SWModule_isWritable;
+*createModule = *Swordc::SWModule_createModule;
+*setEntry = *Swordc::SWModule_setEntry;
+*deleteEntry = *Swordc::SWModule_deleteEntry;
+*write = *Swordc::SWModule_write;
+*writeLink = *Swordc::SWModule_writeLink;
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_SWModule($self);
+ delete $OWNER{$self};
+ }
+}
+
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+sub FETCH {
+ my ($self,$field) = @_;
+ my $member_func = "swig_${field}_get";
+ my $val = $self->$member_func();
+ if (exists $BLESSEDMEMBERS{$field}) {
+ return undef if (!defined($val));
+ my %retval;
+ tie %retval,$BLESSEDMEMBERS{$field},$val;
+ return bless \%retval, $BLESSEDMEMBERS{$field};
+ }
+ return $val;
+}
+
+sub STORE {
+ my ($self,$field,$newval) = @_;
+ my $member_func = "swig_${field}_set";
+ if (exists $BLESSEDMEMBERS{$field}) {
+ $self->$member_func(tied(%{$newval}));
+ } else {
+ $self->$member_func($newval);
+ }
+}
+
+
+############# Class : Sword::SW_POSITION ##############
+
+package Sword::SW_POSITION;
+@ISA = qw( Sword );
+%OWNER = ();
+%ITERATORS = ();
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_SW_POSITION(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::SW_POSITION", $self;
+ return bless \%retval, $pkg;
+}
+
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_SW_POSITION($self);
+ delete $OWNER{$self};
+ }
+}
+
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::SWKey ##############
+
+package Sword::SWKey;
+@ISA = qw( Sword );
+%OWNER = ();
+%ITERATORS = ();
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_SWKey(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::SWKey", $self;
+ return bless \%retval, $pkg;
+}
+
+sub clone {
+ my @args = @_;
+ my $result = Swordc::SWKey_clone(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_SWKey($self);
+ delete $OWNER{$self};
+ }
+}
+
+*Persist = *Swordc::SWKey_Persist;
+*setPersist = *Swordc::SWKey_setPersist;
+*Error = *Swordc::SWKey_Error;
+*setText = *Swordc::SWKey_setText;
+*getText = *Swordc::SWKey_getText;
+*getShortText = *Swordc::SWKey_getShortText;
+*compare = *Swordc::SWKey_compare;
+*equals = *Swordc::SWKey_equals;
+*decrement = *Swordc::SWKey_decrement;
+*increment = *Swordc::SWKey_increment;
+*Traversable = *Swordc::SWKey_Traversable;
+*Index = *Swordc::SWKey_Index;
+*next = *Swordc::SWKey_next;
+*prev = *Swordc::SWKey_prev;
+*setKey = *Swordc::SWKey_setKey;
+sub toVerseKey {
+ my @args = @_;
+ my $result = Swordc::SWKey_toVerseKey(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::VerseKey ##############
+
+package Sword::VerseKey;
+@ISA = qw( Sword Sword::SWKey );
+%OWNER = ();
+%ITERATORS = ();
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_VerseKey(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::VerseKey", $self;
+ return bless \%retval, $pkg;
+}
+
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_VerseKey($self);
+ delete $OWNER{$self};
+ }
+}
+
+sub clone {
+ my @args = @_;
+ my $result = Swordc::VerseKey_clone(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+sub LowerBound {
+ my @args = @_;
+ my $result = Swordc::VerseKey_LowerBound(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+sub UpperBound {
+ my @args = @_;
+ my $result = Swordc::VerseKey_UpperBound(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+*ClearBounds = *Swordc::VerseKey_ClearBounds;
+sub ParseVerseList {
+ my @args = @_;
+ my $result = Swordc::VerseKey_ParseVerseList(@args);
+ return undef if (!defined($result));
+ $Sword::ListKey::OWNER{$result} = 1;
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+*setText = *Swordc::VerseKey_setText;
+*getText = *Swordc::VerseKey_getText;
+*getRangeText = *Swordc::VerseKey_getRangeText;
+*getShortText = *Swordc::VerseKey_getShortText;
+*Traversable = *Swordc::VerseKey_Traversable;
+*decrement = *Swordc::VerseKey_decrement;
+*increment = *Swordc::VerseKey_increment;
+*getBookName = *Swordc::VerseKey_getBookName;
+*getBookAbbrev = *Swordc::VerseKey_getBookAbbrev;
+*Testament = *Swordc::VerseKey_Testament;
+*Book = *Swordc::VerseKey_Book;
+*Chapter = *Swordc::VerseKey_Chapter;
+*Verse = *Swordc::VerseKey_Verse;
+*Normalize = *Swordc::VerseKey_Normalize;
+*AutoNormalize = *Swordc::VerseKey_AutoNormalize;
+*Headings = *Swordc::VerseKey_Headings;
+*getOSISRef = *Swordc::VerseKey_getOSISRef;
+*compare = *Swordc::VerseKey_compare;
+*_compare = *Swordc::VerseKey__compare;
+*setLocale = *Swordc::VerseKey_setLocale;
+*getLocale = *Swordc::VerseKey_getLocale;
+*bookCount = *Swordc::VerseKey_bookCount;
+*bookName = *Swordc::VerseKey_bookName;
+*chapterCount = *Swordc::VerseKey_chapterCount;
+*verseCount = *Swordc::VerseKey_verseCount;
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::ListKey ##############
+
+package Sword::ListKey;
+@ISA = qw( Sword Sword::SWKey );
+%OWNER = ();
+%ITERATORS = ();
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_ListKey(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::ListKey", $self;
+ return bless \%retval, $pkg;
+}
+
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_ListKey($self);
+ delete $OWNER{$self};
+ }
+}
+
+sub clone {
+ my @args = @_;
+ my $result = Swordc::ListKey_clone(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+*ClearList = *Swordc::ListKey_ClearList;
+*Count = *Swordc::ListKey_Count;
+*Remove = *Swordc::ListKey_Remove;
+*SetToElement = *Swordc::ListKey_SetToElement;
+sub GetElement {
+ my @args = @_;
+ my $result = Swordc::ListKey_GetElement(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+*add = *Swordc::ListKey_add;
+*copyFrom = *Swordc::ListKey_copyFrom;
+*setPosition = *Swordc::ListKey_setPosition;
+*decrement = *Swordc::ListKey_decrement;
+*increment = *Swordc::ListKey_increment;
+*Traversable = *Swordc::ListKey_Traversable;
+*Index = *Swordc::ListKey_Index;
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::TreeKey ##############
+
+package Sword::TreeKey;
+@ISA = qw( Sword Sword::SWKey );
+%OWNER = ();
+*getLocalName = *Swordc::TreeKey_getLocalName;
+*setLocalName = *Swordc::TreeKey_setLocalName;
+*getUserData = *Swordc::TreeKey_getUserData;
+*setUserData = *Swordc::TreeKey_setUserData;
+*getFullName = *Swordc::TreeKey_getFullName;
+*root = *Swordc::TreeKey_root;
+*parent = *Swordc::TreeKey_parent;
+*firstChild = *Swordc::TreeKey_firstChild;
+*nextSibling = *Swordc::TreeKey_nextSibling;
+*previousSibling = *Swordc::TreeKey_previousSibling;
+*hasChildren = *Swordc::TreeKey_hasChildren;
+*append = *Swordc::TreeKey_append;
+*appendChild = *Swordc::TreeKey_appendChild;
+*insertBefore = *Swordc::TreeKey_insertBefore;
+*remove = *Swordc::TreeKey_remove;
+*setOffset = *Swordc::TreeKey_setOffset;
+*getOffset = *Swordc::TreeKey_getOffset;
+*setPosition = *Swordc::TreeKey_setPosition;
+*Traversable = *Swordc::TreeKey_Traversable;
+*Index = *Swordc::TreeKey_Index;
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::TreeKeyIdx ##############
+
+package Sword::TreeKeyIdx;
+@ISA = qw( Sword Sword::TreeKey );
+%OWNER = ();
+%ITERATORS = ();
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_TreeKeyIdx($self);
+ delete $OWNER{$self};
+ }
+}
+
+*save = *Swordc::TreeKeyIdx_save;
+*copyFrom = *Swordc::TreeKeyIdx_copyFrom;
+*_compare = *Swordc::TreeKeyIdx__compare;
+*create = *Swordc::TreeKeyIdx_create;
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::LocaleMgr ##############
+
+package Sword::LocaleMgr;
+@ISA = qw( Sword );
+%OWNER = ();
+%ITERATORS = ();
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_LocaleMgr(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::LocaleMgr", $self;
+ return bless \%retval, $pkg;
+}
+
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_LocaleMgr($self);
+ delete $OWNER{$self};
+ }
+}
+
+*getLocale = *Swordc::LocaleMgr_getLocale;
+*getAvailableLocales = *Swordc::LocaleMgr_getAvailableLocales;
+*getDefaultLocaleName = *Swordc::LocaleMgr_getDefaultLocaleName;
+*setDefaultLocaleName = *Swordc::LocaleMgr_setDefaultLocaleName;
+sub getSystemLocaleMgr {
+ my @args = @_;
+ my $result = Swordc::LocaleMgr_getSystemLocaleMgr(@args);
+ return undef if (!defined($result));
+ my %resulthash;
+ tie %resulthash, ref($result), $result;
+ return bless \%resulthash, ref($result);
+}
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::SWFilterMgr ##############
+
+package Sword::SWFilterMgr;
+@ISA = qw( Sword );
+%OWNER = ();
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::SWText ##############
+
+package Sword::SWText;
+@ISA = qw( Sword Sword::SWModule );
+%OWNER = ();
+%ITERATORS = ();
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_SWText(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::SWText", $self;
+ return bless \%retval, $pkg;
+}
+
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_SWText($self);
+ delete $OWNER{$self};
+ }
+}
+
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::RawText ##############
+
+package Sword::RawText;
+@ISA = qw( Sword Sword::SWText );
+%OWNER = ();
+%ITERATORS = ();
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_RawText(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::RawText", $self;
+ return bless \%retval, $pkg;
+}
+
+*createModule = *Swordc::RawText_createModule;
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_RawText($self);
+ delete $OWNER{$self};
+ }
+}
+
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::zText ##############
+
+package Sword::zText;
+@ISA = qw( Sword Sword::SWText );
+%OWNER = ();
+%ITERATORS = ();
+sub new {
+ my $pkg = shift;
+ my @args = @_;
+ my $self = Swordc::new_zText(@args);
+ return undef if (!defined($self));
+ $OWNER{$self} = 1;
+ my %retval;
+ tie %retval, "Sword::zText", $self;
+ return bless \%retval, $pkg;
+}
+
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ Swordc::delete_zText($self);
+ delete $OWNER{$self};
+ }
+}
+
+*createModule = *Swordc::zText_createModule;
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::SWCom ##############
+
+package Sword::SWCom;
+@ISA = qw( Sword Sword::SWModule );
+%OWNER = ();
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+ };
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+ };
+
+
+############# Class : Sword::RawCom ##############
+
+package Sword::RawCom;
+@ISA = qw( Sword Sword::SWCom );
+%OWNER = ();
+%ITERATORS = ();