summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeus Benschop <teusjannette@gmail.com>2018-10-28 11:51:26 +0100
committerTeus Benschop <teusjannette@gmail.com>2018-10-28 11:51:26 +0100
commit1d0ff54794b5edea7cdf1d2d66710a0fa885bcc5 (patch)
tree8ece5f9ef437fbb151f2b22ed0c6e1a714879c7c
parentc7dbdc9161a7c460526b80fe01af49d714856126 (diff)
New upstream version 1.8.1
-rw-r--r--CMakeLists.txt33
-rw-r--r--ChangeLog47
-rw-r--r--Makefile.am23
-rw-r--r--Makefile.in41
-rw-r--r--aclocal.m4137
-rwxr-xr-xarminst.sh2
-rw-r--r--bindings/Android/Makefile14
-rw-r--r--bindings/Android/README25
-rw-r--r--bindings/Android/SWORD/.gitignore9
-rw-r--r--bindings/Android/SWORD/.idea/codeStyleSettings.xml228
-rw-r--r--bindings/Android/SWORD/.idea/compiler.xml22
-rw-r--r--bindings/Android/SWORD/.idea/copyright/profiles_settings.xml3
-rw-r--r--bindings/Android/SWORD/.idea/gradle.xml18
-rw-r--r--bindings/Android/SWORD/.idea/misc.xml52
-rw-r--r--bindings/Android/SWORD/.idea/modules.xml9
-rw-r--r--bindings/Android/SWORD/.idea/runConfigurations.xml12
-rw-r--r--bindings/Android/SWORD/.idea/vcs.xml6
-rw-r--r--bindings/Android/SWORD/app/.gitignore1
-rw-r--r--bindings/Android/SWORD/app/CMakeLists.txt221
-rw-r--r--bindings/Android/SWORD/app/build.gradle41
-rw-r--r--bindings/Android/SWORD/app/proguard-rules.pro25
-rw-r--r--bindings/Android/SWORD/app/src/androidTest/java/org/crosswire/sword/ExampleInstrumentedTest.java26
-rw-r--r--bindings/Android/SWORD/app/src/main/AndroidManifest.xml23
l---------bindings/Android/SWORD/app/src/main/cpp/frontend1
l---------bindings/Android/SWORD/app/src/main/cpp/jni1
l---------bindings/Android/SWORD/app/src/main/cpp/keys1
l---------bindings/Android/SWORD/app/src/main/cpp/mgr1
l---------bindings/Android/SWORD/app/src/main/cpp/modules1
l---------bindings/Android/SWORD/app/src/main/cpp/utilfuns1
-rw-r--r--bindings/Android/SWORD/app/src/main/java/org/crosswire/android/bishop/MainActivity.java121
-rw-r--r--bindings/Android/SWORD/app/src/main/java/org/crosswire/android/bishop/NavigationDrawerFragment.java284
-rw-r--r--bindings/Android/SWORD/app/src/main/java/org/crosswire/android/sword/AndroidMgr.java45
-rw-r--r--bindings/Android/SWORD/app/src/main/res/drawable-hdpi/drawer_shadow.9.pngbin0 -> 161 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/drawable-hdpi/ic_drawer.pngbin0 -> 2829 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/drawable-mdpi/drawer_shadow.9.pngbin0 -> 142 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/drawable-mdpi/ic_drawer.pngbin0 -> 2820 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/drawable-xhdpi/drawer_shadow.9.pngbin0 -> 174 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/drawable-xhdpi/ic_drawer.pngbin0 -> 2836 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.pngbin0 -> 208 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/drawable-xxhdpi/ic_drawer.pngbin0 -> 202 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/layout/activity_main.xml26
-rw-r--r--bindings/Android/SWORD/app/src/main/res/layout/drawer_main.xml9
-rw-r--r--bindings/Android/SWORD/app/src/main/res/layout/fragment_main.xml16
-rw-r--r--bindings/Android/SWORD/app/src/main/res/menu/global.xml7
-rw-r--r--bindings/Android/SWORD/app/src/main/res/menu/main.xml13
-rw-r--r--bindings/Android/SWORD/app/src/main/res/menu/menu_swordtest.xml7
-rw-r--r--bindings/Android/SWORD/app/src/main/res/mipmap-hdpi/ic_launcher.pngbin0 -> 3418 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/mipmap-hdpi/ic_launcher_round.pngbin0 -> 4208 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/mipmap-mdpi/ic_launcher.pngbin0 -> 2206 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/mipmap-mdpi/ic_launcher_round.pngbin0 -> 2555 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/mipmap-xhdpi/ic_launcher.pngbin0 -> 4842 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.pngbin0 -> 6114 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/mipmap-xxhdpi/ic_launcher.pngbin0 -> 7718 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.pngbin0 -> 10056 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.pngbin0 -> 10486 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.pngbin0 -> 14696 bytes
-rw-r--r--bindings/Android/SWORD/app/src/main/res/values-w820dp/dimens.xml6
-rw-r--r--bindings/Android/SWORD/app/src/main/res/values/colors.xml6
-rw-r--r--bindings/Android/SWORD/app/src/main/res/values/dimens.xml10
-rw-r--r--bindings/Android/SWORD/app/src/main/res/values/strings.xml14
-rw-r--r--bindings/Android/SWORD/app/src/main/res/values/styles.xml17
-rw-r--r--bindings/Android/SWORD/app/src/test/java/org/crosswire/sword/ExampleUnitTest.java17
-rw-r--r--bindings/Android/SWORD/build.gradle23
-rw-r--r--bindings/Android/SWORD/gradle.properties17
-rw-r--r--bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.jarbin0 -> 53636 bytes
-rw-r--r--bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.properties6
-rwxr-xr-xbindings/Android/SWORD/gradlew160
-rw-r--r--bindings/Android/SWORD/gradlew.bat90
-rw-r--r--bindings/Android/SWORD/settings.gradle1
-rw-r--r--bindings/corba/omniorbcpp/Makefile2
-rw-r--r--bindings/corba/omniorbcpp/swordorb-impl.cpp6
-rw-r--r--bindings/corba/orbitcpp/webmgr.hpp27
-rw-r--r--bindings/cordova/Makefile10
-rw-r--r--bindings/cordova/README5
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/LICENSE202
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/README.md22
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/RELEASENOTES.md57
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/doc/index.md213
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/package.json28
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/plugin.xml164
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/android/SWORD.java660
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/blackberry10/index.js69
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/firefoxos/DeviceProxy.js39
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/CDVDevice.h30
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/CDVDevice.m90
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD-Bridging-Header.h1
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD.swift805
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/tizen/DeviceProxy.js39
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.cpp64
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.h47
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.js34
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/windows8/DeviceProxy.js50
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/src/wp/Device.cs135
-rw-r--r--bindings/cordova/org.crosswire.sword.cordova.SWORD/www/SWORD.js414
-rw-r--r--bindings/csharp/NativeMethods.cs36
-rw-r--r--bindings/csharp/tests/ManagerTests.cs15
-rw-r--r--bindings/flatapi.cpp408
-rw-r--r--bindings/java-jni/Makefile5
-rw-r--r--bindings/java-jni/README51
-rw-r--r--bindings/java-jni/jni/Android.mk25
-rw-r--r--bindings/java-jni/jni/org_crosswire_android_sword_InstallMgr.h85
-rw-r--r--bindings/java-jni/jni/org_crosswire_android_sword_SWMgr.h141
-rw-r--r--bindings/java-jni/jni/org_crosswire_android_sword_SWMgr_ModInfo.h13
-rw-r--r--bindings/java-jni/jni/org_crosswire_android_sword_SWMgr_SearchHit.h13
-rw-r--r--bindings/java-jni/jni/org_crosswire_android_sword_SWModule.h191
-rw-r--r--bindings/java-jni/jni/org_crosswire_android_sword_SWModule_SearchHit.h13
-rw-r--r--bindings/java-jni/jni/org_crosswire_android_sword_SWModule_SearchProgressReporter.h13
-rw-r--r--bindings/java-jni/jni/swordstub.cpp858
-rw-r--r--bindings/java-jni/jni/webmgr.hpp120
-rw-r--r--bindings/java-jni/src/org/crosswire/android/sword/InstallMgr.java10
-rw-r--r--bindings/java-jni/src/org/crosswire/android/sword/SWMgr.java33
-rw-r--r--bindings/java-jni/src/org/crosswire/android/sword/SWModule.java14
-rw-r--r--bindings/objc/LongRunningTests/Info.plist24
-rw-r--r--bindings/objc/Makefile21
-rw-r--r--bindings/objc/ObjCSword.h3
-rw-r--r--bindings/objc/ObjCSword.xcodeproj/project.pbxproj6193
-rw-r--r--bindings/objc/ObjCSword_preLion.xcodeproj/project.pbxproj1060
-rw-r--r--bindings/objc/README27
-rw-r--r--bindings/objc/SWORDTests/Info.plist22
-rw-r--r--bindings/objc/SWORDTests/SWORDTests.m38
-rwxr-xr-xbindings/objc/TestResources/TestModules/populate.sh2
-rw-r--r--bindings/objc/build_clucene/Makefile25
-rwxr-xr-xbindings/objc/build_clucene/build_mac_clucene.sh158
-rwxr-xr-xbindings/objc/build_sword/build_mac_sword.sh225
-rwxr-xr-xbindings/objc/build_sword/build_ub_mac_swordutils.sh59
-rw-r--r--bindings/objc/build_sword/readme.txt9
-rw-r--r--bindings/objc/dependencies/Makefile39
-rw-r--r--bindings/objc/dependencies/readme.txt4
-rwxr-xr-xbindings/objc/dependencies/retrieve.sh19
-rwxr-xr-xbindings/objc/dependencies/retrieve_iOS.sh6
-rw-r--r--bindings/objc/src/DefaultFilterProvider.h2
-rw-r--r--bindings/objc/src/DefaultFilterProvider.mm2
-rw-r--r--bindings/objc/src/FilterProviderFactory.mm6
-rw-r--r--bindings/objc/src/Notifications.h6
-rw-r--r--bindings/objc/src/SwordBible.h9
-rw-r--r--bindings/objc/src/SwordBible.mm167
-rw-r--r--bindings/objc/src/SwordBibleBook.h15
-rw-r--r--bindings/objc/src/SwordBibleBook.mm28
-rw-r--r--bindings/objc/src/SwordBibleChapter.h4
-rw-r--r--bindings/objc/src/SwordBibleChapter.m6
-rw-r--r--bindings/objc/src/SwordBibleTextEntry.h2
-rw-r--r--bindings/objc/src/SwordBibleTextEntry.m11
-rw-r--r--bindings/objc/src/SwordBook.h2
-rw-r--r--bindings/objc/src/SwordBook.mm35
-rw-r--r--bindings/objc/src/SwordCommentary.h2
-rw-r--r--bindings/objc/src/SwordCommentary.mm6
-rw-r--r--bindings/objc/src/SwordDictionary.mm37
-rw-r--r--bindings/objc/src/SwordFilter.mm23
-rw-r--r--bindings/objc/src/SwordInstallSource.h11
-rw-r--r--bindings/objc/src/SwordInstallSource.mm115
-rwxr-xr-xbindings/objc/src/SwordInstallSourceManager.h39
-rwxr-xr-xbindings/objc/src/SwordInstallSourceManager.mm336
-rw-r--r--bindings/objc/src/SwordKey.mm30
-rw-r--r--bindings/objc/src/SwordListKey.mm33
-rw-r--r--bindings/objc/src/SwordLocaleManager.h5
-rw-r--r--bindings/objc/src/SwordLocaleManager.mm14
-rw-r--r--bindings/objc/src/SwordManager.h29
-rw-r--r--bindings/objc/src/SwordManager.mm343
-rw-r--r--bindings/objc/src/SwordModule+Index.mm5
-rw-r--r--bindings/objc/src/SwordModule.h74
-rw-r--r--bindings/objc/src/SwordModule.mm299
-rw-r--r--bindings/objc/src/SwordModuleTextEntry.h4
-rw-r--r--bindings/objc/src/SwordModuleTextEntry.m11
-rw-r--r--bindings/objc/src/SwordModuleTreeEntry.h4
-rw-r--r--bindings/objc/src/SwordModuleTreeEntry.m9
-rw-r--r--bindings/objc/src/SwordUtil.h19
-rw-r--r--bindings/objc/src/SwordUtil.m75
-rw-r--r--bindings/objc/src/SwordVerseKey.h4
-rw-r--r--bindings/objc/src/SwordVerseKey.mm44
-rw-r--r--bindings/objc/src/SwordVerseManager.h1
-rw-r--r--bindings/objc/src/SwordVerseManager.mm16
-rw-r--r--bindings/objc/src/VerseEnumerator.mm13
-rw-r--r--bindings/objc/src/services/Configuration.m9
-rw-r--r--bindings/objc/src/services/OSXConfiguration.m32
-rw-r--r--bindings/objc/sword/Info.plist24
-rw-r--r--bindings/objc/sword/SWORD.h12
-rw-r--r--bindings/objc/sword/sword.m12
-rw-r--r--bindings/objc/test/SwordBibleTest.swift28
-rw-r--r--bindings/objc/test/SwordInstallSourceManagerTest.m253
-rw-r--r--bindings/objc/test/SwordListKeyTest.h4
-rw-r--r--bindings/objc/test/SwordListKeyTest.m24
-rw-r--r--bindings/objc/test/SwordLocaleManagerTest.swift30
-rw-r--r--bindings/objc/test/SwordManagerTest.h16
-rw-r--r--bindings/objc/test/SwordManagerTest.m84
-rw-r--r--bindings/objc/test/SwordManagerTest.swift67
-rw-r--r--bindings/objc/test/SwordModuleLongRunTest.h4
-rw-r--r--bindings/objc/test/SwordModuleLongRunTest.mm29
-rw-r--r--bindings/objc/test/SwordModuleTest.h11
-rw-r--r--bindings/objc/test/SwordModuleTest.m200
-rw-r--r--bindings/objc/test/TestGlobals.h12
-rw-r--r--bindings/objc/test/Tests-Bridging-Header.h6
-rw-r--r--bindings/objc/test/Tests-Info.plist2
-rw-r--r--bindings/swig/deprecations.i21
-rw-r--r--bindings/swig/package/Makefile.in13
-rw-r--r--bindings/swig/package/aclocal.m4137
-rwxr-xr-xbindings/swig/package/compile347
-rwxr-xr-xbindings/swig/package/config.guess192
-rwxr-xr-xbindings/swig/package/config.sub40
-rwxr-xr-xbindings/swig/package/configure116
-rw-r--r--bindings/swig/package/configure.ac2
-rw-r--r--bindings/swig/package/deprecations.i21
-rw-r--r--bindings/swig/package/m4/libtool.m412
-rwxr-xr-xbindings/swig/package/missing4
-rwxr-xr-xbindings/swig/package/rendercallback.h6
-rw-r--r--bindings/swig/package/swconfig.i8
-rw-r--r--bindings/swig/package/sword.i4
-rw-r--r--bindings/swig/python/CMakeLists.txt8
-rwxr-xr-xbindings/swig/rendercallback.h6
-rw-r--r--bindings/swig/swconfig.i8
-rw-r--r--bindings/swig/sword.i4
-rw-r--r--bindings/swig/vstudio/SwigSword.csproj184
-rw-r--r--bindings/swig/vstudio/libsword-csharpbindings.sln72
-rw-r--r--bindings/swig/vstudio/libsword_csharpsword.vcproj1932
-rwxr-xr-xbindings/usrinst.sh2
-rw-r--r--cmake/CppcheckTargets.cmake231
-rw-r--r--cmake/FindBZIP2.cmake28
-rw-r--r--cmake/FindCLucene.cmake1
-rw-r--r--cmake/FindXZ.cmake28
-rw-r--r--cmake/Findcppcheck.cmake167
-rw-r--r--cmake/Findcppcheck.cpp16
-rw-r--r--cmake/muxsources.cmake30
-rw-r--r--cmake/options.cmake6
-rw-r--r--cmake/sources.cmake54
-rwxr-xr-xcompile347
-rwxr-xr-xconfig.guess192
-rwxr-xr-xconfig.sub40
-rwxr-xr-xconfigure649
-rw-r--r--configure.ac177
-rw-r--r--doc/Doxyfile4
-rwxr-xr-xdoc/QUICKSTART.ubuntu2
-rw-r--r--examples/Makefile.in4
-rw-r--r--examples/classes/Makefile2
-rw-r--r--examples/classes/flatapiinstallmgr.cpp48
-rw-r--r--examples/classes/flatapilookup.c2
-rw-r--r--examples/classes/flatapiparsekey.c2
-rw-r--r--examples/classes/flatapisearch.c2
-rw-r--r--examples/classes/simplechapter.cpp2
-rw-r--r--examples/classes/versenorm.cpp72
-rw-r--r--examples/cmdline/CMakeLists.txt1
-rw-r--r--examples/cmdline/Makefile.am3
-rw-r--r--examples/cmdline/Makefile.in22
-rw-r--r--examples/cmdline/bcppmake/cmdline.bpg162
-rw-r--r--examples/cmdline/bcppmake/listoptions.bpf20
-rw-r--r--examples/cmdline/bcppmake/listoptions.bpr192
-rw-r--r--examples/cmdline/bcppmake/lookup.bpf20
-rw-r--r--examples/cmdline/bcppmake/lookup.bpr192
-rw-r--r--examples/cmdline/bcppmake/outplain.bpf20
-rw-r--r--examples/cmdline/bcppmake/outplain.bpr192
-rw-r--r--examples/cmdline/bcppmake/outrender.bpf20
-rw-r--r--examples/cmdline/bcppmake/outrender.bpr192
-rw-r--r--examples/cmdline/bcppmake/search.bpf22
-rw-r--r--examples/cmdline/bcppmake/search.bpr192
-rw-r--r--examples/cmdline/bcppmake/threaded_search.bpf20
-rw-r--r--examples/cmdline/bcppmake/threaded_search.bpr192
-rw-r--r--examples/cmdline/bcppmake/verserangeparse.bpf20
-rw-r--r--examples/cmdline/bcppmake/verserangeparse.bpr192
-rw-r--r--examples/cmdline/lookup.cpp16
-rw-r--r--examples/cmdline/search.cpp51
-rw-r--r--examples/cmdline/stripaccents.cpp80
-rw-r--r--examples/tasks/CMakeLists.txt2
-rw-r--r--examples/tasks/Makefile.am5
-rw-r--r--examples/tasks/Makefile.in41
-rw-r--r--examples/tasks/listbiblebooknames.cpp57
-rw-r--r--examples/tasks/simpleverselookup.cpp (renamed from examples/simple.cpp)19
-rw-r--r--include/Makefile.am16
-rw-r--r--include/bz2comprs.h2
-rw-r--r--include/canon_calvin.h395
-rw-r--r--include/canon_darbyfr.h311
-rw-r--r--include/canon_nrsv.h8
-rw-r--r--include/canon_segond.h390
-rw-r--r--include/canon_synodal.h195
-rw-r--r--include/canon_vulg.h284
-rw-r--r--include/config.h.in9
-rw-r--r--include/defs.h4
-rw-r--r--include/encfiltmgr.h19
-rw-r--r--include/filemgr.h121
-rw-r--r--include/flatapi.h90
-rw-r--r--include/gbflatex.h52
-rw-r--r--include/gbfredletterwords.h4
-rw-r--r--include/installmgr.h9
-rw-r--r--include/listkey.h7
-rw-r--r--include/osishtmlhref.h4
-rw-r--r--include/osislatex.h77
-rw-r--r--include/osisplain.h3
-rw-r--r--include/osisreferencelinks.h2
-rw-r--r--include/osiswebif.h2
-rw-r--r--include/osisxhtml.h4
-rw-r--r--include/rawstr.h2
-rw-r--r--include/rawstr4.h2
-rw-r--r--include/rawverse.h2
-rw-r--r--include/rawverse4.h2
-rw-r--r--include/remotetrans.h13
-rw-r--r--include/rtranspgdrive.h45
-rw-r--r--include/scsuutf8.h28
-rw-r--r--include/swbasicfilter.h6
-rw-r--r--include/swbuf.h65
-rw-r--r--include/swcomprs.h9
-rw-r--r--include/swconfig.h125
-rw-r--r--include/swkey.h3
-rw-r--r--include/swld.h2
-rw-r--r--include/swmgr.h326
-rw-r--r--include/swmodule.h57
-rw-r--r--include/swobject.h2
-rw-r--r--include/swoptfilter.h4
-rw-r--r--include/swversion.h8
-rw-r--r--include/sysdata.h5
-rw-r--r--include/teihtmlhref.h4
-rw-r--r--include/teilatex.h57
-rw-r--r--include/teirtf.h4
-rw-r--r--include/teixhtml.h5
-rw-r--r--include/thmlhtml.h6
-rw-r--r--include/thmlhtmlhref.h6
-rw-r--r--include/thmllatex.h60
-rw-r--r--include/thmlrtf.h6
-rw-r--r--include/thmlxhtml.h6
-rw-r--r--include/utf8nfc.h2
-rw-r--r--include/utf8scsu.h49
-rw-r--r--include/utilstr.h189
-rw-r--r--include/versekey.h13
-rw-r--r--include/versificationmgr.h7
-rw-r--r--include/xzcomprs.h6
-rw-r--r--include/zcom4.h78
-rw-r--r--include/ztext.h2
-rw-r--r--include/ztext4.h90
-rw-r--r--include/zverse.h4
-rw-r--r--include/zverse4.h77
-rw-r--r--lib/Makefile.in423
-rw-r--r--lib/bcppmake/libsword.bdsproj1378
-rw-r--r--lib/bcppmake/libsword.bpf10
-rw-r--r--lib/bcppmake/libsword.bpr145
-rw-r--r--lib/vcppmake/libsword.sln40
-rw-r--r--lib/vcppmake/libsword.vcxproj977
-rw-r--r--locales.d/be-utf8.conf185
-rw-r--r--locales.d/fr-utf8.conf882
-rw-r--r--locales.d/fr.conf884
-rw-r--r--locales.d/fr_abbrev-utf8.conf552
-rw-r--r--locales.d/fr_abbrev.conf566
-rw-r--r--locales.d/kpg-utf8.conf158
-rw-r--r--locales.d/lt-utf8.conf71
-rw-r--r--locales.d/lv-utf8.conf315
-rw-r--r--locales.d/pt-utf8.conf87
-rw-r--r--locales.d/ro-utf8.conf205
-rw-r--r--locales.d/tr-utf8.conf163
-rw-r--r--locales.d/zh_CN-utf8.conf76
-rw-r--r--m4/libtool.m412
-rwxr-xr-xmissing4
-rwxr-xr-xscripts/eligible2
-rwxr-xr-xscripts/merge9
-rwxr-xr-xscripts/mkswordtar5
-rw-r--r--src/keys/treekeyidx.cpp75
-rw-r--r--src/keys/versekey.cpp111
-rw-r--r--src/keys/versetreekey.cpp4
-rw-r--r--src/mgr/Makefile.am3
-rw-r--r--src/mgr/curlftpt.cpp8
-rw-r--r--src/mgr/curlhttpt.cpp14
-rw-r--r--src/mgr/encfiltmgr.cpp21
-rw-r--r--src/mgr/filemgr.cpp55
-rw-r--r--src/mgr/ftplibftpt.cpp10
-rw-r--r--src/mgr/installmgr.cpp60
-rw-r--r--src/mgr/localemgr.cpp6
-rw-r--r--src/mgr/markupfiltmgr.cpp16
-rw-r--r--src/mgr/remotetrans.cpp77
-rw-r--r--src/mgr/rtranspgdrive.cpp174
-rw-r--r--src/mgr/stringmgr.cpp4
-rw-r--r--src/mgr/swconfig.cpp77
-rw-r--r--src/mgr/swlocale.cpp24
-rw-r--r--src/mgr/swmgr.cpp380
-rw-r--r--src/mgr/versificationmgr.cpp191
-rw-r--r--src/modules/comments/Makefile.am1
-rw-r--r--src/modules/comments/rawcom4/Makefile10
-rw-r--r--src/modules/comments/rawcom4/rawcom4.cpp4
-rw-r--r--src/modules/comments/zcom/zcom.cpp2
-rw-r--r--src/modules/comments/zcom4/Makefile5
-rw-r--r--src/modules/comments/zcom4/Makefile.am2
-rw-r--r--src/modules/comments/zcom4/zcom4.cpp220
-rw-r--r--src/modules/common/Makefile.am18
-rw-r--r--src/modules/common/bz2comprs.cpp57
-rw-r--r--src/modules/common/entriesblk.cpp6
-rw-r--r--src/modules/common/rawstr.cpp32
-rw-r--r--src/modules/common/rawstr4.cpp36
-rw-r--r--src/modules/common/rawverse.cpp4
-rw-r--r--src/modules/common/rawverse4.cpp6
-rw-r--r--src/modules/common/swcomprs.cpp3
-rw-r--r--src/modules/common/xzcomprs.cpp130
-rw-r--r--src/modules/common/zipcomprs.cpp34
-rw-r--r--src/modules/common/zstr.cpp42
-rw-r--r--src/modules/common/zverse.cpp19
-rw-r--r--src/modules/common/zverse4.cpp516
-rw-r--r--src/modules/filters/Makefile.am5
-rw-r--r--src/modules/filters/gbfheadings.cpp8
-rw-r--r--src/modules/filters/gbfhtmlhref.cpp12
-rw-r--r--src/modules/filters/gbflatex.cpp198
-rw-r--r--src/modules/filters/gbfmorph.cpp8
-rw-r--r--src/modules/filters/gbfplain.cpp6
-rw-r--r--src/modules/filters/gbfredletterwords.cpp7
-rw-r--r--src/modules/filters/gbfrtf.cpp6
-rw-r--r--src/modules/filters/gbfstrongs.cpp16
-rw-r--r--src/modules/filters/gbfthml.cpp13
-rw-r--r--src/modules/filters/gbfwordjs.cpp18
-rw-r--r--src/modules/filters/gbfxhtml.cpp12
-rw-r--r--src/modules/filters/greeklexattribs.cpp4
-rw-r--r--src/modules/filters/osisheadings.cpp11
-rw-r--r--src/modules/filters/osishtmlhref.cpp31
-rw-r--r--src/modules/filters/osislatex.cpp766
-rw-r--r--src/modules/filters/osislemma.cpp12
-rw-r--r--src/modules/filters/osismorph.cpp7
-rw-r--r--src/modules/filters/osismorphsegmentation.cpp2
-rw-r--r--src/modules/filters/osisosis.cpp53
-rw-r--r--src/modules/filters/osisplain.cpp56
-rw-r--r--src/modules/filters/osisreferencelinks.cpp2
-rw-r--r--src/modules/filters/osisrtf.cpp21
-rw-r--r--src/modules/filters/osisscripref.cpp2
-rw-r--r--src/modules/filters/osisstrongs.cpp55
-rw-r--r--src/modules/filters/osiswebif.cpp14
-rw-r--r--src/modules/filters/osiswordjs.cpp11
-rw-r--r--src/modules/filters/osisxhtml.cpp238
-rw-r--r--src/modules/filters/rtfhtml.cpp4
-rw-r--r--src/modules/filters/scsuutf8.cpp381
-rw-r--r--src/modules/filters/swbasicfilter.cpp20
-rw-r--r--src/modules/filters/teihtmlhref.cpp56
-rw-r--r--src/modules/filters/teilatex.cpp326
-rw-r--r--src/modules/filters/teirtf.cpp30
-rw-r--r--src/modules/filters/teixhtml.cpp149
-rw-r--r--src/modules/filters/thmlgbf.cpp6
-rw-r--r--src/modules/filters/thmlheadings.cpp2
-rw-r--r--src/modules/filters/thmlhtml.cpp10
-rw-r--r--src/modules/filters/thmlhtmlhref.cpp39
-rw-r--r--src/modules/filters/thmllatex.cpp396
-rw-r--r--src/modules/filters/thmlplain.cpp10
-rw-r--r--src/modules/filters/thmlrtf.cpp37
-rw-r--r--src/modules/filters/thmlscripref.cpp2
-rw-r--r--src/modules/filters/thmlstrongs.cpp16
-rw-r--r--src/modules/filters/thmlwordjs.cpp18
-rw-r--r--src/modules/filters/thmlxhtml.cpp41
-rw-r--r--src/modules/filters/unicodertf.cpp2
-rw-r--r--src/modules/filters/utf16utf8.cpp2
-rw-r--r--src/modules/filters/utf8arabicpoints.cpp4
-rw-r--r--src/modules/filters/utf8greekaccents.cpp521
-rw-r--r--src/modules/filters/utf8html.cpp2
-rw-r--r--src/modules/filters/utf8latin1.cpp2
-rw-r--r--src/modules/filters/utf8nfc.cpp2
-rw-r--r--src/modules/filters/utf8nfkd.cpp2
-rw-r--r--src/modules/filters/utf8scsu.cpp61
-rw-r--r--src/modules/filters/utf8utf16.cpp2
-rw-r--r--src/modules/genbook/rawgenbook/rawgenbook.cpp6
-rw-r--r--src/modules/lexdict/rawld/rawld.cpp31
-rw-r--r--src/modules/lexdict/rawld4/rawld4.cpp35
-rw-r--r--src/modules/lexdict/swld.cpp6
-rw-r--r--src/modules/lexdict/zld/zld.cpp33
-rw-r--r--src/modules/swmodule.cpp218
-rw-r--r--src/modules/texts/Makefile.am1
-rw-r--r--src/modules/texts/rawtext4/Makefile10
-rw-r--r--src/modules/texts/rawtext4/rawtext4.cpp5
-rw-r--r--src/modules/texts/ztext4/Makefile5
-rw-r--r--src/modules/texts/ztext4/Makefile.am2
-rw-r--r--src/modules/texts/ztext4/ztext4.cpp223
-rw-r--r--src/utilfuns/ftplib.c20
-rw-r--r--src/utilfuns/roman.cpp4
-rw-r--r--src/utilfuns/swbuf.cpp63
-rw-r--r--src/utilfuns/url.cpp8
-rw-r--r--src/utilfuns/utilstr.cpp193
-rw-r--r--src/utilfuns/utilxml.cpp24
-rw-r--r--src/utilfuns/zlib/gzlib.c8
-rw-r--r--src/utilfuns/zlib/gzread.c9
-rw-r--r--src/utilfuns/zlib/gzwrite.c11
-rw-r--r--src/utilfuns/zlib/untgz.c2
-rw-r--r--sword.pc.in4
-rwxr-xr-xtest-driver20
-rw-r--r--tests/CMakeLists.txt2
-rw-r--r--tests/Makefile.am9
-rw-r--r--tests/Makefile.in65
-rw-r--r--tests/configtest.cpp4
-rw-r--r--tests/cppunit/Makefile.in4
-rw-r--r--tests/ldtest.cpp32
-rw-r--r--tests/localetest.cpp2
-rw-r--r--tests/osistest.cpp5
-rw-r--r--tests/testsuite/CMakeLists.txt8
-rw-r--r--tests/testsuite/Makefile.am16
-rw-r--r--tests/testsuite/Makefile.in480
-rw-r--r--tests/testsuite/README24
-rw-r--r--tests/testsuite/UTF-8-test.txt300
-rw-r--r--tests/testsuite/gbsReference.imp42
-rw-r--r--tests/testsuite/gbs_basic.good66
-rwxr-xr-xtests/testsuite/gbs_basic.sh30
-rw-r--r--tests/testsuite/greekaccents.good7
-rwxr-xr-xtests/testsuite/greekaccents.sh8
-rw-r--r--tests/testsuite/greekaccents.txt7
-rw-r--r--tests/testsuite/ldr12n.good24
-rw-r--r--tests/testsuite/ldr12n.imp12
-rwxr-xr-xtests/testsuite/ldr12n.sh31
-rwxr-xr-xtests/testsuite/listtest.sh2
-rw-r--r--tests/testsuite/osis.good102
-rwxr-xr-xtests/testsuite/osis.sh26
-rw-r--r--tests/testsuite/osisReference.xml15
-rw-r--r--tests/testsuite/osis_basic.good186
-rwxr-xr-xtests/testsuite/osis_basic.sh35
-rw-r--r--tests/testsuite/osis_mod2zmod.good186
-rwxr-xr-xtests/testsuite/osis_mod2zmod.sh60
-rw-r--r--tests/testsuite/osis_osis2modcipher.good186
-rwxr-xr-xtests/testsuite/osis_osis2modcipher.sh37
-rwxr-xr-xtests/testsuite/runall.sh2
-rwxr-xr-xtests/testsuite/runtest.sh2
-rw-r--r--tests/testsuite/utf8basic.good300
-rwxr-xr-xtests/testsuite/utf8basic.sh10
-rw-r--r--tests/testsuite/versekeytest.good10
-rwxr-xr-xtests/testsuite/versekeytest.sh2
-rwxr-xr-xtests/testsuite/versemgrtest.sh2
-rwxr-xr-xtests/testsuite/verseparsing-utf8.sh2
-rwxr-xr-xtests/testsuite/verseparsing.sh2
-rw-r--r--tests/testsuite/vs2osisref.good2
-rwxr-xr-xtests/testsuite/vs2osisref.sh22
-rwxr-xr-xtests/testsuite/xmltag.sh2
-rw-r--r--tests/utf8norm.cpp54
-rw-r--r--tests/versekeytest.cpp16
-rwxr-xr-xusrinst.sh22
-rw-r--r--utilities/CMakeLists.txt38
-rw-r--r--utilities/Makefile.am11
-rw-r--r--utilities/Makefile.in70
-rw-r--r--utilities/addcomment.cpp2
-rw-r--r--utilities/addgb.cpp2
-rw-r--r--utilities/addld.cpp6
-rw-r--r--utilities/addvs.cpp2
-rw-r--r--utilities/bcpp6make/cipherraw.bpf4
-rw-r--r--utilities/bcpp6make/cipherraw.bpr288
-rw-r--r--utilities/bcpp6make/diatheke.bpf10
-rw-r--r--utilities/bcpp6make/diatheke.bpr316
-rw-r--r--utilities/bcpp6make/imp2gbs.bpf4
-rw-r--r--utilities/bcpp6make/imp2gbs.bpr288
-rw-r--r--utilities/bcpp6make/imp2ld.bpf4
-rw-r--r--utilities/bcpp6make/imp2ld.bpr288
-rw-r--r--utilities/bcpp6make/imp2vs.bpf4
-rw-r--r--utilities/bcpp6make/imp2vs.bpr288
-rw-r--r--utilities/bcpp6make/mkfastmod.bpf4
-rw-r--r--utilities/bcpp6make/mkfastmod.bpr288
-rw-r--r--utilities/bcpp6make/mod2imp.bpf4
-rw-r--r--utilities/bcpp6make/mod2imp.bpr288
-rw-r--r--utilities/bcpp6make/mod2osis.bpf4
-rw-r--r--utilities/bcpp6make/mod2osis.bpr288
-rw-r--r--utilities/bcpp6make/mod2vpl.bpf4
-rw-r--r--utilities/bcpp6make/mod2vpl.bpr288
-rw-r--r--utilities/bcpp6make/mod2zmod.bpf10
-rw-r--r--utilities/bcpp6make/mod2zmod.bpr288
-rw-r--r--utilities/bcpp6make/osis2mod.bpf10
-rw-r--r--utilities/bcpp6make/osis2mod.bpr290
-rw-r--r--utilities/bcpp6make/step2vpl.bpf10
-rw-r--r--utilities/bcpp6make/step2vpl.bpr288
-rw-r--r--utilities/bcpp6make/stepdump.bpf10
-rw-r--r--utilities/bcpp6make/stepdump.bpr288
-rw-r--r--utilities/bcpp6make/utils.bpg178
-rw-r--r--utilities/bcpp6make/vpl2mod.bpf10
-rw-r--r--utilities/bcpp6make/vpl2mod.bpr288
-rw-r--r--utilities/bcpp6make/vs2osisref.bpf10
-rw-r--r--utilities/bcpp6make/vs2osisref.bpr288
-rw-r--r--utilities/bcpp6make/xml2gbs.bpf10
-rw-r--r--utilities/bcpp6make/xml2gbs.bpr288
-rw-r--r--utilities/bcppmake/addgb.bpf20
-rw-r--r--utilities/bcppmake/addgb.bpr250
-rw-r--r--utilities/bcppmake/addld.bpf20
-rw-r--r--utilities/bcppmake/addld.bpr250
-rw-r--r--utilities/bcppmake/addvs.bpf20
-rw-r--r--utilities/bcppmake/addvs.bpr250
-rw-r--r--utilities/bcppmake/cipherraw.bdsproj644
-rw-r--r--utilities/bcppmake/diatheke.bdsproj612
-rw-r--r--utilities/bcppmake/imp2gbs.bdsproj646
-rw-r--r--utilities/bcppmake/imp2ld.bdsproj628
-rw-r--r--utilities/bcppmake/imp2vs.bdsproj628
-rw-r--r--utilities/bcppmake/installmgr.bdsproj654
-rw-r--r--utilities/bcppmake/installmgr.bpf22
-rw-r--r--utilities/bcppmake/installmgr.bpr246
-rw-r--r--utilities/bcppmake/mkfastmod.bdsproj640
-rw-r--r--utilities/bcppmake/mod2imp.bdsproj622
-rw-r--r--utilities/bcppmake/mod2osis.bdsproj592
-rw-r--r--utilities/bcppmake/mod2vpl.bdsproj622
-rw-r--r--utilities/bcppmake/mod2zmod.bdsproj636
-rw-r--r--utilities/bcppmake/osis2mod.bdsproj612
-rw-r--r--utilities/bcppmake/step2vpl.bdsproj622
-rw-r--r--utilities/bcppmake/stepdump.bdsproj622
-rw-r--r--utilities/bcppmake/tei2mod.bpf20
-rw-r--r--utilities/bcppmake/tei2mod.bpr244
-rw-r--r--utilities/bcppmake/treeidxutil.bpf20
-rw-r--r--utilities/bcppmake/treeidxutil.bpr242
-rw-r--r--utilities/bcppmake/utilities.bdsgroup80
-rw-r--r--utilities/bcppmake/vpl2mod.bdsproj622
-rw-r--r--utilities/bcppmake/vs2osisref.bdsproj592
-rw-r--r--utilities/bcppmake/vs2osisreftxt.bpf20
-rw-r--r--utilities/bcppmake/vs2osisreftxt.bpr242
-rw-r--r--utilities/bcppmake/xml2gbs.bdsproj638
-rw-r--r--utilities/cipherraw.cpp131
-rw-r--r--utilities/diatheke/CMakeLists.txt24
-rw-r--r--utilities/diatheke/Makefile.in4
-rw-r--r--utilities/diatheke/README9
-rw-r--r--utilities/diatheke/corediatheke.cpp533
-rw-r--r--utilities/diatheke/corediatheke.h4
-rw-r--r--utilities/diatheke/diafiltmgr.cpp201
-rw-r--r--utilities/diatheke/diafiltmgr.h4
-rw-r--r--utilities/diatheke/diatheke.cpp155
-rw-r--r--utilities/diatheke/diatheke.sln40
-rw-r--r--utilities/diatheke/diatheke.vcxproj396
-rw-r--r--utilities/diatheke/diathekemgr.cpp18
-rw-r--r--utilities/diatheke/diathekemgr.h8
-rw-r--r--utilities/diatheke/tcl/README106
-rw-r--r--utilities/diatheke/thmlcgi.cpp7
-rw-r--r--utilities/emptyvss.cpp12
-rw-r--r--utilities/gbfidx.cpp2
-rw-r--r--utilities/genbookutil.cpp2
-rw-r--r--utilities/imp2gbs.cpp12
-rw-r--r--utilities/imp2ld.cpp74
-rw-r--r--utilities/imp2vs.cpp117
-rw-r--r--utilities/installmgr.cpp96
-rw-r--r--utilities/mkfastmod.cpp2
-rw-r--r--utilities/mod2imp.cpp9
-rw-r--r--utilities/mod2osis.cpp4
-rw-r--r--utilities/mod2vpl.cpp2
-rw-r--r--utilities/mod2zmod.cpp40
-rw-r--r--utilities/modwrite.cpp2
-rw-r--r--utilities/osis2mod.cpp501
-rw-r--r--utilities/step2vpl.cpp2
-rw-r--r--utilities/stepdump.cpp2
-rw-r--r--utilities/stripaccents.cpp79
-rw-r--r--utilities/tei2mod.cpp60
-rw-r--r--utilities/treeidxutil.cpp2
-rw-r--r--utilities/vcppmake/addgb.vcxproj232
-rw-r--r--utilities/vcppmake/addld.vcxproj232
-rw-r--r--utilities/vcppmake/addvs.vcxproj232
-rw-r--r--utilities/vcppmake/cipherraw.vcxproj232
-rw-r--r--utilities/vcppmake/emptyvss.vcxproj232
-rw-r--r--utilities/vcppmake/genbookutil.vcxproj232
-rw-r--r--utilities/vcppmake/imp2gbs.vcxproj232
-rw-r--r--utilities/vcppmake/imp2ld.vcxproj232
-rw-r--r--utilities/vcppmake/imp2vs.vcxproj232
-rw-r--r--utilities/vcppmake/installmgr.vcxproj232
-rw-r--r--utilities/vcppmake/lexdump.vcxproj232
-rw-r--r--utilities/vcppmake/mkfastmod.vcxproj232
-rw-r--r--utilities/vcppmake/mod2imp.vcxproj232
-rw-r--r--utilities/vcppmake/mod2osis.vcxproj232
-rw-r--r--utilities/vcppmake/mod2vpl.vcxproj232
-rw-r--r--utilities/vcppmake/mod2zmod.vcxproj230
-rw-r--r--utilities/vcppmake/modwrite.vcxproj232
-rw-r--r--utilities/vcppmake/osis2mod.vcxproj244
-rw-r--r--utilities/vcppmake/step2vpl.vcxproj232
-rw-r--r--utilities/vcppmake/stepdump.vcxproj232
-rw-r--r--utilities/vcppmake/tei2mod.vcxproj232
-rw-r--r--utilities/vcppmake/treeidxutil.vcxproj232
-rw-r--r--utilities/vcppmake/utilities.sln448
-rw-r--r--utilities/vcppmake/vpl2mod.vcxproj232
-rw-r--r--utilities/vcppmake/vs2osisref.vcxproj232
-rw-r--r--utilities/vcppmake/vs2osisreftxt.vcxproj232
-rw-r--r--utilities/vcppmake/xml2gbs.vcxproj232
-rw-r--r--utilities/vpl2mod.cpp2
-rw-r--r--utilities/vs2osisref.cpp2
-rw-r--r--utilities/vs2osisreftxt.cpp2
-rw-r--r--utilities/xml2gbs.cpp2
652 files changed, 46208 insertions, 25774 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 993a996..5cbd06a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@
#
# NOTES: Defaults to build type of Shared
# Forces out-of-source tree build
-#
+#
#
# This file started on 18 January 2010 by Gregory Hellings
# It is ceded to The SWORD Library developers and CrossWire under the terms
@@ -14,7 +14,7 @@
# not, then this file is released under the GPLv2 by myself.
PROJECT(libsword CXX C)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0)
-SET(SWORD_VERSION 1.7.4)
+SET(SWORD_VERSION 1.8.1)
# Make sure it's an out-of-stream build
IF(${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
@@ -32,6 +32,8 @@ SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/options.cmake")
# Source variables
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/sources.cmake")
+# Cppcheck
+INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CppcheckTargets.cmake")
# Our local includes
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/include") # For swversion.h
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/include") # For everything else
@@ -59,8 +61,6 @@ ELSE(MSVC)
ENDIF(MSVC)
FIND_PACKAGE(CLucene QUIET)
FIND_PACKAGE(ZLIB QUIET)
-FIND_PACKAGE(ICU QUIET)
-FIND_PACKAGE(CURL QUIET)
FIND_PACKAGE(PkgConfig QUIET)
FIND_PACKAGE(Regex QUIET)
@@ -79,8 +79,12 @@ INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/muxsources.cmake)
# Most of the work for configuration is done above, already.
#
# I want to do this manually, there might be reason in the future
+SET(CPPCHECK_POSSIBLEERROR_ARG "--enable=all")
IF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*" OR NOT LIBSWORD_LIBRARY_TYPE)
ADD_LIBRARY(sword SHARED ${sword_SOURCES})
+ ADD_CPPCHECK(sword
+ POSSIBLE_ERROR TRUE
+ FORCE TRUE)
MESSAGE(STATUS "Building Shared library.")
SET(BUILDING_SHARED 1)
SET(SWORD_LINK_NAME sword)
@@ -88,6 +92,9 @@ ENDIF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*" OR NOT LIBSWORD_LIBRARY_TYPE)
IF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Static.*" OR NOT LIBSWORD_LIBRARY_TYPE)
ADD_LIBRARY(sword_static STATIC ${sword_SOURCES})
+ ADD_CPPCHECK(sword_static
+ POSSIBLE_ERROR TRUE
+ FORCE TRUE)
SET_TARGET_PROPERTIES(sword_static PROPERTIES COMPILE_FLAGS "-fPIC")
SET(BUILDING_STATIC 1)
# Defaults to linking against the shared if it is also being built
@@ -99,7 +106,7 @@ IF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Static.*" OR NOT LIBSWORD_LIBRARY_TYPE)
# same exact name. In other systems, the .a and .so suffixes suffice
# to keep them separate
IF(NOT MSVC OR NOT LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*")
- SET_TARGET_PROPERTIES(sword_static PROPERTIES
+ SET_TARGET_PROPERTIES(sword_static PROPERTIES
OUTPUT_NAME "sword")
#MESSAGE(STATUS "Building Static library with name sword")
ELSE(NOT MSVC OR NOT LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*")
@@ -187,6 +194,14 @@ IF(WITH_ZLIB)
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${ZLIB_LIBRARY})
ENDIF(WITH_ZLIB)
+IF(WITH_BZIP2)
+ INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR})
+ SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${BZIP2_LIBRARY})
+ENDIF(WITH_BZIP2)
+IF(WITH_XZ)
+ INCLUDE_DIRECTORIES(${XZ_INCLUDE_DIR})
+ SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${XZ_LIBRARY})
+ENDIF(WITH_XZ)
IF(WITH_CURL)
FIND_PROGRAM(CURL_CONFIG curl-config
DOC "The curl-config executable path, used to determine SFTP support.")
@@ -248,7 +263,7 @@ ADD_DEFINITIONS(-D_FTPLIB_NO_COMPAT)
#############################################################################################
# Platform-specifc bits that I will eventually refactor out into their own files, once I am happy
# with the stuff that is here.
-#
+#
IF(APPLE OR iPhone)
ADD_DEFINITIONS(-Dunix)
ENDIF(APPLE OR iPhone)
@@ -266,7 +281,7 @@ ENDIF(BUILDING_STATIC)
##############################################################################################
# Installing the library, headers, utilies, etc
-#
+#
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/install.cmake")
@@ -280,7 +295,7 @@ ENDIF(NOT SWORD_BINDINGS STREQUAL "" AND SWORD_BINDINGS)
##############################################################################################
# Utilities are hawt
-#
+#
IF(NOT SWORD_BUILD_UTILS STREQUAL "No")
ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/utilities")
@@ -288,7 +303,7 @@ ENDIF(NOT SWORD_BUILD_UTILS STREQUAL "No")
##############################################################################################
# Demos are also hawt
-#
+#
IF(SWORD_BUILD_EXAMPLES STREQUAL "Yes")
ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/examples/cmdline")
diff --git a/ChangeLog b/ChangeLog
index f77c1d5..ceaea0c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,19 +1,64 @@
API ChangeLog
+
+01-Nov-2017 Troy A. Griffitts <scribe@crosswire.org>
+ Added bindings: Android and cordova
+
+01-Sep-2017 Troy A. Griffitts <scribe@crosswire.org>
+ Adding French mapping data.
+ Patch submitted by domcox <dominique@corbex.org>
+
+21-May-2017 Troy A. Griffitts <scribe@crosswire.org>
+ Added --with-icuregex option to use ICU regex engine
+
+24-Apr-2017 Troy A. Griffitts <scribe@crosswire.org>
+ Branching 1.8.x
+
+16-Apr-2016 Troy A. Griffitts <scribe@crosswire.org>
+ Added working --chapter --verse decrementors across Testament
+ Added handling of more odd double colon verse reference texts
+ Removed deprecated utility cipherraw; use mod2zmod w/ cipherkey
+ or osis2mod -c instead.
+ Added new tests to testsuite for mod2zmod and osis2mod with cipher
+
+18-Dec-2015 Peter von Kaehne <refdoc@crosswire.org>
+ Added image and table handling to TEI latex
+ Added image handling to TEI RTF
+
+18-Dec-2015 Peter von Kaehne <refdoc@crosswire.org>
+ Added image and table handling to TEI xhtml and htmlhref filters
+ contributed by Dominique Corbex <dominique.corbex@gmail.com>
+
15-Dec-2014 DM Smith <dmsmith@crosswire.org>
Fixed endless loop in osis2mod for some inputs.
15-Dec-2014 DM Smith <dmsmith@crosswire.org>
Added support for Psalm Book divisions using <div type=majorSection>
- from GHellings
+ from GHellings
03-Dec-2014 Karl Kleinpaste <charcoal@users.sf.net>
Corrected anomalous OSIS highlighting output w/GHellings' patches in
src/modules/filters/osis{plain,xhtml}.cpp
+12-Jul-2014 Костя Маслюк <kostyamaslyuk@gmail.com>
+ Versification mapping implementation and example at
+ examples/tasks/parallelbibles.cpp
+
27-Apr-2014 Troy A. Griffitts <scribe@crosswire.org>
Added C# bindings contributed by Daniel Hughes <trampster@gmail.com>
+17-Mar-2014 Chris Little <chrislit@crosswire.org>
+ Added zVerse4, zText4, & zCom4 classes to support compressed text/
+ commentary modules with entry sizes > 64k
+
+3-Mar-2014 Chris Little <chrislit@crosswire.org>
+ Added support for bzip2 (Burrows-Wheeler) module compression via libbz2
+ Added support for xz (LZMA2) module compression via liblzma
+
+30-Dec-2013 Peter von Kaehne <refdoc@crosswire.org>
+ Added LaTeX output filters
+
+
* Release 1.7.0 *
5-Oct-2013 Troy A. Griffitts <scribe@crosswire.org>
diff --git a/Makefile.am b/Makefile.am
index 5d74eac..d75b351 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -60,18 +60,17 @@ restore:
install: install-recursive
@echo ""
- @echo "sword is installed."
+ @echo "SWORD is installed."
@echo ""
- @echo "if this is your first time, you may need a basic global"
- @echo "configuration file. one can be generated to $(DESTDIR)$(sysconfdir)/sword.conf"
- @echo "by typing: \"make install_config\""
+ @echo "If this is your first time, you may need a basic global"
+ @echo "configuration file. One can be generated to $(DESTDIR)$(sysconfdir)/sword.conf"
+ @echo "by typing: \"sudo make install_config\""
@echo ""
- @echo "modules (Bibles, etc.), may then be unzipped to $(pkgdatadir)/"
+ @echo "Modules (Bibles, etc.), may then be unzipped to $(pkgdatadir)/"
+ @echo "or installed with the command line tool: installmgr"
@echo ""
- @echo "type \"make register\" to help us keep track of how many"
- @echo "people are using sword."
- @echo "(you may consider exiting from 'root', first, to make this"
- @echo "a little more personal)"
+ @echo "Type \"make register\" to help us keep track of how many"
+ @echo "people are using SWORD."
@echo ""
@@ -92,6 +91,12 @@ install_config:
@echo "[Install]" > $(DESTDIR)$(sysconfdir)/sword.conf
@echo "DataPath=$(pkgdatadir)/" >> $(DESTDIR)$(sysconfdir)/sword.conf
@echo "sword.conf generated"
+ @echo ""
+ @echo "You can now try to install modules with installmgr, e.g.,"
+ @echo "sudo installmgr -sc -r CrossWire -ri CrossWire KJV"
+ @echo ""
+ @echo "Run installmgr with no options for help."
+
dist-hook:
diff --git a/Makefile.in b/Makefile.in
index 7b95703..3083f4c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -87,7 +87,7 @@ DIST_COMMON = $(srcdir)/locales.d/Makefile.am \
$(top_srcdir)/configure $(am__configure_deps) \
$(top_srcdir)/include/config.h.in $(srcdir)/sword.pc.in \
$(top_srcdir)/include/swversion.h.in $(srcdir)/sword.spec.in \
- depcomp AUTHORS COPYING ChangeLog INSTALL NEWS README compile \
+ depcomp AUTHORS COPYING ChangeLog INSTALL NEWS README \
config.guess config.sub install-sh missing ltmain.sh
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -416,9 +416,11 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+with_bzip2 = @with_bzip2@
with_conf = @with_conf@
with_icu = @with_icu@
with_icusword = @with_icusword@
+with_xz = @with_xz@
with_zlib = @with_zlib@
AUTOMAKE_OPTIONS = 1.6
ACLOCAL_AMFLAGS = -I m4
@@ -487,8 +489,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
include/config.h: include/stamp-h1
- @test -f $@ || rm -f include/stamp-h1
- @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) include/stamp-h1
+ @if test ! -f $@; then rm -f include/stamp-h1; else :; fi
+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) include/stamp-h1; else :; fi
include/stamp-h1: $(top_srcdir)/include/config.h.in $(top_builddir)/config.status
@rm -f include/stamp-h1
@@ -790,16 +792,10 @@ dist-xz: distdir
$(am__post_remove_distdir)
dist-tarZ: distdir
- @echo WARNING: "Support for shar distribution archives is" \
- "deprecated." >&2
- @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
- @echo WARNING: "Support for distribution archives compressed with" \
- "legacy program 'compress' is deprecated." >&2
- @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
@@ -841,10 +837,9 @@ distcheck: dist
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
- && ../configure \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
- --srcdir=.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
@@ -1081,18 +1076,17 @@ restore:
install: install-recursive
@echo ""
- @echo "sword is installed."
+ @echo "SWORD is installed."
@echo ""
- @echo "if this is your first time, you may need a basic global"
- @echo "configuration file. one can be generated to $(DESTDIR)$(sysconfdir)/sword.conf"
- @echo "by typing: \"make install_config\""
+ @echo "If this is your first time, you may need a basic global"
+ @echo "configuration file. One can be generated to $(DESTDIR)$(sysconfdir)/sword.conf"
+ @echo "by typing: \"sudo make install_config\""
@echo ""
- @echo "modules (Bibles, etc.), may then be unzipped to $(pkgdatadir)/"
+ @echo "Modules (Bibles, etc.), may then be unzipped to $(pkgdatadir)/"
+ @echo "or installed with the command line tool: installmgr"
@echo ""
- @echo "type \"make register\" to help us keep track of how many"
- @echo "people are using sword."
- @echo "(you may consider exiting from 'root', first, to make this"
- @echo "a little more personal)"
+ @echo "Type \"make register\" to help us keep track of how many"
+ @echo "people are using SWORD."
@echo ""
install-data-am: installlocaleDATA installmodsDATA install-pkgconfigDATA
@@ -1111,6 +1105,11 @@ install_config:
@echo "[Install]" > $(DESTDIR)$(sysconfdir)/sword.conf
@echo "DataPath=$(pkgdatadir)/" >> $(DESTDIR)$(sysconfdir)/sword.conf
@echo "sword.conf generated"
+ @echo ""
+ @echo "You can now try to install modules with installmgr, e.g.,"
+ @echo "sudo installmgr -sc -r CrossWire -ri CrossWire KJV"
+ @echo ""
+ @echo "Run installmgr with no options for help."
dist-hook:
(cd $(distdir) && ./autogen.sh)
diff --git a/aclocal.m4 b/aclocal.m4
index e8efa11..fea5b70 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
@@ -220,21 +220,6 @@ m4_popdef([pkg_default])
m4_popdef([pkg_description])
]) dnl PKG_NOARCH_INSTALLDIR
-
-# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# -------------------------------------------
-# Retrieves the value of the pkg-config variable for the given module.
-AC_DEFUN([PKG_CHECK_VAR],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
-
-_PKG_CONFIG([$1], [variable="][$3]["], [$2])
-AS_VAR_COPY([$1], [pkg_cv_][$1])
-
-AS_VAR_IF([$1], [""], [$5], [$4])dnl
-])# PKG_CHECK_VAR
-
# Copyright (C) 2002-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
@@ -247,10 +232,10 @@ AS_VAR_IF([$1], [""], [$5], [$4])dnl
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
+[am__api_version='1.13'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.14.1], [],
+m4_if([$1], [1.13.4], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -266,7 +251,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
+[AM_AUTOMAKE_VERSION([1.13.4])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -633,12 +618,6 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
-dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
-m4_define([AC_PROG_CC],
-m4_defn([AC_PROG_CC])
-[_AM_PROG_CC_C_O
-])
-
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
# -----------------------------------------------
@@ -747,48 +726,7 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes. So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
- cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present. This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message. This
-can help us improve future automake versions.
-
-END
- if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
- echo 'Configuration will proceed anyway, since you have set the' >&2
- echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
- echo >&2
- else
- cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
- AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
- fi
-fi])
+])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
@@ -796,6 +734,7 @@ dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
# When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header
# that is generated. The stamp files are numbered to have different names.
@@ -1042,70 +981,6 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_CC_C_O
-# ---------------
-# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
-# to automatically call this.
-AC_DEFUN([_AM_PROG_CC_C_O],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-AC_LANG_PUSH([C])dnl
-AC_CACHE_CHECK(
- [whether $CC understands -c and -o together],
- [am_cv_prog_cc_c_o],
- [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
- # Make sure it works both with $CC and with simple cc.
- # Following AC_PROG_CC_C_O, we do the test twice because some
- # compilers refuse to overwrite an existing .o file with -o,
- # though they will create one.
- am_cv_prog_cc_c_o=yes
- for am_i in 1 2; do
- if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
- && test -f conftest2.$ac_objext; then
- : OK
- else
- am_cv_prog_cc_c_o=no
- break
- fi
- done
- rm -f core conftest*
- unset am_i])
-if test "$am_cv_prog_cc_c_o" != yes; then
- # Losing compiler, so override with the script.
- # FIXME: It is wrong to rewrite CC.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__CC in this case,
- # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
- CC="$am_aux_dir/compile $CC"
-fi
-AC_LANG_POP([C])])
-
-# For backward compatibility.
-AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_RUN_LOG(COMMAND)
-# -------------------
-# Run COMMAND, save the exit status in ac_status, and log it.
-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
-AC_DEFUN([AM_RUN_LOG],
-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
- ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
- (exit $ac_status); }])
-
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
diff --git a/arminst.sh b/arminst.sh
index e3db839..42df5e7 100755
--- a/arminst.sh
+++ b/arminst.sh
@@ -2,7 +2,7 @@
#******************************************************************************
# Convenience script specifying ARM options to ./configure
#
-# $Id: arminst.sh 2327 2009-04-22 11:42:33Z scribe $
+# $Id: arminst.sh 3063 2014-03-04 13:04:11Z chrislit $
#
# Copyright 1998-2009 CrossWire Bible Society (http://www.crosswire.org)
# CrossWire Bible Society
diff --git a/bindings/Android/Makefile b/bindings/Android/Makefile
new file mode 100644
index 0000000..33ccb06
--- /dev/null
+++ b/bindings/Android/Makefile
@@ -0,0 +1,14 @@
+all: javawrapper
+ cp -a SWORD/app/build/intermediates/transforms/stripDebugSymbol/release/0/lib/* ../cordova/org.crosswire.sword.cordova.SWORD/libs/android/
+
+debug: javawrapper
+ cp -a SWORD/app/build/intermediates/cmake/debug/obj/* ../cordova/org.crosswire.sword.cordova.SWORD/libs/android/
+
+javawrapper:
+ cp -a SWORD/app/src/main/java/org/crosswire/android/sword/* ../cordova/org.crosswire.sword.cordova.SWORD/src/android/
+
+clean:
+ #these are from ../java-jni
+ rm SWORD/app/src/main/java/org/crosswire/android/sword/InstallMgr.java SWORD/app/src/main/java/org/crosswire/android/sword/SWMgr.java SWORD/app/src/main/java/org/crosswire/android/sword/SWModule.java
+
+
diff --git a/bindings/Android/README b/bindings/Android/README
new file mode 100644
index 0000000..2714e53
--- /dev/null
+++ b/bindings/Android/README
@@ -0,0 +1,25 @@
+This folder contains Android bindings based on the java-jni bindings.
+
+The first step to building these bindings is to build the java-jni/
+bindings. These bindings use code generated from there.
+See the ../java-jni README before continuing.
+
+There is an Android Studio project here under SWORD/
+
+This Android Studio project should be used to build the NDK
+native code here.
+
+After that, a make in this folder will copy the native libs
+to the ../cordova/ bindings to produce a working cordova plugin
+
+The steps to build all of this are usually:
+1) make in the ../java-jni bindings folder
+2) build all in SWORD Android Studio project
+3) a make in this folder, which finally copies the binary libs
+ to the ../cordova/ bindings folder to produce a working
+ cordova plugin
+
+Android java bindings can be used after step 2
+cordova javascript bindings can be used after step 3
+
+Hope this helps get you started. Let me know your progress!
diff --git a/bindings/Android/SWORD/.gitignore b/bindings/Android/SWORD/.gitignore
new file mode 100644
index 0000000..39fb081
--- /dev/null
+++ b/bindings/Android/SWORD/.gitignore
@@ -0,0 +1,9 @@
+*.iml
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/captures
+.externalNativeBuild
diff --git a/bindings/Android/SWORD/.idea/codeStyleSettings.xml b/bindings/Android/SWORD/.idea/codeStyleSettings.xml
new file mode 100644
index 0000000..719bb8b
--- /dev/null
+++ b/bindings/Android/SWORD/.idea/codeStyleSettings.xml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectCodeStyleSettingsManager">
+ <option name="PER_PROJECT_SETTINGS">
+ <value>
+ <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
+ <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
+ <option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
+ <value />
+ </option>
+ <option name="IMPORT_LAYOUT_TABLE">
+ <value>
+ <package name="android" withSubpackages="true" static="false" />
+ <emptyLine />
+ <package name="com" withSubpackages="true" static="false" />
+ <emptyLine />
+ <package name="junit" withSubpackages="true" static="false" />
+ <emptyLine />
+ <package name="net" withSubpackages="true" static="false" />
+ <emptyLine />
+ <package name="org" withSubpackages="true" static="false" />
+ <emptyLine />
+ <package name="java" withSubpackages="true" static="false" />
+ <emptyLine />
+ <package name="javax" withSubpackages="true" static="false" />
+ <emptyLine />
+ <package name="" withSubpackages="true" static="false" />
+ <emptyLine />
+ <package name="" withSubpackages="true" static="true" />
+ <emptyLine />
+ </value>
+ </option>
+ <option name="RIGHT_MARGIN" value="100" />
+ <AndroidXmlCodeStyleSettings>
+ <option name="USE_CUSTOM_SETTINGS" value="true" />
+ </AndroidXmlCodeStyleSettings>
+ <Objective-C-extensions>
+ <file>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
+ </file>
+ <class>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
+ </class>
+ <extensions>
+ <pair source="cpp" header="h" />
+ <pair source="c" header="h" />
+ </extensions>
+ </Objective-C-extensions>
+ <XML>
+ <option name="XML_KEEP_LINE_BREAKS" value="false" />
+ <option name="XML_ALIGN_ATTRIBUTES" value="false" />
+ <option name="XML_SPACE_INSIDE_EMPTY_TAG" value="true" />
+ </XML>
+ <codeStyleSettings language="XML">
+ <option name="FORCE_REARRANGE_MODE" value="1" />
+ <indentOptions>
+ <option name="CONTINUATION_INDENT_SIZE" value="4" />
+ </indentOptions>
+ <arrangement>
+ <rules>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>xmlns:android</NAME>
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>xmlns:.*</NAME>
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:id</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:name</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>name</NAME>
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>style</NAME>
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_width</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_height</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_.*</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:width</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:height</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_NAMESPACE>.*</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ </rules>
+ </arrangement>
+ </codeStyleSettings>
+ </value>
+ </option>
+ <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default (1)" />
+ </component>
+</project> \ No newline at end of file
diff --git a/bindings/Android/SWORD/.idea/compiler.xml b/bindings/Android/SWORD/.idea/compiler.xml
new file mode 100644
index 0000000..96cc43e
--- /dev/null
+++ b/bindings/Android/SWORD/.idea/compiler.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="CompilerConfiguration">
+ <resourceExtensions />
+ <wildcardResourcePatterns>
+ <entry name="!?*.java" />
+ <entry name="!?*.form" />
+ <entry name="!?*.class" />
+ <entry name="!?*.groovy" />
+ <entry name="!?*.scala" />
+ <entry name="!?*.flex" />
+ <entry name="!?*.kt" />
+ <entry name="!?*.clj" />
+ <entry name="!?*.aj" />
+ </wildcardResourcePatterns>
+ <annotationProcessing>
+ <profile default="true" name="Default" enabled="false">
+ <processorPath useClasspath="true" />
+ </profile>
+ </annotationProcessing>
+ </component>
+</project> \ No newline at end of file
diff --git a/bindings/Android/SWORD/.idea/copyright/profiles_settings.xml b/bindings/Android/SWORD/.idea/copyright/profiles_settings.xml
new file mode 100644
index 0000000..e7bedf3
--- /dev/null
+++ b/bindings/Android/SWORD/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,3 @@
+<component name="CopyrightManager">
+ <settings default="" />
+</component> \ No newline at end of file
diff --git a/bindings/Android/SWORD/.idea/gradle.xml b/bindings/Android/SWORD/.idea/gradle.xml
new file mode 100644
index 0000000..96b6a99
--- /dev/null
+++ b/bindings/Android/SWORD/.idea/gradle.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="GradleSettings">
+ <option name="linkedExternalProjectsSettings">
+ <GradleProjectSettings>
+ <option name="distributionType" value="DEFAULT_WRAPPED" />
+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
+ <option name="modules">
+ <set>
+ <option value="/data/home/scribe/src/sword/bindings/Android/SWORD" />
+ <option value="/data/home/scribe/src/sword/bindings/Android/SWORD/app" />
+ </set>
+ </option>
+ <option name="resolveModulePerSourceSet" value="false" />
+ </GradleProjectSettings>
+ </option>
+ </component>
+</project> \ No newline at end of file
diff --git a/bindings/Android/SWORD/.idea/misc.xml b/bindings/Android/SWORD/.idea/misc.xml
new file mode 100644
index 0000000..bac5576
--- /dev/null
+++ b/bindings/Android/SWORD/.idea/misc.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="NullableNotNullManager">
+ <option name="myDefaultNullable" value="android.support.annotation.Nullable" />
+ <option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
+ <option name="myNullables">
+ <value>
+ <list size="4">
+ <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
+ <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
+ <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
+ <item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
+ </list>
+ </value>
+ </option>
+ <option name="myNotNulls">
+ <value>
+ <list size="4">
+ <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
+ <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
+ <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
+ <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
+ </list>
+ </value>
+ </option>
+ </component>
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
+ <output url="file://$PROJECT_DIR$/build/classes" />
+ </component>
+ <component name="ProjectType">
+ <option name="id" value="Android" />
+ </component>
+ <component name="SvnBranchConfigurationManager">
+ <option name="mySupportsUserInfoFilter" value="true" />
+ </component>
+ <component name="masterDetails">
+ <states>
+ <state key="ProjectJDKs.UI">
+ <settings>
+ <last-edited>Android API 24 Platform</last-edited>
+ <splitter-proportions>
+ <option name="proportions">
+ <list>
+ <option value="0.2" />
+ </list>
+ </option>
+ </splitter-proportions>
+ </settings>
+ </state>
+ </states>
+ </component>
+</project> \ No newline at end of file
diff --git a/bindings/Android/SWORD/.idea/modules.xml b/bindings/Android/SWORD/.idea/modules.xml
new file mode 100644
index 0000000..8baebac
--- /dev/null
+++ b/bindings/Android/SWORD/.idea/modules.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file:///data/home/scribe/src/sword/bindings/Android/SWORD/SWORD.iml" filepath="/data/home/scribe/src/sword/bindings/Android/SWORD/SWORD.iml" />
+ <module fileurl="file:///data/home/scribe/src/sword/bindings/Android/SWORD/app/app.iml" filepath="/data/home/scribe/src/sword/bindings/Android/SWORD/app/app.iml" />
+ </modules>
+ </component>
+</project> \ No newline at end of file
diff --git a/bindings/Android/SWORD/.idea/runConfigurations.xml b/bindings/Android/SWORD/.idea/runConfigurations.xml
new file mode 100644
index 0000000..7f68460
--- /dev/null
+++ b/bindings/Android/SWORD/.idea/runConfigurations.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="RunConfigurationProducerService">
+ <option name="ignoredProducers">
+ <set>
+ <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
+ <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
+ <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
+ </set>
+ </option>
+ </component>
+</project> \ No newline at end of file
diff --git a/bindings/Android/SWORD/.idea/vcs.xml b/bindings/Android/SWORD/.idea/vcs.xml
new file mode 100644
index 0000000..45cf85c
--- /dev/null
+++ b/bindings/Android/SWORD/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="" vcs="svn" />
+ </component>
+</project> \ No newline at end of file
diff --git a/bindings/Android/SWORD/app/.gitignore b/bindings/Android/SWORD/app/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/bindings/Android/SWORD/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/bindings/Android/SWORD/app/CMakeLists.txt b/bindings/Android/SWORD/app/CMakeLists.txt
new file mode 100644
index 0000000..d9625aa
--- /dev/null
+++ b/bindings/Android/SWORD/app/CMakeLists.txt
@@ -0,0 +1,221 @@
+# For more information about using CMake with Android Studio, read the
+# documentation: https://d.android.com/studio/projects/add-native-code.html
+
+# Sets the minimum version of CMake required to build the native library.
+
+cmake_minimum_required(VERSION 3.4.1)
+
+#SET(NDK_DEBUG 0)
+SET(CMAKE_C_FLAGS "-D__unix__ ${CMAKE_C_FLAGS}")
+SET(CMAKE_C_FLAGS "-D_FTPLIB_NO_COMPAT ${CMAKE_C_FLAGS}")
+
+SET(CMAKE_C_FLAGS "-Wno-invalid-source-encoding ${CMAKE_C_FLAGS}")
+
+
+SET(CMAKE_C_FLAGS "-DOS_ANDROID ${CMAKE_C_FLAGS}")
+
+SET(CMAKE_C_FLAGS "-fvisibility=hidden ${CMAKE_C_FLAGS}")
+SET(CMAKE_C_FLAGS "-DSTDC_HEADERS ${CMAKE_C_FLAGS}")
+SET(CMAKE_C_FLAGS "-Dunix ${CMAKE_C_FLAGS}")
+SET(CMAKE_C_FLAGS "-DANDROID ${CMAKE_C_FLAGS}")
+SET(CMAKE_C_FLAGS "-DEXCLUDEBZIP2 ${CMAKE_C_FLAGS}")
+SET(CMAKE_C_FLAGS "-DEXCLUDEXZ ${CMAKE_C_FLAGS}")
+SET(CMAKE_C_FLAGS "-DEXCLUDEXZ ${CMAKE_C_FLAGS}")
+
+#SET(CMAKE_C_FLAGS " ${CMAKE_C_FLAGS}")
+#SET(CMAKE_C_FLAGS " ${CMAKE_C_FLAGS}")
+
+# Creates and names a library, sets it as either STATIC
+# or SHARED, and provides the relative paths to its source code.
+# You can define multiple libraries, and CMake builds them for you.
+# Gradle automatically packages shared libraries with your APK.
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")
+
+add_library( # Sets the name of the library.
+ sword
+
+ # Sets the library as a shared library.
+ SHARED
+
+ # Provides a relative path to your source file(s).
+ src/main/cpp/jni/swordstub.cpp
+ ../../../../src/utilfuns/swversion.cpp
+ ../../../../src/modules/comments/zcom/zcom.cpp
+ ../../../../src/modules/comments/zcom4/zcom4.cpp
+ ../../../../src/modules/comments/rawfiles/rawfiles.cpp
+ ../../../../src/modules/comments/rawcom4/rawcom4.cpp
+ ../../../../src/modules/comments/rawcom/rawcom.cpp
+ ../../../../src/modules/comments/swcom.cpp
+ ../../../../src/modules/comments/hrefcom/hrefcom.cpp
+ ../../../../src/modules/swmodule.cpp
+ ../../../../src/modules/tests/echomod.cpp
+ ../../../../src/modules/genbook/swgenbook.cpp
+ ../../../../src/modules/genbook/rawgenbook/rawgenbook.cpp
+ ../../../../src/modules/lexdict/swld.cpp
+ ../../../../src/modules/lexdict/rawld4/rawld4.cpp
+ ../../../../src/modules/lexdict/zld/zld.cpp
+ ../../../../src/modules/lexdict/rawld/rawld.cpp
+ ../../../../src/modules/texts/rawtext/rawtext.cpp
+ ../../../../src/modules/texts/rawtext4/rawtext4.cpp
+ ../../../../src/modules/texts/swtext.cpp
+ ../../../../src/modules/texts/ztext/ztext.cpp
+ ../../../../src/modules/texts/ztext4/ztext4.cpp
+ ../../../../src/modules/common/rawstr4.cpp
+ ../../../../src/modules/common/lzsscomprs.cpp
+ ../../../../src/modules/common/zipcomprs.cpp
+ ../../../../src/modules/common/rawverse4.cpp
+ ../../../../src/modules/common/swcipher.cpp
+ ../../../../src/modules/common/swcomprs.cpp
+ ../../../../src/modules/common/rawverse.cpp
+ ../../../../src/modules/common/sapphire.cpp
+ ../../../../src/modules/common/zstr.cpp
+ ../../../../src/modules/common/entriesblk.cpp
+ ../../../../src/modules/common/zverse.cpp
+ ../../../../src/modules/common/zverse4.cpp
+ ../../../../src/modules/common/rawstr.cpp
+ ../../../../src/modules/filters/gbfwordjs.cpp
+ ../../../../src/modules/filters/utf8latin1.cpp
+ ../../../../src/modules/filters/utf8greekaccents.cpp
+ ../../../../src/modules/filters/utf16utf8.cpp
+ ../../../../src/modules/filters/gbfwebif.cpp
+ ../../../../src/modules/filters/utf8transliterator.cpp
+ ../../../../src/modules/filters/gbfstrongs.cpp
+ ../../../../src/modules/filters/thmlhtmlhref.cpp
+ ../../../../src/modules/filters/thmlxhtml.cpp
+ ../../../../src/modules/filters/thmlgbf.cpp
+ ../../../../src/modules/filters/utf8utf16.cpp
+ ../../../../src/modules/filters/utf8cantillation.cpp
+ ../../../../src/modules/filters/utf8arshaping.cpp
+ ../../../../src/modules/filters/cipherfil.cpp
+ ../../../../src/modules/filters/thmlheadings.cpp
+ ../../../../src/modules/filters/thmlscripref.cpp
+ ../../../../src/modules/filters/latin1utf8.cpp
+ ../../../../src/modules/filters/gbfhtml.cpp
+ ../../../../src/modules/filters/thmlosis.cpp
+ ../../../../src/modules/filters/utf8nfkd.cpp
+ ../../../../src/modules/filters/thmlstrongs.cpp
+ ../../../../src/modules/filters/osisenum.cpp
+ ../../../../src/modules/filters/osisfootnotes.cpp
+ ../../../../src/modules/filters/osisglosses.cpp
+ ../../../../src/modules/filters/osisheadings.cpp
+ ../../../../src/modules/filters/osishtmlhref.cpp
+ ../../../../src/modules/filters/osislemma.cpp
+ ../../../../src/modules/filters/osismorph.cpp
+ ../../../../src/modules/filters/osismorphsegmentation.cpp
+ ../../../../src/modules/filters/osisosis.cpp
+ ../../../../src/modules/filters/osisplain.cpp
+ ../../../../src/modules/filters/osisredletterwords.cpp
+ ../../../../src/modules/filters/osisrtf.cpp
+ ../../../../src/modules/filters/osisscripref.cpp
+ ../../../../src/modules/filters/osisstrongs.cpp
+ ../../../../src/modules/filters/osisvariants.cpp
+ ../../../../src/modules/filters/osiswebif.cpp
+ ../../../../src/modules/filters/osiswordjs.cpp
+ ../../../../src/modules/filters/osisxhtml.cpp
+ ../../../../src/modules/filters/osisxlit.cpp
+ ../../../../src/modules/filters/osisreferencelinks.cpp
+ ../../../../src/modules/filters/thmlmorph.cpp
+ ../../../../src/modules/filters/gbfplain.cpp
+ ../../../../src/modules/filters/gbfhtmlhref.cpp
+ ../../../../src/modules/filters/gbfxhtml.cpp
+ ../../../../src/modules/filters/utf8html.cpp
+ ../../../../src/modules/filters/utf8nfc.cpp
+ ../../../../src/modules/filters/rtfhtml.cpp
+ ../../../../src/modules/filters/gbfredletterwords.cpp
+ ../../../../src/modules/filters/latin1utf16.cpp
+ ../../../../src/modules/filters/thmlhtml.cpp
+ ../../../../src/modules/filters/gbfthml.cpp
+ ../../../../src/modules/filters/teihtmlhref.cpp
+ ../../../../src/modules/filters/teixhtml.cpp
+ ../../../../src/modules/filters/gbfrtf.cpp
+ ../../../../src/modules/filters/gbfosis.cpp
+ ../../../../src/modules/filters/teirtf.cpp
+ ../../../../src/modules/filters/thmlwordjs.cpp
+ ../../../../src/modules/filters/papyriplain.cpp
+ ../../../../src/modules/filters/utf8bidireorder.cpp
+ ../../../../src/modules/filters/gbfheadings.cpp
+ ../../../../src/modules/filters/thmlrtf.cpp
+ ../../../../src/modules/filters/swoptfilter.cpp
+ ../../../../src/modules/filters/utf8arabicpoints.cpp
+ ../../../../src/modules/filters/unicodertf.cpp
+ ../../../../src/modules/filters/gbffootnotes.cpp
+ ../../../../src/modules/filters/greeklexattribs.cpp
+ ../../../../src/modules/filters/thmlfootnotes.cpp
+ ../../../../src/modules/filters/thmlplain.cpp
+ ../../../../src/modules/filters/utf8hebrewpoints.cpp
+ ../../../../src/modules/filters/thmlwebif.cpp
+ ../../../../src/modules/filters/thmlvariants.cpp
+ ../../../../src/modules/filters/thmllemma.cpp
+ ../../../../src/modules/filters/gbfmorph.cpp
+ ../../../../src/modules/filters/teiplain.cpp
+ ../../../../src/modules/filters/swbasicfilter.cpp
+ ../../../../src/modules/filters/scsuutf8.cpp
+ ../../../../src/modules/filters/gbflatex.cpp
+ ../../../../src/modules/filters/thmllatex.cpp
+ ../../../../src/modules/filters/teilatex.cpp
+ ../../../../src/modules/filters/osislatex.cpp
+ ../../../../src/mgr/stringmgr.cpp
+ ../../../../src/mgr/swmgr.cpp
+ ../../../../src/mgr/swsearchable.cpp
+ ../../../../src/mgr/localemgr.cpp
+ ../../../../src/mgr/swconfig.cpp
+ ../../../../src/mgr/markupfiltmgr.cpp
+ ../../../../src/mgr/encfiltmgr.cpp
+ ../../../../src/mgr/swfiltermgr.cpp
+ ../../../../src/mgr/swcacher.cpp
+ ../../../../src/mgr/installmgr.cpp
+ ../../../../src/mgr/swlocale.cpp
+ ../../../../src/mgr/filemgr.cpp
+ ../../../../src/mgr/versificationmgr.cpp
+ ../../../../src/mgr/remotetrans.cpp
+ ../../../../src/mgr/ftplibftpt.cpp
+ ../../../../src/utilfuns/swobject.cpp
+ ../../../../src/utilfuns/roman.cpp
+ ../../../../src/utilfuns/swbuf.cpp
+ ../../../../src/utilfuns/utilstr.cpp
+ ../../../../src/utilfuns/ftplib.c
+ ../../../../src/utilfuns/ftpparse.c
+ ../../../../src/utilfuns/url.cpp
+ ../../../../src/utilfuns/utilxml.cpp
+# ../../../../src/utilfuns/regex.c
+ ../../../../src/keys/swkey.cpp
+ ../../../../src/keys/versetreekey.cpp
+ ../../../../src/keys/treekeyidx.cpp
+ ../../../../src/keys/versekey.cpp
+ ../../../../src/keys/strkey.cpp
+ ../../../../src/keys/treekey.cpp
+ ../../../../src/keys/listkey.cpp
+ ../../../../src/frontend/swdisp.cpp
+ ../../../../src/frontend/swlog.cpp
+ ../../../../src/utilfuns/zlib/untgz.c
+
+ )
+
+include_directories(../../../../include)
+# Searches for a specified prebuilt library and stores the path as a
+# variable. Because CMake includes system libraries in the search path by
+# default, you only need to specify the name of the public NDK library
+# you want to add. CMake verifies that the library exists before
+# completing its build.
+
+find_library( # Sets the name of the path variable.
+ log-lib
+
+ # Specifies the name of the NDK library that
+ # you want CMake to locate.
+ log)
+
+# Specifies libraries CMake should link to your target library. You
+# can link multiple libraries, such as libraries you define in this
+# build script, prebuilt third-party libraries, or system libraries.
+
+target_link_libraries( # Specifies the target library.
+ sword
+
+ # Links the target library to the log library
+ # included in the NDK.
+ #${log-lib}
+ log
+ z
+ ) \ No newline at end of file
diff --git a/bindings/Android/SWORD/app/build.gradle b/bindings/Android/SWORD/app/build.gradle
new file mode 100644
index 0000000..38f6a6b
--- /dev/null
+++ b/bindings/Android/SWORD/app/build.gradle
@@ -0,0 +1,41 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 25
+ buildToolsVersion '26.0.2'
+ defaultConfig {
+ applicationId "org.crosswire.sword"
+ minSdkVersion 14
+ targetSdkVersion 25
+ versionCode 1
+ versionName "1.0"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ externalNativeBuild {
+ cmake {
+ cppFlags "-frtti -fexceptions"
+ }
+ }
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+ externalNativeBuild {
+ cmake {
+ path "CMakeLists.txt"
+ }
+ }
+}
+
+dependencies {
+ compile fileTree(dir: 'libs', include: ['*.jar'])
+ androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+ exclude group: 'com.android.support', module: 'support-annotations'
+ })
+ compile 'com.android.support:appcompat-v7:25.3.0'
+ compile 'com.android.support.constraint:constraint-layout:1.0.2'
+ compile 'com.android.support:design:25.3.0'
+ testCompile 'junit:junit:4.12'
+}
diff --git a/bindings/Android/SWORD/app/proguard-rules.pro b/bindings/Android/SWORD/app/proguard-rules.pro
new file mode 100644
index 0000000..b7161c9
--- /dev/null
+++ b/bindings/Android/SWORD/app/proguard-rules.pro
@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /home/scribe/Android/Sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/bindings/Android/SWORD/app/src/androidTest/java/org/crosswire/sword/ExampleInstrumentedTest.java b/bindings/Android/SWORD/app/src/androidTest/java/org/crosswire/sword/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..88a21a1
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/androidTest/java/org/crosswire/sword/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package org.crosswire.sword;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumentation test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() throws Exception {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getTargetContext();
+
+ assertEquals("org.crosswire.sword", appContext.getPackageName());
+ }
+}
diff --git a/bindings/Android/SWORD/app/src/main/AndroidManifest.xml b/bindings/Android/SWORD/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..8c5ed54
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/AndroidManifest.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="org.crosswire.sword">
+
+ <application
+ android:allowBackup="true"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/app_name"
+ android:roundIcon="@mipmap/ic_launcher_round"
+ android:supportsRtl="true"
+ android:theme="@style/AppTheme">
+ <activity
+ android:name="org.crosswire.android.bishop.MainActivity"
+ android:label="@string/title_activity_main">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest> \ No newline at end of file
diff --git a/bindings/Android/SWORD/app/src/main/cpp/frontend b/bindings/Android/SWORD/app/src/main/cpp/frontend
new file mode 120000
index 0000000..0c85939
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/cpp/frontend
@@ -0,0 +1 @@
+../../../../../../../src/frontend \ No newline at end of file
diff --git a/bindings/Android/SWORD/app/src/main/cpp/jni b/bindings/Android/SWORD/app/src/main/cpp/jni
new file mode 120000
index 0000000..2042a86
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/cpp/jni
@@ -0,0 +1 @@
+../../../../../../java-jni/jni/ \ No newline at end of file
diff --git a/bindings/Android/SWORD/app/src/main/cpp/keys b/bindings/Android/SWORD/app/src/main/cpp/keys
new file mode 120000
index 0000000..82c5ec9
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/cpp/keys
@@ -0,0 +1 @@
+../../../../../../../src/keys \ No newline at end of file
diff --git a/bindings/Android/SWORD/app/src/main/cpp/mgr b/bindings/Android/SWORD/app/src/main/cpp/mgr
new file mode 120000
index 0000000..ff01498
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/cpp/mgr
@@ -0,0 +1 @@
+../../../../../../../src/mgr \ No newline at end of file
diff --git a/bindings/Android/SWORD/app/src/main/cpp/modules b/bindings/Android/SWORD/app/src/main/cpp/modules
new file mode 120000
index 0000000..5ce3fc2
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/cpp/modules
@@ -0,0 +1 @@
+../../../../../../../src/modules \ No newline at end of file
diff --git a/bindings/Android/SWORD/app/src/main/cpp/utilfuns b/bindings/Android/SWORD/app/src/main/cpp/utilfuns
new file mode 120000
index 0000000..f9cd74a
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/cpp/utilfuns
@@ -0,0 +1 @@
+../../../../../../../src/utilfuns \ No newline at end of file
diff --git a/bindings/Android/SWORD/app/src/main/java/org/crosswire/android/bishop/MainActivity.java b/bindings/Android/SWORD/app/src/main/java/org/crosswire/android/bishop/MainActivity.java
new file mode 100644
index 0000000..e6626a4
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/java/org/crosswire/android/bishop/MainActivity.java
@@ -0,0 +1,121 @@
+package org.crosswire.android.bishop;
+
+import android.app.Activity;
+
+import android.app.ActionBar;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.content.Context;
+import android.os.Build;
+import android.os.Bundle;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.support.v4.widget.DrawerLayout;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import org.crosswire.sword.R;
+
+public class MainActivity extends Activity
+ implements NavigationDrawerFragment.NavigationDrawerCallbacks {
+
+ /**
+ * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
+ */
+ private NavigationDrawerFragment mNavigationDrawerFragment;
+
+ /**
+ * Used to store the last screen title. For use in {@link #restoreActionBar()}.
+ */
+ private CharSequence mTitle;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ mNavigationDrawerFragment = (NavigationDrawerFragment)
+ getFragmentManager().findFragmentById(R.id.navigation_drawer);
+ mTitle = getTitle();
+
+ // Set up the drawer.
+ mNavigationDrawerFragment.setUp(
+ R.id.navigation_drawer,
+ (DrawerLayout) findViewById(R.id.drawer_layout));
+ }
+
+ @Override
+ public void onNavigationDrawerItemSelected(int position) {
+ // update the main content by replacing fragments
+ FragmentManager fragmentManager = getFragmentManager();
+ fragmentManager.beginTransaction()
+ .replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
+ .commit();
+ }
+
+ public void onSectionAttached(int number) {
+ switch (number) {
+ case 1:
+ mTitle = getString(R.string.title_section1);
+ break;
+ case 2:
+ mTitle = getString(R.string.title_section2);
+ break;
+ case 3:
+ mTitle = getString(R.string.title_section3);
+ break;
+ }
+ }
+
+ public void restoreActionBar() {
+ ActionBar actionBar = getActionBar();
+ actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+ actionBar.setDisplayShowTitleEnabled(true);
+ actionBar.setTitle(mTitle);
+ }
+
+ /**
+ * A placeholder fragment containing a simple view.
+ */
+ public static class PlaceholderFragment extends Fragment {
+ /**
+ * The fragment argument representing the section number for this
+ * fragment.
+ */
+ private static final String ARG_SECTION_NUMBER = "section_number";
+
+ public PlaceholderFragment() {
+ }
+
+ /**
+ * Returns a new instance of this fragment for the given section
+ * number.
+ */
+ public static PlaceholderFragment newInstance(int sectionNumber) {
+ PlaceholderFragment fragment = new PlaceholderFragment();
+ Bundle args = new Bundle();
+ args.putInt(ARG_SECTION_NUMBER, sectionNumber);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.fragment_main, container, false);
+ return rootView;
+ }
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ ((MainActivity) activity).onSectionAttached(
+ getArguments().getInt(ARG_SECTION_NUMBER));
+ }
+ }
+
+}
diff --git a/bindings/Android/SWORD/app/src/main/java/org/crosswire/android/bishop/NavigationDrawerFragment.java b/bindings/Android/SWORD/app/src/main/java/org/crosswire/android/bishop/NavigationDrawerFragment.java
new file mode 100644
index 0000000..29bac37
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/java/org/crosswire/android/bishop/NavigationDrawerFragment.java
@@ -0,0 +1,284 @@
+package org.crosswire.android.bishop;
+
+
+import android.app.Activity;
+import android.app.ActionBar;
+import android.app.Fragment;
+import android.support.v4.app.ActionBarDrawerToggle;
+import android.support.v4.view.GravityCompat;
+import android.support.v4.widget.DrawerLayout;
+import android.content.SharedPreferences;
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+import android.widget.Toast;
+
+import org.crosswire.sword.R;
+
+/**
+ * Fragment used for managing interactions for and presentation of a navigation drawer.
+ * See the <a href="https://developer.android.com/design/patterns/navigation-drawer.html#Interaction">
+ * design guidelines</a> for a complete explanation of the behaviors implemented here.
+ */
+public class NavigationDrawerFragment extends Fragment {
+
+ /**
+ * Remember the position of the selected item.
+ */
+ private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";
+
+ /**
+ * Per the design guidelines, you should show the drawer on launch until the user manually
+ * expands it. This shared preference tracks this.
+ */
+ private static final String PREF_USER_LEARNED_DRAWER = "navigation_drawer_learned";
+
+ /**
+ * A pointer to the current callbacks instance (the Activity).
+ */
+ private NavigationDrawerCallbacks mCallbacks;
+
+ /**
+ * Helper component that ties the action bar to the navigation drawer.
+ */
+ private ActionBarDrawerToggle mDrawerToggle;
+
+ private DrawerLayout mDrawerLayout;
+ private ListView mDrawerListView;
+ private View mFragmentContainerView;
+
+ private int mCurrentSelectedPosition = 0;
+ private boolean mFromSavedInstanceState;
+ private boolean mUserLearnedDrawer;
+
+ public NavigationDrawerFragment() {
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Read in the flag indicating whether or not the user has demonstrated awareness of the
+ // drawer. See PREF_USER_LEARNED_DRAWER for details.
+ SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
+ mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER, false);
+
+ if (savedInstanceState != null) {
+ mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
+ mFromSavedInstanceState = true;
+ }
+
+ // Select either the default item (0) or the last selected item.
+ selectItem(mCurrentSelectedPosition);
+ }
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ // Indicate that this fragment would like to influence the set of actions in the action bar.
+ setHasOptionsMenu(true);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ mDrawerListView = (ListView) inflater.inflate(
+ R.layout.drawer_main, container, false);
+ mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ selectItem(position);
+ }
+ });
+ mDrawerListView.setAdapter(new ArrayAdapter<String>(
+ getActionBar().getThemedContext(),
+ android.R.layout.simple_list_item_activated_1,
+ android.R.id.text1,
+ new String[]{
+ getString(R.string.title_section1),
+ getString(R.string.title_section2),
+ getString(R.string.title_section3),
+ }));
+ mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
+ return mDrawerListView;
+ }
+
+ public boolean isDrawerOpen() {
+ return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(mFragmentContainerView);
+ }
+
+ /**
+ * Users of this fragment must call this method to set up the navigation drawer interactions.
+ *
+ * @param fragmentId The android:id of this fragment in its activity's layout.
+ * @param drawerLayout The DrawerLayout containing this fragment's UI.
+ */
+ public void setUp(int fragmentId, DrawerLayout drawerLayout) {
+ mFragmentContainerView = getActivity().findViewById(fragmentId);
+ mDrawerLayout = drawerLayout;
+
+ // set a custom shadow that overlays the main content when the drawer opens
+ mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
+ // set up the drawer's list view with items and click listener
+
+ ActionBar actionBar = getActionBar();
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ actionBar.setHomeButtonEnabled(true);
+
+ // ActionBarDrawerToggle ties together the the proper interactions
+ // between the navigation drawer and the action bar app icon.
+ mDrawerToggle = new ActionBarDrawerToggle(
+ getActivity(), /* host Activity */
+ mDrawerLayout, /* DrawerLayout object */
+ R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
+ R.string.navigation_drawer_open, /* "open drawer" description for accessibility */
+ R.string.navigation_drawer_close /* "close drawer" description for accessibility */
+ ) {
+ @Override
+ public void onDrawerClosed(View drawerView) {
+ super.onDrawerClosed(drawerView);
+ if (!isAdded()) {
+ return;
+ }
+
+ getActivity().invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
+ }
+
+ @Override
+ public void onDrawerOpened(View drawerView) {
+ super.onDrawerOpened(drawerView);
+ if (!isAdded()) {
+ return;
+ }
+
+ if (!mUserLearnedDrawer) {
+ // The user manually opened the drawer; store this flag to prevent auto-showing
+ // the navigation drawer automatically in the future.
+ mUserLearnedDrawer = true;
+ SharedPreferences sp = PreferenceManager
+ .getDefaultSharedPreferences(getActivity());
+ sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
+ }
+
+ getActivity().invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
+ }
+ };
+
+ // If the user hasn't 'learned' about the drawer, open it to introduce them to the drawer,
+ // per the navigation drawer design guidelines.
+ if (!mUserLearnedDrawer && !mFromSavedInstanceState) {
+ mDrawerLayout.openDrawer(mFragmentContainerView);
+ }
+
+ // Defer code dependent on restoration of previous instance state.
+ mDrawerLayout.post(new Runnable() {
+ @Override
+ public void run() {
+ mDrawerToggle.syncState();
+ }
+ });
+
+ mDrawerLayout.setDrawerListener(mDrawerToggle);
+ }
+
+ private void selectItem(int position) {
+ mCurrentSelectedPosition = position;
+ if (mDrawerListView != null) {
+ mDrawerListView.setItemChecked(position, true);
+ }
+ if (mDrawerLayout != null) {
+ mDrawerLayout.closeDrawer(mFragmentContainerView);
+ }
+ if (mCallbacks != null) {
+ mCallbacks.onNavigationDrawerItemSelected(position);
+ }
+ }
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ try {
+ mCallbacks = (NavigationDrawerCallbacks) activity;
+ } catch (ClassCastException e) {
+ throw new ClassCastException("Activity must implement NavigationDrawerCallbacks.");
+ }
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ mCallbacks = null;
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition);
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ // Forward the new configuration the drawer toggle component.
+ mDrawerToggle.onConfigurationChanged(newConfig);
+ }
+
+ @Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ // If the drawer is open, show the global app actions in the action bar. See also
+ // showGlobalContextActionBar, which controls the top-left area of the action bar.
+ if (mDrawerLayout != null && isDrawerOpen()) {
+ inflater.inflate(R.menu.global, menu);
+ showGlobalContextActionBar();
+ }
+ super.onCreateOptionsMenu(menu, inflater);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (mDrawerToggle.onOptionsItemSelected(item)) {
+ return true;
+ }
+
+ if (item.getItemId() == R.id.action_example) {
+ Toast.makeText(getActivity(), "Example action.", Toast.LENGTH_SHORT).show();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ /**
+ * Per the navigation drawer design guidelines, updates the action bar to show the global app
+ * 'context', rather than just what's in the current screen.
+ */
+ private void showGlobalContextActionBar() {
+ ActionBar actionBar = getActionBar();
+ actionBar.setDisplayShowTitleEnabled(true);
+ actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+ actionBar.setTitle(R.string.app_name);
+ }
+
+ private ActionBar getActionBar() {
+ return getActivity().getActionBar();
+ }
+
+ /**
+ * Callbacks interface that all activities using this fragment must implement.
+ */
+ public static interface NavigationDrawerCallbacks {
+ /**
+ * Called when an item in the navigation drawer is selected.
+ */
+ void onNavigationDrawerItemSelected(int position);
+ }
+}
diff --git a/bindings/Android/SWORD/app/src/main/java/org/crosswire/android/sword/AndroidMgr.java b/bindings/Android/SWORD/app/src/main/java/org/crosswire/android/sword/AndroidMgr.java
new file mode 100644
index 0000000..61392e6
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/java/org/crosswire/android/sword/AndroidMgr.java
@@ -0,0 +1,45 @@
+/******************************************************************************
+ *
+ * AndroidMgr.java -
+ *
+ * $Id: SWMgr.java 2833 2013-06-29 06:40:28Z chrislit $
+ *
+ * Copyright 2009-2013 CrossWire Bible Society (http://www.crosswire.org)
+ * CrossWire Bible Society
+ * P. O. Box 2528
+ * Tempe, AZ 85280-2528
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ */
+
+package org.crosswire.android.sword;
+
+import android.app.Application;
+import android.content.Context;
+
+public class AndroidMgr extends SWMgr {
+
+ private Application app;
+
+ public AndroidMgr(Application app) {
+ super(false);
+ this.app = app;
+ reInit();
+ }
+
+ @Override
+ public String getStorageBasePath() {
+ Context context = app.getApplicationContext();
+ return context.getFilesDir().getAbsolutePath();
+ }
+}
+
+
diff --git a/bindings/Android/SWORD/app/src/main/res/drawable-hdpi/drawer_shadow.9.png b/bindings/Android/SWORD/app/src/main/res/drawable-hdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..236bff5
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/drawable-hdpi/drawer_shadow.9.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/drawable-hdpi/ic_drawer.png b/bindings/Android/SWORD/app/src/main/res/drawable-hdpi/ic_drawer.png
new file mode 100644
index 0000000..c59f601
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/drawable-hdpi/ic_drawer.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/drawable-mdpi/drawer_shadow.9.png b/bindings/Android/SWORD/app/src/main/res/drawable-mdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..ffe3a28
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/drawable-mdpi/drawer_shadow.9.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/drawable-mdpi/ic_drawer.png b/bindings/Android/SWORD/app/src/main/res/drawable-mdpi/ic_drawer.png
new file mode 100644
index 0000000..1ed2c56
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/drawable-mdpi/ic_drawer.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png b/bindings/Android/SWORD/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..fabe9d9
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/drawable-xhdpi/ic_drawer.png b/bindings/Android/SWORD/app/src/main/res/drawable-xhdpi/ic_drawer.png
new file mode 100644
index 0000000..a5fa74d
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/drawable-xhdpi/ic_drawer.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png b/bindings/Android/SWORD/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..b91e9d7
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/drawable-xxhdpi/ic_drawer.png b/bindings/Android/SWORD/app/src/main/res/drawable-xxhdpi/ic_drawer.png
new file mode 100644
index 0000000..9c4685d
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/drawable-xxhdpi/ic_drawer.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/layout/activity_main.xml b/bindings/Android/SWORD/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..0c3c3cc
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,26 @@
+<!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. -->
+<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/drawer_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context="org.crosswire.android.bishop.MainActivity">
+
+ <!-- As the main content view, the view below consumes the entire
+ space available using match_parent in both dimensions. -->
+ <FrameLayout
+ android:id="@+id/container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+ <!-- The drawer is given a fixed width in dp and extends the full height of
+ the container. -->
+ <fragment
+ android:id="@+id/navigation_drawer"
+ android:name="org.crosswire.android.bishop.NavigationDrawerFragment"
+ android:layout_width="@dimen/navigation_drawer_width"
+ android:layout_height="match_parent"
+ android:layout_gravity="start"
+ tools:layout="@layout/drawer_main" />
+
+</android.support.v4.widget.DrawerLayout>
diff --git a/bindings/Android/SWORD/app/src/main/res/layout/drawer_main.xml b/bindings/Android/SWORD/app/src/main/res/layout/drawer_main.xml
new file mode 100644
index 0000000..7a02f93
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/layout/drawer_main.xml
@@ -0,0 +1,9 @@
+<ListView xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="#cccc"
+ android:choiceMode="singleChoice"
+ android:divider="@android:color/transparent"
+ android:dividerHeight="0dp"
+ tools:context="org.crosswire.android.bishop.NavigationDrawerFragment" />
diff --git a/bindings/Android/SWORD/app/src/main/res/layout/fragment_main.xml b/bindings/Android/SWORD/app/src/main/res/layout/fragment_main.xml
new file mode 100644
index 0000000..3f80d4e
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/layout/fragment_main.xml
@@ -0,0 +1,16 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingBottom="@dimen/activity_vertical_margin"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingTop="@dimen/activity_vertical_margin"
+ tools:context="org.crosswire.android.bishop.MainActivity$PlaceholderFragment">
+
+ <TextView
+ android:id="@+id/section_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
+</RelativeLayout>
diff --git a/bindings/Android/SWORD/app/src/main/res/menu/global.xml b/bindings/Android/SWORD/app/src/main/res/menu/global.xml
new file mode 100644
index 0000000..e3f1dfa
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/menu/global.xml
@@ -0,0 +1,7 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:id="@+id/action_settings"
+ android:orderInCategory="100"
+ android:showAsAction="never"
+ android:title="@string/action_settings" />
+</menu>
diff --git a/bindings/Android/SWORD/app/src/main/res/menu/main.xml b/bindings/Android/SWORD/app/src/main/res/menu/main.xml
new file mode 100644
index 0000000..037dc19
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/menu/main.xml
@@ -0,0 +1,13 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ tools:context="org.crosswire.android.bishop.MainActivity">
+ <item
+ android:id="@+id/action_example"
+ android:showAsAction="withText|ifRoom"
+ android:title="@string/action_example" />
+ <item
+ android:id="@+id/action_settings"
+ android:orderInCategory="100"
+ android:showAsAction="never"
+ android:title="@string/action_settings" />
+</menu>
diff --git a/bindings/Android/SWORD/app/src/main/res/menu/menu_swordtest.xml b/bindings/Android/SWORD/app/src/main/res/menu/menu_swordtest.xml
new file mode 100644
index 0000000..7cb68bd
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/menu/menu_swordtest.xml
@@ -0,0 +1,7 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ tools:context="org.crosswire.sword.SWORDTestActivity">
+ <item android:id="@+id/action_settings" android:orderInCategory="100"
+ android:title="@string/action_settings" app:showAsAction="never" />
+</menu>
diff --git a/bindings/Android/SWORD/app/src/main/res/mipmap-hdpi/ic_launcher.png b/bindings/Android/SWORD/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..cde69bc
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/bindings/Android/SWORD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..9a078e3
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/mipmap-mdpi/ic_launcher.png b/bindings/Android/SWORD/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..c133a0c
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/bindings/Android/SWORD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..efc028a
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/bindings/Android/SWORD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..bfa42f0
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/bindings/Android/SWORD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..3af2608
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/bindings/Android/SWORD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..324e72c
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/bindings/Android/SWORD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..9bec2e6
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/bindings/Android/SWORD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..aee44e1
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/bindings/Android/SWORD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..34947cd
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/bindings/Android/SWORD/app/src/main/res/values-w820dp/dimens.xml b/bindings/Android/SWORD/app/src/main/res/values-w820dp/dimens.xml
new file mode 100644
index 0000000..63fc816
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/values-w820dp/dimens.xml
@@ -0,0 +1,6 @@
+<resources>
+ <!-- Example customization of dimensions originally defined in res/values/dimens.xml
+ (such as screen margins) for screens with more than 820dp of available width. This
+ would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
+ <dimen name="activity_horizontal_margin">64dp</dimen>
+</resources>
diff --git a/bindings/Android/SWORD/app/src/main/res/values/colors.xml b/bindings/Android/SWORD/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..3ab3e9c
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="colorPrimary">#3F51B5</color>
+ <color name="colorPrimaryDark">#303F9F</color>
+ <color name="colorAccent">#FF4081</color>
+</resources>
diff --git a/bindings/Android/SWORD/app/src/main/res/values/dimens.xml b/bindings/Android/SWORD/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..d1c4b97
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/values/dimens.xml
@@ -0,0 +1,10 @@
+<resources>
+ <dimen name="fab_margin">16dp</dimen>
+ <!-- Default screen margins, per the Android Design guidelines. -->
+ <dimen name="activity_horizontal_margin">16dp</dimen>
+ <dimen name="activity_vertical_margin">16dp</dimen>
+
+ <!-- Per the design guidelines, navigation drawers should be between 240dp and 320dp:
+ https://developer.android.com/design/patterns/navigation-drawer.html -->
+ <dimen name="navigation_drawer_width">240dp</dimen>
+</resources>
diff --git a/bindings/Android/SWORD/app/src/main/res/values/strings.xml b/bindings/Android/SWORD/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..c92ade9
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/values/strings.xml
@@ -0,0 +1,14 @@
+<resources>
+ <string name="app_name">SWORD</string>
+ <string name="action_settings">Settings</string>
+ <string name="title_activity_main">MainActivity</string>
+
+ <string name="title_section1">Section 1</string>
+ <string name="title_section2">Section 2</string>
+ <string name="title_section3">Section 3</string>
+
+ <string name="navigation_drawer_open">Open navigation drawer</string>
+ <string name="navigation_drawer_close">Close navigation drawer</string>
+
+ <string name="action_example">Example action</string>
+</resources>
diff --git a/bindings/Android/SWORD/app/src/main/res/values/styles.xml b/bindings/Android/SWORD/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..3f48db4
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/main/res/values/styles.xml
@@ -0,0 +1,17 @@
+<resources>
+
+ <!-- Base application theme. -->
+ <style name="AppTheme" parent="Theme.AppCompat">
+ <!-- Customize your theme here. -->
+ <item name="colorPrimary">@color/colorPrimary</item>
+ <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+ <item name="colorAccent">@color/colorAccent</item>
+ </style>
+ <style name="AppTheme.NoActionBar">
+ <item name="windowActionBar">false</item>
+ <item name="windowNoTitle">true</item>
+ </style>
+ <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
+ <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
+
+</resources>
diff --git a/bindings/Android/SWORD/app/src/test/java/org/crosswire/sword/ExampleUnitTest.java b/bindings/Android/SWORD/app/src/test/java/org/crosswire/sword/ExampleUnitTest.java
new file mode 100644
index 0000000..5d70b42
--- /dev/null
+++ b/bindings/Android/SWORD/app/src/test/java/org/crosswire/sword/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package org.crosswire.sword;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() throws Exception {
+ assertEquals(4, 2 + 2);
+ }
+} \ No newline at end of file
diff --git a/bindings/Android/SWORD/build.gradle b/bindings/Android/SWORD/build.gradle
new file mode 100644
index 0000000..c33a638
--- /dev/null
+++ b/bindings/Android/SWORD/build.gradle
@@ -0,0 +1,23 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ repositories {
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.0.0'
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ jcenter()
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/bindings/Android/SWORD/gradle.properties b/bindings/Android/SWORD/gradle.properties
new file mode 100644
index 0000000..aac7c9b
--- /dev/null
+++ b/bindings/Android/SWORD/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx1536m
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
diff --git a/bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.jar b/bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..13372ae
--- /dev/null
+++ b/bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.properties b/bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..cb0e548
--- /dev/null
+++ b/bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Oct 27 12:46:11 MST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/bindings/Android/SWORD/gradlew b/bindings/Android/SWORD/gradlew
new file mode 100755
index 0000000..9d82f78
--- /dev/null
+++ b/bindings/Android/SWORD/gradlew
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/bindings/Android/SWORD/gradlew.bat b/bindings/Android/SWORD/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/bindings/Android/SWORD/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/bindings/Android/SWORD/settings.gradle b/bindings/Android/SWORD/settings.gradle
new file mode 100644
index 0000000..e7b4def
--- /dev/null
+++ b/bindings/Android/SWORD/settings.gradle
@@ -0,0 +1 @@
+include ':app'
diff --git a/bindings/corba/omniorbcpp/Makefile b/bindings/corba/omniorbcpp/Makefile
index 5385fb5..24e1220 100644
--- a/bindings/corba/omniorbcpp/Makefile
+++ b/bindings/corba/omniorbcpp/Makefile
@@ -19,6 +19,8 @@ LIBS += -L/usr/lib64
#CXXFLAGS += -g -O0
#CFLAGS += -g -O0
#LDFLAGS += -g -O0
+CXXFLAGS += -O3
+CFLAGS += -O3
#-----------------------------------------------------------------------------
diff --git a/bindings/corba/omniorbcpp/swordorb-impl.cpp b/bindings/corba/omniorbcpp/swordorb-impl.cpp
index 7f26c14..01cd169 100644
--- a/bindings/corba/omniorbcpp/swordorb-impl.cpp
+++ b/bindings/corba/omniorbcpp/swordorb-impl.cpp
@@ -2,7 +2,7 @@
*
* swordorb-impl.cpp - omniorb bindings
*
- * $Id: swordorb-impl.cpp 3284 2014-12-03 06:13:54Z greg.hellings $
+ * $Id: swordorb-impl.cpp 3256 2014-09-15 20:03:26Z scribe $
*
* Copyright 2009-2013 CrossWire Bible Society (http://www.crosswire.org)
* CrossWire Bible Society
@@ -243,7 +243,7 @@ swordorb::StringList* swordorb_SWModule_i::getKeyChildren(){
sword::VerseKey *vkey = SWDYNAMIC_CAST(VerseKey, key);
if (vkey) {
- retVal->length(8);
+ retVal->length(10);
SWBuf num;
num.appendFormatted("%d", vkey->getTestament());
(*retVal)[0] = CORBA::string_dup(num.c_str());
@@ -264,6 +264,8 @@ swordorb::StringList* swordorb_SWModule_i::getKeyChildren(){
(*retVal)[5] = CORBA::string_dup(num.c_str());
(*retVal)[6] = CORBA::string_dup(vkey->getBookName());
(*retVal)[7] = CORBA::string_dup(vkey->getOSISRef());
+ (*retVal)[8] = CORBA::string_dup(vkey->getShortText());
+ (*retVal)[9] = CORBA::string_dup(vkey->getBookAbbrev());
}
else {
TreeKeyIdx *tkey = SWDYNAMIC_CAST(TreeKeyIdx, key);
diff --git a/bindings/corba/orbitcpp/webmgr.hpp b/bindings/corba/orbitcpp/webmgr.hpp
index 048882c..05fa569 100644
--- a/bindings/corba/orbitcpp/webmgr.hpp
+++ b/bindings/corba/orbitcpp/webmgr.hpp
@@ -2,7 +2,7 @@
*
* webmgr.cpp -
*
- * $Id: webmgr.hpp 2833 2013-06-29 06:40:28Z chrislit $
+ * $Id: webmgr.hpp 3548 2017-12-10 05:11:38Z scribe $
*
* Copyright 2005-2013 CrossWire Bible Society (http://www.crosswire.org)
* CrossWire Bible Society
@@ -25,6 +25,7 @@
#include <swmgr.h>
#include <swmodule.h>
+#include <filemgr.h>
#include <swfilter.h>
#include <markupfiltmgr.h>
#include <osiswordjs.h>
@@ -41,9 +42,13 @@ class WebMgr : public SWMgr {
SWModule *defaultHebLex;
SWModule *defaultGreekParse;
SWModule *defaultHebParse;
+ char *extraConf;
public:
- WebMgr(SWConfig *sysConf) : SWMgr(0, sysConf, false, new MarkupFilterMgr(FMT_WEBIF)) {
+ WebMgr(const char *path, const char *extraConfPath = 0) : SWMgr(path, false, new MarkupFilterMgr(FMT_WEBIF)) { init(); if (extraConfPath) stdstr(&extraConf, extraConfPath); }
+ WebMgr(SWConfig *sysConf) : SWMgr(0, sysConf, false, new MarkupFilterMgr(FMT_WEBIF)) { init(); }
+ void init() {
+ extraConf = 0;
defaultGreekLex = 0;
defaultHebLex = 0;
defaultGreekParse = 0;
@@ -52,7 +57,7 @@ public:
osisWordJS = new OSISWordJS();
thmlWordJS = new ThMLWordJS();
gbfWordJS = new GBFWordJS();
- Load();
+ load();
osisWordJS->setDefaultModules(defaultGreekLex, defaultHebLex, defaultGreekParse, defaultHebParse);
thmlWordJS->setDefaultModules(defaultGreekLex, defaultHebLex, defaultGreekParse, defaultHebParse);
gbfWordJS->setDefaultModules(defaultGreekLex, defaultHebLex, defaultGreekParse, defaultHebParse);
@@ -66,10 +71,22 @@ public:
delete osisWordJS;
delete thmlWordJS;
delete gbfWordJS;
+ delete extraConf;
}
+ void createAllModules(bool multiMod) {
- void AddGlobalOptions(SWModule *module, ConfigEntMap &section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) {
+ if (extraConf) {
+ bool exists = FileMgr::existsFile(extraConf);
+ if (exists) {
+ SWConfig addConfig(extraConf);
+ this->config->augment(addConfig);
+ }
+ }
+ SWMgr::createAllModules(multiMod);
+ }
+
+ void addGlobalOptionFilters(SWModule *module, ConfigEntMap &section) {
// ThML word stuff needs to process before strongs strip
if (module->getMarkup() == FMT_THML) {
@@ -81,7 +98,7 @@ public:
}
// add other module filters
- SWMgr::AddGlobalOptions(module, section, start, end);
+ SWMgr::addGlobalOptionFilters(module, section);
// add our special filters
if (module->getConfig().has("Feature", "GreekDef")) {
diff --git a/bindings/cordova/Makefile b/bindings/cordova/Makefile
new file mode 100644
index 0000000..209287a
--- /dev/null
+++ b/bindings/cordova/Makefile
@@ -0,0 +1,10 @@
+all:
+ @echo
+ @echo "native binary component is built from ../Android/"
+ @echo
+
+clean:
+ # these are from ../Android
+ rm -rf org.crosswire.sword.cordova.SWORD/libs/android/*
+ rm org.crosswire.sword.cordova.SWORD/src/android/AndroidMgr.java org.crosswire.sword.cordova.SWORD/src/android/InstallMgr.java org.crosswire.sword.cordova.SWORD/src/android/SWMgr.java org.crosswire.sword.cordova.SWORD/src/android/SWModule.java
+
diff --git a/bindings/cordova/README b/bindings/cordova/README
new file mode 100644
index 0000000..c59b5c3
--- /dev/null
+++ b/bindings/cordova/README
@@ -0,0 +1,5 @@
+This folder contains a cordova plugin which is based on the
+../Android bindings which is based on the java-jni/ bindings.
+
+Follow the README in the ../java-jni/ bindings folder.
+
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/LICENSE b/bindings/cordova/org.crosswire.sword.cordova.SWORD/LICENSE
new file mode 100644
index 0000000..7a4a3ea
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. \ No newline at end of file
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/README.md b/bindings/cordova/org.crosswire.sword.cordova.SWORD/README.md
new file mode 100644
index 0000000..5158f6f
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/README.md
@@ -0,0 +1,22 @@
+<!---
+ license: Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+# org.apache.cordova.device
+
+Plugin documentation: [doc/index.md](doc/index.md)
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/RELEASENOTES.md b/bindings/cordova/org.crosswire.sword.cordova.SWORD/RELEASENOTES.md
new file mode 100644
index 0000000..a2f41dd
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/RELEASENOTES.md
@@ -0,0 +1,57 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+-->
+# Release Notes
+
+### 0.2.1 (Sept 5, 2013)
+* removed extraneous print statement
+* [CB-4432] copyright notice change
+
+### 0.2.3 (Sept 25, 2013)
+* CB-4889 bumping&resetting version
+* [windows8] commandProxy has moved
+* [BlackBerry10] removed uneeded permission tags in plugin.xml
+* CB-4889 renaming org.apache.cordova.core.device to org.apache.cordova.device
+* Rename CHANGELOG.md -> RELEASENOTES.md
+* updated to use commandProxy for ffos
+* add firefoxos support
+* [CB-4752] Incremented plugin version on dev branch.
+
+### 0.2.4 (Oct 28, 2013)
+* CB-5128: added repo + issue tag in plugin.xml for device plugin
+* CB-5085 device.cordova returning wrong value
+* [CB-4915] Incremented plugin version on dev branch.
+
+### 0.2.5 (Dec 4, 2013)
+* CB-5316 Spell Cordova as a brand unless it's a command or script
+* [ubuntu] use cordova/exec/proxy
+* add ubuntu platform
+* Modify Device.platform logic to use amazon-fireos as the platform for Amazon Devices
+* 1. Added amazon-fireos platform. 2. Change to use cordova-amazon-fireos as the platform if user agent contains 'cordova-amazon-fireos'
+
+### 0.2.6 (Jan 02, 2014)
+* CB-5658 Add doc/index.md for Device plugin
+* CB-5504 Moving Telephony Logic out of Device
+
+### 0.2.7 (Jan 07, 2014)
+* CB-5737 Fix exception on close caused by left over telephony code from CB-5504
+
+### 0.2.8 (Feb 05, 2014)
+* Tizen support added
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/doc/index.md b/bindings/cordova/org.crosswire.sword.cordova.SWORD/doc/index.md
new file mode 100644
index 0000000..9e5c677
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/doc/index.md
@@ -0,0 +1,213 @@
+<!---
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+# org.apache.cordova.device
+
+This plugin defines a global `device` object, which describes the device's hardware and software.
+Although the object is in the global scope, it is not available until after the `deviceready` event.
+
+ document.addEventListener("deviceready", onDeviceReady, false);
+ function onDeviceReady() {
+ console.log(device.cordova);
+ }
+
+## Installation
+
+ cordova plugin add org.apache.cordova.device
+
+## Properties
+
+- device.cordova
+- device.model
+- device.name
+- device.platform
+- device.uuid
+- device.version
+
+## device.cordova
+
+Get the version of Cordova running on the device.
+
+### Supported Platforms
+
+- Amazon Fire OS
+- Android
+- BlackBerry 10
+- Firefox OS
+- iOS
+- Tizen
+- Windows Phone 7 and 8
+- Windows 8
+
+## device.model
+
+The `device.model` returns the name of the device's model or
+product. The value is set by the device manufacturer and may be
+different across versions of the same product.
+
+### Supported Platforms
+
+- Android
+- BlackBerry 10
+- iOS
+- Tizen
+- Windows Phone 7 and 8
+- Windows 8
+
+### Quick Example
+
+ // Android: Nexus One returns "Passion" (Nexus One code name)
+ // Motorola Droid returns "voles"
+ // BlackBerry: Torch 9800 returns "9800"
+ // iOS: for the iPad Mini, returns iPad2,5; iPhone 5 is iPhone 5,1. See http://theiphonewiki.com/wiki/index.php?title=Models
+ //
+ var model = device.model;
+
+### Android Quirks
+
+- Gets the [product name](http://developer.android.com/reference/android/os/Build.html#PRODUCT) instead of the [model name](http://developer.android.com/reference/android/os/Build.html#MODEL), which is often the production code name. For example, the Nexus One returns `Passion`, and Motorola Droid returns `voles`.
+
+### Tizen Quirks
+
+- Returns the device model assigned by the vendor, for example, `TIZEN`
+
+### Windows Phone 7 and 8 Quirks
+
+- Returns the device model specified by the manufacturer. For example, the Samsung Focus returns `SGH-i917`.
+
+## device.name
+
+__WARNING__: `device.name` is deprecated as of version 2.3.0. Use `device.model` instead.
+
+## device.platform
+
+Get the device's operating system name.
+
+ var string = device.platform;
+
+### Supported Platforms
+
+- Android
+- BlackBerry 10
+- Firefox OS
+- iOS
+- Tizen
+- Windows Phone 7 and 8
+- Windows 8
+
+### Quick Example
+
+ // Depending on the device, a few examples are:
+ // - "Android"
+ // - "BlackBerry 10"
+ // - "iOS"
+ // - "WinCE"
+ // - "Tizen"
+ var devicePlatform = device.platform;
+
+### Windows Phone 7 Quirks
+
+Windows Phone 7 devices report the platform as `WinCE`.
+
+### Windows Phone 8 Quirks
+
+Windows Phone 8 devices report the platform as `Win32NT`.
+
+## device.uuid
+
+Get the device's Universally Unique Identifier ([UUID](http://en.wikipedia.org/wiki/Universally_Unique_Identifier)).
+
+ var string = device.uuid;
+
+### Description
+
+The details of how a UUID is generated are determined by the device manufacturer and are specific to the device's platform or model.
+
+### Supported Platforms
+
+- Android
+- BlackBerry 10
+- iOS
+- Tizen
+- Windows Phone 7 and 8
+- Windows 8
+
+### Quick Example
+
+ // Android: Returns a random 64-bit integer (as a string, again!)
+ // The integer is generated on the device's first boot
+ //
+ // BlackBerry: Returns the PIN number of the device
+ // This is a nine-digit unique integer (as a string, though!)
+ //
+ // iPhone: (Paraphrased from the UIDevice Class documentation)
+ // Returns a string of hash values created from multiple hardware identifies.
+ // It is guaranteed to be unique for every device and can't be tied
+ // to the user account.
+ // Windows Phone 7 : Returns a hash of device+current user,
+ // if the user is not defined, a guid is generated and will persist until the app is uninstalled
+ // Tizen: returns the device IMEI (International Mobile Equipment Identity or IMEI is a number
+ // unique to every GSM and UMTS mobile phone.
+ var deviceID = device.uuid;
+
+### iOS Quirk
+
+The `uuid` on iOS is not unique to a device, but varies for each
+application, for each installation. It changes if you delete and
+re-install the app, and possibly also when you upgrade iOS, or even
+upgrade the app per version (apparent in iOS 5.1). The `uuid` is not
+a reliable value.
+
+### Windows Phone 7 and 8 Quirks
+
+The `uuid` for Windows Phone 7 requires the permission
+`ID_CAP_IDENTITY_DEVICE`. Microsoft will likely deprecate this
+property soon. If the capability is not available, the application
+generates a persistent guid that is maintained for the duration of the
+application's installation on the device.
+
+## device.version
+
+Get the operating system version.
+
+ var string = device.version;
+
+### Supported Platforms
+
+- Android 2.1+
+- BlackBerry 10
+- iOS
+- Tizen
+- Windows Phone 7 and 8
+- Windows 8
+
+### Quick Example
+
+ // Android: Froyo OS would return "2.2"
+ // Eclair OS would return "2.1", "2.0.1", or "2.0"
+ // Version can also return update level "2.1-update1"
+ //
+ // BlackBerry: Torch 9800 using OS 6.0 would return "6.0.0.600"
+ //
+ // iPhone: iOS 3.2 returns "3.2"
+ //
+ // Windows Phone 7: returns current OS version number, ex. on Mango returns 7.10.7720
+ // Tizen: returns "TIZEN_20120425_2"
+ var deviceVersion = device.version;
+
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/package.json b/bindings/cordova/org.crosswire.sword.cordova.SWORD/package.json
new file mode 100644
index 0000000..3be0b9f
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "SWORD",
+ "version": "0.0.1",
+ "description": "The SWORD Project Plugin",
+ "cordova": {
+ "id": "org.crosswire.sword.cordova.SWORD",
+ "platforms": [
+ "android",
+ "amazon-fireos",
+ "ios"
+ ]
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://crosswire.org/svn/sword"
+ },
+ "keywords": [
+ "cordova",
+ "sword",
+ "Bible",
+ "ecosystem:cordova",
+ "cordova-android",
+ "cordova-ios",
+ "cordova-amazon-fireos"
+ ],
+ "author": "CrossWire Bible Society",
+ "license": "GNU 2.0"
+}
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/plugin.xml b/bindings/cordova/org.crosswire.sword.cordova.SWORD/plugin.xml
new file mode 100644
index 0000000..33d5c40
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/plugin.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
+ xmlns:rim="http://www.blackberry.com/ns/widgets"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ id="org.crosswire.sword.cordova.SWORD"
+ version="0.0.1">
+ <name>SWORD</name>
+ <description>The SWORD Project Plugin</description>
+ <license>GNU 2.0</license>
+ <keywords>cordova,sword,Bible</keywords>
+ <repo>https://crosswire.org/svn/sword</repo>
+ <issue>http://crosswire.org/tracker</issue>
+
+ <js-module src="www/SWORD.js" name="SWORD">
+ <clobbers target="SWORD" />
+ </js-module>
+
+ <!-- firefoxos
+ <platform name="firefoxos">
+ <config-file target="config.xml" parent="/*">
+ <feature name="Device">
+ <param name="firefoxos-package" value="Device" />
+ </feature>
+ </config-file>
+
+ <js-module src="src/firefoxos/DeviceProxy.js" name="DeviceProxy">
+ <runs />
+ </js-module>
+ </platform>
+ -->
+ <!-- tizen
+ <platform name="tizen">
+ <js-module src="src/tizen/DeviceProxy.js" name="DeviceProxy">
+ <runs />
+ </js-module>
+ </platform>
+ -->
+ <!-- android -->
+ <platform name="android">
+ <config-file target="res/xml/config.xml" parent="/*">
+ <feature name="SWORD" >
+ <param name="android-package" value="org.crosswire.sword.cordova.SWORD"/>
+ </feature>
+ </config-file>
+ <config-file target="AndroidManifest.xml" parent="/manifest">
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+ </config-file>
+
+ <source-file src="src/android/SWORD.java" target-dir="src/org/crosswire/sword/cordova" />
+ <source-file src="src/android/SWMgr.java" target-dir="src/org/crosswire/android/sword" />
+ <source-file src="src/android/AndroidMgr.java" target-dir="src/org/crosswire/android/sword" />
+ <source-file src="src/android/SWModule.java" target-dir="src/org/crosswire/android/sword" />
+ <source-file src="src/android/InstallMgr.java" target-dir="src/org/crosswire/android/sword" />
+ <source-file src="libs/android/armeabi/libsword.so" target-dir="libs/armeabi" />
+ <source-file src="libs/android/arm64-v8a/libsword.so" target-dir="libs/arm64-v8a" />
+ <source-file src="libs/android/x86/libsword.so" target-dir="libs/x86" />
+ <source-file src="libs/android/mips64/libsword.so" target-dir="libs/mips64" />
+ <source-file src="libs/android/mips/libsword.so" target-dir="libs/mips" />
+ <source-file src="libs/android/armeabi-v7a/libsword.so" target-dir="libs/armeabi-v7a" />
+ <source-file src="libs/android/x86_64/libsword.so" target-dir="libs/x86_64" />
+ </platform>
+
+ <!-- amazon-fireos -->
+ <platform name="amazon-fireos">
+ <config-file target="res/xml/config.xml" parent="/*">
+ <feature name="SWORD" >
+ <param name="android-package" value="org.crosswire.sword.cordova"/>
+ </feature>
+ </config-file>
+
+ <source-file src="src/android/SWORD.java" target-dir="src/org/crosswire/sword/cordova" />
+ <source-file src="src/android/SWMgr.java" target-dir="src/org/crosswire/android/sword" />
+ <source-file src="src/android/AndroidMgr.java" target-dir="src/org/crosswire/android/sword" />
+ <source-file src="src/android/SWModule.java" target-dir="src/org/crosswire/android/sword" />
+ <source-file src="src/android/InstallMgr.java" target-dir="src/org/crosswire/android/sword" />
+ <source-file src="libs/android/armeabi/libsword.so" target-dir="libs/armeabi" />
+ <source-file src="libs/android/arm64-v8a/libsword.so" target-dir="libs/arm64-v8a" />
+ <source-file src="libs/android/x86/libsword.so" target-dir="libs/x86" />
+ <source-file src="libs/android/mips64/libsword.so" target-dir="libs/mips64" />
+ <source-file src="libs/android/mips/libsword.so" target-dir="libs/mips" />
+ <source-file src="libs/android/armeabi-v7a/libsword.so" target-dir="libs/armeabi-v7a" />
+ <source-file src="libs/android/x86_64/libsword.so" target-dir="libs/x86_64" />
+ </platform>
+
+ <!-- ubuntu
+ <platform name="ubuntu">
+ <header-file src="src/ubuntu/device.h" />
+ <source-file src="src/ubuntu/device.cpp" />
+ <js-module src="src/ubuntu/device.js" name="DeviceProxy">
+ <merges target="device" />
+ </js-module>
+ </platform>
+ -->
+ <!-- ios -->
+ <platform name="ios">
+ <config-file target="config.xml" parent="/*">
+ <feature name="SWORD">
+ <param name="ios-package" value="SWORD" />
+ </feature>
+ </config-file>
+ <header-file src="src/ios/flatapi.h" />
+ <header-file src="src/ios/defs.h" />
+ <header-file src="src/ios/SWORD-Bridging-Header.h" />
+ <source-file src="src/ios/SWORD.swift" />
+ <source-file src="libs/ios/libSWORD.a" framework="true" />
+ <source-file src="libs/ios/libcurl.a" framework="true" />
+ <framework src="libstdc++.dylib" />
+ <framework src="libcurl.dylib" />
+
+ <dependency id="cordova-plugin-add-swift-support" />
+
+<!-- <source-file src="lib/ios/libSWORD.a" framework="true" /> -->
+ </platform>
+
+ <!-- blackberry10
+ <platform name="blackberry10">
+ <source-file src="src/blackberry10/index.js" target-dir="Device" />
+ <config-file target="www/config.xml" parent="/widget">
+ <feature name="Device" value="Device"/>
+ </config-file>
+ <config-file target="www/config.xml" parent="/widget/rim:permissions">
+ <rim:permit>read_device_identifying_information</rim:permit>
+ </config-file>
+ </platform>
+ -->
+ <!-- wp7
+ <platform name="wp7">
+ <config-file target="config.xml" parent="/*">
+ <feature name="Device">
+ <param name="wp-package" value="Device"/>
+ </feature>
+ </config-file>
+
+ <config-file target="Properties/WMAppManifest.xml" parent="/Deployment/App/Capabilities">
+ <Capability Name="ID_CAP_IDENTITY_DEVICE" />
+ </config-file>
+
+ <source-file src="src/wp/Device.cs" />
+ </platform>
+ -->
+ <!-- wp8
+ <platform name="wp8">
+ <config-file target="config.xml" parent="/*">
+ <feature name="Device">
+ <param name="wp-package" value="Device"/>
+ </feature>
+ </config-file>
+
+ <config-file target="Properties/WMAppManifest.xml" parent="/Deployment/App/Capabilities">
+ <Capability Name="ID_CAP_IDENTITY_DEVICE" />
+ </config-file>
+
+ <source-file src="src/wp/Device.cs" />
+ </platform>
+ -->
+ <!-- windows8
+ <platform name="windows8">
+ <js-module src="src/windows8/DeviceProxy.js" name="DeviceProxy">
+ <merges target="" />
+ </js-module>
+ </platform>
+ -->
+</plugin>
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/android/SWORD.java b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/android/SWORD.java
new file mode 100644
index 0000000..88c4119
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/android/SWORD.java
@@ -0,0 +1,660 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+package org.crosswire.sword.cordova;
+
+import java.util.TimeZone;
+import java.util.Vector;
+import java.util.Map;
+import java.util.HashMap;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+import org.apache.cordova.CordovaWebView;
+import org.apache.cordova.CallbackContext;
+import org.apache.cordova.CordovaPlugin;
+import org.apache.cordova.PluginResult;
+import org.apache.cordova.CordovaInterface;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import org.crosswire.android.sword.SWMgr;
+import org.crosswire.android.sword.AndroidMgr;
+import org.crosswire.android.sword.SWModule;
+import org.crosswire.android.sword.InstallMgr;
+
+import android.provider.Settings;
+import android.util.Log;
+import android.content.Intent;
+import android.app.Activity;
+
+public class SWORD extends CordovaPlugin {
+ public static final String TAG = "SWORD";
+ public static SWMgr mgr = null;
+ public static InstallMgr installMgr = null;
+ private CallbackContext installReporterContext = null;
+ private CallbackContext searchReporterContext = null;
+ private CallbackContext renderChapterContext = null;
+ private CallbackContext sendContext = null;
+
+ /**
+ * Constructor.
+ */
+ public SWORD() {
+ }
+
+ /**
+ * Sets the context of the Command. This can then be used to do things like
+ * get file paths associated with the Activity.
+ *
+ * @param cordova The context of the main Activity.
+ * @param webView The CordovaWebView Cordova is running in.
+ */
+ public void initialize(CordovaInterface cordova, CordovaWebView webView) {
+ super.initialize(cordova, webView);
+ mgr = new AndroidMgr(cordova.getActivity().getApplication());
+ installMgr = new InstallMgr();
+ installReporterContext = null;
+ searchReporterContext = null;
+ renderChapterContext = null;
+ }
+
+ /**
+ * Executes the request and returns PluginResult.
+ *
+ * @param action The action to execute.
+ * @param args JSONArry of arguments for the plugin.
+ * @param callbackContext The callback id used when calling back into JavaScript.
+ * @return True if the action was valid, false if not.
+ */
+ public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
+ if (action.equals("initSWORD")) {
+ JSONObject r = new JSONObject();
+ r.put("version", mgr.version());
+ callbackContext.success(r);
+ }
+ else if (action.equals("echo")) {
+ echo(callbackContext, args.getString(0));
+ }
+ else if (action.equals("InstallMgr_setUserDisclaimerConfirmed")) {
+ installMgr.setUserDisclaimerConfirmed();
+ callbackContext.success();
+ }
+ else if (action.equals("InstallMgr_syncConfig")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ @Override
+ public void run() {
+ installMgr.syncConfig();
+ installMgr.reInit();
+ callbackContext.success();
+ }
+ });
+ }
+ else if (action.equals("InstallMgr_getRemoteSources")) {
+ JSONArray r = new JSONArray();
+ String sources[] = installMgr.getRemoteSources();
+ for (String s : sources) {
+ r.put(s);
+ }
+ callbackContext.success(r);
+ }
+ else if (action.equals("InstallMgr_refreshRemoteSource")) {
+ final String repo = args.getString(0);
+ cordova.getThreadPool().execute(new Runnable() {
+ @Override
+ public void run() {
+ installMgr.refreshRemoteSource(repo);
+ callbackContext.success();
+ }
+ });
+ }
+ else if (action.equals("InstallMgr_getRemoteModInfoList")) {
+ JSONArray r = new JSONArray();
+ for (SWMgr.ModInfo mi : installMgr.getRemoteModInfoList(args.getString(0))) {
+ JSONObject m = new JSONObject();
+ m.put("name", mi.name);
+ m.put("description", mi.description);
+ m.put("category", mi.category);
+ m.put("language", mi.language);
+ m.put("version", mi.version);
+ m.put("delta", mi.delta);
+ r.put(m);
+ }
+ callbackContext.success(r);
+ }
+ else if (action.equals("InstallMgr_remoteInstallModule")) {
+ this.installReporterContext = callbackContext;
+ final String repo = args.getString(0);
+ final String modName = args.getString(1);
+ cordova.getThreadPool().execute(new Runnable() {
+ @Override
+ public void run() {
+
+ installMgr.remoteInstallModule(repo, modName, new InstallMgr.InstallProgressReporter() {
+ public void update(long totalBytes, long completedBytes) {
+ /*
+ // callback({ status : preStatus|update|complete, totalBytes : n, completedBytes : n, message : displayable });
+ */
+ try {
+
+ JSONObject m = new JSONObject();
+ m.put("status", "update");
+ m.put("totalBytes", totalBytes);
+ m.put("completedBytes", completedBytes);
+ if (installReporterContext != null) {
+ PluginResult result = new PluginResult(PluginResult.Status.OK, m);
+ result.setKeepCallback(true);
+ installReporterContext.sendPluginResult(result);
+ }
+ }
+ catch (Exception e) { e.printStackTrace(); }
+ }
+ public void preStatus(long totalBytes, long completedBytes, String message) {
+ try {
+ JSONObject m = new JSONObject();
+ m.put("status", ("Complete".equals(message)) ? "complete" : "preStatus");
+ m.put("totalBytes", totalBytes);
+ m.put("completedBytes", completedBytes);
+ m.put("message", message);
+ if (installReporterContext != null) {
+ PluginResult result = new PluginResult(PluginResult.Status.OK, m);
+ result.setKeepCallback(!"Complete".equals(message));
+ installReporterContext.sendPluginResult(result);
+ }
+ if ("Complete".equals(message)) {
+ // let's be sure we see our new module
+ mgr.reInit();
+ // and clear out context
+ installReporterContext = null;
+ }
+ }
+ catch (Exception e) { e.printStackTrace(); }
+ }
+ });
+
+ }
+ });
+
+ PluginResult result = new PluginResult(PluginResult.Status.OK);
+ result.setKeepCallback(true);
+ callbackContext.sendPluginResult(result);
+ }
+ else if (action.equals("InstallMgr_uninstallModule")) {
+ installMgr.uninstallModule(args.getString(0));
+ callbackContext.success();
+ }
+ else if (action.equals("SWMgr_getExtraConfigSections")) {
+ JSONArray r = new JSONArray();
+ for (String s : mgr.getExtraConfigSections()) {
+ r.put(s);
+ }
+ callbackContext.success(r);
+ }
+ else if (action.equals("SWMgr_getExtraConfigKeys")) {
+ JSONArray r = new JSONArray();
+ for (String s : mgr.getExtraConfigKeys(args.getString(0))) {
+ r.put(s);
+ }
+ callbackContext.success(r);
+ }
+ else if (action.equals("SWMgr_getExtraConfigValue")) {
+ callbackContext.success(mgr.getExtraConfigValue(args.getString(0), args.getString(1)));
+ }
+ else if (action.equals("SWMgr_setExtraConfigValue")) {
+ mgr.setExtraConfigValue(args.getString(0), args.getString(1), args.getString(2));
+ callbackContext.success();
+ }
+ else if (action.equals("SWMgr_addExtraConfig")) {
+ JSONArray r = new JSONArray();
+ for (String s : mgr.addExtraConfig(args.getString(0))) {
+ r.put(s);
+ }
+ callbackContext.success(r);
+ }
+ else if (action.equals("SWMgr_getModInfoList")) {
+ JSONArray r = new JSONArray();
+ for (SWMgr.ModInfo mi : mgr.getModInfoList()) {
+ JSONObject m = new JSONObject();
+ m.put("name", mi.name);
+ m.put("description", mi.description);
+ m.put("category", mi.category);
+ m.put("language", mi.language);
+ m.put("version", mi.version);
+ m.put("delta", mi.delta);
+ r.put(m);
+ }
+ callbackContext.success(r);
+ }
+ else if (action.equals("SWMgr_getModuleByName")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ // didn't find module is not an error
+ if (mod == null) { callbackContext.success(); return true; }
+
+ JSONObject m = new JSONObject();
+ m.put("name", mod.getName());
+ m.put("description", mod.getDescription());
+ m.put("category", mod.getCategory());
+ m.put("direction", mod.getConfigEntry("Direction"));
+ m.put("language", mod.getConfigEntry("Lang"));
+ m.put("font", mod.getConfigEntry("Font"));
+ m.put("shortCopyright", mod.getConfigEntry("ShortCopyright"));
+ m.put("shortPromo", mod.getConfigEntry("ShortPromo"));
+ callbackContext.success(m);
+ }
+ else if (action.equals("SWModule_setKeyText")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ mod.setKeyText(args.getString(1));
+ callbackContext.success();
+ }
+ else if (action.equals("SWModule_getKeyText")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ callbackContext.success(mod.getKeyText());
+ }
+ else if (action.equals("SWModule_search")) {
+ this.searchReporterContext = callbackContext;
+ final SWModule mod = mgr.getModuleByName(args.getString(0));
+ final String expression = args.getString(1);
+ final int searchType = args.getInt(2);
+ final long flags = args.getLong(3);
+ final String scope = JSONObject.NULL.equals(args.getString(4)) || "null".equals(args.getString(4)) ? null : args.getString(4);
+ cordova.getThreadPool().execute(new Runnable() {
+ @Override
+ public void run() {
+
+ SWModule.SearchHit[] results = mod.search(expression, searchType, flags, scope, new SWModule.SearchProgressReporter() {
+ public void progressReport(int percent) {
+ try {
+ JSONObject m = new JSONObject();
+ m.put("status", "update");
+ m.put("percent", percent);
+ if (searchReporterContext != null) {
+ PluginResult result = new PluginResult(PluginResult.Status.OK, m);
+ result.setKeepCallback(true);
+ searchReporterContext.sendPluginResult(result);
+ }
+ }
+ catch (Exception e) { e.printStackTrace(); }
+ }
+ });
+ try {
+ JSONObject m = new JSONObject();
+ m.put("status", "complete");
+ m.put("percent", 100);
+ JSONArray r = new JSONArray();
+ for (SWModule.SearchHit s : results) {
+ JSONObject re = new JSONObject();
+ re.put("key", s.key);
+ re.put("score", s.score);
+ r.put(re);
+ }
+ m.put("results", r);
+ if (searchReporterContext != null) {
+ PluginResult result = new PluginResult(PluginResult.Status.OK, m);
+ result.setKeepCallback(false);
+ searchReporterContext.sendPluginResult(result);
+ }
+ }
+ catch (Exception e) { e.printStackTrace(); }
+ searchReporterContext = null;
+ }
+ });
+
+ PluginResult result = new PluginResult(PluginResult.Status.OK);
+ result.setKeepCallback(true);
+ callbackContext.sendPluginResult(result);
+ }
+ else if (action.equals("SWModule_getRenderChapter")) {
+ this.renderChapterContext = callbackContext;
+
+ final SWModule masterMod = mgr.getModuleByName(args.getString(0));
+ final SWModule mod = mgr.getModuleByName(args.getString(1));
+ if (masterMod == null) { callbackContext.error("couldn't find master module: " + args.getString(0)); return true; }
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(1)); return true; }
+
+ cordova.getThreadPool().execute(new Runnable() {
+ @Override
+ public void run() {
+
+ JSONArray r = new JSONArray();
+ try {
+ r = getRenderChapter(masterMod, mod);
+ } catch (JSONException e) { e.printStackTrace(); }
+ PluginResult result = new PluginResult(PluginResult.Status.OK, r);
+ result.setKeepCallback(false);
+ if (renderChapterContext != null) {
+ renderChapterContext.sendPluginResult(result);
+ renderChapterContext = null;
+ }
+ }
+ });
+
+ PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT);
+ result.setKeepCallback(true);
+ callbackContext.sendPluginResult(result);
+ }
+ else if (action.equals("SWMgr_registerBibleSyncListener")) {
+ final CallbackContext bibleSyncListener = callbackContext;
+
+ cordova.getThreadPool().execute(new Runnable() {
+ @Override
+ public void run() {
+ mgr.registerBibleSyncListener(new SWMgr.BibleSyncListener() {
+ public void messageReceived(String message) {
+ PluginResult result = new PluginResult(PluginResult.Status.OK, message);
+ result.setKeepCallback(true);
+ bibleSyncListener.sendPluginResult(result);
+ }
+ });
+ }
+ });
+
+ PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT);
+ result.setKeepCallback(true);
+ callbackContext.sendPluginResult(result);
+ }
+ else if (action.equals("SWMgr_setJavascript")) {
+ boolean val = args.getBoolean(0);
+ mgr.setJavascript(val);
+ callbackContext.success();
+ }
+ else if (action.equals("SWMgr_sendBibleSyncMessage")) {
+ String osisRef = args.getString(0);
+ mgr.sendBibleSyncMessage(osisRef);
+ callbackContext.success();
+ }
+ else if (action.equals("SWModule_getRenderText")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ callbackContext.success(mod.getRenderText());
+ }
+ else if (action.equals("SWModule_sendText")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ this.sendContext = callbackContext;
+ sendVerse(mod, new String[] { mod.getKeyText() }, cordova, this);
+ PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT);
+ result.setKeepCallback(true);
+ callbackContext.sendPluginResult(result);
+ }
+ else if (action.equals("SWModule_getRenderHeader")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ callbackContext.success(mod.getRenderHeader());
+ }
+ else if (action.equals("SWModule_getKeyChildren")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ JSONArray r = new JSONArray();
+ for (String k : mod.getKeyChildren()) {
+ r.put(k);
+ }
+ callbackContext.success(r);
+ }
+ else if (action.equals("SWModule_getConfigEntry")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ callbackContext.success(mod.getConfigEntry(args.getString(1)));
+ }
+ else if (action.equals("SWModule_getEntryAttribute")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ JSONArray r = new JSONArray();
+ for (String k : mod.getEntryAttribute(args.getString(1), args.getString(2), args.getString(3), args.getBoolean(4))) {
+ r.put(k);
+ }
+ callbackContext.success(r);
+ }
+ else if (action.equals("SWModule_popError")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ callbackContext.success((int)mod.error());
+ }
+ else if (action.equals("SWModule_next")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ mod.next();
+ callbackContext.success();
+ }
+ else if (action.equals("SWModule_previous")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ mod.previous();
+ callbackContext.success();
+ }
+ else if (action.equals("SWModule_begin")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ mod.begin();
+ callbackContext.success();
+ }
+ else if (action.equals("SWModule_getVerseKey")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ callbackContext.success(getVerseKey(mod.getKeyChildren()));
+ }
+ else if (action.equals("SWModule_getBookNames")) {
+ SWModule mod = mgr.getModuleByName(args.getString(0));
+ if (mod == null) { callbackContext.error("couldn't find module: " + args.getString(0)); return true; }
+ JSONArray r = new JSONArray();
+ for (String b : getBookNames(mod)) {
+ r.put(b);
+ }
+ callbackContext.success(r);
+ }
+ else if (action.equals("HTTPUtils_makeRequest")) {
+ final CallbackContext makeRequestContext = callbackContext;
+
+ final String url = args.getString(0);
+ final String postData = args.getString(1);
+ final int method = args.getInt(2);
+Log.d(TAG, "makeRequest(url: " + url + ", postData: " + postData + ", method: " + method);
+
+ cordova.getThreadPool().execute(new Runnable() {
+ @Override
+ public void run() {
+ String response = makeRequest(url, postData, method, null);
+ PluginResult result = new PluginResult(PluginResult.Status.OK, response);
+ result.setKeepCallback(false);
+ makeRequestContext.sendPluginResult(result);
+ }
+ });
+
+ PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT);
+ result.setKeepCallback(true);
+ callbackContext.sendPluginResult(result);
+ }
+ else return false;
+
+ return true;
+ }
+
+ JSONObject getVerseKey(String keyChildren[]) throws JSONException {
+ JSONObject retVal = new JSONObject();
+ if (keyChildren != null && keyChildren.length > 9) {
+ retVal.put("testament", Integer.parseInt(keyChildren[SWModule.VERSEKEY_TESTAMENT]));
+ retVal.put("book", Integer.parseInt(keyChildren[SWModule.VERSEKEY_BOOK]));
+ retVal.put("chapter", Integer.parseInt(keyChildren[SWModule.VERSEKEY_CHAPTER]));
+ retVal.put("verse", Integer.parseInt(keyChildren[SWModule.VERSEKEY_VERSE]));
+ retVal.put("chapterMax", Integer.parseInt(keyChildren[SWModule.VERSEKEY_CHAPTERMAX]));
+ retVal.put("verseMax", Integer.parseInt(keyChildren[SWModule.VERSEKEY_VERSEMAX]));
+ retVal.put("bookName", keyChildren[SWModule.VERSEKEY_BOOKNAME]);
+ retVal.put("osisRef", keyChildren[SWModule.VERSEKEY_OSISREF]);
+ retVal.put("shortText", keyChildren[SWModule.VERSEKEY_SHORTTEXT]);
+ retVal.put("bookAbbrev", keyChildren[SWModule.VERSEKEY_BOOKABBREV]);
+ }
+ return retVal;
+ }
+
+ public JSONArray getRenderChapter(SWModule masterMod, SWModule mod) throws JSONException {
+ JSONArray r = new JSONArray();
+
+ // save our current keys so we can set our mods back when we're done
+ String saveMasterKey = masterMod.getKeyText();
+ String saveKey = mod.getKeyText();
+
+ String currentKey[] = masterMod.getKeyChildren();
+
+ masterMod.setKeyText(currentKey[SWModule.VERSEKEY_BOOKABBREV]+"."+currentKey[SWModule.VERSEKEY_CHAPTER]+".1");
+
+ String [] verseKey = masterMod.getKeyChildren();
+ while (
+ masterMod.error() == 0
+ && currentKey[SWModule.VERSEKEY_BOOK].equals(verseKey[SWModule.VERSEKEY_BOOK])
+ && currentKey[SWModule.VERSEKEY_CHAPTER].equals(verseKey[SWModule.VERSEKEY_CHAPTER])) {
+
+ mod.setKeyText(verseKey[SWModule.VERSEKEY_OSISREF]);
+ char error = mod.error();
+ JSONObject v = new JSONObject();
+ if (((int)error) == 0) {
+ v.put("verse", getVerseKey(mod.getKeyChildren()));
+ String preVerse = "";
+ for (String h : mod.getEntryAttribute("Heading", "Preverse", "", true)) {
+ preVerse += h;
+ }
+ v.put("preVerse", preVerse);
+ v.put("text", mod.getRenderText());
+ }
+ else {
+/* null removes entry
+ v.put("verse", null);
+ v.put("preVerse", null);
+ v.put("text", null);
+*/
+ }
+ r.put(v);
+ masterMod.next();
+ verseKey = masterMod.getKeyChildren();
+ }
+
+ masterMod.setKeyText(saveMasterKey);
+ mod.setKeyText(saveKey);
+
+ return r;
+ }
+
+
+ public Vector<String> getBookNames(SWModule mod) {
+ Vector<String> books = new Vector<String>();
+ for (mod.begin(); mod.error() == 0; mod.setKeyText("+book")) {
+ books.add(mod.getKeyChildren()[9]);
+ }
+ return books;
+ }
+
+ //--------------------------------------------------------------------------
+ // LOCAL METHODS
+ //--------------------------------------------------------------------------
+
+ public void echo(CallbackContext callbackContext, String message) {
+ if (message != null && message.length() > 0) {
+ callbackContext.success(message);
+ }
+ else {
+ callbackContext.error("expected 1 arg");
+ }
+ }
+
+ public static final int METHOD_GET = 0;
+ public static final int METHOD_POST = 1;
+ public static final String METHODS_TEXT[] = { "GET", "POST" };
+
+ public static String makeRequest(String url, String postData, int method, Map<String, String> headers) {
+ HttpURLConnection connection = null;
+
+ Map<String, String> defaultHeaders = new HashMap<String, String>();
+ defaultHeaders.put("Accept", "*/*");
+// defaultHeaders.put("Content-Type", "application/xml");
+ defaultHeaders.put("Content-Type", "application/x-www-form-urlencoded");
+ if (method != METHOD_GET && postData != null) defaultHeaders.put("Content-Length", Integer.toString(postData.length()));
+
+ try {
+ if (headers != null) defaultHeaders.putAll(headers);
+
+ if (method == METHOD_GET && postData != null && postData.length() > 0) {
+ // some sanity checks for appending GET params to URL
+ if (url.indexOf("?") < 0) if (!postData.startsWith("?")) url += "?";
+ else if (!url.endsWith("&") && !postData.startsWith("&")) url += "&";
+
+ url += postData;
+ }
+
+ connection = (HttpURLConnection) new URL(url).openConnection();
+ connection.setRequestMethod(METHODS_TEXT[method]);
+ for (String k : defaultHeaders.keySet()) {
+ connection.setRequestProperty(k, defaultHeaders.get(k));
+ }
+ if (method == METHOD_POST) {
+ connection.setDoOutput(true);
+ if (postData != null) {
+ DataOutputStream dos = new DataOutputStream(connection.getOutputStream());
+ dos.writeBytes(postData);
+ dos.flush();
+ dos.close();
+ }
+ }
+ int responseCode = connection.getResponseCode();
+ BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ StringBuilder response = new StringBuilder();
+ String line;
+ while ((line = br.readLine()) != null) {
+ response.append(line);
+ }
+ /* do something special if success code?
+ if (responseCode >= 200 && responseCode < 300) {
+ }
+ else throw new Exception("HTTP Response: " + responseCode);
+ */
+ return response.toString();
+ }
+ catch (Exception e) { e.printStackTrace(); }
+ return null;
+ }
+ public static void sendVerse(final SWModule mod, final String verse[], final CordovaInterface cordova, final CordovaPlugin plugin) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ String subject = mod.getKeyChildren()[SWModule.VERSEKEY_SHORTTEXT] + " (" + mod.getName() + ")";
+ String message = mod.getStripText() + " --" +subject;
+ final Intent sendIntent = new Intent(Intent.ACTION_SEND);
+ sendIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+
+ sendIntent.setType("text/plain");
+
+ sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
+ sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
+
+ cordova.startActivityForResult(plugin, Intent.createChooser(sendIntent, null), 1);
+ }
+ });
+ }
+
+ public void onActivityResult(int requestCode, int resultCode, Intent intent) {
+ switch (requestCode) {
+ case 1:
+ sendContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, resultCode == Activity.RESULT_OK));
+ }
+ super.onActivityResult(requestCode, resultCode, intent);
+ }
+
+}
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/blackberry10/index.js b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/blackberry10/index.js
new file mode 100644
index 0000000..639ac64
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/blackberry10/index.js
@@ -0,0 +1,69 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+function getModelName () {
+ var modelName = window.qnx.webplatform.device.modelName;
+ //Pre 10.2 (meaning Z10 or Q10)
+ if (typeof modelName === "undefined") {
+ if (window.screen.height === 720 && window.screen.width === 720) {
+ if ( window.matchMedia("(-blackberry-display-technology: -blackberry-display-oled)").matches) {
+ modelName = "Q10";
+ } else {
+ modelName = "Q5";
+ }
+ } else if ((window.screen.height === 1280 && window.screen.width === 768) ||
+ (window.screen.height === 768 && window.screen.width === 1280)) {
+ modelName = "Z10";
+ } else {
+ modelName = window.qnx.webplatform.deviceName;
+ }
+ }
+
+ return modelName;
+}
+
+function getUUID () {
+ var uuid = "";
+ try {
+ //Must surround by try catch because this will throw if the app is missing permissions
+ uuid = window.qnx.webplatform.device.devicePin;
+ } catch (e) {
+ //DO Nothing
+ }
+ return uuid;
+}
+
+module.exports = {
+ getDeviceInfo: function (success, fail, args, env) {
+ var result = new PluginResult(args, env),
+ modelName = getModelName(),
+ uuid = getUUID(),
+ info = {
+ platform: "blackberry10",
+ version: window.qnx.webplatform.device.scmBundle,
+ model: modelName,
+ uuid: uuid,
+ cordova: "dev"
+ };
+
+ result.ok(info);
+ }
+};
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/firefoxos/DeviceProxy.js b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/firefoxos/DeviceProxy.js
new file mode 100644
index 0000000..f37e761
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/firefoxos/DeviceProxy.js
@@ -0,0 +1,39 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var firefoxos = require('cordova/platform');
+var cordova = require('cordova');
+
+module.exports = {
+ getDeviceInfo: function(success, error) {
+ setTimeout(function () {
+ success({
+ cordova: firefoxos.cordovaVersion,
+ platform: 'firefoxos',
+ model: null,
+ version: null,
+ uuid: null
+ });
+ }, 0);
+ }
+};
+
+require("cordova/firefoxos/commandProxy").add("Device", module.exports);
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/CDVDevice.h b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/CDVDevice.h
new file mode 100644
index 0000000..a146d88
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/CDVDevice.h
@@ -0,0 +1,30 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+#import <UIKit/UIKit.h>
+#import <Cordova/CDVPlugin.h>
+
+@interface CDVDevice : CDVPlugin
+{}
+
++ (NSString*)cordovaVersion;
+
+- (void)getDeviceInfo:(CDVInvokedUrlCommand*)command;
+
+@end
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/CDVDevice.m b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/CDVDevice.m
new file mode 100644
index 0000000..7e18d92
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/CDVDevice.m
@@ -0,0 +1,90 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+#import <Cordova/CDV.h>
+#import "CDVDevice.h"
+
+@implementation UIDevice (ModelVersion)
+
+- (NSString*)modelVersion
+{
+ size_t size;
+
+ sysctlbyname("hw.machine", NULL, &size, NULL, 0);
+ char* machine = malloc(size);
+ sysctlbyname("hw.machine", machine, &size, NULL, 0);
+ NSString* platform = [NSString stringWithUTF8String:machine];
+ free(machine);
+
+ return platform;
+}
+
+@end
+
+@interface CDVDevice () {}
+@end
+
+@implementation CDVDevice
+
+- (void)getDeviceInfo:(CDVInvokedUrlCommand*)command
+{
+ NSDictionary* deviceProperties = [self deviceProperties];
+ CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:deviceProperties];
+
+ /* Settings.plist
+ * Read the optional Settings.plist file and push these user-defined settings down into the web application.
+ * This can be useful for supplying build-time configuration variables down to the app to change its behavior,
+ * such as specifying Full / Lite version, or localization (English vs German, for instance).
+ */
+ // TODO: turn this into an iOS only plugin
+ NSDictionary* temp = [CDVViewController getBundlePlist:@"Settings"];
+
+ if ([temp respondsToSelector:@selector(JSONString)]) {
+ NSLog(@"Deprecation warning: window.Setting will be removed Aug 2013. Refer to https://issues.apache.org/jira/browse/CB-2433");
+ NSString* js = [NSString stringWithFormat:@"window.Settings = %@;", [temp JSONString]];
+ [self.commandDelegate evalJs:js];
+ }
+
+ [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
+}
+
+- (NSDictionary*)deviceProperties
+{
+ UIDevice* device = [UIDevice currentDevice];
+ NSMutableDictionary* devProps = [NSMutableDictionary dictionaryWithCapacity:4];
+
+ [devProps setObject:[device modelVersion] forKey:@"model"];
+ [devProps setObject:@"iOS" forKey:@"platform"];
+ [devProps setObject:[device systemVersion] forKey:@"version"];
+ [devProps setObject:[device uniqueAppInstanceIdentifier] forKey:@"uuid"];
+ [devProps setObject:[[self class] cordovaVersion] forKey:@"cordova"];
+
+ NSDictionary* devReturn = [NSDictionary dictionaryWithDictionary:devProps];
+ return devReturn;
+}
+
++ (NSString*)cordovaVersion
+{
+ return CDV_VERSION;
+}
+
+@end
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD-Bridging-Header.h b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD-Bridging-Header.h
new file mode 100644
index 0000000..234ef73
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD-Bridging-Header.h
@@ -0,0 +1 @@
+#import "flatapi.h"
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD.swift b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD.swift
new file mode 100644
index 0000000..1650725
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD.swift
@@ -0,0 +1,805 @@
+import MessageUI
+
+var mySWORDPlugin:SWORD? = nil
+
+@objc(SWORD) class SWORD : CDVPlugin, MFMessageComposeViewControllerDelegate {
+ var mgr = 0;
+ var installMgr = 0
+ var disclaimerConfirmed = false;
+
+ @objc(initSWORD:)
+ func initSWORD(command: CDVInvokedUrlCommand) {
+ mgr = 0
+ installMgr = 0
+ disclaimerConfirmed = false
+ mySWORDPlugin = nil
+ VERSEKEY_BOOKABBREV = Int(org_crosswire_sword_SWModule_VERSEKEY_BOOKABBREV);
+ VERSEKEY_BOOK = Int(org_crosswire_sword_SWModule_VERSEKEY_BOOK);
+ VERSEKEY_CHAPTER = Int(org_crosswire_sword_SWModule_VERSEKEY_CHAPTER);
+ VERSEKEY_VERSE = Int(org_crosswire_sword_SWModule_VERSEKEY_VERSE);
+ VERSEKEY_TESTAMENT = Int(org_crosswire_sword_SWModule_VERSEKEY_TESTAMENT);
+ VERSEKEY_OSISREF = Int(org_crosswire_sword_SWModule_VERSEKEY_OSISREF);
+ VERSEKEY_CHAPMAX = Int(org_crosswire_sword_SWModule_VERSEKEY_CHAPMAX);
+ VERSEKEY_VERSEMAX = Int(org_crosswire_sword_SWModule_VERSEKEY_VERSEMAX);
+ VERSEKEY_BOOKNAME = Int(org_crosswire_sword_SWModule_VERSEKEY_BOOKNAME);
+ VERSEKEY_SHORTTEXT = Int(org_crosswire_sword_SWModule_VERSEKEY_SHORTTEXT);
+
+ initMgr()
+
+ let libswordVersion = String(cString: org_crosswire_sword_SWMgr_version(mgr))
+ debugPrint("libswordVersion: " + libswordVersion)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "initSWORD; Version: " + libswordVersion), callbackId: command.callbackId)
+ }
+
+
+ func myToast(message: String) {
+ let toastController: UIAlertController = UIAlertController(title: "", message: message, preferredStyle: .alert)
+ self.viewController?.present(toastController, animated: true, completion: nil)
+ DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
+ toastController.dismiss(animated: true, completion: nil)
+ }
+ }
+
+
+ func initMgr() {
+ if (mgr == 0) {
+ let baseDir = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path)! + "/sword";
+ mgr = org_crosswire_sword_SWMgr_newWithPath(baseDir)
+debugPrint("initMgr, mgr: " + String(describing: mgr))
+ }
+ }
+
+
+ func reinitMgr() {
+ if (mgr != 0) {
+ org_crosswire_sword_SWMgr_delete(mgr)
+ }
+ mgr = 0
+ initMgr()
+ }
+
+
+ func reinitInstall() {
+ if (installMgr != 0) {
+ org_crosswire_sword_InstallMgr_delete(installMgr)
+ }
+ installMgr = 0
+ initInstall()
+ }
+
+ func logError(message: String) {
+ org_crosswire_sword_SWlog_logError(message)
+ }
+ func logDebug(message: String) {
+ org_crosswire_sword_SWlog_logDebug(message)
+ }
+ func logWarning(message: String) {
+ org_crosswire_sword_SWlog_logWarning(message)
+ }
+ func logInformation(message: String) {
+ org_crosswire_sword_SWlog_logInformation(message)
+ }
+ func logTimedInformation(message: String) {
+ org_crosswire_sword_SWlog_logTimedInformation(message)
+ }
+
+
+ func initInstall() {
+
+ if (installMgr == 0) {
+ logDebug(message: "initInstall: installMgr is null");
+ let baseDir = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path)! + "/sword";
+ installMgr = org_crosswire_sword_InstallMgr_new(baseDir, { (message: Optional<UnsafePointer<Int8>>, totalBytes: u_long, completedBytes: u_long) in
+ let msg = String(cString: message!)
+ if (msg == "update") {
+ let response = [
+ "status": "update",
+ "totalBytes": totalBytes,
+ "completedBytes": completedBytes
+ ] as [String : Any]
+ if (mySWORDPlugin != nil && mySWORDPlugin!.callbackID != "") {
+ let result = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: response)
+ result?.setKeepCallbackAs(true)
+ mySWORDPlugin!.commandDelegate!.send(result, callbackId: mySWORDPlugin!.callbackID)
+ }
+ }
+ else {
+ let response = [
+ "status": "preStatus",
+ "totalBytes": totalBytes,
+ "completedBytes": completedBytes,
+ "message": msg
+ ] as [String : Any]
+ if (mySWORDPlugin != nil && mySWORDPlugin!.callbackID != "") {
+ let result = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: response)
+ result?.setKeepCallbackAs(true)
+ mySWORDPlugin!.commandDelegate!.send(result, callbackId: mySWORDPlugin!.callbackID)
+ }
+ }
+ })
+ if (disclaimerConfirmed) {
+ org_crosswire_sword_InstallMgr_setUserDisclaimerConfirmed(installMgr)
+ }
+ logDebug(message: "initInstall: instantiated InstallMgr with baseDir: \(baseDir)");
+ }
+ }
+
+ @objc(SWMgr_getModuleByName:)
+ func SWMgr_getModuleByName(command: CDVInvokedUrlCommand) {
+
+ initMgr();
+
+ let modName = command.arguments[0] as? String ?? ""
+ let module = org_crosswire_sword_SWMgr_getModuleByName(mgr, modName)
+
+ if (module == 0) {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK), callbackId: command.callbackId)
+ return
+ }
+
+ let name = org_crosswire_sword_SWModule_getName(module)
+ let description = org_crosswire_sword_SWModule_getDescription(module)
+ let category = org_crosswire_sword_SWModule_getCategory(module)
+ let language = org_crosswire_sword_SWModule_getConfigEntry(module, "Lang")
+ let direction = org_crosswire_sword_SWModule_getConfigEntry(module, "Direction")
+ let font = org_crosswire_sword_SWModule_getConfigEntry(module, "Font")
+ let shortCopyright = org_crosswire_sword_SWModule_getConfigEntry(module, "ShortCopyright")
+ let shortPromo = org_crosswire_sword_SWModule_getConfigEntry(module, "ShortPromo")
+
+ let response = [
+ "name": name == nil ? "" : String(cString: name!),
+ "description": description == nil ? "" : String(cString: description!),
+ "category": category == nil ? "" : String(cString: category!),
+ "language": language == nil ? "" : String(cString: language!),
+ "direction": direction == nil ? "" : String(cString: direction!),
+ "font": font == nil ? "" : String(cString: font!),
+ "shortCopyright": shortCopyright == nil ? "" : String(cString: shortCopyright!),
+ "shortPromo": shortPromo == nil ? "" : String(cString: shortPromo!)
+ ]
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: response), callbackId: command.callbackId)
+ }
+
+
+
+ @objc(SWMgr_addExtraConfig:)
+ func SWMgr_addExtraConfig(command: CDVInvokedUrlCommand) {
+ let blob = command.arguments[0] as? String ?? ""
+ let baseDir = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path)! + "/sword";
+ let confPath = baseDir + "/extraConfig.conf";
+ let retVal = getStringArray(buffer: org_crosswire_sword_SWConfig_augmentConfig(confPath, blob))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+
+
+ @objc(SWMgr_setExtraConfigValue:)
+ func SWMgr_setExtraConfigValue(command: CDVInvokedUrlCommand) {
+ let section = command.arguments[0] as? String ?? ""
+ let key = command.arguments[1] as? String ?? ""
+ let val = command.arguments[2] as? String ?? ""
+ let baseDir = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path)! + "/sword";
+ let confPath = baseDir + "/extraConfig.conf";
+ org_crosswire_sword_SWConfig_setKeyValue(confPath, section, key, val)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "SWMgr_setExtraConfigValue"), callbackId: command.callbackId)
+ }
+
+
+ @objc(SWMgr_getExtraConfigValue:)
+ func SWMgr_getExtraConfigValue(command: CDVInvokedUrlCommand) {
+ let section = command.arguments[0] as? String ?? ""
+ let key = command.arguments[1] as? String ?? ""
+ let baseDir = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path)! + "/sword";
+ let confPath = baseDir + "/extraConfig.conf";
+ let retVal = String(cString:org_crosswire_sword_SWConfig_getKeyValue(confPath, section, key))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+
+
+ @objc(SWMgr_getExtraConfigKeys:)
+ func SWMgr_getExtraConfigKeys(command: CDVInvokedUrlCommand) {
+ let section = command.arguments[0] as? String ?? ""
+ let baseDir = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path)! + "/sword";
+ let confPath = baseDir + "/extraConfig.conf";
+ let retVal = getStringArray(buffer: org_crosswire_sword_SWConfig_getSectionKeys(confPath, section))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+
+
+ @objc(SWMgr_getExtraConfigSections:)
+ func SWMgr_getExtraConfigSections(command: CDVInvokedUrlCommand) {
+ let baseDir = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path)! + "/sword";
+ let confPath = baseDir + "/extraConfig.conf";
+ let retVal = getStringArray(buffer: org_crosswire_sword_SWConfig_getSections(confPath))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+
+
+ @objc(echo:)
+ func echo(command: CDVInvokedUrlCommand) {
+ let msg = command.arguments[0] as? String ?? ""
+ myToast(message: msg)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: msg), callbackId: command.callbackId)
+ }
+
+
+ @objc(HTTPUtils_makeRequest:)
+ func HTTPUtils_makeRequest(command: CDVInvokedUrlCommand) {
+ var url = command.arguments[0] as? String ?? ""
+ let postData = command.arguments[1] as? String ?? ""
+ let method = command.arguments[2] as? Int ?? 1
+
+ if method == 1 {
+ url += "?" + postData
+ }
+ var request = URLRequest(url: URL(string: url)!)
+ request.httpMethod = method == 1 ? "GET" : "POST"
+ if method == 2 {
+ request.httpBody = postData.data(using: .utf8)
+ }
+ let session = URLSession.shared
+ session.dataTask(with: request) {data, response, err in
+ let pluginResult = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: String(data: data!, encoding: String.Encoding.utf8))
+ pluginResult?.setKeepCallbackAs(false)
+ self.commandDelegate!.send(pluginResult, callbackId: command.callbackId)
+ }.resume()
+
+ let pluginResult = CDVPluginResult(status: CDVCommandStatus_NO_RESULT)
+ pluginResult?.setKeepCallbackAs(true)
+ self.commandDelegate!.send(pluginResult, callbackId: command.callbackId)
+ }
+
+
+ @objc(SWModule_getBookNames:)
+ func SWModule_getBookNames(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ var retVal = [String]()
+ org_crosswire_sword_SWModule_begin(mod)
+ while (org_crosswire_sword_SWModule_popError(mod) == 0) {
+ retVal.append(getStringArray(buffer: org_crosswire_sword_SWModule_getKeyChildren(mod))[VERSEKEY_BOOKABBREV])
+ org_crosswire_sword_SWModule_setKeyText(mod, "+book")
+ }
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+
+
+ @objc(SWModule_getVerseKey:)
+ func SWModule_getVerseKey(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let module = getModule(command: command)
+ if (module != 0) {
+ let retVal = getVerseKey(keyChildren: getStringArray(buffer: org_crosswire_sword_SWModule_getKeyChildren(module)))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(SWModule_begin:)
+ func SWModule_begin(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ org_crosswire_sword_SWModule_begin(mod)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "SWModule_begin"), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(SWModule_previous:)
+ func SWModule_previous(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ org_crosswire_sword_SWModule_previous(mod)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "SWModule_previous"), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(SWModule_next:)
+ func SWModule_next(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ org_crosswire_sword_SWModule_next(mod)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "SWModule_next"), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(SWModule_popError:)
+ func SWModule_popError(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ let error = Int(org_crosswire_sword_SWModule_popError(mod))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: error), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(SWModule_getEntryAttribute:)
+ func SWModule_getEntryAttribute(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ let retVal = getStringArray(buffer: org_crosswire_sword_SWModule_getEntryAttribute(mod, command.arguments[1] as? String ?? "", command.arguments[2] as? String ?? "", command.arguments[3] as? String ?? "", (command.arguments[4] as? Bool ?? false) ? 1 : 0))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(SWModule_getConfigEntry:)
+ func SWModule_getConfigEntry(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ let val = org_crosswire_sword_SWModule_getConfigEntry(mod, command.arguments[1] as? String ?? "")
+ let retVal = val == nil ? nil : String(cString: val!)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(SWModule_getKeyChildren:)
+ func SWModule_getKeyChildren(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ let retVal = getStringArray(buffer: org_crosswire_sword_SWModule_getKeyChildren(mod))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(SWModule_getRenderHeader:)
+ func SWModule_getRenderHeader(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ let header = String(cString: org_crosswire_sword_SWModule_getRenderHeader(mod))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: header), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+ func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
+ self.webView.inputViewController?.dismiss(animated: true, completion: {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK), callbackId: self.callbackID)
+ })
+ }
+
+ func sendVerse(module: Int, keyText: String) {
+ if MFMessageComposeViewController.canSendText() {
+ let controller = MFMessageComposeViewController()
+ let verseKey = getStringArray(buffer: org_crosswire_sword_SWModule_getKeyChildren(module))
+ let modName = String(cString: org_crosswire_sword_SWModule_getName(module))
+ let verseText = String(cString: org_crosswire_sword_SWModule_stripText(module))
+
+
+ controller.body = verseText + " --" + verseKey[VERSEKEY_SHORTTEXT] + " (" + modName + ")"
+ controller.recipients = [""]
+ controller.messageComposeDelegate = self
+ self.webView.inputViewController?.present(controller, animated: true, completion: nil)
+ }
+ }
+ @objc(SWModule_sendText:)
+ func SWModule_sendText(command: CDVInvokedUrlCommand) {
+ initMgr()
+// Switch this to use cordova social plugin
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ mySWORDPlugin = self
+ callbackID = command.callbackId
+ let keyText = String(cString: org_crosswire_sword_SWModule_getKeyText(mod))
+ sendVerse(module: mod, keyText: keyText)
+ let result = CDVPluginResult(status: CDVCommandStatus_NO_RESULT)
+ result?.setKeepCallbackAs(true)
+ self.commandDelegate!.send(result, callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+ @objc(SWModule_getRenderText:)
+ func SWModule_getRenderText(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ let retVal = String(cString: org_crosswire_sword_SWModule_renderText(mod))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(SWMgr_registerBibleSyncListener:)
+ func SWMgr_registerBibleSyncListener(command: CDVInvokedUrlCommand) {
+ let pluginResult = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "SWMgr_registerBibleSyncListener")
+ self.commandDelegate!.send(pluginResult, callbackId: command.callbackId)
+ }
+
+
+ @objc(SWModule_getRenderChapter:)
+ func SWModule_getRenderChapter(command: CDVInvokedUrlCommand) {
+ initMgr()
+
+// DispatchQueue.global().async {
+ self.initMgr()
+ let masterMod = self.getModule(command: command, nameArgNumber: 0)
+ let mod = self.getModule(command: command, nameArgNumber: 1)
+ if (masterMod != 0 && mod != 0) {
+ let r = self.renderChapter(masterMod: masterMod, mod: mod)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: r), callbackId: command.callbackId)
+ }
+// }
+/*
+ var pluginResult = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "SWModule_getRenderChapter")
+ pluginResult?.setKeepCallbackAs(true)
+ self.commandDelegate!.send(pluginResult, callbackId: command.callbackId)
+*/
+ }
+
+ var VERSEKEY_BOOK = Int(org_crosswire_sword_SWModule_VERSEKEY_BOOK);
+ var VERSEKEY_CHAPTER = Int(org_crosswire_sword_SWModule_VERSEKEY_CHAPTER);
+ var VERSEKEY_VERSE = Int(org_crosswire_sword_SWModule_VERSEKEY_VERSE);
+ var VERSEKEY_TESTAMENT = Int(org_crosswire_sword_SWModule_VERSEKEY_TESTAMENT);
+ var VERSEKEY_OSISREF = Int(org_crosswire_sword_SWModule_VERSEKEY_OSISREF);
+ var VERSEKEY_CHAPMAX = Int(org_crosswire_sword_SWModule_VERSEKEY_CHAPMAX);
+ var VERSEKEY_VERSEMAX = Int(org_crosswire_sword_SWModule_VERSEKEY_VERSEMAX);
+ var VERSEKEY_BOOKNAME = Int(org_crosswire_sword_SWModule_VERSEKEY_BOOKNAME);
+ var VERSEKEY_SHORTTEXT = Int(org_crosswire_sword_SWModule_VERSEKEY_SHORTTEXT);
+ var VERSEKEY_BOOKABBREV = Int(org_crosswire_sword_SWModule_VERSEKEY_BOOKABBREV);
+
+ func renderChapter(masterMod: Int, mod: Int) -> [[String: Any]] {
+ let saveMasterKey = String(cString: org_crosswire_sword_SWModule_getKeyText(masterMod))
+ let saveKey = String(cString: org_crosswire_sword_SWModule_getKeyText(mod))
+ var r = [[String: Any]]()
+ var currentKey = getStringArray(buffer: org_crosswire_sword_SWModule_getKeyChildren(masterMod))
+ let book = currentKey[VERSEKEY_BOOKABBREV]
+ let chapter = currentKey[VERSEKEY_CHAPTER]
+ org_crosswire_sword_SWModule_setKeyText(masterMod, book + "." + chapter + ".1")
+ var verseKey = getStringArray(buffer: org_crosswire_sword_SWModule_getKeyChildren(masterMod))
+ while (org_crosswire_sword_SWModule_popError(masterMod) == 0
+ && currentKey[VERSEKEY_BOOK] == verseKey[VERSEKEY_BOOK]
+ && currentKey[VERSEKEY_CHAPTER] == verseKey[VERSEKEY_CHAPTER]
+ ) {
+ org_crosswire_sword_SWModule_setKeyText(mod, verseKey[VERSEKEY_OSISREF])
+ let error = org_crosswire_sword_SWModule_popError(mod)
+ var v = [String:Any]()
+ if (error == 0) {
+ v["verse"] = getVerseKey(keyChildren: getStringArray(buffer: org_crosswire_sword_SWModule_getKeyChildren(mod)))
+ var preVerse = ""
+ for i in getStringArray(buffer: org_crosswire_sword_SWModule_getEntryAttribute(mod, "Heading", "Preverse", "", 1)) {
+ preVerse += i
+ }
+ v["preVerse"] = preVerse
+ v["text"] = String(cString: org_crosswire_sword_SWModule_renderText(mod))
+ }
+ else {
+
+ }
+ r.append(v)
+ org_crosswire_sword_SWModule_next(masterMod)
+ verseKey = getStringArray(buffer: org_crosswire_sword_SWModule_getKeyChildren(masterMod))
+ }
+ org_crosswire_sword_SWModule_setKeyText(masterMod, saveMasterKey)
+ org_crosswire_sword_SWModule_setKeyText(mod, saveKey)
+
+ return r
+
+ }
+
+ func getVerseKey(keyChildren:[String]) -> [String:Any] {
+ var retVal = [String:Any]()
+ if (keyChildren.count > 9) {
+ retVal["testament"] = Int(keyChildren[VERSEKEY_TESTAMENT]);
+ retVal["book"] = Int(keyChildren[VERSEKEY_BOOK]);
+ retVal["chapter"] = Int(keyChildren[VERSEKEY_CHAPTER]);
+ retVal["verse"] = Int(keyChildren[VERSEKEY_VERSE]);
+ retVal["chapterMax"] = Int(keyChildren[VERSEKEY_CHAPMAX]);
+ retVal["verseMax"] = Int(keyChildren[VERSEKEY_VERSEMAX]);
+ retVal["bookName"] = keyChildren[VERSEKEY_BOOKNAME];
+ retVal["osisRef"] = keyChildren[VERSEKEY_OSISREF];
+ retVal["shortText"] = keyChildren[VERSEKEY_SHORTTEXT];
+ retVal["bookAbbrev"] = keyChildren[VERSEKEY_BOOKABBREV];
+ }
+ return retVal;
+ }
+
+
+ @objc(SWModule_search:)
+ func SWModule_search(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let mod = getModule(command: command)
+ if (mod != 0) {
+ let expression = command.arguments[1] as? String ?? ""
+ let searchType = command.arguments[2] as? Int32 ?? 0
+ let flags = command.arguments[3] as? Int ?? 0
+ let scope = command.arguments.count < 5 ? nil : command.arguments[4] as? String ?? nil
+ callbackID = command.callbackId
+ DispatchQueue.global().async {
+ mySWORDPlugin = self
+ let buffer = org_crosswire_sword_SWModule_search(mod, expression, searchType, flags, scope, { (percent: Int32) in
+ let response = [
+ "status": "update",
+ "percent": percent
+ ] as [String : Any]
+ if (mySWORDPlugin != nil && mySWORDPlugin!.callbackID != "") {
+ let result = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: response)
+ result?.setKeepCallbackAs(true)
+ mySWORDPlugin!.commandDelegate!.send(result, callbackId: mySWORDPlugin!.callbackID)
+ }
+ });
+
+ self.callbackID = ""
+ var response = [
+ "status": "complete",
+ "percent": 100
+ ] as [String : Any]
+
+ //UnsafeMutablePointer<UnsafePointer<Int8>?>!) -> [String] {
+ var b = buffer
+ var count = 0
+ while let i = b?.pointee {
+ if i.key == nil {
+ break
+ }
+ count = count + 1
+ b = b?.advanced(by: 1)
+ }
+ let searchResults = UnsafeBufferPointer<org_crosswire_sword_SearchHit>(start: buffer, count: count);
+ var results = [[String:Any]]()
+ for i in searchResults {
+ let sr = [
+ "key": String(cString: i.key),
+ "score": Int(i.score)
+ ] as [String : Any]
+ results.append(sr)
+ }
+ response["results"] = results
+
+ let result = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: response)
+ result?.setKeepCallbackAs(false)
+ self.commandDelegate!.send(result, callbackId: command.callbackId)
+ }
+
+ let result = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "SWModule_search")
+ result?.setKeepCallbackAs(true)
+ self.commandDelegate!.send(result, callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR), callbackId: command.callbackId)
+ }
+ }
+
+
+ func getModule(command: CDVInvokedUrlCommand, nameArgNumber: Int = 0) -> Int {
+ initMgr()
+ let modName = command.arguments[nameArgNumber] as? String ?? ""
+ let module = org_crosswire_sword_SWMgr_getModuleByName(mgr, modName)
+ if (module == 0) {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR, messageAs: "couldn't find module \(modName)"), callbackId: command.callbackId)
+ }
+ return module
+ }
+
+
+ @objc(SWModule_getKeyText:)
+ func SWModule_getKeyText(command: CDVInvokedUrlCommand) {
+ let module = getModule(command: command)
+ if (module != 0) {
+ let keyText = org_crosswire_sword_SWModule_getKeyText(module)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: keyText == nil ? "" : String(cString: keyText!)), callbackId: command.callbackId)
+ }
+ }
+
+
+
+ @objc(SWModule_setKeyText:)
+ func SWModule_setKeyText(command: CDVInvokedUrlCommand) {
+ let module = getModule(command: command)
+ let keyText = command.arguments[1] as? String ?? ""
+ if (module != 0) {
+ org_crosswire_sword_SWModule_setKeyText(module, keyText)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "SWModule_setKeyText"), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(InstallMgr_uninstallModule:)
+ func InstallMgr_uninstallModule(command: CDVInvokedUrlCommand) {
+ initInstall()
+ initMgr()
+ let retVal = org_crosswire_sword_InstallMgr_uninstallModule(installMgr, mgr, command.arguments[0] as? String ?? "")
+ if (retVal == 0) {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
+ }
+ else {
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_ERROR, messageAs: retVal), callbackId: command.callbackId)
+ }
+ }
+
+ var callbackID:String = ""
+ @objc(InstallMgr_remoteInstallModule:)
+ func InstallMgr_remoteInstallModule(command: CDVInvokedUrlCommand) {
+ initInstall()
+ initMgr()
+ let repo = command.arguments[0] as? String ?? ""
+ let modName = command.arguments[1] as? String ?? ""
+ callbackID = command.callbackId
+ DispatchQueue.global().async {
+ mySWORDPlugin = self
+ org_crosswire_sword_InstallMgr_remoteInstallModule(self.installMgr, self.mgr, repo, modName)
+
+ self.reinitMgr()
+ self.callbackID = ""
+ let response = [
+ "status": "complete",
+ "totalBytes": 0,
+ "completedBytes": 0,
+ "message": "Complete"
+ ] as [String : Any]
+ let result = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: response)
+ result?.setKeepCallbackAs(false)
+ self.commandDelegate!.send(result, callbackId: command.callbackId)
+ }
+
+ let result = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "InstallMgr_remoteInstallModule")
+ result?.setKeepCallbackAs(true)
+ self.commandDelegate!.send(result, callbackId: command.callbackId)
+ }
+
+
+ @objc(InstallMgr_getRemoteModInfoList:)
+ func InstallMgr_getRemoteModInfoList(command: CDVInvokedUrlCommand) {
+ initInstall()
+ initMgr()
+ let buffer = org_crosswire_sword_InstallMgr_getRemoteModInfoList(installMgr, mgr, command.arguments[0] as? String ?? "")
+ var count = 0
+ var b = buffer
+ while let i = b?.pointee {
+ if (i.name == nil) {
+ break
+ }
+ count = count + 1
+ b = b?.advanced(by: 1)
+ }
+ let modInfoList = Array(UnsafeBufferPointer<org_crosswire_sword_ModInfo>(start: buffer, count: count));
+ var mods = [[AnyHashable : Any]]()
+ for i in modInfoList {
+ let modInfo = [
+ "name": String(cString: i.name),
+ "description": String(cString: i.description),
+ "category": String(cString: i.category),
+ "language": String(cString: i.language),
+ "delta": String(cString: i.delta),
+ "version": String(cString: i.version)
+ ] as [AnyHashable : Any]
+ mods.append(modInfo)
+ }
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: mods), callbackId: command.callbackId)
+ }
+
+
+ @objc(InstallMgr_refreshRemoteSource:)
+ func InstallMgr_refreshRemoteSource(command: CDVInvokedUrlCommand) {
+ initInstall()
+ DispatchQueue.global().async {
+ mySWORDPlugin = self
+ self.callbackID = ""
+ org_crosswire_sword_InstallMgr_refreshRemoteSource(self.installMgr, command.arguments[0] as? String ?? "")
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "InstallMgr_refreshRemoteSource"), callbackId: command.callbackId)
+ }
+ }
+
+
+ func getStringArray(buffer: UnsafeMutablePointer<UnsafePointer<Int8>?>!) -> [String] {
+ var sources = [String]()
+ var b = buffer
+ while let i = b?.pointee {
+ sources.append(String(cString: i))
+ b = b?.advanced(by: 1)
+ }
+ return sources
+ }
+
+
+ @objc(InstallMgr_getRemoteSources:)
+ func InstallMgr_getRemoteSources(command: CDVInvokedUrlCommand) {
+ initInstall()
+ let sources = getStringArray(buffer: org_crosswire_sword_InstallMgr_getRemoteSources(installMgr))
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: sources), callbackId: command.callbackId)
+ }
+
+
+ @objc(InstallMgr_syncConfig:)
+ func InstallMgr_syncConfig(command: CDVInvokedUrlCommand) {
+
+ initInstall()
+ DispatchQueue.global().async {
+ self.callbackID = ""
+ mySWORDPlugin = self
+ org_crosswire_sword_InstallMgr_syncConfig(self.installMgr)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "InstallMgr_syncConfig"), callbackId: command.callbackId)
+ }
+ }
+
+
+ @objc(InstallMgr_setUserDisclaimerConfirmed:)
+ func InstallMgr_setUserDisclaimerConfirmed(command: CDVInvokedUrlCommand) {
+ initInstall()
+ org_crosswire_sword_InstallMgr_setUserDisclaimerConfirmed(installMgr)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "InstallMgr_setUserDisclaimerConfirmed"), callbackId: command.callbackId)
+ }
+
+
+ @objc(SWMgr_setJavascript:)
+ func SWMgr_setJavascript(command: CDVInvokedUrlCommand) {
+ initMgr()
+ org_crosswire_sword_SWMgr_setJavascript(mgr, command.arguments[0] as? Bool ?? true ? 1 : 0)
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "SWMgr_setJavascript"), callbackId: command.callbackId)
+ }
+
+ @objc(SWMgr_getModInfoList:)
+ func SWMgr_getModInfoList(command: CDVInvokedUrlCommand) {
+ initMgr()
+ let buffer = org_crosswire_sword_SWMgr_getModInfoList(mgr)
+ var b = buffer
+ var count = 0
+ while let i = b?.pointee {
+ if i.name == nil {
+ break
+ }
+ b = b?.advanced(by: 1)
+ count = count + 1
+ }
+ let modInfoList = Array(UnsafeBufferPointer<org_crosswire_sword_ModInfo>(start: buffer, count: count));
+
+ var mods = [[AnyHashable : Any]]()
+ for i in modInfoList {
+ let modInfo = [
+ "name": String(cString: i.name),
+ "description": String(cString: i.description),
+ "category": String(cString: i.category),
+ "language": String(cString: i.language),
+ "delta": i.delta == nil ? "" : String(cString: i.delta),
+ "version": i.version == nil ? "" : String(cString: i.version)
+ ] as [AnyHashable : Any]
+ mods.append(modInfo)
+ }
+ self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: mods), callbackId: command.callbackId)
+ }
+/*
+SWMgr_registerBibleSyncListener
+SWMgr_sendBibleSyncMessage
+*/
+}
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/tizen/DeviceProxy.js b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/tizen/DeviceProxy.js
new file mode 100644
index 0000000..2afc324
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/tizen/DeviceProxy.js
@@ -0,0 +1,39 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var tizen = require('cordova/platform');
+var cordova = require('cordova');
+
+module.exports = {
+ getDeviceInfo: function(success, error) {
+ setTimeout(function () {
+ success({
+ cordova: tizen.cordovaVersion,
+ platform: 'tizen',
+ model: null,
+ version: null,
+ uuid: null
+ });
+ }, 0);
+ }
+};
+
+require("cordova/tizen/commandProxy").add("Device", module.exports);
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.cpp b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.cpp
new file mode 100644
index 0000000..eb5a012
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.cpp
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2011 Wolfgang Koller - http://www.gofg.at/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <QDeviceInfo>
+#include <QtSystemInfo>
+
+#include"device.h"
+
+#define CORDOVA "3.0.0"
+
+Device::Device(Cordova *cordova) : CPlugin(cordova) {
+}
+
+static QString getOSName() {
+#ifdef Q_OS_SYMBIAN
+ QString platform = "Symbian";
+#endif
+#ifdef Q_OS_WIN
+ QString platform = "Windows";
+#endif
+#ifdef Q_OS_WINCE
+ QString platform = "Windows CE";
+#endif
+#ifdef Q_OS_LINUX
+ QString platform = "Linux";
+#endif
+ return platform;
+}
+
+void Device::getInfo(int scId, int ecId) {
+ Q_UNUSED(ecId)
+
+ QDeviceInfo systemDeviceInfo;
+ QDeviceInfo systemInfo;
+
+ QString platform = getOSName();
+
+ QString uuid = systemDeviceInfo.uniqueDeviceID();
+ if (uuid.isEmpty()) {
+ QString deviceDescription = systemInfo.imei(0) + ";" + systemInfo.manufacturer() + ";" + systemInfo.model() + ";" + systemInfo.productName() + ";" + platform;
+ QString user = qgetenv("USER");
+ if (user.isEmpty()) {
+ user = qgetenv("USERNAME");
+ if (user.isEmpty())
+ user = QDir::homePath();
+ }
+ uuid = QString(QCryptographicHash::hash((deviceDescription + ";" + user).toUtf8(), QCryptographicHash::Md5).toHex());
+ }
+
+ this->cb(scId, systemDeviceInfo.model(), CORDOVA, platform, uuid, systemInfo.version(QDeviceInfo::Os));
+}
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.h b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.h
new file mode 100644
index 0000000..91cb937
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2011 Wolfgang Koller - http://www.gofg.at/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef DEVICE_H_FDSAFAS
+#define DEVICE_H_FDSAFAS
+
+#include <QtCore>
+
+#include <cplugin.h>
+
+class Device: public CPlugin {
+ Q_OBJECT
+public:
+ explicit Device(Cordova *cordova);
+
+ virtual const QString fullName() override {
+ return Device::fullID();
+ }
+
+ virtual const QString shortName() override {
+ return "Device";
+ }
+
+ static const QString fullID() {
+ return "com.cordova.Device";
+ }
+
+signals:
+
+public slots:
+ void getInfo(int scId, int ecId);
+};
+
+#endif
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.js b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.js
new file mode 100644
index 0000000..3adb110
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ubuntu/device.js
@@ -0,0 +1,34 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var cordova = require('cordova');
+var exec = require('cordova/exec');
+
+module.exports = {
+ getInfo:function(win,fail,args) {
+ Cordova.exec(function (model, cordova, platform, uuid, version) {
+ win({name: name, model: model, cordova: cordova,
+ platform: platform, uuid: uuid, version: version});
+ }, null, "com.cordova.Device", "getInfo", []);
+ }
+};
+
+require("cordova/exec/proxy").add("Device", module.exports);
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/windows8/DeviceProxy.js b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/windows8/DeviceProxy.js
new file mode 100644
index 0000000..16145c0
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/windows8/DeviceProxy.js
@@ -0,0 +1,50 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+
+var cordova = require('cordova');
+var utils = require('cordova/utils');
+
+module.exports = {
+
+ getDeviceInfo:function(win,fail,args) {
+
+ // deviceId aka uuid, stored in Windows.Storage.ApplicationData.current.localSettings.values.deviceId
+ var deviceId;
+
+ var localSettings = Windows.Storage.ApplicationData.current.localSettings;
+
+ if (localSettings.values.deviceId) {
+ deviceId = localSettings.values.deviceId;
+ }
+ else {
+ deviceId = localSettings.values.deviceId = utils.createUUID();
+ }
+
+ setTimeout(function () {
+ win({ platform: "windows8", version: "8", uuid: deviceId, cordova: '0.0.0', model: window.clientInformation.platform });
+ }, 0);
+ }
+
+};
+
+require("cordova/windows8/commandProxy").add("Device", module.exports);
+
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/wp/Device.cs b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/wp/Device.cs
new file mode 100644
index 0000000..0d2576d
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/wp/Device.cs
@@ -0,0 +1,135 @@
+/*
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+using System;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using Microsoft.Phone.Info;
+using System.IO.IsolatedStorage;
+using System.Windows.Resources;
+using System.IO;
+using System.Diagnostics;
+
+namespace WPCordovaClassLib.Cordova.Commands
+{
+ public class Device : BaseCommand
+ {
+ public void getDeviceInfo(string notused)
+ {
+
+ string res = String.Format("\"name\":\"{0}\",\"cordova\":\"{1}\",\"platform\":\"{2}\",\"uuid\":\"{3}\",\"version\":\"{4}\",\"model\":\"{5}\"",
+ this.name,
+ this.cordova,
+ this.platform,
+ this.uuid,
+ this.version,
+ this.model);
+
+
+
+ res = "{" + res + "}";
+ //Debug.WriteLine("Result::" + res);
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK, res));
+ }
+
+ public string model
+ {
+ get
+ {
+ return DeviceStatus.DeviceName;
+ //return String.Format("{0},{1},{2}", DeviceStatus.DeviceManufacturer, DeviceStatus.DeviceHardwareVersion, DeviceStatus.DeviceFirmwareVersion);
+ }
+ }
+
+ public string name
+ {
+ get
+ {
+ return DeviceStatus.DeviceName;
+
+ }
+ }
+
+ public string cordova
+ {
+ get
+ {
+ // TODO: should be able to dynamically read the Cordova version from somewhere...
+ return "3.0.0";
+ }
+ }
+
+ public string platform
+ {
+ get
+ {
+ return Environment.OSVersion.Platform.ToString();
+ }
+ }
+
+ public string uuid
+ {
+ get
+ {
+ string returnVal = "";
+ object id;
+ UserExtendedProperties.TryGetValue("ANID", out id);
+
+ if (id != null)
+ {
+ returnVal = id.ToString().Substring(2, 32);
+ }
+ else
+ {
+ returnVal = "???unknown???";
+
+ using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication())
+ {
+ try
+ {
+ IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream("DeviceID.txt", FileMode.Open, FileAccess.Read, appStorage);
+
+ using (StreamReader reader = new StreamReader(fileStream))
+ {
+ returnVal = reader.ReadLine();
+ }
+ }
+ catch (Exception /*ex*/)
+ {
+
+ }
+ }
+ }
+
+ return returnVal;
+ }
+ }
+
+ public string version
+ {
+ get
+ {
+ return Environment.OSVersion.Version.ToString();
+ }
+ }
+
+ }
+}
diff --git a/bindings/cordova/org.crosswire.sword.cordova.SWORD/www/SWORD.js b/bindings/cordova/org.crosswire.sword.cordova.SWORD/www/SWORD.js
new file mode 100644
index 0000000..3362359
--- /dev/null
+++ b/bindings/cordova/org.crosswire.sword.cordova.SWORD/www/SWORD.js
@@ -0,0 +1,414 @@
+var argscheck = require('cordova/argscheck'),
+ channel = require('cordova/channel'),
+ utils = require('cordova/utils'),
+ exec = require('cordova/exec'),
+ cordova = require('cordova');
+
+channel.createSticky('onSWORDReady');
+// Tell cordova channel to wait on the CordovaInfoReady event
+channel.waitForInitialization('onSWORDReady');
+
+
+function InstallMgr() {
+}
+
+InstallMgr.prototype.setUserDisclaimerConfirmed = function(callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "InstallMgr_setUserDisclaimerConfirmed", []
+ );
+ return retVal;
+}
+
+InstallMgr.prototype.syncConfig = function(callback, progressNotify) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "InstallMgr_syncConfig", [progressNotify]
+ );
+ return retVal;
+}
+
+
+InstallMgr.prototype.getRemoteSources = function(callback) {
+ var retVal = [];
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "InstallMgr_getRemoteSources", []
+ );
+ return retVal;
+}
+
+
+InstallMgr.prototype.refreshRemoteSource = function(sourceName, callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "InstallMgr_refreshRemoteSource", [sourceName]
+ );
+ return retVal;
+}
+
+InstallMgr.prototype.getRemoteModInfoList = function(sourceName, callback) {
+ var retVal = [];
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "InstallMgr_getRemoteModInfoList", [sourceName]
+ );
+ return retVal;
+}
+
+// callback({ status : preStatus|update|complete, totalBytes : n, completedBytes : n, message : displayable });
+InstallMgr.prototype.remoteInstallModule = function(sourceName, modName, callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "InstallMgr_remoteInstallModule", [sourceName, modName]
+ );
+ return retVal;
+}
+
+InstallMgr.prototype.uninstallModule = function(modName, callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "InstallMgr_uninstallModule", [modName]
+ );
+ return retVal;
+}
+
+function SWModule(modInfo) {
+ this.name = modInfo.name;
+ this.description = modInfo.description;
+ this.category = modInfo.category;
+ this.direction = modInfo.direction;
+ this.language = modInfo.language;
+ this.font = modInfo.font;
+ this.shortCopyright = modInfo.shortCopyright;
+ this.shortPromo = modInfo.shortPromo;
+}
+
+SWModule.prototype.SEARCHTYPE_REGEX = 1;
+SWModule.prototype.SEARCHTYPE_PHRASE = -1;
+SWModule.prototype.SEARCHTYPE_MULTIWORD = -2;
+SWModule.prototype.SEARCHTYPE_ENTRYATTR = -3;
+SWModule.prototype.SEARCHTYPE_LUCENE = -4;
+
+SWModule.prototype.SEARCHOPTION_ICASE = 2;
+
+
+SWModule.prototype.setKeyText = function(keyText, callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_setKeyText", [this.name, keyText]
+ );
+ return retVal;
+}
+
+SWModule.prototype.search = function(expression, searchType, flags, scope, callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_search", [this.name, expression, searchType, flags, scope]
+ );
+ return retVal;
+}
+
+SWModule.prototype.getKeyText = function(callback) {
+ var retVal = null;
+ exec(callback?callback:function(m) { retVal = m; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_getKeyText", [this.name]
+ );
+ return retVal;
+}
+
+SWModule.prototype.getRenderText = function(callback) {
+ var retVal = null;
+ exec(callback?callback:function(m) { retVal = m; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_getRenderText", [this.name]
+ );
+ return retVal;
+}
+
+SWModule.prototype.shareVerse = function(callback) {
+ var retVal = null;
+ exec(callback?callback:function(m) { retVal = m; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_sendText", [this.name]
+ );
+ return retVal;
+}
+
+/*
+ * masterMod - SWModule to use for traversing chapter; null if self
+ * useful for parallel display with alternate v11ns
+ *
+ * returns [ { verse : verseKey, preVerse : 'text', text : 'text' }, ... }
+ */
+SWModule.prototype.getRenderChapter = function(masterMod, callback) {
+ var retVal = null;
+ if (!masterMod) masterMod = this;
+ exec(callback?callback:function(m) { retVal = m; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_getRenderChapter", [masterMod.name, this.name]
+ );
+ return retVal;
+}
+
+SWModule.prototype.getRenderHeader = function(callback) {
+ var retVal = null;
+ exec(callback?callback:function(m) { retVal = m; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_getRenderHeader", [this.name]
+ );
+ return retVal;
+}
+
+SWModule.prototype.getKeyChildren = function(callback) {
+ var retVal = [];
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_getKeyChildren", [this.name]
+ );
+ return retVal;
+}
+
+SWModule.prototype.getVerseKey = function(callback) {
+ var retVal = {};
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_getVerseKey", [this.name]
+ );
+ return retVal;
+}
+
+SWModule.prototype.getConfigEntry = function(key, callback) {
+ var retVal = '';
+ exec(callback?callback:function(m) { if (m) retVal = m; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_getConfigEntry", [this.name, key]
+ );
+ return retVal;
+}
+
+
+SWModule.prototype.popError = function(callback) {
+ var retVal = 0;
+ exec(callback?callback:function(m) { retVal = m; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_popError", [this.name]
+ );
+ return retVal;
+}
+
+SWModule.prototype.getEntryAttribute = function(level1Key, level2Key, level3Key, isFiltered, callback) {
+ var retVal = [];
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_getEntryAttribute", [this.name, level1Key, level2Key, level3Key, isFiltered]
+ );
+ return retVal;
+}
+
+SWModule.prototype.next = function(callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_next", [this.name]
+ );
+ return retVal;
+}
+
+SWModule.prototype.previous = function(callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_previous", [this.name]
+ );
+ return retVal;
+}
+
+SWModule.prototype.begin = function(callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_begin", [this.name]
+ );
+ return retVal;
+}
+
+SWModule.prototype.getBookNames = function(callback) {
+ var retVal = [];
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWModule_getBookNames", [this.name]
+ );
+ return retVal;
+}
+
+function SWMgr() {
+}
+
+
+SWMgr.prototype.getModInfoList = function(callback) {
+ if (!this.hasOwnProperty('_lastModInfoList')) this._lastModInfoList = [];
+ exec(function(m) { if (m && m.length > 0) this._lastModInfoList = m; if (callback) callback(m); },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWMgr_getModInfoList", []
+ );
+ return this._lastModInfoList;
+}
+
+SWMgr.prototype.getModuleByName = function(modName, callback) {
+ var mod = null;
+ exec(function(m) { if (m.name) mod = new SWModule(m); if (callback) callback(mod); },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWMgr_getModuleByName", [modName]
+ );
+ return mod;
+}
+
+SWMgr.prototype.getExtraConfigSections = function(callback) {
+ var retVal = [];
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWMgr_getExtraConfigSections", []
+ );
+ return retVal;
+}
+
+SWMgr.prototype.getExtraConfigKeys = function(section, callback) {
+ var retVal = [];
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWMgr_getExtraConfigKeys", [section]
+ );
+ return retVal;
+}
+
+SWMgr.prototype.getExtraConfigValue = function(section, key, callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWMgr_getExtraConfigValue", [section, key]
+ );
+ return retVal;
+}
+
+SWMgr.prototype.setExtraConfigValue = function(section, key, value, callback) {
+ exec(callback?callback:function() {},
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWMgr_setExtraConfigValue", [section, key, value]
+ );
+}
+
+SWMgr.prototype.addExtraConfig = function(confBlob, callback) {
+ var retVal = null;
+ exec(callback?callback:function(r) { retVal = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWMgr_addExtraConfig", [confBlob]
+ );
+ return retVal;
+}
+
+SWMgr.prototype.registerBibleSyncListener = function(callback) {
+ exec(callback,
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWMgr_registerBibleSyncListener", []
+ );
+}
+
+SWMgr.prototype.sendBibleSyncMessage = function(osisRef, callback) {
+ exec(callback?callback:function() {},
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWMgr_sendBibleSyncMessage", [osisRef]
+ );
+}
+
+SWMgr.prototype.setJavascript = function(val, callback) {
+ exec(callback?callback:function() {},
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "SWMgr_setJavascript", [val]
+ );
+}
+
+function HTTPUtils() {}
+
+HTTPUtils.prototype.METHOD_GET = 0;
+HTTPUtils.prototype.METHOD_POST = 1;
+
+HTTPUtils.prototype.makeRequest = function(url, postData, callback, method) {
+ var result = null;
+ if (!method) method = this.METHOD_POST;
+ exec(callback?callback:function(r) { if (r && r.length > 0) result = r; },
+ function(err) { utils.alert('[ERROR] problem: ' + err); },
+ "SWORD", "HTTPUtils_makeRequest", [url, postData, method]
+ );
+ return result;
+}
+
+
+
+/*
+ public native String getPrefixPath();
+ public native String getConfigPath();
+ public native void setGlobalOption(String option, String value);
+ public native String getGlobalOption(String option);
+ public native String getGlobalOptionTip(String option);
+ public native String filterText(String filterName, String text);
+ public native String[] getGlobalOptions();
+ public native String[] getGlobalOptionValues(String option);
+ public native void setCipherKey(String modName, String key);
+ public native void setJavascript(boolean val);
+ public native String[] getAvailableLocales();
+ public native void setDefaultLocale(String name);
+*/
+
+
+/**
+ * This is the SWORD namespace and access to singleton SWMgr, InstallMgr, and HTTPUtils.
+ * @constructor
+ */
+function SWORD() {
+
+ var me = this;
+
+ this.available = false;
+ this.version = null;
+
+ this.installMgr = new InstallMgr();
+ this.mgr = new SWMgr();
+ this.httpUtils = new HTTPUtils();
+
+ channel.onCordovaReady.subscribe(function() {
+ me.init(function(info) {
+ me.available = true;
+ me.version = info.version;
+ channel.onSWORDReady.fire();
+ },function(e) {
+ me.available = false;
+ utils.alert("[ERROR] Error initializing SWORD: " + e);
+ });
+ });
+}
+
+
+SWORD.prototype.CATEGORY_BIBLES = "Biblical Texts";
+SWORD.prototype.CATEGORY_COMMENTARIES = "Commentaries";
+SWORD.prototype.CATEGORY_LEXDICTS = "Lexicons / Dictionaries";
+SWORD.prototype.CATEGORY_GENBOOKS = "Generic Books";
+SWORD.prototype.CATEGORY_DAILYDEVOS = "Daily Devotional";
+
+
+SWORD.prototype.init = function(successCallback, errorCallback) {
+ exec(successCallback, errorCallback, "SWORD", "initSWORD", []);
+};
+
+
+module.exports = new SWORD();
+
+
diff --git a/bindings/csharp/NativeMethods.cs b/bindings/csharp/NativeMethods.cs
index 6a3c911..6ea973b 100644
--- a/bindings/csharp/NativeMethods.cs
+++ b/bindings/csharp/NativeMethods.cs
@@ -33,6 +33,8 @@ namespace Sword
public string Description;
public string Category;
public string Language;
+ public string Version;
+ public string Delta;
};
[StructLayout(LayoutKind.Sequential)]
@@ -73,53 +75,51 @@ namespace Sword
public static class NativeMethods
{
+ public const string DLLNAME = "libsword";
-
- public const string DLLNAME = "libsword.so";
-
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWMgr_new();
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWMgr_newWithPath(string path);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWMgr_getModuleByName(IntPtr hSWMgr, string moduleName);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern void org_crosswire_sword_SWModule_setKeyText(IntPtr hSWModule, string key);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWModule_renderText(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWModule_getRawEntry(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWModule_getKeyText(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern void org_crosswire_sword_SWMgr_delete(IntPtr hSWMgr);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWMgr_getModInfoList(IntPtr hSWMgr);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWModule_stripText(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern void org_crosswire_sword_SWModule_setRawEntry(IntPtr hSWModule, string entryBuffer);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern void org_crosswire_sword_SWModule_terminateSearch(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern char org_crosswire_sword_SWModule_popError(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern long org_crosswire_sword_SWModule_getEntrySize(IntPtr hSWModule);
- [DllImport(DLLNAME)]
+ [DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr org_crosswire_sword_SWModule_getEntryAttribute(IntPtr hSWModule, string level1, string level2, string level3, char filteredBool);
[DllImport(DLLNAME, CallingConvention = CallingConvention.Cdecl)]
diff --git a/bindings/csharp/tests/ManagerTests.cs b/bindings/csharp/tests/ManagerTests.cs
index 6f71b33..ec7d6cd 100644
--- a/bindings/csharp/tests/ManagerTests.cs
+++ b/bindings/csharp/tests/ManagerTests.cs
@@ -14,6 +14,7 @@
using System;
using NUnit.Framework;
using System.IO;
+using System.Collections.Generic;
using System.Linq;
namespace Sword.Tests
@@ -84,10 +85,20 @@ namespace Sword.Tests
public void AvailableLocales_Get_DoesntCrash()
{
//act
- var availableLocales = _manager.AvailableLocales.ToArray();
+ string[] availableLocales = _manager.AvailableLocales.ToArray();
//Assert
- Assert.That (availableLocales[0].Contains("en"));
+ Assert.That (availableLocales.Length > 0);
+ }
+
+ [Test]
+ public void AvailableLocales_Get_ContainsEnglish()
+ {
+ //act
+ string[] availableLocales = _manager.AvailableLocales.ToArray();
+
+ //Assert
+ Assert.That (availableLocales.Any(locale => locale == "en"));
}
[Test]
diff --git a/bindings/flatapi.cpp b/bindings/flatapi.cpp
index aaec8df..b41303f 100644
--- a/bindings/flatapi.cpp
+++ b/bindings/flatapi.cpp
@@ -3,7 +3,7 @@
* flatapi.cpp - This file contains an api usable by non-C++
* environments
*
- * $Id: flatapi.cpp 3275 2014-12-03 05:56:54Z greg.hellings $
+ * $Id: flatapi.cpp 3561 2018-01-07 06:45:42Z greg.hellings $
*
* Copyright 2002-2014 CrossWire Bible Society (http://www.crosswire.org)
* CrossWire Bible Society
@@ -33,6 +33,7 @@
#include <treekeyidx.h>
#include <filemgr.h>
#include <swbuf.h>
+#include <swlog.h>
#include <localemgr.h>
#include <utilstr.h>
#include "corba/orbitcpp/webmgr.hpp"
@@ -91,51 +92,43 @@ void clearModInfoArray(org_crosswire_sword_ModInfo **modInfo) {
struct pu {
char last;
- SWHANDLE progressReporter;
-
- void init(SWHANDLE pr) { progressReporter = pr; last = 0; }
-/*
- pu(JNIEnv *env, jobject pr) : env(env), progressReporter(pr), last(0) {}
- JNIEnv *env;
- jobject progressReporter;
-*/
+ org_crosswire_sword_SWModule_SearchCallback progressReporter;
+ void init(org_crosswire_sword_SWModule_SearchCallback pr) { progressReporter = pr; last = 0; }
};
void percentUpdate(char percent, void *userData) {
struct pu *p = (struct pu *)userData;
if (percent != p->last) {
+ p->progressReporter((int)percent);
p->last = percent;
-/*
- jclass cls = p->env->GetObjectClass(p->progressReporter);
- jmethodID mid = p->env->GetMethodID(cls, "progressReport", "(I)V");
- if (mid != 0) {
- p->env->CallVoidMethod(p->progressReporter, mid, (jint)percent);
- }
-*/
}
}
+
class MyStatusReporter : public StatusReporter {
public:
- int last;
- SWHANDLE statusReporter;
+ unsigned long last;
+ org_crosswire_sword_InstallMgr_StatusCallback statusReporter;
MyStatusReporter() : last(0), statusReporter(0) {}
- void init(SWHANDLE sr) { statusReporter = sr; last = 0; }
- virtual void update(unsigned long totalBytes, unsigned long completedBytes) {
- int p = (totalBytes > 0) ? (int)(74.0 * ((double)completedBytes / (double)totalBytes)) : 0;
- for (;last < p; ++last) {
- if (!last) {
- SWBuf output;
- output.setFormatted("[ File Bytes: %ld", totalBytes);
- while (output.size() < 75) output += " ";
- output += "]";
-// cout << output.c_str() << "\n ";
- }
-// cout << "-";
- }
-// cout.flush();
+ void init(org_crosswire_sword_InstallMgr_StatusCallback sr) { statusReporter = sr; last = 0xffffffff; }
+
+ virtual void update(unsigned long totalBytes, unsigned long completedBytes) {
+
+ if (!statusReporter) return;
+
+ if (completedBytes != last) {
+ statusReporter("update", totalBytes, completedBytes);
+ last = completedBytes;
+ }
}
- virtual void preStatus(long totalBytes, long completedBytes, const char *message) {
+
+
+ virtual void preStatus(long totalBytes, long completedBytes, const char *message) {
+
+ if (!statusReporter) return;
+
+ statusReporter(message, totalBytes, completedBytes);
+/*
SWBuf output;
output.setFormatted("[ Total Bytes: %ld; Completed Bytes: %ld", totalBytes, completedBytes);
while (output.size() < 75) output += " ";
@@ -145,7 +138,9 @@ public:
// for (int i = 0; i < p; ++i) { cout << "="; }
// cout << "\n\n" << message << "\n";
last = 0;
+*/
}
+
};
class HandleSWModule {
@@ -157,15 +152,12 @@ public:
char *rawEntry;
char *configEntry;
struct pu peeuuu;
- // making searchHits cache static saves memory only having a single
- // outstanding copy, but also is not threadsafe. Remove static here
- // and fix compiling bugs and add clearSearchHits() to d-tor to change
- static org_crosswire_sword_SearchHit *searchHits;
- static const char **entryAttributes;
- static const char **parseKeyList;
- static const char **keyChildren;
-
- HandleSWModule(SWModule *mod) {
+ org_crosswire_sword_SearchHit *searchHits;
+ const char **entryAttributes;
+ const char **parseKeyList;
+ const char **keyChildren;
+
+ HandleSWModule(SWModule *mod) : searchHits(0), entryAttributes(0), parseKeyList(0), keyChildren(0) {
this->mod = mod;
this->renderBuf = 0;
this->stripBuf = 0;
@@ -179,9 +171,13 @@ public:
delete [] renderHeader;
delete [] rawEntry;
delete [] configEntry;
+ clearSearchHits();
+ clearEntryAttributes();
+ clearParseKeyList();
+ clearKeyChildren();
}
- static void clearSearchHits() {
+ void clearSearchHits() {
if (searchHits) {
for (int i = 0; true; ++i) {
if (searchHits[i].modName) {
@@ -193,13 +189,13 @@ public:
searchHits = 0;
}
}
- static void clearEntryAttributes() {
+ void clearEntryAttributes() {
clearStringArray(&entryAttributes);
}
- static void clearParseKeyList() {
+ void clearParseKeyList() {
clearStringArray(&parseKeyList);
}
- static void clearKeyChildren() {
+ void clearKeyChildren() {
clearStringArray(&keyChildren);
}
};
@@ -264,7 +260,7 @@ public:
MyStatusReporter statusReporter;
HandleInstMgr() : installMgr(0), modInfo(0) {}
HandleInstMgr(InstallMgr *mgr) {
- this->installMgr = installMgr;
+ this->installMgr = mgr;
this->modInfo = 0;
}
@@ -294,10 +290,6 @@ public:
};
-org_crosswire_sword_SearchHit *HandleSWModule::searchHits = 0;
-const char **HandleSWModule::entryAttributes = 0;
-const char **HandleSWModule::parseKeyList = 0;
-const char **HandleSWModule::keyChildren = 0;
const char **HandleSWMgr::globalOptions = 0;
const char **HandleSWMgr::globalOptionValues = 0;
@@ -305,14 +297,12 @@ const char **HandleSWMgr::availableLocales = 0;
const char **HandleInstMgr::remoteSources = 0;
+const char **tmpStringArrayRetVal = 0;
+char *tmpStringRetVal = 0;
+
class InitStatics {
public:
InitStatics() {
-// these are redundant with the static declarations above, but ??? doesn't hurt
- HandleSWModule::searchHits = 0;
- HandleSWModule::entryAttributes = 0;
- HandleSWModule::parseKeyList = 0;
- HandleSWModule::keyChildren = 0;
HandleSWMgr::globalOptions = 0;
HandleSWMgr::globalOptionValues = 0;
@@ -321,15 +311,15 @@ public:
HandleInstMgr::remoteSources = 0;
}
~InitStatics() {
- HandleSWModule::clearSearchHits();
- HandleSWModule::clearEntryAttributes();
- HandleSWModule::clearParseKeyList();
- HandleSWModule::clearKeyChildren();
HandleSWMgr::clearGlobalOptions();
HandleSWMgr::clearGlobalOptionValues();
HandleInstMgr::clearRemoteSources();
+
+ clearStringArray(&tmpStringArrayRetVal);
+ sword::stdstr(&tmpStringRetVal, (const char *)0);
+
}
} _initStatics;
@@ -337,7 +327,30 @@ public:
}
+//
+// SWLog methods
+//
+//
+
+void SWDLLEXPORT org_crosswire_sword_SWlog_logError(const char *msg) {
+ SWLog::getSystemLog()->logError(msg);
+}
+
+void SWDLLEXPORT org_crosswire_sword_SWlog_logDebug(const char *msg) {
+ SWLog::getSystemLog()->logDebug(msg);
+}
+
+void SWDLLEXPORT org_crosswire_sword_SWlog_logWarning(const char *msg) {
+ SWLog::getSystemLog()->logWarning(msg);
+}
+
+void SWDLLEXPORT org_crosswire_sword_SWlog_logInformation(const char *msg) {
+ SWLog::getSystemLog()->logInformation(msg);
+}
+void SWDLLEXPORT org_crosswire_sword_SWlog_logTimedInformation(const char *msg) {
+ SWLog::getSystemLog()->logTimedInformation(msg);
+}
//
@@ -364,7 +377,7 @@ void SWDLLEXPORT org_crosswire_sword_SWModule_terminateSearch
* Signature: (Ljava/lang/String;IJLjava/lang/String;Lorg/crosswire/android/sword/SWModule/SearchProgressReporter;)[Lorg/crosswire/android/sword/SWModule/SearchHit;
*/
const struct org_crosswire_sword_SearchHit * SWDLLEXPORT org_crosswire_sword_SWModule_search
- (SWHANDLE hSWModule, const char *searchString, int searchType, long flags, const char *scope, SWHANDLE progressReporter) {
+ (SWHANDLE hSWModule, const char *searchString, int searchType, long flags, const char *scope, org_crosswire_sword_SWModule_SearchCallback progressReporter) {
GETSWMODULE(hSWModule, 0);
@@ -458,7 +471,7 @@ const char ** SWDLLEXPORT org_crosswire_sword_SWModule_getEntryAttribute
sword::AttributeList::iterator i2Start, i2End;
sword::AttributeValue::iterator i3Start, i3End;
- if ((level1) && (*level1)) {
+ if ((level1) && (*level1) && *level1 != '-') {
i1Start = entryAttribs.find(level1);
i1End = i1Start;
if (i1End != entryAttribs.end())
@@ -469,35 +482,54 @@ const char ** SWDLLEXPORT org_crosswire_sword_SWModule_getEntryAttribute
i1End = entryAttribs.end();
}
for (;i1Start != i1End; ++i1Start) {
- if ((level2) && (*level2)) {
- i2Start = i1Start->second.find(level2);
- i2End = i2Start;
- if (i2End != i1Start->second.end())
- ++i2End;
+ if (level1 && *level1 && *level1 == '-') {
+ results.push_back(i1Start->first);
}
else {
- i2Start = i1Start->second.begin();
- i2End = i1Start->second.end();
- }
- for (;i2Start != i2End; ++i2Start) {
- if ((level3) && (*level3)) {
- i3Start = i2Start->second.find(level3);
- i3End = i3Start;
- if (i3End != i2Start->second.end())
- ++i3End;
+ if (level2 && *level2 && *level2 != '-') {
+ i2Start = i1Start->second.find(level2);
+ i2End = i2Start;
+ if (i2End != i1Start->second.end())
+ ++i2End;
}
else {
- i3Start = i2Start->second.begin();
- i3End = i2Start->second.end();
+ i2Start = i1Start->second.begin();
+ i2End = i1Start->second.end();
}
- for (;i3Start != i3End; ++i3Start) {
- results.push_back(i3Start->second);
+ for (;i2Start != i2End; ++i2Start) {
+ if (level2 && *level2 && *level2 == '-') {
+ results.push_back(i2Start->first);
+ }
+ else {
+ // allow '-' to get all keys; allow '*' to get all key=value
+ if (level3 && *level3 && *level3 != '-' && *level3 != '*') {
+ i3Start = i2Start->second.find(level3);
+ i3End = i3Start;
+ if (i3End != i2Start->second.end())
+ ++i3End;
+ }
+ else {
+ i3Start = i2Start->second.begin();
+ i3End = i2Start->second.end();
+ }
+ for (;i3Start != i3End; ++i3Start) {
+ if (level3 && *level3 && *level3 == '-') {
+ results.push_back(i3Start->first);
+ }
+ else if (level3 && *level3 && *level3 == '*') {
+ results.push_back(i3Start->first + "=" + i3Start->second);
+ }
+ else {
+ results.push_back(i3Start->second);
+ }
+ }
+ if (i3Start != i3End)
+ break;
+ }
}
- if (i3Start != i3End)
+ if (i2Start != i2End)
break;
}
- if (i2Start != i2End)
- break;
}
const char **retVal = (const char **)calloc(results.size()+1, sizeof(const char *));
@@ -644,7 +676,7 @@ const char ** SWDLLEXPORT org_crosswire_sword_SWModule_getKeyChildren
sword::VerseKey *vkey = SWDYNAMIC_CAST(VerseKey, key);
if (vkey) {
- retVal = (const char **)calloc(9, sizeof(const char *));
+ retVal = (const char **)calloc(11, sizeof(const char *));
SWBuf num;
num.appendFormatted("%d", vkey->getTestament());
stdstr((char **)&(retVal[0]), num.c_str());
@@ -665,6 +697,8 @@ const char ** SWDLLEXPORT org_crosswire_sword_SWModule_getKeyChildren
stdstr((char **)&(retVal[5]), num.c_str());
stdstr((char **)&(retVal[6]), vkey->getBookName());
stdstr((char **)&(retVal[7]), vkey->getOSISRef());
+ stdstr((char **)&(retVal[8]), vkey->getShortText());
+ stdstr((char **)&(retVal[9]), vkey->getBookAbbrev());
}
else {
TreeKeyIdx *tkey = SWDYNAMIC_CAST(TreeKeyIdx, key);
@@ -941,6 +975,31 @@ SWHANDLE SWDLLEXPORT org_crosswire_sword_SWMgr_new() {
return (SWHANDLE) new HandleSWMgr(new WebMgr(sysConf));
}
+/*
+ * Class: org_crosswire_sword_SWMgr
+ * Method: new
+ * Signature: ()V
+ */
+SWHANDLE SWDLLEXPORT org_crosswire_sword_SWMgr_newWithPath(const char *path) {
+ SWBuf confPath = path;
+ if (!confPath.endsWith("/")) confPath.append('/');
+ SWBuf modsd = confPath + "mods.d";
+ // be sure we have at least some config file already out there
+ if (!FileMgr::existsFile(modsd.c_str())) {
+ modsd.append("/globals.conf");
+ FileMgr::createParent(modsd.c_str());
+ SWConfig config(modsd.c_str());
+ config["Globals"]["HiAndroid"] = "weeee";
+ config.save();
+ }
+ SWBuf extraPath = confPath + "extraConfig.conf";
+ bool exists = FileMgr::existsFile(extraPath.c_str());
+SWLog::getSystemLog()->logDebug("libsword: extraConfig %s at path: %s", exists?"Exists":"Absent", extraPath.c_str());
+
+SWLog::getSystemLog()->logDebug("libsword: init() creating WebMgr using path: %s", path);
+ return (SWHANDLE) new HandleSWMgr(new WebMgr(confPath.c_str(), exists?extraPath.c_str():0));
+}
+
/*
* Class: org_crosswire_sword_SWMgr
@@ -996,10 +1055,10 @@ const struct org_crosswire_sword_ModInfo * SWDLLEXPORT org_crosswire_sword_SWMgr
stdstr(&(milist[i].name), assureValidUTF8(module->getName()));
stdstr(&(milist[i].description), assureValidUTF8(module->getDescription()));
stdstr(&(milist[i].category), assureValidUTF8(type.c_str()));
- stdstr(&(milist[i++].language), assureValidUTF8(module->getLanguage()));
- stdstr(&(milist[i++].version), assureValidUTF8(version.c_str()));
- stdstr(&(milist[i++].delta), "");
- if (i >= size) break;
+ stdstr(&(milist[i].language), assureValidUTF8(module->getLanguage()));
+ stdstr(&(milist[i].version), assureValidUTF8(version.c_str()));
+ stdstr(&(milist[i].delta), "");
+ if (++i >= size) break;
}
}
hmgr->modInfo = milist;
@@ -1131,6 +1190,164 @@ const char ** SWDLLEXPORT org_crosswire_sword_SWMgr_getGlobalOptions
return retVal;
}
+
+/*
+ * Class: org_crosswire_sword_SWConfig
+ * Method: getSections
+ * Signature: ()[Ljava/lang/String;
+ */
+const char ** SWDLLEXPORT org_crosswire_sword_SWConfig_getSections
+ (const char *confPath) {
+
+ clearStringArray(&tmpStringArrayRetVal);
+ int count = 0;
+ const char **retVal = 0;
+ bool exists = FileMgr::existsFile(confPath);
+SWLog::getSystemLog()->logDebug("libsword: getConfigSections %s at path: %s", exists?"Exists":"Absent", confPath);
+ if (exists) {
+ SWConfig config(confPath);
+ SectionMap::const_iterator sit;
+ for (sit = config.getSections().begin(); sit != config.getSections().end(); ++sit) {
+ count++;
+ }
+ SWLog::getSystemLog()->logDebug("libsword: %d sections found in config", count);
+ retVal = (const char **)calloc(count+1, sizeof(const char *));
+ count = 0;
+ for (sit = config.getSections().begin(); sit != config.getSections().end(); ++sit) {
+ stdstr((char **)&(retVal[count++]), assureValidUTF8(sit->first.c_str()));
+ }
+ }
+ else {
+ retVal = (const char **)calloc(1, sizeof(const char *));
+ }
+
+ tmpStringArrayRetVal = retVal;
+ return retVal;
+}
+
+
+
+/*
+ * Class: org_crosswire_sword_SWConfig
+ * Method: getSectionKeys
+ * Signature: (Ljava/lang/String;)[Ljava/lang/String;
+ */
+const char ** SWDLLEXPORT org_crosswire_sword_SWConfig_getSectionKeys
+ (const char *confPath, const char *section) {
+
+ clearStringArray(&tmpStringArrayRetVal);
+ int count = 0;
+ const char **retVal = 0;
+ bool exists = FileMgr::existsFile(confPath);
+ if (exists) {
+ SWConfig config(confPath);
+ SectionMap::const_iterator sit = config.getSections().find(section);
+ if (sit != config.getSections().end()) {
+ ConfigEntMap::const_iterator it;
+ for (it = sit->second.begin(); it != sit->second.end(); ++it) {
+ count++;
+ }
+ retVal = (const char **)calloc(count+1, sizeof(const char *));
+ count = 0;
+ for (it = sit->second.begin(); it != sit->second.end(); ++it) {
+ stdstr((char **)&(retVal[count++]), assureValidUTF8(it->first.c_str()));
+ }
+ }
+ else {
+ retVal = (const char **)calloc(1, sizeof(const char *));
+ }
+ }
+ else {
+ retVal = (const char **)calloc(1, sizeof(const char *));
+ }
+
+ tmpStringArrayRetVal = retVal;
+ return retVal;
+}
+
+
+/*
+ * Class: org_crosswire_sword_SWConfig
+ * Method: getKeyValue
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+ */
+const char * SWDLLEXPORT org_crosswire_sword_SWConfig_getKeyValue
+ (const char *confPath, const char *section, const char *key) {
+
+ stdstr(&tmpStringRetVal, 0);
+ bool exists = FileMgr::existsFile(confPath);
+ if (exists) {
+ SWConfig config(confPath);
+ SectionMap::const_iterator sit = config.getSections().find(section);
+ if (sit != config.getSections().end()) {
+ ConfigEntMap::const_iterator it = sit->second.find(key);
+ if (it != sit->second.end()) {
+ stdstr(&tmpStringRetVal, assureValidUTF8(it->second.c_str()));
+ }
+ }
+ }
+
+ return tmpStringRetVal;
+}
+
+
+/*
+ * Class: org_crosswire_sword_SWConfig
+ * Method: setKeyValue
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ */
+void SWDLLEXPORT org_crosswire_sword_SWConfig_setKeyValue
+ (const char *confPath, const char *section, const char *key, const char *value) {
+
+ SWConfig config(confPath);
+ config[section][key] = value;
+ config.save();
+}
+
+
+/*
+ * Class: org_crosswire_sword_SWConfig
+ * Method: augmentConfig
+ * Signature: (Ljava/lang/String;)[Ljava/lang/String;
+ */
+const char ** SWDLLEXPORT org_crosswire_sword_SWConfig_augmentConfig
+ (const char *confPath, const char *configBlob) {
+
+
+ clearStringArray(&tmpStringArrayRetVal);
+ const char **retVal = 0;
+ int count = 0;
+
+ SWBuf myBlob = configBlob;
+
+ SWConfig config(confPath);
+
+ FileMgr::removeFile(confPath);
+ FileDesc *fd = FileMgr::getSystemFileMgr()->open(confPath, FileMgr::CREAT|FileMgr::WRONLY, FileMgr::IREAD|FileMgr::IWRITE);
+ fd->getFd();
+ fd->write(myBlob.c_str(), myBlob.size());
+ FileMgr::getSystemFileMgr()->close(fd);
+
+ SWConfig newConfig(confPath);
+
+ config.augment(newConfig);
+ config.save();
+
+ SectionMap::const_iterator sit;
+ for (sit = newConfig.getSections().begin(); sit != newConfig.getSections().end(); ++sit) {
+ count++;
+ }
+ retVal = (const char **)calloc(count+1, sizeof(const char *));
+ count = 0;
+ for (sit = newConfig.getSections().begin(); sit != newConfig.getSections().end(); ++sit) {
+ stdstr((char **)&(retVal[count++]), assureValidUTF8(sit->first.c_str()));
+ }
+
+ tmpStringArrayRetVal = retVal;
+ return retVal;
+}
+
+
/*
* Class: org_crosswire_sword_SWMgr
* Method: getGlobalOptionValues
@@ -1254,7 +1471,7 @@ const char * SWDLLEXPORT org_crosswire_sword_SWMgr_translate
* Signature: (Ljava/lang/String;Lorg/crosswire/android/sword/SWModule/SearchProgressReporter;)V
*/
SWHANDLE SWDLLEXPORT org_crosswire_sword_InstallMgr_new
- (const char *baseDir, SWHANDLE statusReporter) {
+ (const char *baseDir, org_crosswire_sword_InstallMgr_StatusCallback statusReporter) {
SWBuf confPath = SWBuf(baseDir) + "/InstallMgr.conf";
// be sure we have at least some config file already out there
if (!FileMgr::existsFile(confPath.c_str())) {
@@ -1263,7 +1480,7 @@ SWHANDLE SWDLLEXPORT org_crosswire_sword_InstallMgr_new
SWConfig config(confPath.c_str());
config["General"]["PassiveFTP"] = "true";
- config.Save();
+ config.save();
}
HandleInstMgr *hinstmgr = new HandleInstMgr();
hinstmgr->statusReporter.init(statusReporter);
@@ -1273,6 +1490,17 @@ SWHANDLE SWDLLEXPORT org_crosswire_sword_InstallMgr_new
/*
* Class: org_crosswire_sword_InstallMgr
+ * Method: delete
+ * Signature: ()V
+ */
+void SWDLLEXPORT org_crosswire_sword_InstallMgr_delete
+ (SWHANDLE hInstallMgr) {
+ HandleInstMgr *hinstMgr = (HandleInstMgr *)hInstallMgr;
+ if (hinstMgr) delete hinstMgr;
+}
+
+/*
+ * Class: org_crosswire_sword_InstallMgr
* Method: setUserDisclaimerConfirmed
* Signature: ()V
*/
diff --git a/bindings/java-jni/Makefile b/bindings/java-jni/Makefile
index 1fd3743..0059b0e 100644
--- a/bindings/java-jni/Makefile
+++ b/bindings/java-jni/Makefile
@@ -1,4 +1,5 @@
all:
+ cp ../corba/orbitcpp/webmgr.hpp jni/
mkdir -p classes
javac -d classes src/org/crosswire/android/sword/*.java
javah -d jni -classpath classes -jni org.crosswire.android.sword.SWMgr
@@ -10,6 +11,8 @@ all:
javap -s -classpath classes/ org.crosswire.android.sword.SWModule.SearchHit > SearchHit.txt
javap -s -classpath classes/ org.crosswire.android.sword.SWModule.SearchProgressReporter > SearchProgressReporter.txt
javap -s -classpath classes/ org.crosswire.android.sword.InstallMgr > InstallMgr.txt
- cp src/org/crosswire/android/sword/*.java /home/scribe/src/bishop/src/org/crosswire/android/sword/
+ cp src/org/crosswire/android/sword/*.java ../Android/SWORD/app/src/main/java/org/crosswire/android/sword/
+clean:
+ rm -rf classes jni/org_crosswire_android_sword_*.h *.txt
diff --git a/bindings/java-jni/README b/bindings/java-jni/README
index 80c256a..e4b89fb 100644
--- a/bindings/java-jni/README
+++ b/bindings/java-jni/README
@@ -1,27 +1,28 @@
-Android Build Instructions
-
-You'll need the Android NDK.
-
-Then link the sword/bindings/java-jni folder to your project's /jni folder.
-I have a symlink:
-
-~/src/bishop/jni -> ~/src/sword/bindings/java-jni/jni/
-
-~/src/sword is simply a checkout of the current sword svn repository.
-(svn co https://crosswire.org/svn/sword/trunk ~/src/sword)
-
-
-So, since my $HOME directly is /home/scribe, my configuration looks like this:
-
-/home/scribe/src/sword/
-/home/scribe/src/bishop/
-/home/scribe/android-ndk-r8e/
-
-with:
-
-APP_PROJECT_PATH := $(call my-dir)/../../../src/bishop
-APP_MODULES := sword swordcore
-APP_PLATFORM := android-3
-
+This folder contains java-jni bindings. They are 99% generic but have
+some Android-specific code which should eventually be removed. This
+includes setting a SWLog::setSystemLog(new AndroidLogger()) and an
+org.crosswire.android.sword.* package. This was not changed to
+org.crosswire.sword.* because there are conflicting SWMgr, et. al.
+classes from the crosswire-java project and the CORBA bindings.
+org.crosswire.jni.sword.* is an option but exposing the impl in the
+package name is bad practice. More thought needed.
+
+A make in here should produce the JNI wrappers.
+jni/swordstub.cpp is the jni implementation
+
+This make also copies the java src/ files to the ../Android binding folder.
+The ../Android binding folder symlinks to the jni cpp file generated here.
+
+There is an Android Studio project there to build the native libs
+
+The steps to build all of this are usually:
+1) make in this folder
+2) build all in ../Android/SWORD Android Studio project
+3) a make in the ../Android/ folder, which finally copies the binary libs
+ to the ../cordova/ bindings folder to produce a working cordova
+ plugin
+
+Android java bindings can be used after step 2
+cordova javascript bindings can be used after step 3
Hope this helps get you started. Let me know your progress!
diff --git a/bindings/java-jni/jni/Android.mk b/bindings/java-jni/jni/Android.mk
index 5d793a0..5ce1c3c 100644
--- a/bindings/java-jni/jni/Android.mk
+++ b/bindings/java-jni/jni/Android.mk
@@ -28,11 +28,17 @@ include $(CLEAR_VARS)
LOCAL_MODULE := libswordcore
LOCAL_C_INCLUDES := ../sword/include ../sword/include/internal/regex
LOCAL_CFLAGS += -D__unix__ \
+ -fvisibility=hidden \
-DSTDC_HEADERS \
-Dunix \
-D_FTPLIB_NO_COMPAT \
-DANDROID \
+ -DEXCLUDEBZIP2 \
+ -DEXCLUDEXZ \
-DOS_ANDROID
+
+#LOCAL_CFLAGS += -g
+
LOCAL_SRC_FILES := ../../../src/modules/comments/zcom/zcom.cpp \
../../../src/modules/comments/rawfiles/rawfiles.cpp \
../../../src/modules/comments/rawcom4/rawcom4.cpp \
@@ -54,8 +60,6 @@ LOCAL_SRC_FILES := ../../../src/modules/comments/zcom/zcom.cpp \
../../../src/modules/common/rawstr4.cpp \
../../../src/modules/common/lzsscomprs.cpp \
../../../src/modules/common/zipcomprs.cpp \
-../../../src/modules/common/bz2comprs.cpp \
-../../../src/modules/common/xzcomprs.cpp \
../../../src/modules/common/rawverse4.cpp \
../../../src/modules/common/swcipher.cpp \
../../../src/modules/common/swcomprs.cpp \
@@ -142,6 +146,10 @@ LOCAL_SRC_FILES := ../../../src/modules/comments/zcom/zcom.cpp \
../../../src/modules/filters/teiplain.cpp \
../../../src/modules/filters/swbasicfilter.cpp \
../../../src/modules/filters/scsuutf8.cpp \
+../../../src/modules/filters/gbflatex.cpp \
+../../../src/modules/filters/thmllatex.cpp \
+../../../src/modules/filters/teilatex.cpp \
+../../../src/modules/filters/osislatex.cpp \
../../../src/mgr/stringmgr.cpp \
../../../src/mgr/swmgr.cpp \
../../../src/mgr/swsearchable.cpp \
@@ -178,6 +186,15 @@ LOCAL_SRC_FILES := ../../../src/modules/comments/zcom/zcom.cpp \
../../../src/frontend/swlog.cpp \
../../../src/utilfuns/zlib/untgz.c
+# add BibleSync
+LOCAL_C_INCLUDES += ../biblesync/include
+LOCAL_SRC_FILES += \
+ ../../../../biblesync/src/biblesync.cc \
+ ../../../../biblesync/src/ifaddrs.c
+
+
+#../../../src/modules/common/bz2comprs.cpp \
+#../../../src/modules/common/xzcomprs.cpp \
#../../../../../sword/src/mgr/curlftpt.cpp \
#../../../../../sword/src/mgr/curlhttpt.cpp \
#../../../../../sword/src/utilfuns/win32/dirent.cpp \
@@ -194,6 +211,10 @@ include $(CLEAR_VARS)
LOCAL_MODULE := libsword
LOCAL_C_INCLUDES := ../sword/include ../sword/include/internal/regex
+
+# add BibleSync stuff
+LOCAL_C_INCLUDES += ../biblesync/include
+
LOCAL_CFLAGS += -D__unix__ \
-Dunix \
-D_FTPLIB_NO_COMPAT \
diff --git a/bindings/java-jni/jni/org_crosswire_android_sword_InstallMgr.h b/bindings/java-jni/jni/org_crosswire_android_sword_InstallMgr.h
deleted file mode 100644
index b80243b..0000000
--- a/bindings/java-jni/jni/org_crosswire_android_sword_InstallMgr.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_crosswire_android_sword_InstallMgr */
-
-#ifndef _Included_org_crosswire_android_sword_InstallMgr
-#define _Included_org_crosswire_android_sword_InstallMgr
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_crosswire_android_sword_InstallMgr
- * Method: reInit
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_InstallMgr_reInit
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_InstallMgr
- * Method: setUserDisclaimerConfirmed
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_InstallMgr_setUserDisclaimerConfirmed
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_InstallMgr
- * Method: syncConfig
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_org_crosswire_android_sword_InstallMgr_syncConfig
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_InstallMgr
- * Method: uninstallModule
- * Signature: (Ljava/lang/String;)I
- */
-JNIEXPORT jint JNICALL Java_org_crosswire_android_sword_InstallMgr_uninstallModule
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_InstallMgr
- * Method: getRemoteSources
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_InstallMgr_getRemoteSources
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_InstallMgr
- * Method: refreshRemoteSource
- * Signature: (Ljava/lang/String;)I
- */
-JNIEXPORT jint JNICALL Java_org_crosswire_android_sword_InstallMgr_refreshRemoteSource
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_InstallMgr
- * Method: getRemoteModInfoList
- * Signature: (Ljava/lang/String;)[Lorg/crosswire/android/sword/SWMgr/ModInfo;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_InstallMgr_getRemoteModInfoList
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_InstallMgr
- * Method: remoteInstallModule
- * Signature: (Ljava/lang/String;Ljava/lang/String;)I
- */
-JNIEXPORT jint JNICALL Java_org_crosswire_android_sword_InstallMgr_remoteInstallModule
- (JNIEnv *, jobject, jstring, jstring);
-
-/*
- * Class: org_crosswire_android_sword_InstallMgr
- * Method: getRemoteModuleByName
- * Signature: (Ljava/lang/String;Ljava/lang/String;)Lorg/crosswire/android/sword/SWModule;
- */
-JNIEXPORT jobject JNICALL Java_org_crosswire_android_sword_InstallMgr_getRemoteModuleByName
- (JNIEnv *, jobject, jstring, jstring);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/bindings/java-jni/jni/org_crosswire_android_sword_SWMgr.h b/bindings/java-jni/jni/org_crosswire_android_sword_SWMgr.h
deleted file mode 100644
index a95cf8e..0000000
--- a/bindings/java-jni/jni/org_crosswire_android_sword_SWMgr.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_crosswire_android_sword_SWMgr */
-
-#ifndef _Included_org_crosswire_android_sword_SWMgr
-#define _Included_org_crosswire_android_sword_SWMgr
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: version
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_version
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: reInit
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_reInit
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: getModInfoList
- * Signature: ()[Lorg/crosswire/android/sword/SWMgr/ModInfo;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getModInfoList
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: getModuleByName
- * Signature: (Ljava/lang/String;)Lorg/crosswire/android/sword/SWModule;
- */
-JNIEXPORT jobject JNICALL Java_org_crosswire_android_sword_SWMgr_getModuleByName
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: getPrefixPath
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getPrefixPath
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: getConfigPath
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getConfigPath
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: setGlobalOption
- * Signature: (Ljava/lang/String;Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setGlobalOption
- (JNIEnv *, jobject, jstring, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: getGlobalOption
- * Signature: (Ljava/lang/String;)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalOption
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: getGlobalOptionTip
- * Signature: (Ljava/lang/String;)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalOptionTip
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: filterText
- * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_filterText
- (JNIEnv *, jobject, jstring, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: getGlobalOptions
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalOptions
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: getGlobalOptionValues
- * Signature: (Ljava/lang/String;)[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalOptionValues
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: setCipherKey
- * Signature: (Ljava/lang/String;Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setCipherKey
- (JNIEnv *, jobject, jstring, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: setJavascript
- * Signature: (Z)V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setJavascript
- (JNIEnv *, jobject, jboolean);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: getAvailableLocales
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getAvailableLocales
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWMgr
- * Method: setDefaultLocale
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setDefaultLocale
- (JNIEnv *, jobject, jstring);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/bindings/java-jni/jni/org_crosswire_android_sword_SWMgr_ModInfo.h b/bindings/java-jni/jni/org_crosswire_android_sword_SWMgr_ModInfo.h
deleted file mode 100644
index f3b8fd6..0000000
--- a/bindings/java-jni/jni/org_crosswire_android_sword_SWMgr_ModInfo.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_crosswire_android_sword_SWMgr_ModInfo */
-
-#ifndef _Included_org_crosswire_android_sword_SWMgr_ModInfo
-#define _Included_org_crosswire_android_sword_SWMgr_ModInfo
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/bindings/java-jni/jni/org_crosswire_android_sword_SWMgr_SearchHit.h b/bindings/java-jni/jni/org_crosswire_android_sword_SWMgr_SearchHit.h
deleted file mode 100644
index 062c579..0000000
--- a/bindings/java-jni/jni/org_crosswire_android_sword_SWMgr_SearchHit.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_crosswire_android_sword_SWMgr_SearchHit */
-
-#ifndef _Included_org_crosswire_android_sword_SWMgr_SearchHit
-#define _Included_org_crosswire_android_sword_SWMgr_SearchHit
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/bindings/java-jni/jni/org_crosswire_android_sword_SWModule.h b/bindings/java-jni/jni/org_crosswire_android_sword_SWModule.h
deleted file mode 100644
index 15b1ad0..0000000
--- a/bindings/java-jni/jni/org_crosswire_android_sword_SWModule.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_crosswire_android_sword_SWModule */
-
-#ifndef _Included_org_crosswire_android_sword_SWModule
-#define _Included_org_crosswire_android_sword_SWModule
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef org_crosswire_android_sword_SWModule_SEARCHTYPE_REGEX
-#define org_crosswire_android_sword_SWModule_SEARCHTYPE_REGEX 1L
-#undef org_crosswire_android_sword_SWModule_SEARCHTYPE_PHRASE
-#define org_crosswire_android_sword_SWModule_SEARCHTYPE_PHRASE -1L
-#undef org_crosswire_android_sword_SWModule_SEARCHTYPE_MULTIWORD
-#define org_crosswire_android_sword_SWModule_SEARCHTYPE_MULTIWORD -2L
-#undef org_crosswire_android_sword_SWModule_SEARCHTYPE_ENTRYATTR
-#define org_crosswire_android_sword_SWModule_SEARCHTYPE_ENTRYATTR -3L
-#undef org_crosswire_android_sword_SWModule_SEARCHTYPE_LUCENE
-#define org_crosswire_android_sword_SWModule_SEARCHTYPE_LUCENE -4L
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: terminateSearch
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_terminateSearch
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: search
- * Signature: (Ljava/lang/String;IJLjava/lang/String;Lorg/crosswire/android/sword/SWModule/SearchProgressReporter;)[Lorg/crosswire/android/sword/SWModule/SearchHit;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_search
- (JNIEnv *, jobject, jstring, jint, jlong, jstring, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: error
- * Signature: ()C
- */
-JNIEXPORT jchar JNICALL Java_org_crosswire_android_sword_SWModule_error
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: getEntrySize
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_crosswire_android_sword_SWModule_getEntrySize
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: getEntryAttribute
- * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_getEntryAttribute
- (JNIEnv *, jobject, jstring, jstring, jstring, jboolean);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: parseKeyList
- * Signature: (Ljava/lang/String;)[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_parseKeyList
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: setKeyText
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_setKeyText
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: getKeyText
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getKeyText
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: hasKeyChildren
- * Signature: ()Z
- */
-JNIEXPORT jboolean JNICALL Java_org_crosswire_android_sword_SWModule_hasKeyChildren
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: getKeyChildren
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_getKeyChildren
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: getKeyParent
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getKeyParent
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: previous
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_previous
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: next
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_next
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: begin
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_begin
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: getStripText
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getStripText
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: getRenderText
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getRenderText
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: getRawEntry
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getRawEntry
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: setRawEntry
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_setRawEntry
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: getConfigEntry
- * Signature: (Ljava/lang/String;)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getConfigEntry
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: deleteSearchFramework
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_deleteSearchFramework
- (JNIEnv *, jobject);
-
-/*
- * Class: org_crosswire_android_sword_SWModule
- * Method: hasSearchFramework
- * Signature: ()Z
- */
-JNIEXPORT jboolean JNICALL Java_org_crosswire_android_sword_SWModule_hasSearchFramework
- (JNIEnv *, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/bindings/java-jni/jni/org_crosswire_android_sword_SWModule_SearchHit.h b/bindings/java-jni/jni/org_crosswire_android_sword_SWModule_SearchHit.h
deleted file mode 100644
index e79c8fd..0000000
--- a/bindings/java-jni/jni/org_crosswire_android_sword_SWModule_SearchHit.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_crosswire_android_sword_SWModule_SearchHit */
-
-#ifndef _Included_org_crosswire_android_sword_SWModule_SearchHit
-#define _Included_org_crosswire_android_sword_SWModule_SearchHit
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/bindings/java-jni/jni/org_crosswire_android_sword_SWModule_SearchProgressReporter.h b/bindings/java-jni/jni/org_crosswire_android_sword_SWModule_SearchProgressReporter.h
deleted file mode 100644
index 1f7de09..0000000
--- a/bindings/java-jni/jni/org_crosswire_android_sword_SWModule_SearchProgressReporter.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_crosswire_android_sword_SWModule_SearchProgressReporter */
-
-#ifndef _Included_org_crosswire_android_sword_SWModule_SearchProgressReporter
-#define _Included_org_crosswire_android_sword_SWModule_SearchProgressReporter
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/bindings/java-jni/jni/swordstub.cpp b/bindings/java-jni/jni/swordstub.cpp
index 435a3f1..8a53f34 100644
--- a/bindings/java-jni/jni/swordstub.cpp
+++ b/bindings/java-jni/jni/swordstub.cpp
@@ -2,7 +2,7 @@
*
* swordstub.cpp - JNI bindings
*
- * $Id: swordstub.cpp 3184 2014-04-17 04:30:54Z greg.hellings $
+ * $Id: swordstub.cpp 3524 2017-11-07 03:08:49Z scribe $
*
* Copyright 2009-2013 CrossWire Bible Society (http://www.crosswire.org)
* CrossWire Bible Society
@@ -37,6 +37,14 @@
#include <localemgr.h>
#include <treekeyidx.h>
#include <installmgr.h>
+#include <remotetrans.h>
+#include <rtfhtml.h>
+//#include <android/native_activity.h>
+
+
+#ifdef BIBLESYNC
+#include <biblesync.hh>
+#endif
#include "webmgr.hpp"
#include "org_crosswire_android_sword_SWMgr.h"
@@ -50,10 +58,69 @@ using std::vector;
using namespace sword;
-
+namespace {
WebMgr *mgr = 0;
InstallMgr *installMgr = 0;
+#ifdef BIBLESYNC
+BibleSync *bibleSync = 0;
+using std::string;
+jobject bibleSyncListener = 0;
+JNIEnv *bibleSyncListenerEnv = 0;
+#endif
+static SWBuf STORAGE_BASE;
+static char *SWORD_PATH = "/sdcard/sword";
+static char *AND_BIBLE_MODULES_PATH = "/sdcard/Android/data/net.bible.android.activity/files";
+//ANativeActivity *_activity;
+
+class InstallStatusReporter : public StatusReporter {
+public:
+ JNIEnv *env;
+ jobject callback;
+ unsigned long last;
+
+ InstallStatusReporter() : env(0), callback(0), last(0) {
+ }
+
+ void init(JNIEnv *env, jobject callback) {
+ this->env = env;
+ this->callback = callback;
+ last = 0xffffffff;
+ }
+
+ virtual void update(unsigned long totalBytes, unsigned long completedBytes) {
+
+ // assert we have a callback
+ if (!callback) return;
+
+ if (completedBytes != last) {
+ last = completedBytes;
+ jclass cls = env->GetObjectClass(callback);
+ jmethodID mid = env->GetMethodID(cls, "update", "(JJ)V");
+ if (mid != 0) {
+ env->CallVoidMethod(callback, mid, (jlong)totalBytes, (jlong)completedBytes);
+ }
+ env->DeleteLocalRef(cls);
+ }
+ }
+
+ virtual void preStatus(long totalBytes, long completedBytes, const char *message) {
+
+ // assert we have a callback
+ if (!callback) return;
+
+ jclass cls = env->GetObjectClass(callback);
+ jmethodID mid = env->GetMethodID(cls, "preStatus", "(JJLjava/lang/String;)V");
+ if (mid != 0) {
+ jstring msg = env->NewStringUTF(assureValidUTF8((const char *)message));
+ env->CallVoidMethod(callback, mid, (jlong)totalBytes, (jlong)completedBytes, msg);
+ env->DeleteLocalRef(msg);
+ }
+ env->DeleteLocalRef(cls);
+ }
+} *installStatusReporter = 0;
+bool disclaimerConfirmed = false;
+
class AndroidLogger : public SWLog {
vector<int> levelMapping;
public:
@@ -73,50 +140,140 @@ public:
};
-static void init() {
+static void init(JNIEnv *env) {
if (!mgr) {
SWLog::setSystemLog(new AndroidLogger());
SWLog::getSystemLog()->setLogLevel(SWLog::LOG_DEBUG);
- SWBuf baseDir = "/sdcard/sword";
+SWLog::getSystemLog()->logDebug("libsword: init() begin");
+ SWBuf baseDir = SWORD_PATH;
SWBuf confPath = baseDir + "/mods.d/globals.conf";
// be sure we have at least some config file already out there
if (!FileMgr::existsFile(confPath.c_str())) {
+ SWLog::getSystemLog()->logDebug("libsword: init() sword config not found, attempting to create parent of: %s", confPath.c_str());
+ FileMgr::createParent(confPath.c_str());
+ remove(confPath.c_str());
+
+ SWLog::getSystemLog()->logDebug("libsword: init() saving basic: %s", confPath.c_str());
+ SWConfig config(confPath.c_str());
+ config["Globals"]["HiAndroid"] = "weeee";
+ config.save();
+ }
+ if (!FileMgr::existsFile(confPath.c_str())) {
+ baseDir = STORAGE_BASE;
+ confPath = baseDir + "/mods.d/globals.conf";
+SWLog::getSystemLog()->logDebug("libsword: init() sword config STILL not found, attempting to create parent of: %s", confPath.c_str());
FileMgr::createParent(confPath.c_str());
remove(confPath.c_str());
+SWLog::getSystemLog()->logDebug("libsword: init() saving basic: %s", confPath.c_str());
SWConfig config(confPath.c_str());
config["Globals"]["HiAndroid"] = "weeee";
- config.Save();
+ config.save();
}
- mgr = new WebMgr("/sdcard/sword");
+ confPath = STORAGE_BASE + "/extraConfig.conf";
+ bool exists = FileMgr::existsFile(confPath.c_str());
+SWLog::getSystemLog()->logDebug("libsword: extraConfig %s at path: %s", exists?"Exists":"Absent", confPath.c_str());
+
+SWLog::getSystemLog()->logDebug("libsword: init() creating WebMgr using path: %s", baseDir.c_str());
+ mgr = new WebMgr(baseDir, exists?confPath.c_str():0);
+
+SWLog::getSystemLog()->logDebug("libsword: init() augmenting modules from: %s", AND_BIBLE_MODULES_PATH);
+ // for And Bible modules
+ mgr->augmentModules(AND_BIBLE_MODULES_PATH, true);
}
}
+static void initInstall(JNIEnv *env, jobject progressReporter = 0) {
-static void initInstall() {
-
+ if (!installStatusReporter) {
+ installStatusReporter = new InstallStatusReporter();
+ }
+ installStatusReporter->init(env, progressReporter);
if (!installMgr) {
- SWBuf baseDir = "/sdcard/sword/InstallMgr";
+SWLog::getSystemLog()->logDebug("initInstall: installMgr is null");
+ SWBuf baseDir = SWORD_PATH;
+ baseDir += "/InstallMgr";
SWBuf confPath = baseDir + "/InstallMgr.conf";
// be sure we have at least some config file already out there
+SWLog::getSystemLog()->logDebug("initInstall: confPath: %s", confPath.c_str());
if (!FileMgr::existsFile(confPath.c_str())) {
+ SWLog::getSystemLog()->logDebug("initInstall: file doesn't exist: %s", confPath.c_str());
FileMgr::createParent(confPath.c_str());
- remove(confPath.c_str());
-
SWConfig config(confPath.c_str());
config["General"]["PassiveFTP"] = "true";
- config.Save();
+ config.save();
+ }
+ if (!FileMgr::existsFile(confPath.c_str())) {
+ baseDir = STORAGE_BASE;
+ confPath = baseDir + "/InstallMgr.conf";
+ SWLog::getSystemLog()->logDebug("initInstall: file STILL doesn't exist, attempting to create parent of: %s", confPath.c_str());
+ FileMgr::createParent(confPath.c_str());
+ SWConfig config(confPath.c_str());
+ config["General"]["PassiveFTP"] = "true";
+ config.save();
+ }
+ installMgr = new InstallMgr(baseDir, installStatusReporter);
+ if (disclaimerConfirmed) installMgr->setUserDisclaimerConfirmed(true);
+SWLog::getSystemLog()->logDebug("initInstall: instantiated InstallMgr with baseDir: %s", baseDir.c_str());
+ }
+}
+
+#ifdef BIBLESYNC
+void bibleSyncCallback(char cmd, string bible, string ref, string alt, string group, string domain, string info, string dump) {
+SWLog::getSystemLog()->logDebug("bibleSync callback msg: %c; bible: %s; ref: %s; alt: %s; group: %s; domain: %s; info: %s; dump: %s", cmd, bible.c_str(), ref.c_str(), alt.c_str(), group.c_str(), domain.c_str(), info.c_str(), dump.c_str());
+ if (::bibleSyncListener) {
+SWLog::getSystemLog()->logDebug("bibleSync listener is true");
+ jclass cls = bibleSyncListenerEnv->GetObjectClass(::bibleSyncListener);
+ jmethodID mid = bibleSyncListenerEnv->GetMethodID(cls, "messageReceived", "(Ljava/lang/String;)V");
+SWLog::getSystemLog()->logDebug("bibleSync listener mid: %ld", mid);
+ if (mid) {
+SWLog::getSystemLog()->logDebug("bibleSync listener mid is available");
+ switch(cmd) {
+ // error
+ case 'E':
+ // mismatch
+ case 'M':
+ // new speaker
+ case 'S':
+ // dead speaker
+ case 'D':
+ // announce
+ case 'A':
+ break;
+ // navigation
+ case 'N':
+SWLog::getSystemLog()->logDebug("bibleSync Nav Received: %s", ref.c_str());
+ jstring msg = bibleSyncListenerEnv->NewStringUTF(ref.c_str());
+ bibleSyncListenerEnv->CallVoidMethod(::bibleSyncListener, mid, msg);
+ bibleSyncListenerEnv->DeleteLocalRef(msg);
+ break;
+ }
}
- installMgr = new InstallMgr(baseDir);
+SWLog::getSystemLog()->logDebug("bibleSync listener deleting local ref to cls");
+ bibleSyncListenerEnv->DeleteLocalRef(cls);
+ }
+}
+#endif
+
+
+static void initBibleSync() {
+#ifdef BIBLESYNC
+ if (!bibleSync) {
+SWLog::getSystemLog()->logDebug("bibleSync initializing c-tor");
+ bibleSync = new BibleSync("SWORD", (const char *)SWVersion().currentVersion, "SwordUser");
+SWLog::getSystemLog()->logDebug("bibleSync initializing setMode");
+ bibleSync->setMode(BSP_MODE_PERSONAL, bibleSyncCallback, "passphrase");
}
+#endif
}
+}
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_version
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWVersion v;
return env->NewStringUTF(v.currentVersion);
@@ -129,7 +286,15 @@ JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_version
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_reInit
- (JNIEnv *, jobject) {
+ (JNIEnv *env, jobject me) {
+
+ jclass swmgrClass = env->GetObjectClass(me);
+ jmethodID getStorageBasePath = env->GetMethodID(swmgrClass, "getStorageBasePath", "()Ljava/lang/String;");
+ jstring basePathJS = (jstring)env->CallObjectMethod(me, getStorageBasePath, NULL);
+
+ const char *basePath = (basePathJS?env->GetStringUTFChars(basePathJS, NULL):0);
+ STORAGE_BASE = basePath;
+ SWLog::getSystemLog()->logDebug("setting STORAGE_BASE to: %s", STORAGE_BASE.c_str());
delete mgr;
mgr = 0;
@@ -137,26 +302,26 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_reInit
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getPrefixPath
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
return env->NewStringUTF(mgr->prefixPath);
}
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getConfigPath
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
return env->NewStringUTF(mgr->configPath);
}
JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getModInfoList
- (JNIEnv *env, jobject) {
+ (JNIEnv *env, jobject) {
- init();
+ init(env);
int size = 0;
for (sword::ModMap::iterator it = mgr->Modules.begin(); it != mgr->Modules.end(); ++it) {
@@ -211,15 +376,15 @@ SWLog::getSystemLog()->logDebug("getModInfoList returning %d length array\n", si
* Signature: (Ljava/lang/String;)Lorg/crosswire/android/sword/SWModule;
*/
JNIEXPORT jobject JNICALL Java_org_crosswire_android_sword_SWMgr_getModuleByName
- (JNIEnv *env, jobject me, jstring modNameJS) {
+ (JNIEnv *env, jobject me, jstring modNameJS) {
- init();
+ init(env);
jobject retVal = 0;
- const char *modName = env->GetStringUTFChars(modNameJS, NULL);
+ const char *modName = env->GetStringUTFChars(modNameJS, NULL);
sword::SWModule *module = mgr->getModule(modName);
- env->ReleaseStringUTFChars(modNameJS, modName);
+ env->ReleaseStringUTFChars(modNameJS, modName);
if (module) {
SWBuf type = module->getType();
@@ -242,17 +407,17 @@ JNIEXPORT jobject JNICALL Java_org_crosswire_android_sword_SWMgr_getModuleByName
* Signature: (Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setGlobalOption
- (JNIEnv *env, jobject me, jstring optionJS, jstring valueJS) {
+ (JNIEnv *env, jobject me, jstring optionJS, jstring valueJS) {
- init();
+ init(env);
- const char *option = env->GetStringUTFChars(optionJS, NULL);
- const char *value = env->GetStringUTFChars(valueJS, NULL);
+ const char *option = env->GetStringUTFChars(optionJS, NULL);
+ const char *value = env->GetStringUTFChars(valueJS, NULL);
mgr->setGlobalOption(option, value);
- env->ReleaseStringUTFChars(valueJS, value);
- env->ReleaseStringUTFChars(optionJS, option);
+ env->ReleaseStringUTFChars(valueJS, value);
+ env->ReleaseStringUTFChars(optionJS, option);
}
@@ -262,15 +427,15 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setGlobalOption
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalOption
- (JNIEnv *env, jobject me, jstring optionJS) {
+ (JNIEnv *env, jobject me, jstring optionJS) {
- init();
+ init(env);
- const char *option = env->GetStringUTFChars(optionJS, NULL);
+ const char *option = env->GetStringUTFChars(optionJS, NULL);
SWBuf value = mgr->getGlobalOption(option);
- env->ReleaseStringUTFChars(optionJS, option);
+ env->ReleaseStringUTFChars(optionJS, option);
return env->NewStringUTF(assureValidUTF8(value));
}
@@ -282,15 +447,15 @@ JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalOption
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalOptionTip
- (JNIEnv *env, jobject me, jstring optionJS) {
+ (JNIEnv *env, jobject me, jstring optionJS) {
- init();
+ init(env);
- const char *option = env->GetStringUTFChars(optionJS, NULL);
+ const char *option = env->GetStringUTFChars(optionJS, NULL);
SWBuf value = mgr->getGlobalOptionTip(option);
- env->ReleaseStringUTFChars(optionJS, option);
+ env->ReleaseStringUTFChars(optionJS, option);
return env->NewStringUTF(assureValidUTF8(value));
}
@@ -302,20 +467,20 @@ JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalOption
* Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_filterText
- (JNIEnv *env, jobject me, jstring filterNameJS, jstring textJS) {
+ (JNIEnv *env, jobject me, jstring filterNameJS, jstring textJS) {
- init();
+ init(env);
- const char *filterName = env->GetStringUTFChars(filterNameJS, NULL);
- const char *text = env->GetStringUTFChars(textJS, NULL);
+ const char *filterName = env->GetStringUTFChars(filterNameJS, NULL);
+ const char *text = env->GetStringUTFChars(textJS, NULL);
SWBuf buf = text;
// hmmm, in the future, provide a param to specify filter value maybe?
mgr->setGlobalOption("Greek Accents", "Off");
char errStatus = mgr->filterText(filterName, buf);
- env->ReleaseStringUTFChars(textJS, text);
- env->ReleaseStringUTFChars(filterNameJS, filterName);
+ env->ReleaseStringUTFChars(textJS, text);
+ env->ReleaseStringUTFChars(filterNameJS, filterName);
return env->NewStringUTF(assureValidUTF8(buf));
}
@@ -327,9 +492,9 @@ JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_filterText
* Signature: ()[Ljava/lang/String;
*/
JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalOptions
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
sword::StringList options = mgr->getGlobalOptions();
int count = 0;
@@ -351,19 +516,239 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalO
/*
* Class: org_crosswire_android_sword_SWMgr
+ * Method: getExtraConfigSections
+ * Signature: ()[Ljava/lang/String;
+ */
+JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getExtraConfigSections
+ (JNIEnv *env, jobject me) {
+
+ init(env);
+
+ SWBuf baseDir = STORAGE_BASE;
+ SWBuf confPath = baseDir + "/extraConfig.conf";
+ int count = 0;
+ bool exists = FileMgr::existsFile(confPath.c_str());
+ jclass clazzString = env->FindClass("java/lang/String");
+ jobjectArray ret;
+ SWLog::getSystemLog()->logDebug("libsword: extraConfig %s at path: %s", exists?"Exists":"Absent", confPath.c_str());
+ if (exists) {
+ SWConfig config(confPath.c_str());
+ SectionMap::const_iterator sit;
+ for (sit = config.getSections().begin(); sit != config.getSections().end(); ++sit) {
+ count++;
+ }
+ SWLog::getSystemLog()->logDebug("libsword: %d sections found in extraConfig", count);
+ ret = (jobjectArray) env->NewObjectArray(count, clazzString, NULL);
+ count = 0;
+ for (sit = config.getSections().begin(); sit != config.getSections().end(); ++sit) {
+ env->SetObjectArrayElement(ret, count++, env->NewStringUTF(assureValidUTF8(sit->first.c_str())));
+ }
+ }
+ else {
+ ret = (jobjectArray) env->NewObjectArray(0, clazzString, NULL);
+ }
+
+ return ret;
+}
+
+
+/*
+ * Class: org_crosswire_android_sword_SWMgr
+ * Method: getExtraConfigKeys
+ * Signature: (Ljava/lang/String;)[Ljava/lang/String;
+ */
+JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getExtraConfigKeys
+ (JNIEnv *env, jobject me, jstring section) {
+
+ init(env);
+
+ const char *s = env->GetStringUTFChars(section, NULL);
+
+ SWBuf mySection = s;
+
+ env->ReleaseStringUTFChars(section, s);
+
+ SWBuf baseDir = STORAGE_BASE;
+ SWBuf confPath = baseDir + "/extraConfig.conf";
+ int count = 0;
+ bool exists = FileMgr::existsFile(confPath.c_str());
+ jclass clazzString = env->FindClass("java/lang/String");
+ jobjectArray ret;
+ if (exists) {
+ SWConfig config(confPath.c_str());
+ SectionMap::const_iterator sit = config.getSections().find(mySection.c_str());
+ if (sit != config.getSections().end()) {
+ ConfigEntMap::const_iterator it;
+ for (it = sit->second.begin(); it != sit->second.end(); ++it) {
+ count++;
+ }
+ ret = (jobjectArray) env->NewObjectArray(count, clazzString, NULL);
+ count = 0;
+ for (it = sit->second.begin(); it != sit->second.end(); ++it) {
+ env->SetObjectArrayElement(ret, count++,
+ env->NewStringUTF(assureValidUTF8(it->first.c_str())));
+ }
+ }
+ else {
+ ret = (jobjectArray) env->NewObjectArray(0, clazzString, NULL);
+ }
+ }
+ else {
+ ret = (jobjectArray) env->NewObjectArray(0, clazzString, NULL);
+ }
+
+ return ret;
+}
+
+
+/*
+ * Class: org_crosswire_android_sword_SWMgr
+ * Method: getExtraConfigValue
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWMgr_getExtraConfigValue
+ (JNIEnv *env, jobject me, jstring section, jstring key) {
+
+ init(env);
+
+ const char *s = env->GetStringUTFChars(section, NULL);
+
+ SWBuf mySection = s;
+
+ env->ReleaseStringUTFChars(section, s);
+
+ const char *k = env->GetStringUTFChars(key, NULL);
+
+ SWBuf myKey = k;
+
+ env->ReleaseStringUTFChars(key, k);
+
+ jstring ret = 0;
+
+ SWBuf baseDir = STORAGE_BASE;
+ SWBuf confPath = baseDir + "/extraConfig.conf";
+ bool exists = FileMgr::existsFile(confPath.c_str());
+ if (exists) {
+ SWConfig config(confPath.c_str());
+ SectionMap::const_iterator sit = config.getSections().find(mySection.c_str());
+ if (sit != config.getSections().end()) {
+ ConfigEntMap::const_iterator it = sit->second.find(myKey.c_str());
+ if (it != sit->second.end()) {
+ ret = env->NewStringUTF(assureValidUTF8(it->second.c_str()));
+ }
+ }
+ }
+
+ return ret;
+}
+
+
+/*
+ * Class: org_crosswire_android_sword_SWMgr
+ * Method: setExtraConfigValue
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setExtraConfigValue
+ (JNIEnv *env, jobject me, jstring section, jstring key, jstring value) {
+
+ init(env);
+
+ const char *s = env->GetStringUTFChars(section, NULL);
+
+ SWBuf mySection = s;
+
+ env->ReleaseStringUTFChars(section, s);
+
+ const char *k = env->GetStringUTFChars(key, NULL);
+
+ SWBuf myKey = k;
+
+ env->ReleaseStringUTFChars(key, k);
+
+ const char *v = env->GetStringUTFChars(value, NULL);
+
+ SWBuf myValue = v;
+
+ env->ReleaseStringUTFChars(value, v);
+
+ SWBuf baseDir = STORAGE_BASE;
+ SWBuf confPath = baseDir + "/extraConfig.conf";
+ SWConfig config(confPath.c_str());
+ config[mySection][myKey] = myValue;
+ config.save();
+
+ Java_org_crosswire_android_sword_SWMgr_reInit(env, me);
+
+}
+
+
+/*
+ * Class: org_crosswire_android_sword_SWMgr
+ * Method: addExtraConfig
+ * Signature: (Ljava/lang/String;)[Ljava/lang/String;
+ */
+JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_addExtraConfig
+ (JNIEnv *env, jobject me, jstring blob) {
+
+ init(env);
+
+ const char *b = env->GetStringUTFChars(blob, NULL);
+
+ SWBuf myBlob = b;
+
+ env->ReleaseStringUTFChars(blob, b);
+
+ jobjectArray ret;
+
+ int count = 0;
+ jclass clazzString = env->FindClass("java/lang/String");
+
+ SWBuf baseDir = STORAGE_BASE;
+ SWBuf tmpConfPath = baseDir + "/tmpConfig.conf";
+ FileMgr::removeFile(tmpConfPath.c_str());
+ FileDesc *fd = FileMgr::getSystemFileMgr()->open(tmpConfPath.c_str(), FileMgr::CREAT|FileMgr::WRONLY, FileMgr::IREAD|FileMgr::IWRITE);
+ fd->getFd();
+ fd->write(myBlob.c_str(), myBlob.size());
+ FileMgr::getSystemFileMgr()->close(fd);
+
+ SWConfig newConfig(tmpConfPath.c_str());
+ FileMgr::removeFile(tmpConfPath.c_str());
+ SectionMap::const_iterator sit;
+ for (sit = newConfig.getSections().begin(); sit != newConfig.getSections().end(); ++sit) {
+ count++;
+ }
+ ret = (jobjectArray) env->NewObjectArray(count, clazzString, NULL);
+ count = 0;
+ for (sit = newConfig.getSections().begin(); sit != newConfig.getSections().end(); ++sit) {
+ env->SetObjectArrayElement(ret, count++, env->NewStringUTF(assureValidUTF8(sit->first.c_str())));
+ }
+
+ SWBuf confPath = baseDir + "/extraConfig.conf";
+ SWConfig config(confPath.c_str());
+ config.augment(newConfig);
+ config.save();
+
+ Java_org_crosswire_android_sword_SWMgr_reInit(env, me);
+
+ return ret;
+}
+
+
+/*
+ * Class: org_crosswire_android_sword_SWMgr
* Method: getGlobalOptionValues
* Signature: (Ljava/lang/String;)[Ljava/lang/String;
*/
JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalOptionValues
- (JNIEnv *env, jobject me, jstring optionJS) {
+ (JNIEnv *env, jobject me, jstring optionJS) {
- init();
+ init(env);
- const char *option = env->GetStringUTFChars(optionJS, NULL);
+ const char *option = env->GetStringUTFChars(optionJS, NULL);
sword::StringList options = mgr->getGlobalOptionValues(option);
- env->ReleaseStringUTFChars(optionJS, option);
+ env->ReleaseStringUTFChars(optionJS, option);
int count = 0;
for (sword::StringList::iterator it = options.begin(); it != options.end(); ++it) {
@@ -387,17 +772,17 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getGlobalO
* Signature: (Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setCipherKey
- (JNIEnv *env, jobject me , jstring modNameJS, jstring keyJS) {
+ (JNIEnv *env, jobject me , jstring modNameJS, jstring keyJS) {
- init();
+ init(env);
- const char *modName = env->GetStringUTFChars(modNameJS, NULL);
- const char *key = env->GetStringUTFChars(keyJS, NULL);
+ const char *modName = env->GetStringUTFChars(modNameJS, NULL);
+ const char *key = env->GetStringUTFChars(keyJS, NULL);
mgr->setCipherKey(modName, key);
- env->ReleaseStringUTFChars(keyJS, key);
- env->ReleaseStringUTFChars(modNameJS, modName);
+ env->ReleaseStringUTFChars(keyJS, key);
+ env->ReleaseStringUTFChars(modNameJS, modName);
}
@@ -407,9 +792,9 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setCipherKey
* Signature: (Z)V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setJavascript
- (JNIEnv *env, jobject me, jboolean val) {
+ (JNIEnv *env, jobject me, jboolean val) {
- init();
+ init(env);
mgr->setJavascript(val == JNI_TRUE);
}
@@ -421,9 +806,9 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setJavascript
* Signature: ()[Ljava/lang/String;
*/
JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getAvailableLocales
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
sword::StringList localeNames = LocaleMgr::getSystemLocaleMgr()->getAvailableLocales();
int count = 0;
@@ -448,15 +833,15 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWMgr_getAvailab
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setDefaultLocale
- (JNIEnv *env, jobject me, jstring localeNameJS) {
+ (JNIEnv *env, jobject me, jstring localeNameJS) {
- init();
+ init(env);
- const char *localeName = env->GetStringUTFChars(localeNameJS, NULL);
+ const char *localeName = env->GetStringUTFChars(localeNameJS, NULL);
LocaleMgr::getSystemLocaleMgr()->setDefaultLocaleName(localeName);
- env->ReleaseStringUTFChars(localeNameJS, localeName);
+ env->ReleaseStringUTFChars(localeNameJS, localeName);
}
@@ -464,9 +849,10 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_setDefaultLocale
// SWModule methods ----------------------------------------------------------------------------------
-SWModule *getModule(JNIEnv *env, jobject me) {
+SWModule *getModule
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = 0;
jclass clazzSWModule = env->FindClass("org/crosswire/android/sword/SWModule");
@@ -474,10 +860,10 @@ SWModule *getModule(JNIEnv *env, jobject me) {
jfieldID sourceFieldID = env->GetFieldID(clazzSWModule, "remoteSourceName", "Ljava/lang/String;");
jstring modNameJS = (jstring)env->GetObjectField(me, fieldID);
jstring sourceNameJS = (jstring)env->GetObjectField(me, sourceFieldID);
- const char *modName = (modNameJS?env->GetStringUTFChars(modNameJS, NULL):0);
- const char *sourceName = (sourceNameJS?env->GetStringUTFChars(sourceNameJS, NULL):0);
+ const char *modName = (modNameJS?env->GetStringUTFChars(modNameJS, NULL):0);
+ const char *sourceName = (sourceNameJS?env->GetStringUTFChars(sourceNameJS, NULL):0);
if (sourceName && *sourceName) {
- initInstall();
+ initInstall(env);
InstallSourceMap::iterator source = installMgr->sources.find(sourceName);
if (source == installMgr->sources.end()) {
SWMgr *mgr = source->second->getMgr();
@@ -485,8 +871,8 @@ SWModule *getModule(JNIEnv *env, jobject me) {
}
}
else module = mgr->getModule(modName);
- if (modName) env->ReleaseStringUTFChars(modNameJS, modName);
- if (sourceName) env->ReleaseStringUTFChars(sourceNameJS, sourceName);
+ if (modName) env->ReleaseStringUTFChars(modNameJS, modName);
+ if (sourceName) env->ReleaseStringUTFChars(sourceNameJS, sourceName);
return module;
}
@@ -496,9 +882,9 @@ SWModule *getModule(JNIEnv *env, jobject me) {
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_setKeyText
- (JNIEnv *env, jobject me, jstring keyTextJS) {
+ (JNIEnv *env, jobject me, jstring keyTextJS) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -509,7 +895,9 @@ SWLog::getSystemLog()->logDebug("setKeyText(%s, %s)", module->getName(), keyText
sword::VerseKey *vkey = SWDYNAMIC_CAST(VerseKey, key);
if (vkey && (*keyText=='+' ||*keyText=='-')) {
if (!stricmp(keyText+1, "book")) {
- vkey->setBook(vkey->getBook() + ((*keyText=='+')?1:-1));
+ int newBook = vkey->getBook() + ((*keyText=='+')?1:-1);
+SWLog::getSystemLog()->logDebug("setting book to %d", newBook);
+ vkey->setBook(newBook);
env->ReleaseStringUTFChars(keyTextJS, keyText);
return;
}
@@ -532,9 +920,9 @@ SWLog::getSystemLog()->logDebug("setKeyText(%s, %s)", module->getName(), keyText
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getKeyText
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -552,9 +940,9 @@ JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getKeyText
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getRenderText
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -568,13 +956,33 @@ JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getRenderTex
/*
* Class: org_crosswire_android_sword_SWModule
+ * Method: getRenderHeader
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getRenderHeader
+ (JNIEnv *env, jobject me) {
+
+ init(env);
+
+ SWModule *module = getModule(env, me);
+
+ jstring retVal = 0;
+ if (module) {
+ retVal = env->NewStringUTF(assureValidUTF8(((const char *)(module->getRenderHeader() ? module->getRenderHeader():""))));
+ }
+ return retVal;
+}
+
+
+/*
+ * Class: org_crosswire_android_sword_SWModule
* Method: terminateSearch
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_terminateSearch
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -590,13 +998,14 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_terminateSearch
* Signature: ()C
*/
JNIEXPORT jchar JNICALL Java_org_crosswire_android_sword_SWModule_error
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
- return (module) ? module->popError() : -99;
+ int error = (module) ? module->popError() : -99;
+ return error;
}
@@ -606,9 +1015,9 @@ JNIEXPORT jchar JNICALL Java_org_crosswire_android_sword_SWModule_error
* Signature: ()J
*/
JNIEXPORT jlong JNICALL Java_org_crosswire_android_sword_SWModule_getEntrySize
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -622,9 +1031,9 @@ JNIEXPORT jlong JNICALL Java_org_crosswire_android_sword_SWModule_getEntrySize
* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)[Ljava/lang/String;
*/
JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_getEntryAttribute
- (JNIEnv *env, jobject me, jstring level1JS, jstring level2JS, jstring level3JS, jboolean filteredJS) {
+ (JNIEnv *env, jobject me, jstring level1JS, jstring level2JS, jstring level3JS, jboolean filteredJS) {
- init();
+ init(env);
const char *level1 = env->GetStringUTFChars(level1JS, NULL);
const char *level2 = env->GetStringUTFChars(level2JS, NULL);
@@ -646,7 +1055,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_getEntr
sword::AttributeList::iterator i2Start, i2End;
sword::AttributeValue::iterator i3Start, i3End;
- if ((level1) && (*level1)) {
+ if ((level1) && (*level1) && *level1 != '-') {
i1Start = entryAttribs.find(level1);
i1End = i1Start;
if (i1End != entryAttribs.end())
@@ -657,35 +1066,54 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_getEntr
i1End = entryAttribs.end();
}
for (;i1Start != i1End; ++i1Start) {
- if ((level2) && (*level2)) {
- i2Start = i1Start->second.find(level2);
- i2End = i2Start;
- if (i2End != i1Start->second.end())
- ++i2End;
+ if (level1 && *level1 && *level1 == '-') {
+ results.push_back(i1Start->first);
}
else {
- i2Start = i1Start->second.begin();
- i2End = i1Start->second.end();
- }
- for (;i2Start != i2End; ++i2Start) {
- if ((level3) && (*level3)) {
- i3Start = i2Start->second.find(level3);
- i3End = i3Start;
- if (i3End != i2Start->second.end())
- ++i3End;
+ if (level2 && *level2 && *level2 != '-') {
+ i2Start = i1Start->second.find(level2);
+ i2End = i2Start;
+ if (i2End != i1Start->second.end())
+ ++i2End;
}
else {
- i3Start = i2Start->second.begin();
- i3End = i2Start->second.end();
+ i2Start = i1Start->second.begin();
+ i2End = i1Start->second.end();
}
- for (;i3Start != i3End; ++i3Start) {
- results.push_back(i3Start->second);
+ for (;i2Start != i2End; ++i2Start) {
+ if (level2 && *level2 && *level2 == '-') {
+ results.push_back(i2Start->first);
+ }
+ else {
+ // allow '-' to get all keys; allow '*' to get all key=value
+ if (level3 && *level3 && *level3 != '-' && *level3 != '*') {
+ i3Start = i2Start->second.find(level3);
+ i3End = i3Start;
+ if (i3End != i2Start->second.end())
+ ++i3End;
+ }
+ else {
+ i3Start = i2Start->second.begin();
+ i3End = i2Start->second.end();
+ }
+ for (;i3Start != i3End; ++i3Start) {
+ if (level3 && *level3 && *level3 == '-') {
+ results.push_back(i3Start->first);
+ }
+ else if (level3 && *level3 && *level3 == '*') {
+ results.push_back(i3Start->first + "=" + i3Start->second);
+ }
+ else {
+ results.push_back(i3Start->second);
+ }
+ }
+ if (i3Start != i3End)
+ break;
+ }
}
- if (i3Start != i3End)
+ if (i2Start != i2End)
break;
}
- if (i2Start != i2End)
- break;
}
ret = (jobjectArray) env->NewObjectArray(results.size(), clazzString, NULL);
@@ -716,9 +1144,9 @@ SWLog::getSystemLog()->logDebug("getEntryAttributes: size returned: %d", results
* Signature: (Ljava/lang/String;)[Ljava/lang/String;
*/
JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_parseKeyList
- (JNIEnv *env, jobject me, jstring keyListTextJS) {
+ (JNIEnv *env, jobject me, jstring keyListTextJS) {
- init();
+ init(env);
const char *keyListText = env->GetStringUTFChars(keyListTextJS, NULL);
@@ -761,9 +1189,9 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_parseKe
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_org_crosswire_android_sword_SWModule_hasKeyChildren
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -786,9 +1214,9 @@ JNIEXPORT jboolean JNICALL Java_org_crosswire_android_sword_SWModule_hasKeyChild
* Signature: ()[Ljava/lang/String;
*/
JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_getKeyChildren
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
jclass clazzString = env->FindClass("java/lang/String");
@@ -802,7 +1230,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_getKeyC
sword::VerseKey *vkey = SWDYNAMIC_CAST(VerseKey, key);
if (vkey) {
- ret = (jobjectArray) env->NewObjectArray(7, clazzString, NULL);
+ ret = (jobjectArray) env->NewObjectArray(10, clazzString, NULL);
SWBuf num;
num.appendFormatted("%d", vkey->getTestament());
env->SetObjectArrayElement(ret, 0, env->NewStringUTF(assureValidUTF8(num.c_str())));
@@ -822,6 +1250,9 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_getKeyC
num.appendFormatted("%d", vkey->getVerseMax());
env->SetObjectArrayElement(ret, 5, env->NewStringUTF(assureValidUTF8(num.c_str())));
env->SetObjectArrayElement(ret, 6, env->NewStringUTF(assureValidUTF8(vkey->getBookName())));
+ env->SetObjectArrayElement(ret, 7, env->NewStringUTF(assureValidUTF8(vkey->getOSISRef())));
+ env->SetObjectArrayElement(ret, 8, env->NewStringUTF(assureValidUTF8(vkey->getShortText())));
+ env->SetObjectArrayElement(ret, 9, env->NewStringUTF(assureValidUTF8(vkey->getBookAbbrev())));
}
else {
TreeKeyIdx *tkey = SWDYNAMIC_CAST(TreeKeyIdx, key);
@@ -844,8 +1275,8 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_getKeyC
}
}
}
- return ret;
}
+ return ret;
}
@@ -855,9 +1286,9 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_getKeyC
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getKeyParent
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWBuf retVal = "";
@@ -885,9 +1316,9 @@ JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getKeyParent
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_previous
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -904,9 +1335,9 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_previous
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_next
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -923,9 +1354,9 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_next
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_begin
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -942,9 +1373,9 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_begin
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getStripText
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWBuf retVal = "";
@@ -965,9 +1396,9 @@ JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getStripText
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getRawEntry
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWBuf retVal = "";
@@ -988,9 +1419,9 @@ JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getRawEntry
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_setRawEntry
- (JNIEnv *env, jobject me, jstring newEntryTextJS) {
+ (JNIEnv *env, jobject me, jstring newEntryTextJS) {
- init();
+ init(env);
const char *newEntryText = env->GetStringUTFChars(newEntryTextJS, NULL);
@@ -1005,34 +1436,15 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_setRawEntry
}
-jstring newBigString(JNIEnv *env, const char *buf) {
- SWBuf str = assureValidUTF8(buf);
- jclass stringClass = env->FindClass("java/lang/String");
- jmethodID ctorID = env->GetMethodID(stringClass, "<init>", "([B)V");
-
- jstring result;
-SWLog::getSystemLog()->logDebug("newBigString: making byte array size: %d", str.size());
- jbyteArray bytes = env->NewByteArray(str.size());
-SWLog::getSystemLog()->logDebug("newBigString: setting array region");
-
- env->SetByteArrayRegion(bytes, 0, str.size(), (jbyte *)str.c_str());
-SWLog::getSystemLog()->logDebug("newBigString: newing string");
- result = (jstring)env->NewObject(stringClass, ctorID, bytes);
- env->DeleteLocalRef(bytes);
-SWLog::getSystemLog()->logDebug("newBigString: returning");
- return result;
-}
-
-
/*
* Class: org_crosswire_android_sword_SWModule
* Method: getConfigEntry
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_crosswire_android_sword_SWModule_getConfigEntry
- (JNIEnv *env, jobject me, jstring configKeyJS) {
+ (JNIEnv *env, jobject me, jstring configKeyJS) {
- init();
+ init(env);
jstring retVal = 0;
@@ -1043,8 +1455,12 @@ SWLog::getSystemLog()->logDebug("getConfigEntry(%s)\n", configKey);
SWModule *module = getModule(env, me);
if (module) {
- SWBuf about = module->getConfigEntry(configKey);
- SWBuf assuredBuf = assureValidUTF8(about.c_str());
+ SWBuf confValue = module->getConfigEntry(configKey);
+ // special processing if we're requesting About-- kindof cheese
+ if (!strcmp("About", configKey)) {
+ RTFHTML().processText(confValue);
+ }
+ SWBuf assuredBuf = assureValidUTF8(confValue.c_str());
retVal = env->NewStringUTF(assuredBuf.c_str());
}
@@ -1060,9 +1476,9 @@ SWLog::getSystemLog()->logDebug("getConfigEntry(%s)\n", configKey);
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_deleteSearchFramework
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -1079,9 +1495,9 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWModule_deleteSearchFra
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_org_crosswire_android_sword_SWModule_hasSearchFramework
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- init();
+ init(env);
SWModule *module = getModule(env, me);
@@ -1101,6 +1517,9 @@ struct pu {
void percentUpdate(char percent, void *userData) {
struct pu *p = (struct pu *)userData;
+ // assert we've actually been given a progressReporter
+ if (!p->progressReporter) return;
+
if (percent != p->last) {
p->last = percent;
jclass cls = p->env->GetObjectClass(p->progressReporter);
@@ -1108,6 +1527,7 @@ void percentUpdate(char percent, void *userData) {
if (mid != 0) {
p->env->CallVoidMethod(p->progressReporter, mid, (jint)percent);
}
+ p->env->DeleteLocalRef(cls);
}
}
@@ -1118,14 +1538,14 @@ void percentUpdate(char percent, void *userData) {
* Signature: (Ljava/lang/String;IJLjava/lang/String;Lorg/crosswire/android/sword/SWModule/SearchProgressReporter;)[Lorg/crosswire/android/sword/SWModule/SearchHit;
*/
JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_search
- (JNIEnv *env, jobject me, jstring expressionJS, jint srchType, jlong flags, jstring scopeJS, jobject progressReporter) {
+ (JNIEnv *env, jobject me, jstring expressionJS, jint srchType, jlong flags, jstring scopeJS, jobject progressReporter) {
- init();
+ init(env);
const int MAX_RETURN_COUNT = 999999;
const char *expression = env->GetStringUTFChars(expressionJS, NULL);
- const char *scope = env->GetStringUTFChars(scopeJS, NULL);
+ const char *scope = scopeJS ? env->GetStringUTFChars(scopeJS, NULL) : 0;
jclass clazzSearchHit = env->FindClass("org/crosswire/android/sword/SWModule$SearchHit");
jobjectArray ret = 0;
@@ -1133,7 +1553,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_search
SWModule *module = getModule(env, me);
// TODO: remove this from the stack
- struct pu peeuuu(env, progressReporter);
+ pu *peeuuu = new pu(env, progressReporter);
if (module) {
sword::ListKey lscope;
@@ -1148,10 +1568,12 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_search
}
*parser = module->getKeyText();
lscope = parser->parseVerseList(scope, *parser, true);
- result = module->search(expression, srchType, flags, &lscope, 0, &percentUpdate, &peeuuu);
+ result = module->search(expression, srchType, flags, &lscope, 0, &percentUpdate, peeuuu);
delete parser;
}
- else result = module->search(expression, srchType, flags, 0, 0, &percentUpdate, &peeuuu);
+ else result = module->search(expression, srchType, flags, 0, 0, &percentUpdate, peeuuu);
+
+ delete peeuuu;
int count = 0;
for (result = sword::TOP; !result.popError(); result++) count++;
@@ -1187,7 +1609,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_search
env->DeleteLocalRef(modName);
}
- env->ReleaseStringUTFChars(scopeJS, scope);
+ if (scope) env->ReleaseStringUTFChars(scopeJS, scope);
env->ReleaseStringUTFChars(expressionJS, expression);
return (ret) ? ret : (jobjectArray) env->NewObjectArray(0, clazzSearchHit, NULL);
@@ -1204,7 +1626,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_SWModule_search
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_InstallMgr_reInit
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
delete installMgr;
installMgr = 0;
@@ -1217,9 +1639,9 @@ JNIEXPORT void JNICALL Java_org_crosswire_android_sword_InstallMgr_reInit
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_crosswire_android_sword_InstallMgr_syncConfig
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- initInstall();
+ initInstall(env);
return installMgr->refreshRemoteSourceConfiguration();
}
@@ -1231,10 +1653,10 @@ JNIEXPORT jint JNICALL Java_org_crosswire_android_sword_InstallMgr_syncConfig
* Signature: (Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_org_crosswire_android_sword_InstallMgr_uninstallModule
- (JNIEnv *env, jobject me, jstring modNameJS) {
+ (JNIEnv *env, jobject me, jstring modNameJS) {
- init();
- initInstall();
+ init(env);
+ initInstall(env);
const char *modName = env->GetStringUTFChars(modNameJS, NULL);
@@ -1260,9 +1682,9 @@ SWLog::getSystemLog()->logDebug("uninstallModule %s\n", modName);
* Signature: ()[Ljava/lang/String;
*/
JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_InstallMgr_getRemoteSources
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- initInstall();
+ initInstall(env);
jclass clazzString = env->FindClass("java/lang/String");
jobjectArray ret;
@@ -1271,6 +1693,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_InstallMgr_getRe
for (InstallSourceMap::iterator it = installMgr->sources.begin(); it != installMgr->sources.end(); ++it) {
count++;
}
+SWLog::getSystemLog()->logDebug("getRemoteSources: count: %d\n", count);
ret = (jobjectArray) env->NewObjectArray(count, clazzString, NULL);
count = 0;
for (InstallSourceMap::iterator it = installMgr->sources.begin(); it != installMgr->sources.end(); ++it) {
@@ -1287,9 +1710,9 @@ JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_InstallMgr_getRe
* Signature: (Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_org_crosswire_android_sword_InstallMgr_refreshRemoteSource
- (JNIEnv *env, jobject me, jstring sourceNameJS) {
+ (JNIEnv *env, jobject me, jstring sourceNameJS) {
- initInstall();
+ initInstall(env);
const char *sourceName = env->GetStringUTFChars(sourceNameJS, NULL);
@@ -1310,11 +1733,11 @@ JNIEXPORT jint JNICALL Java_org_crosswire_android_sword_InstallMgr_refreshRemote
* Signature: (Ljava/lang/String;)[Lorg/crosswire/android/sword/SWMgr/ModInfo;
*/
JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_InstallMgr_getRemoteModInfoList
- (JNIEnv *env, jobject me, jstring sourceNameJS) {
+ (JNIEnv *env, jobject me, jstring sourceNameJS) {
SWLog::getSystemLog()->logDebug("getRemoteModInfoList\n");
- init();
- initInstall();
+ init(env);
+ initInstall(env);
const char *sourceName = env->GetStringUTFChars(sourceNameJS, NULL);
SWLog::getSystemLog()->logDebug("sourceName: %s\n", sourceName);
@@ -1378,16 +1801,16 @@ SWLog::getSystemLog()->logDebug("remoteListModules returning %d length array\n",
return ret;
}
-
/*
* Class: org_crosswire_android_sword_InstallMgr
* Method: remoteInstallModule
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_org_crosswire_android_sword_InstallMgr_remoteInstallModule
- (JNIEnv *env, jobject me, jstring sourceNameJS, jstring modNameJS) {
+ (JNIEnv *env, jobject me, jstring sourceNameJS, jstring modNameJS, jobject progressReporter) {
- initInstall();
+ init(env);
+ initInstall(env, progressReporter);
const char *sourceName = env->GetStringUTFChars(sourceNameJS, NULL);
SWLog::getSystemLog()->logDebug("remoteInstallModule: sourceName: %s\n", sourceName);
@@ -1415,6 +1838,17 @@ SWLog::getSystemLog()->logDebug("remoteInstallModule: modName: %s\n", modName);
int error = installMgr->installModule(mgr, 0, module->getName(), is);
+ if (progressReporter) {
+ jclass cls = env->GetObjectClass(progressReporter);
+ jmethodID mid = env->GetMethodID(cls, "preStatus", "(JJLjava/lang/String;)V");
+ if (mid != 0) {
+ jstring msg = env->NewStringUTF("Complete");
+ env->CallVoidMethod(progressReporter, mid, (jlong)0, (jlong)0, msg);
+ env->DeleteLocalRef(msg);
+ }
+ env->DeleteLocalRef(cls);
+ }
+
return error;
}
@@ -1425,11 +1859,11 @@ SWLog::getSystemLog()->logDebug("remoteInstallModule: modName: %s\n", modName);
* Signature: (Ljava/lang/String;Ljava/lang/String;)Lorg/crosswire/android/sword/SWModule;
*/
JNIEXPORT jobject JNICALL Java_org_crosswire_android_sword_InstallMgr_getRemoteModuleByName
- (JNIEnv *env, jobject me, jstring sourceNameJS, jstring modNameJS) {
+ (JNIEnv *env, jobject me, jstring sourceNameJS, jstring modNameJS) {
jobject retVal = 0;
- initInstall();
+ initInstall(env);
const char *sourceName = env->GetStringUTFChars(sourceNameJS, NULL);
SWLog::getSystemLog()->logDebug("getRemoteModuleByName: sourceName: %s\n", sourceName);
@@ -1443,9 +1877,9 @@ SWLog::getSystemLog()->logDebug("Couldn't find remote source [%s]\n", sourceName
SWMgr *mgr = source->second->getMgr();
- const char *modName = env->GetStringUTFChars(modNameJS, NULL);
+ const char *modName = env->GetStringUTFChars(modNameJS, NULL);
sword::SWModule *module = mgr->getModule(modName);
- env->ReleaseStringUTFChars(modNameJS, modName);
+ env->ReleaseStringUTFChars(modNameJS, modName);
if (module) {
SWBuf type = module->getType();
@@ -1471,10 +1905,56 @@ SWLog::getSystemLog()->logDebug("Couldn't find remote source [%s]\n", sourceName
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_crosswire_android_sword_InstallMgr_setUserDisclaimerConfirmed
- (JNIEnv *env, jobject me) {
+ (JNIEnv *env, jobject me) {
- initInstall();
+ initInstall(env);
+ disclaimerConfirmed = true;
installMgr->setUserDisclaimerConfirmed(true);
}
+
+/*
+ * Class: org_crosswire_android_sword_SWMgr
+ * Method: sendBibleSyncMessage
+ * Signature: (Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_sendBibleSyncMessage
+ (JNIEnv *env, jobject me, jstring osisRefJS) {
+
+ initBibleSync();
+ const char *osisRef = env->GetStringUTFChars(osisRefJS, NULL);
+
+#ifdef BIBLESYNC
+ BibleSync_xmit_status retval = bibleSync->Transmit(BSP_SYNC, "Bible", osisRef);
+#endif
+
+ env->ReleaseStringUTFChars(osisRefJS, osisRef);
+}
+
+
+/*
+ * NOTE: this method blocks and should be called in a new thread
+ * Class: org_crosswire_android_sword_SWMgr
+ * Method: registerBibleSyncListener
+ * Signature: (Ljava/lang/Object;)V
+ */
+JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_registerBibleSyncListener
+ (JNIEnv *env, jobject me, jobject bibleSyncListener) {
+
+#ifdef BIBLESYNC
+SWLog::getSystemLog()->logDebug("registerBibleSyncListener");
+ ::bibleSyncListener = bibleSyncListener;
+ ::bibleSyncListenerEnv = env;
+SWLog::getSystemLog()->logDebug("registerBibleSyncListener - calling init");
+ initBibleSync();
+SWLog::getSystemLog()->logDebug("registerBibleSyncListener - starting while listener");
+ while(::bibleSyncListener) {
+SWLog::getSystemLog()->logDebug("bibleSyncListener - while loop iteration");
+ BibleSync::Receive(bibleSync);
+SWLog::getSystemLog()->logDebug("bibleSyncListener - sleeping for 2 seconds");
+ sleep(2);
+ }
+#endif
+}
+
diff --git a/bindings/java-jni/jni/webmgr.hpp b/bindings/java-jni/jni/webmgr.hpp
deleted file mode 100644
index e70adbf..0000000
--- a/bindings/java-jni/jni/webmgr.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/******************************************************************************
- *
- * webmgr.cpp -
- *
- * $Id: webmgr.hpp 2894 2013-07-16 04:38:43Z scribe $
- *
- * Copyright 2009-2013 CrossWire Bible Society (http://www.crosswire.org)
- * CrossWire Bible Society
- * P. O. Box 2528
- * Tempe, AZ 85280-2528
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation version 2.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- */
-
-#ifndef WEBMGR_HPP
-#define WEBMGR_HPP
-
-#include <swmgr.h>
-#include <swmodule.h>
-#include <swfilter.h>
-#include <markupfiltmgr.h>
-#include <osiswordjs.h>
-#include <thmlwordjs.h>
-#include <gbfwordjs.h>
-
-using namespace sword;
-
-class WebMgr : public SWMgr {
- OSISWordJS *osisWordJS;
- ThMLWordJS *thmlWordJS;
- GBFWordJS *gbfWordJS;
- SWModule *defaultGreekLex;
- SWModule *defaultHebLex;
- SWModule *defaultGreekParse;
- SWModule *defaultHebParse;
-
-public:
-// WebMgr(SWConfig *sysConf) : SWMgr(0, sysConf, false, new MarkupFilterMgr(FMT_WEBIF)) {
- WebMgr(const char *path) : SWMgr(path, false, new MarkupFilterMgr(FMT_WEBIF)) {
- defaultGreekLex = 0;
- defaultHebLex = 0;
- defaultGreekParse = 0;
- defaultHebParse = 0;
-
- osisWordJS = new OSISWordJS();
- thmlWordJS = new ThMLWordJS();
- gbfWordJS = new GBFWordJS();
- Load();
- osisWordJS->setDefaultModules(defaultGreekLex, defaultHebLex, defaultGreekParse, defaultHebParse);
- thmlWordJS->setDefaultModules(defaultGreekLex, defaultHebLex, defaultGreekParse, defaultHebParse);
- gbfWordJS->setDefaultModules(defaultGreekLex, defaultHebLex, defaultGreekParse, defaultHebParse);
- osisWordJS->setMgr(this);
- thmlWordJS->setMgr(this);
- gbfWordJS->setMgr(this);
- setGlobalOption("Textual Variants", "Primary Reading");
- }
-
- ~WebMgr() {
- delete osisWordJS;
- delete thmlWordJS;
- delete gbfWordJS;
- }
-
-
- void AddGlobalOptions(SWModule *module, ConfigEntMap &section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) {
-
- // ThML word stuff needs to process before strongs strip
- if (module->getMarkup() == FMT_THML) {
- module->addOptionFilter(thmlWordJS);
- }
-
- if (module->getMarkup() == FMT_GBF) {
- module->addOptionFilter(gbfWordJS);
- }
-
- // add other module filters
- SWMgr::AddGlobalOptions(module, section, start, end);
-
- // add our special filters
- if (module->getConfig().has("Feature", "GreekDef")) {
- defaultGreekLex = module;
- }
- if (module->getConfig().has("Feature", "HebrewDef")) {
- defaultHebLex = module;
- }
- if (module->getConfig().has("Feature", "GreekParse")) {
- defaultGreekParse = module;
- }
- if (module->getConfig().has("Feature", "HebrewParse")) {
- defaultHebParse = module;
- }
- if (module->getConfig().has("GlobalOptionFilter", "ThMLVariants")) {
- OptionFilterMap::iterator it = optionFilters.find("ThMLVariants");
- if (it != optionFilters.end()) {
- module->addOptionFilter((*it).second); // add filter to module and option as a valid option
- }
- }
-
- if (module->getMarkup() == FMT_OSIS) {
- module->addOptionFilter(osisWordJS);
- }
- }
-
-
- void setJavascript(bool val) {
- osisWordJS->setOptionValue((val)?"On":"Off");
- thmlWordJS->setOptionValue((val)?"On":"Off");
- gbfWordJS->setOptionValue((val)?"On":"Off");
- }
-};
-
-#endif
diff --git a/bindings/java-jni/src/org/crosswire/android/sword/InstallMgr.java b/bindings/java-jni/src/org/crosswire/android/sword/InstallMgr.java
index 3edbd58..b1b5b0a 100644
--- a/bindings/java-jni/src/org/crosswire/android/sword/InstallMgr.java
+++ b/bindings/java-jni/src/org/crosswire/android/sword/InstallMgr.java
@@ -2,7 +2,7 @@
*
* InstallMgr.java -
*
- * $Id: InstallMgr.java 2833 2013-06-29 06:40:28Z chrislit $
+ * $Id: InstallMgr.java 3229 2014-05-09 09:32:36Z scribe $
*
* Copyright 2009-2013 CrossWire Bible Society (http://www.crosswire.org)
* CrossWire Bible Society
@@ -23,6 +23,11 @@
package org.crosswire.android.sword;
public class InstallMgr {
+
+ public static interface InstallProgressReporter {
+ public void update(long totalBytes, long completedBytes);
+ public void preStatus(long totalBytes, long completedBytes, String message);
+ }
public native void reInit();
@@ -32,7 +37,8 @@ public class InstallMgr {
public native String [] getRemoteSources();
public native int refreshRemoteSource(String sourceName);
public native SWMgr.ModInfo [] getRemoteModInfoList(String sourceName);
- public native int remoteInstallModule(String sourceName, String modName);
+ public native int remoteInstallModule(String sourceName, String modName, InstallProgressReporter progressReporter);
+ public int remoteInstallModule(String sourceName, String modName) { return remoteInstallModule(sourceName, modName, null); }
public native SWModule getRemoteModuleByName(String source, String name);
}
diff --git a/bindings/java-jni/src/org/crosswire/android/sword/SWMgr.java b/bindings/java-jni/src/org/crosswire/android/sword/SWMgr.java
index 2ae2e01..a77ef8b 100644
--- a/bindings/java-jni/src/org/crosswire/android/sword/SWMgr.java
+++ b/bindings/java-jni/src/org/crosswire/android/sword/SWMgr.java
@@ -2,7 +2,7 @@
*
* SWMgr.java -
*
- * $Id: SWMgr.java 2833 2013-06-29 06:40:28Z chrislit $
+ * $Id: SWMgr.java 3515 2017-11-01 11:38:09Z scribe $
*
* Copyright 2009-2013 CrossWire Bible Society (http://www.crosswire.org)
* CrossWire Bible Society
@@ -37,6 +37,12 @@ public class SWMgr {
public String delta;
}
+ public SWMgr() {
+ reInit();
+ }
+ public SWMgr(boolean init) {
+ if (init) reInit();
+ }
public native String version();
public native void reInit();
@@ -55,6 +61,31 @@ public class SWMgr {
public native void setJavascript(boolean val);
public native String[] getAvailableLocales();
public native void setDefaultLocale(String name);
+
+ /**
+ * add a conf snippet to extraConfig. This is useful for adding a config section
+ * sent from a module unlock key app.
+ * @param blob
+ * @return an array of section names which were contained in the blob
+ */
+ public native String[] addExtraConfig(String blob);
+ public native void setExtraConfigValue(String section, String key, String value);
+ public native String[] getExtraConfigSections();
+ public native String[] getExtraConfigKeys(String section);
+ public native String getExtraConfigValue(String section, String key);
+
+ public static interface BibleSyncListener {
+ public void messageReceived(String osisRef);
+ }
+ public native void sendBibleSyncMessage(String osisRef);
+ public native void registerBibleSyncListener(BibleSyncListener listener);
+ public String getStorageBasePath() {
+ return ".";
+/*
+ Context context = app.getApplicationContext();
+ return context.getFilesDir().getAbsolutePath();
+*/
+ }
}
diff --git a/bindings/java-jni/src/org/crosswire/android/sword/SWModule.java b/bindings/java-jni/src/org/crosswire/android/sword/SWModule.java
index c7d4707..238bf28 100644
--- a/bindings/java-jni/src/org/crosswire/android/sword/SWModule.java
+++ b/bindings/java-jni/src/org/crosswire/android/sword/SWModule.java
@@ -2,7 +2,7 @@
*
* SWModule.java -
*
- * $Id: SWModule.java 2833 2013-06-29 06:40:28Z chrislit $
+ * $Id: SWModule.java 3237 2014-05-22 08:02:06Z scribe $
*
* Copyright 2009-2013 CrossWire Bible Society (http://www.crosswire.org)
* CrossWire Bible Society
@@ -38,6 +38,17 @@ public class SWModule {
public static final int SEARCHTYPE_ENTRYATTR = -3;
public static final int SEARCHTYPE_LUCENE = -4;
+ public static final int VERSEKEY_TESTAMENT = 0;
+ public static final int VERSEKEY_BOOK = 1;
+ public static final int VERSEKEY_CHAPTER = 2;
+ public static final int VERSEKEY_VERSE = 3;
+ public static final int VERSEKEY_CHAPTERMAX = 4;
+ public static final int VERSEKEY_VERSEMAX = 5;
+ public static final int VERSEKEY_BOOKNAME = 6;
+ public static final int VERSEKEY_OSISREF = 7;
+ public static final int VERSEKEY_SHORTTEXT = 8;
+ public static final int VERSEKEY_BOOKABBREV = 9;
+
private SWModule() {} // don't allow allocation, instead use factory method SWMgr.getModuleByName to retrieve an instance
public static class SearchHit {
@@ -78,6 +89,7 @@ public class SWModule {
public native void next();
public native void begin();
public native String getStripText();
+ public native String getRenderHeader();
public native String getRenderText();
public native String getRawEntry();
public native void setRawEntry(String entryBuffer);
diff --git a/bindings/objc/LongRunningTests/Info.plist b/bindings/objc/LongRunningTests/Info.plist
new file mode 100644
index 0000000..ba72822
--- /dev/null
+++ b/bindings/objc/LongRunningTests/Info.plist
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIdentifier</key>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundlePackageType</key>
+ <string>BNDL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+</dict>
+</plist>
diff --git a/bindings/objc/Makefile b/bindings/objc/Makefile
new file mode 100644
index 0000000..c74e120
--- /dev/null
+++ b/bindings/objc/Makefile
@@ -0,0 +1,21 @@
+#
+# First enter dependencies/ and run make
+#
+# Then open this project ObjCSword.xcodeproj with xcode, select Product|Scheme|SWORD (note all caps)
+# Build
+#
+# Then come here and type make
+#
+
+all: deploycordova
+
+deploycordova:
+ mkdir -p ../cordova/org.crosswire.sword.cordova.SWORD/libs/ios/
+ cp ./dependencies/curl/lib/libcurl.a ../cordova/org.crosswire.sword.cordova.SWORD/libs/ios/
+# cp ./Build/Debug-iphonesimulator/libSWORD.a ../cordova/org.crosswire.sword.cordova.SWORD/libs/ios/
+# cp ./Build/Debug-iphoneos/libSWORD.a ../cordova/org.crosswire.sword.cordova.SWORD/libs/ios/
+ cp SWORD/Release-universal/libSWORD.a ../cordova/org.crosswire.sword.cordova.SWORD/libs/ios/
+ cp ../../include/defs.h ../../include/flatapi.h ../cordova/org.crosswire.sword.cordova.SWORD/src/ios/
+
+
+
diff --git a/bindings/objc/ObjCSword.h b/bindings/objc/ObjCSword.h
index 5f2f5ce..f96009b 100644
--- a/bindings/objc/ObjCSword.h
+++ b/bindings/objc/ObjCSword.h
@@ -26,6 +26,9 @@
#import <ObjCSword/SwordInstallSourceManager.h>
#import <ObjCSword/SwordModuleTextEntry.h>
#import <ObjCSword/SwordModuleTreeEntry.h>
+#import <ObjCSword/SwordFilter.h>
#import <ObjCSword/VerseEnumerator.h>
#import <ObjCSword/Configuration.h>
#import <ObjCSword/OSXConfiguration.h>
+#import <ObjCSword/FilterProviderFactory.h>
+#import <ObjCSword/DefaultFilterProvider.h>
diff --git a/bindings/objc/ObjCSword.xcodeproj/project.pbxproj b/bindings/objc/ObjCSword.xcodeproj/project.pbxproj
index 8598424..58e6b0d 100644
--- a/bindings/objc/ObjCSword.xcodeproj/project.pbxproj
+++ b/bindings/objc/ObjCSword.xcodeproj/project.pbxproj
@@ -13,7 +13,6 @@
buildPhases = (
);
dependencies = (
- A9D271FF14D7193A00DA8926 /* PBXTargetDependency */,
A9D2720114D7194E00DA8926 /* PBXTargetDependency */,
A9D2720314D7194E00DA8926 /* PBXTargetDependency */,
A9D2720514D7194E00DA8926 /* PBXTargetDependency */,
@@ -37,14 +36,540 @@
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
+ 0A011DA71FB4142500778C2B /* sword.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A011D9E1FB4142500778C2B /* sword.framework */; };
+ 0A011DAC1FB4142500778C2B /* SWORDTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A011DAB1FB4142500778C2B /* SWORDTests.m */; };
+ 0A011DB51FB4149000778C2B /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67401C6BCD9600EB1A49 /* adler32.c */; };
+ 0A011DB61FB4149000778C2B /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67411C6BCD9600EB1A49 /* compress.c */; };
+ 0A011DB71FB4149000778C2B /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67421C6BCD9600EB1A49 /* crc32.c */; };
+ 0A011DB81FB4149000778C2B /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67441C6BCD9600EB1A49 /* deflate.c */; };
+ 0A011DB91FB4149000778C2B /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67461C6BCD9600EB1A49 /* gzclose.c */; };
+ 0A011DBA1FB4149000778C2B /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67481C6BCD9600EB1A49 /* gzlib.c */; };
+ 0A011DBB1FB4149000778C2B /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67491C6BCD9600EB1A49 /* gzread.c */; };
+ 0A011DBC1FB4149000778C2B /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB674A1C6BCD9600EB1A49 /* gzwrite.c */; };
+ 0A011DBD1FB4149000778C2B /* infback.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB674B1C6BCD9600EB1A49 /* infback.c */; };
+ 0A011DBE1FB4149000778C2B /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB674C1C6BCD9600EB1A49 /* inffast.c */; };
+ 0A011DBF1FB4149000778C2B /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB674F1C6BCD9600EB1A49 /* inflate.c */; };
+ 0A011DC01FB4149000778C2B /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67511C6BCD9600EB1A49 /* inftrees.c */; };
+ 0A011DC11FB4149000778C2B /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67531C6BCD9600EB1A49 /* trees.c */; };
+ 0A011DC21FB4149000778C2B /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67551C6BCD9600EB1A49 /* uncompr.c */; };
+ 0A011DC31FB4149000778C2B /* untgz.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67561C6BCD9600EB1A49 /* untgz.c */; };
+ 0A011DC41FB4149000778C2B /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67591C6BCD9600EB1A49 /* zutil.c */; };
+ 0A011DC51FB4149000778C2B /* ftplib.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D013EE98B30094E3FE /* ftplib.c */; };
+ 0A011DC61FB4149000778C2B /* ftpparse.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D113EE98B30094E3FE /* ftpparse.c */; };
+ 0A011DC71FB4149000778C2B /* roman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D513EE98B30094E3FE /* roman.cpp */; };
+ 0A011DC81FB4149000778C2B /* swbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D613EE98B30094E3FE /* swbuf.cpp */; };
+ 0A011DC91FB4149000778C2B /* swobject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D713EE98B30094E3FE /* swobject.cpp */; };
+ 0A011DCA1FB4149000778C2B /* swversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D913EE98B30094E3FE /* swversion.cpp */; };
+ 0A011DCB1FB4149000778C2B /* url.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DA13EE98B30094E3FE /* url.cpp */; };
+ 0A011DCC1FB4149000778C2B /* utilstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DB13EE98B30094E3FE /* utilstr.cpp */; };
+ 0A011DCD1FB4149000778C2B /* utilxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DC13EE98B30094E3FE /* utilxml.cpp */; };
+ 0A011DCE1FB414A900778C2B /* remotetrans.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2351176AF188008D714B /* remotetrans.cpp */; };
+ 0A011DCF1FB414A900778C2B /* versificationmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A91C8B66175233F3008702B9 /* versificationmgr.cpp */; };
+ 0A011DD01FB414A900778C2B /* curlftpt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81813EE98B30094E3FE /* curlftpt.cpp */; };
+ 0A011DD11FB414A900778C2B /* curlhttpt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81913EE98B30094E3FE /* curlhttpt.cpp */; };
+ 0A011DD21FB414A900778C2B /* encfiltmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81A13EE98B30094E3FE /* encfiltmgr.cpp */; };
+ 0A011DD31FB414A900778C2B /* filemgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81B13EE98B30094E3FE /* filemgr.cpp */; };
+ 0A011DD41FB414A900778C2B /* ftplibftpt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81C13EE98B30094E3FE /* ftplibftpt.cpp */; };
+ 0A011DD51FB414A900778C2B /* installmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81E13EE98B30094E3FE /* installmgr.cpp */; };
+ 0A011DD61FB414A900778C2B /* localemgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81F13EE98B30094E3FE /* localemgr.cpp */; };
+ 0A011DD71FB414A900778C2B /* markupfiltmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82213EE98B30094E3FE /* markupfiltmgr.cpp */; };
+ 0A011DD81FB414A900778C2B /* stringmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82313EE98B30094E3FE /* stringmgr.cpp */; };
+ 0A011DD91FB414A900778C2B /* swcacher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82413EE98B30094E3FE /* swcacher.cpp */; };
+ 0A011DDA1FB414A900778C2B /* swconfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82513EE98B30094E3FE /* swconfig.cpp */; };
+ 0A011DDB1FB414A900778C2B /* swfiltermgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82613EE98B30094E3FE /* swfiltermgr.cpp */; };
+ 0A011DDC1FB414A900778C2B /* swlocale.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82713EE98B30094E3FE /* swlocale.cpp */; };
+ 0A011DDD1FB414A900778C2B /* swmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82813EE98B30094E3FE /* swmgr.cpp */; };
+ 0A011DDE1FB414A900778C2B /* swsearchable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82913EE98B30094E3FE /* swsearchable.cpp */; };
+ 0A011DDF1FB414B200778C2B /* listkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80913EE98B30094E3FE /* listkey.cpp */; };
+ 0A011DE01FB414B200778C2B /* strkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81013EE98B30094E3FE /* strkey.cpp */; };
+ 0A011DE11FB414B200778C2B /* swkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81113EE98B30094E3FE /* swkey.cpp */; };
+ 0A011DE21FB414B200778C2B /* treekey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81213EE98B30094E3FE /* treekey.cpp */; };
+ 0A011DE31FB414B200778C2B /* treekeyidx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81313EE98B30094E3FE /* treekeyidx.cpp */; };
+ 0A011DE41FB414B200778C2B /* versekey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81413EE98B30094E3FE /* versekey.cpp */; };
+ 0A011DE51FB414B200778C2B /* versetreekey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81513EE98B30094E3FE /* versetreekey.cpp */; };
+ 0A011DE61FB414BE00778C2B /* swdisp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80113EE98B30094E3FE /* swdisp.cpp */; };
+ 0A011DE71FB414BE00778C2B /* swlog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80213EE98B30094E3FE /* swlog.cpp */; };
+ 0A1F169A1FBB70E300E0AEFA /* flatapi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0A1F16991FBB70E200E0AEFA /* flatapi.cpp */; };
+ 0A1F169B1FBB70ED00E0AEFA /* flatapi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0A1F16991FBB70E200E0AEFA /* flatapi.cpp */; };
+ 0A1F16A41FBB755B00E0AEFA /* SWORD.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A1F16A31FBB755B00E0AEFA /* SWORD.m */; };
+ 0A1F16A51FBB755B00E0AEFA /* SWORD.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0A1F16A21FBB755B00E0AEFA /* SWORD.h */; };
+ 0A1F16A91FBB75AB00E0AEFA /* flatapi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0A1F16991FBB70E200E0AEFA /* flatapi.cpp */; };
+ 0A1F16AA1FBB75D600E0AEFA /* swdisp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80113EE98B30094E3FE /* swdisp.cpp */; };
+ 0A1F16AB1FBB75D600E0AEFA /* swlog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80213EE98B30094E3FE /* swlog.cpp */; };
+ 0A1F16AC1FBB75D600E0AEFA /* listkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80913EE98B30094E3FE /* listkey.cpp */; };
+ 0A1F16AD1FBB75D600E0AEFA /* strkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81013EE98B30094E3FE /* strkey.cpp */; };
+ 0A1F16AE1FBB75D600E0AEFA /* swkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81113EE98B30094E3FE /* swkey.cpp */; };
+ 0A1F16AF1FBB75D600E0AEFA /* treekey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81213EE98B30094E3FE /* treekey.cpp */; };
+ 0A1F16B01FBB75D600E0AEFA /* treekeyidx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81313EE98B30094E3FE /* treekeyidx.cpp */; };
+ 0A1F16B11FBB75D600E0AEFA /* versekey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81413EE98B30094E3FE /* versekey.cpp */; };
+ 0A1F16B21FBB75D600E0AEFA /* versetreekey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81513EE98B30094E3FE /* versetreekey.cpp */; };
+ 0A1F16B31FBB75D600E0AEFA /* remotetrans.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2351176AF188008D714B /* remotetrans.cpp */; };
+ 0A1F16B41FBB75D600E0AEFA /* versificationmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A91C8B66175233F3008702B9 /* versificationmgr.cpp */; };
+ 0A1F16B51FBB75D600E0AEFA /* curlftpt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81813EE98B30094E3FE /* curlftpt.cpp */; };
+ 0A1F16B61FBB75D600E0AEFA /* curlhttpt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81913EE98B30094E3FE /* curlhttpt.cpp */; };
+ 0A1F16B71FBB75D600E0AEFA /* encfiltmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81A13EE98B30094E3FE /* encfiltmgr.cpp */; };
+ 0A1F16B81FBB75D600E0AEFA /* filemgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81B13EE98B30094E3FE /* filemgr.cpp */; };
+ 0A1F16B91FBB75D600E0AEFA /* ftplibftpt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81C13EE98B30094E3FE /* ftplibftpt.cpp */; };
+ 0A1F16BA1FBB75D600E0AEFA /* installmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81E13EE98B30094E3FE /* installmgr.cpp */; };
+ 0A1F16BB1FBB75D600E0AEFA /* localemgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81F13EE98B30094E3FE /* localemgr.cpp */; };
+ 0A1F16BC1FBB75D600E0AEFA /* markupfiltmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82213EE98B30094E3FE /* markupfiltmgr.cpp */; };
+ 0A1F16BD1FBB75D600E0AEFA /* stringmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82313EE98B30094E3FE /* stringmgr.cpp */; };
+ 0A1F16BE1FBB75D600E0AEFA /* swcacher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82413EE98B30094E3FE /* swcacher.cpp */; };
+ 0A1F16BF1FBB75D600E0AEFA /* swconfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82513EE98B30094E3FE /* swconfig.cpp */; };
+ 0A1F16C01FBB75D600E0AEFA /* swfiltermgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82613EE98B30094E3FE /* swfiltermgr.cpp */; };
+ 0A1F16C11FBB75D600E0AEFA /* swlocale.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82713EE98B30094E3FE /* swlocale.cpp */; };
+ 0A1F16C21FBB75D600E0AEFA /* swmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82813EE98B30094E3FE /* swmgr.cpp */; };
+ 0A1F16C31FBB75D600E0AEFA /* swsearchable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82913EE98B30094E3FE /* swsearchable.cpp */; };
+ 0A1F16C41FBB762D00E0AEFA /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67401C6BCD9600EB1A49 /* adler32.c */; };
+ 0A1F16C51FBB762D00E0AEFA /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67411C6BCD9600EB1A49 /* compress.c */; };
+ 0A1F16C61FBB762D00E0AEFA /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67421C6BCD9600EB1A49 /* crc32.c */; };
+ 0A1F16C71FBB762D00E0AEFA /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67441C6BCD9600EB1A49 /* deflate.c */; };
+ 0A1F16C81FBB762D00E0AEFA /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67461C6BCD9600EB1A49 /* gzclose.c */; };
+ 0A1F16C91FBB762D00E0AEFA /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67481C6BCD9600EB1A49 /* gzlib.c */; };
+ 0A1F16CA1FBB762D00E0AEFA /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67491C6BCD9600EB1A49 /* gzread.c */; };
+ 0A1F16CB1FBB762D00E0AEFA /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB674A1C6BCD9600EB1A49 /* gzwrite.c */; };
+ 0A1F16CC1FBB762D00E0AEFA /* infback.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB674B1C6BCD9600EB1A49 /* infback.c */; };
+ 0A1F16CD1FBB762D00E0AEFA /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB674C1C6BCD9600EB1A49 /* inffast.c */; };
+ 0A1F16CE1FBB762D00E0AEFA /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB674F1C6BCD9600EB1A49 /* inflate.c */; };
+ 0A1F16CF1FBB762D00E0AEFA /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67511C6BCD9600EB1A49 /* inftrees.c */; };
+ 0A1F16D01FBB762D00E0AEFA /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67531C6BCD9600EB1A49 /* trees.c */; };
+ 0A1F16D11FBB762D00E0AEFA /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67551C6BCD9600EB1A49 /* uncompr.c */; };
+ 0A1F16D21FBB762D00E0AEFA /* untgz.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67561C6BCD9600EB1A49 /* untgz.c */; };
+ 0A1F16D31FBB762D00E0AEFA /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = A9BB67591C6BCD9600EB1A49 /* zutil.c */; };
+ 0A1F16D41FBB762D00E0AEFA /* ftplib.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D013EE98B30094E3FE /* ftplib.c */; };
+ 0A1F16D51FBB762D00E0AEFA /* ftpparse.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D113EE98B30094E3FE /* ftpparse.c */; };
+ 0A1F16D61FBB762D00E0AEFA /* roman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D513EE98B30094E3FE /* roman.cpp */; };
+ 0A1F16D71FBB762D00E0AEFA /* swbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D613EE98B30094E3FE /* swbuf.cpp */; };
+ 0A1F16D81FBB762D00E0AEFA /* swobject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D713EE98B30094E3FE /* swobject.cpp */; };
+ 0A1F16D91FBB762D00E0AEFA /* swversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D913EE98B30094E3FE /* swversion.cpp */; };
+ 0A1F16DA1FBB762D00E0AEFA /* url.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DA13EE98B30094E3FE /* url.cpp */; };
+ 0A1F16DB1FBB762D00E0AEFA /* utilstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DB13EE98B30094E3FE /* utilstr.cpp */; };
+ 0A1F16DC1FBB762D00E0AEFA /* utilxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DC13EE98B30094E3FE /* utilxml.cpp */; };
+ 0A1F16DD1FBB765A00E0AEFA /* rawgenbook.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8A713EE98B30094E3FE /* rawgenbook.cpp */; };
+ 0A1F16DE1FBB765A00E0AEFA /* swgenbook.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8A813EE98B30094E3FE /* swgenbook.cpp */; };
+ 0A1F16DF1FBB765A00E0AEFA /* rawld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8AF13EE98B30094E3FE /* rawld.cpp */; };
+ 0A1F16E01FBB765A00E0AEFA /* rawld4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8B313EE98B30094E3FE /* rawld4.cpp */; };
+ 0A1F16E11FBB765A00E0AEFA /* swld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8B413EE98B30094E3FE /* swld.cpp */; };
+ 0A1F16E21FBB765A00E0AEFA /* zld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8B813EE98B30094E3FE /* zld.cpp */; };
+ 0A1F16E31FBB765A00E0AEFA /* swmodule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8BC13EE98B30094E3FE /* swmodule.cpp */; };
+ 0A1F16E41FBB765A00E0AEFA /* rawtext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8C613EE98B30094E3FE /* rawtext.cpp */; };
+ 0A1F16E51FBB765A00E0AEFA /* rawtext4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8C913EE98B30094E3FE /* rawtext4.cpp */; };
+ 0A1F16E61FBB765A00E0AEFA /* swtext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8CA13EE98B30094E3FE /* swtext.cpp */; };
+ 0A1F16E71FBB765A00E0AEFA /* ztext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8CE13EE98B30094E3FE /* ztext.cpp */; };
+ 0A1F16E81FBB765A00E0AEFA /* ztext4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982038819A09BC000DD808C /* ztext4.cpp */; };
+ 0A1F16E91FBB768100E0AEFA /* scsuutf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982039D19A0A5FA00DD808C /* scsuutf8.cpp */; };
+ 0A1F16EA1FBB768100E0AEFA /* utf8scsu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982039E19A0A5FA00DD808C /* utf8scsu.cpp */; };
+ 0A1F16EB1FBB768100E0AEFA /* gbflatex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037919A09B7800DD808C /* gbflatex.cpp */; };
+ 0A1F16EC1FBB768100E0AEFA /* osislatex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037A19A09B7800DD808C /* osislatex.cpp */; };
+ 0A1F16ED1FBB768100E0AEFA /* osisxlit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037B19A09B7800DD808C /* osisxlit.cpp */; };
+ 0A1F16EE1FBB768100E0AEFA /* teilatex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037C19A09B7800DD808C /* teilatex.cpp */; };
+ 0A1F16EF1FBB768100E0AEFA /* thmllatex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037D19A09B7800DD808C /* thmllatex.cpp */; };
+ 0A1F16F01FBB768100E0AEFA /* osisenum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2353176AF19C008D714B /* osisenum.cpp */; };
+ 0A1F16F11FBB768100E0AEFA /* osisglosses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2354176AF19C008D714B /* osisglosses.cpp */; };
+ 0A1F16F21FBB768100E0AEFA /* osisreferencelinks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2355176AF19C008D714B /* osisreferencelinks.cpp */; };
+ 0A1F16F31FBB768100E0AEFA /* teixhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9E9C5ED16806A2B00ECEB39 /* teixhtml.cpp */; };
+ 0A1F16F41FBB768100E0AEFA /* cipherfil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85513EE98B30094E3FE /* cipherfil.cpp */; };
+ 0A1F16F51FBB768100E0AEFA /* gbffootnotes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85613EE98B30094E3FE /* gbffootnotes.cpp */; };
+ 0A1F16F61FBB768100E0AEFA /* gbfheadings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85713EE98B30094E3FE /* gbfheadings.cpp */; };
+ 0A1F16F71FBB768100E0AEFA /* gbfhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85813EE98B30094E3FE /* gbfhtml.cpp */; };
+ 0A1F16F81FBB768100E0AEFA /* gbfhtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85913EE98B30094E3FE /* gbfhtmlhref.cpp */; };
+ 0A1F16F91FBB768100E0AEFA /* gbfmorph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85A13EE98B30094E3FE /* gbfmorph.cpp */; };
+ 0A1F16FA1FBB768100E0AEFA /* gbfosis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85B13EE98B30094E3FE /* gbfosis.cpp */; };
+ 0A1F16FB1FBB768100E0AEFA /* gbfplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85C13EE98B30094E3FE /* gbfplain.cpp */; };
+ 0A1F16FC1FBB768100E0AEFA /* gbfredletterwords.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85D13EE98B30094E3FE /* gbfredletterwords.cpp */; };
+ 0A1F16FD1FBB768100E0AEFA /* gbfrtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85E13EE98B30094E3FE /* gbfrtf.cpp */; };
+ 0A1F16FE1FBB768100E0AEFA /* gbfstrongs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85F13EE98B30094E3FE /* gbfstrongs.cpp */; };
+ 0A1F16FF1FBB768100E0AEFA /* gbfthml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86013EE98B30094E3FE /* gbfthml.cpp */; };
+ 0A1F17001FBB768100E0AEFA /* gbfwebif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86113EE98B30094E3FE /* gbfwebif.cpp */; };
+ 0A1F17011FBB768100E0AEFA /* gbfwordjs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86213EE98B30094E3FE /* gbfwordjs.cpp */; };
+ 0A1F17021FBB768100E0AEFA /* gbfxhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86313EE98B30094E3FE /* gbfxhtml.cpp */; };
+ 0A1F17031FBB768100E0AEFA /* greeklexattribs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86413EE98B30094E3FE /* greeklexattribs.cpp */; };
+ 0A1F17041FBB768100E0AEFA /* latin1utf16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86513EE98B30094E3FE /* latin1utf16.cpp */; };
+ 0A1F17051FBB768100E0AEFA /* latin1utf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86613EE98B30094E3FE /* latin1utf8.cpp */; };
+ 0A1F17061FBB768100E0AEFA /* osisfootnotes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86913EE98B30094E3FE /* osisfootnotes.cpp */; };
+ 0A1F17071FBB768100E0AEFA /* osisheadings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86A13EE98B30094E3FE /* osisheadings.cpp */; };
+ 0A1F17081FBB768100E0AEFA /* osishtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86B13EE98B30094E3FE /* osishtmlhref.cpp */; };
+ 0A1F17091FBB768100E0AEFA /* osislemma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86C13EE98B30094E3FE /* osislemma.cpp */; };
+ 0A1F170A1FBB768100E0AEFA /* osismorph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86D13EE98B30094E3FE /* osismorph.cpp */; };
+ 0A1F170B1FBB768100E0AEFA /* osismorphsegmentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86E13EE98B30094E3FE /* osismorphsegmentation.cpp */; };
+ 0A1F170C1FBB768100E0AEFA /* osisosis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86F13EE98B30094E3FE /* osisosis.cpp */; };
+ 0A1F170D1FBB768100E0AEFA /* osisplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87013EE98B30094E3FE /* osisplain.cpp */; };
+ 0A1F170E1FBB768100E0AEFA /* osisredletterwords.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87113EE98B30094E3FE /* osisredletterwords.cpp */; };
+ 0A1F170F1FBB768100E0AEFA /* osisrtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87213EE98B30094E3FE /* osisrtf.cpp */; };
+ 0A1F17101FBB768100E0AEFA /* osisscripref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87413EE98B30094E3FE /* osisscripref.cpp */; };
+ 0A1F17111FBB768100E0AEFA /* osisstrongs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87513EE98B30094E3FE /* osisstrongs.cpp */; };
+ 0A1F17121FBB768100E0AEFA /* osisvariants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87613EE98B30094E3FE /* osisvariants.cpp */; };
+ 0A1F17131FBB768100E0AEFA /* osiswebif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87713EE98B30094E3FE /* osiswebif.cpp */; };
+ 0A1F17141FBB768100E0AEFA /* osiswordjs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87813EE98B30094E3FE /* osiswordjs.cpp */; };
+ 0A1F17151FBB768100E0AEFA /* osisxhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87913EE98B30094E3FE /* osisxhtml.cpp */; };
+ 0A1F17161FBB768100E0AEFA /* papyriplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87A13EE98B30094E3FE /* papyriplain.cpp */; };
+ 0A1F17171FBB768100E0AEFA /* rtfhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87D13EE98B30094E3FE /* rtfhtml.cpp */; };
+ 0A1F17181FBB768100E0AEFA /* swbasicfilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87E13EE98B30094E3FE /* swbasicfilter.cpp */; };
+ 0A1F17191FBB768100E0AEFA /* swoptfilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87F13EE98B30094E3FE /* swoptfilter.cpp */; };
+ 0A1F171A1FBB768100E0AEFA /* teihtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88013EE98B30094E3FE /* teihtmlhref.cpp */; };
+ 0A1F171B1FBB768100E0AEFA /* teiplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88113EE98B30094E3FE /* teiplain.cpp */; };
+ 0A1F171C1FBB768100E0AEFA /* teirtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88213EE98B30094E3FE /* teirtf.cpp */; };
+ 0A1F171D1FBB768100E0AEFA /* thmlfootnotes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88313EE98B30094E3FE /* thmlfootnotes.cpp */; };
+ 0A1F171E1FBB768100E0AEFA /* thmlgbf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88413EE98B30094E3FE /* thmlgbf.cpp */; };
+ 0A1F171F1FBB768100E0AEFA /* thmlheadings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88513EE98B30094E3FE /* thmlheadings.cpp */; };
+ 0A1F17201FBB768100E0AEFA /* thmlhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88613EE98B30094E3FE /* thmlhtml.cpp */; };
+ 0A1F17211FBB768100E0AEFA /* thmlhtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88713EE98B30094E3FE /* thmlhtmlhref.cpp */; };
+ 0A1F17221FBB768100E0AEFA /* thmllemma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88813EE98B30094E3FE /* thmllemma.cpp */; };
+ 0A1F17231FBB768100E0AEFA /* thmlmorph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88913EE98B30094E3FE /* thmlmorph.cpp */; };
+ 0A1F17241FBB768100E0AEFA /* thmlosis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88A13EE98B30094E3FE /* thmlosis.cpp */; };
+ 0A1F17251FBB768100E0AEFA /* thmlplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88B13EE98B30094E3FE /* thmlplain.cpp */; };
+ 0A1F17261FBB768100E0AEFA /* thmlrtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88C13EE98B30094E3FE /* thmlrtf.cpp */; };
+ 0A1F17271FBB768100E0AEFA /* thmlscripref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88D13EE98B30094E3FE /* thmlscripref.cpp */; };
+ 0A1F17281FBB768100E0AEFA /* thmlstrongs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88E13EE98B30094E3FE /* thmlstrongs.cpp */; };
+ 0A1F17291FBB768100E0AEFA /* thmlvariants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88F13EE98B30094E3FE /* thmlvariants.cpp */; };
+ 0A1F172A1FBB768100E0AEFA /* thmlwebif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89013EE98B30094E3FE /* thmlwebif.cpp */; };
+ 0A1F172B1FBB768100E0AEFA /* thmlwordjs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89113EE98B30094E3FE /* thmlwordjs.cpp */; };
+ 0A1F172C1FBB768100E0AEFA /* thmlxhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89213EE98B30094E3FE /* thmlxhtml.cpp */; };
+ 0A1F172D1FBB768100E0AEFA /* unicodertf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89313EE98B30094E3FE /* unicodertf.cpp */; };
+ 0A1F172E1FBB768100E0AEFA /* utf16utf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89413EE98B30094E3FE /* utf16utf8.cpp */; };
+ 0A1F172F1FBB768100E0AEFA /* utf8arabicpoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89513EE98B30094E3FE /* utf8arabicpoints.cpp */; };
+ 0A1F17301FBB768100E0AEFA /* utf8arshaping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89613EE98B30094E3FE /* utf8arshaping.cpp */; };
+ 0A1F17311FBB768100E0AEFA /* utf8bidireorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89713EE98B30094E3FE /* utf8bidireorder.cpp */; };
+ 0A1F17321FBB768100E0AEFA /* utf8cantillation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89813EE98B30094E3FE /* utf8cantillation.cpp */; };
+ 0A1F17331FBB768100E0AEFA /* utf8greekaccents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89913EE98B30094E3FE /* utf8greekaccents.cpp */; };
+ 0A1F17341FBB768100E0AEFA /* utf8hebrewpoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89A13EE98B30094E3FE /* utf8hebrewpoints.cpp */; };
+ 0A1F17351FBB768100E0AEFA /* utf8html.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89B13EE98B30094E3FE /* utf8html.cpp */; };
+ 0A1F17361FBB768100E0AEFA /* utf8latin1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89C13EE98B30094E3FE /* utf8latin1.cpp */; };
+ 0A1F17371FBB768100E0AEFA /* utf8nfc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89D13EE98B30094E3FE /* utf8nfc.cpp */; };
+ 0A1F17381FBB768100E0AEFA /* utf8nfkd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89E13EE98B30094E3FE /* utf8nfkd.cpp */; };
+ 0A1F17391FBB768100E0AEFA /* utf8transliterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89F13EE98B30094E3FE /* utf8transliterator.cpp */; };
+ 0A1F173A1FBB768100E0AEFA /* utf8utf16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8A013EE98B30094E3FE /* utf8utf16.cpp */; };
+ 0A1F173B1FBB76A700E0AEFA /* hrefcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82E13EE98B30094E3FE /* hrefcom.cpp */; };
+ 0A1F173C1FBB76A700E0AEFA /* rawcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83613EE98B30094E3FE /* rawcom.cpp */; };
+ 0A1F173D1FBB76A700E0AEFA /* rawcom4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83913EE98B30094E3FE /* rawcom4.cpp */; };
+ 0A1F173E1FBB76A700E0AEFA /* rawfiles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83D13EE98B30094E3FE /* rawfiles.cpp */; };
+ 0A1F173F1FBB76A700E0AEFA /* swcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83E13EE98B30094E3FE /* swcom.cpp */; };
+ 0A1F17401FBB76A700E0AEFA /* zcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84213EE98B30094E3FE /* zcom.cpp */; };
+ 0A1F17411FBB76A700E0AEFA /* zcom4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037319A09AE500DD808C /* zcom4.cpp */; };
+ 0A1F17421FBB76A700E0AEFA /* bz2comprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A999FF3917951C8900E65919 /* bz2comprs.cpp */; };
+ 0A1F17431FBB76A700E0AEFA /* entriesblk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84513EE98B30094E3FE /* entriesblk.cpp */; };
+ 0A1F17441FBB76A700E0AEFA /* lzsscomprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84613EE98B30094E3FE /* lzsscomprs.cpp */; };
+ 0A1F17451FBB76A700E0AEFA /* rawstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84913EE98B30094E3FE /* rawstr.cpp */; };
+ 0A1F17461FBB76A700E0AEFA /* rawstr4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84A13EE98B30094E3FE /* rawstr4.cpp */; };
+ 0A1F17471FBB76A700E0AEFA /* rawverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84B13EE98B30094E3FE /* rawverse.cpp */; };
+ 0A1F17481FBB76A700E0AEFA /* rawverse4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84C13EE98B30094E3FE /* rawverse4.cpp */; };
+ 0A1F17491FBB76A700E0AEFA /* sapphire.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84D13EE98B30094E3FE /* sapphire.cpp */; };
+ 0A1F174A1FBB76A700E0AEFA /* swcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84E13EE98B30094E3FE /* swcipher.cpp */; };
+ 0A1F174B1FBB76A700E0AEFA /* swcomprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84F13EE98B30094E3FE /* swcomprs.cpp */; };
+ 0A1F174C1FBB76A700E0AEFA /* zipcomprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85113EE98B30094E3FE /* zipcomprs.cpp */; };
+ 0A1F174D1FBB76A700E0AEFA /* zstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85213EE98B30094E3FE /* zstr.cpp */; };
+ 0A1F174E1FBB76A700E0AEFA /* zverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85313EE98B30094E3FE /* zverse.cpp */; };
+ 0A1F174F1FBB76A700E0AEFA /* zverse4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037719A09B5C00DD808C /* zverse4.cpp */; };
+ 0A58878C1FB41DCF00F7DAA3 /* entriesblk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84513EE98B30094E3FE /* entriesblk.cpp */; };
+ 0A58878D1FB41DCF00F7DAA3 /* lzsscomprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84613EE98B30094E3FE /* lzsscomprs.cpp */; };
+ 0A58878E1FB41DCF00F7DAA3 /* rawstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84913EE98B30094E3FE /* rawstr.cpp */; };
+ 0A58878F1FB41DCF00F7DAA3 /* rawstr4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84A13EE98B30094E3FE /* rawstr4.cpp */; };
+ 0A5887901FB41DCF00F7DAA3 /* rawverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84B13EE98B30094E3FE /* rawverse.cpp */; };
+ 0A5887911FB41DCF00F7DAA3 /* rawverse4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84C13EE98B30094E3FE /* rawverse4.cpp */; };
+ 0A5887921FB41DCF00F7DAA3 /* sapphire.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84D13EE98B30094E3FE /* sapphire.cpp */; };
+ 0A5887931FB41DCF00F7DAA3 /* swcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84E13EE98B30094E3FE /* swcipher.cpp */; };
+ 0A5887941FB41DCF00F7DAA3 /* swcomprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84F13EE98B30094E3FE /* swcomprs.cpp */; };
+ 0A5887951FB41DCF00F7DAA3 /* zipcomprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85113EE98B30094E3FE /* zipcomprs.cpp */; };
+ 0A5887961FB41DCF00F7DAA3 /* zstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85213EE98B30094E3FE /* zstr.cpp */; };
+ 0A5887971FB41DCF00F7DAA3 /* zverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85313EE98B30094E3FE /* zverse.cpp */; };
+ 0A5887981FB41DCF00F7DAA3 /* zverse4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037719A09B5C00DD808C /* zverse4.cpp */; };
+ 0A5887991FB41DED00F7DAA3 /* hrefcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82E13EE98B30094E3FE /* hrefcom.cpp */; };
+ 0A58879A1FB41DED00F7DAA3 /* rawcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83613EE98B30094E3FE /* rawcom.cpp */; };
+ 0A58879B1FB41DED00F7DAA3 /* rawcom4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83913EE98B30094E3FE /* rawcom4.cpp */; };
+ 0A58879C1FB41DED00F7DAA3 /* rawfiles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83D13EE98B30094E3FE /* rawfiles.cpp */; };
+ 0A58879D1FB41DED00F7DAA3 /* swcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83E13EE98B30094E3FE /* swcom.cpp */; };
+ 0A58879E1FB41DED00F7DAA3 /* zcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84213EE98B30094E3FE /* zcom.cpp */; };
+ 0A58879F1FB41DED00F7DAA3 /* zcom4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037319A09AE500DD808C /* zcom4.cpp */; };
+ 0A5887A01FB41E1500F7DAA3 /* scsuutf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982039D19A0A5FA00DD808C /* scsuutf8.cpp */; };
+ 0A5887A11FB41E1500F7DAA3 /* utf8scsu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982039E19A0A5FA00DD808C /* utf8scsu.cpp */; };
+ 0A5887A21FB41E1500F7DAA3 /* gbflatex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037919A09B7800DD808C /* gbflatex.cpp */; };
+ 0A5887A31FB41E1500F7DAA3 /* osislatex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037A19A09B7800DD808C /* osislatex.cpp */; };
+ 0A5887A41FB41E1500F7DAA3 /* osisxlit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037B19A09B7800DD808C /* osisxlit.cpp */; };
+ 0A5887A51FB41E1500F7DAA3 /* teilatex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037C19A09B7800DD808C /* teilatex.cpp */; };
+ 0A5887A61FB41E1500F7DAA3 /* thmllatex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982037D19A09B7800DD808C /* thmllatex.cpp */; };
+ 0A5887A71FB41E1500F7DAA3 /* osisenum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2353176AF19C008D714B /* osisenum.cpp */; };
+ 0A5887A81FB41E1500F7DAA3 /* osisglosses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2354176AF19C008D714B /* osisglosses.cpp */; };
+ 0A5887A91FB41E1500F7DAA3 /* osisreferencelinks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2355176AF19C008D714B /* osisreferencelinks.cpp */; };
+ 0A5887AA1FB41E1500F7DAA3 /* teixhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9E9C5ED16806A2B00ECEB39 /* teixhtml.cpp */; };
+ 0A5887AB1FB41E1500F7DAA3 /* cipherfil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85513EE98B30094E3FE /* cipherfil.cpp */; };
+ 0A5887AC1FB41E1500F7DAA3 /* gbffootnotes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85613EE98B30094E3FE /* gbffootnotes.cpp */; };
+ 0A5887AD1FB41E1500F7DAA3 /* gbfheadings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85713EE98B30094E3FE /* gbfheadings.cpp */; };
+ 0A5887AE1FB41E1500F7DAA3 /* gbfhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85813EE98B30094E3FE /* gbfhtml.cpp */; };
+ 0A5887AF1FB41E1500F7DAA3 /* gbfhtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85913EE98B30094E3FE /* gbfhtmlhref.cpp */; };
+ 0A5887B01FB41E1500F7DAA3 /* gbfmorph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85A13EE98B30094E3FE /* gbfmorph.cpp */; };
+ 0A5887B11FB41E1500F7DAA3 /* gbfosis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85B13EE98B30094E3FE /* gbfosis.cpp */; };
+ 0A5887B21FB41E1500F7DAA3 /* gbfplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85C13EE98B30094E3FE /* gbfplain.cpp */; };
+ 0A5887B31FB41E1500F7DAA3 /* gbfredletterwords.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85D13EE98B30094E3FE /* gbfredletterwords.cpp */; };
+ 0A5887B41FB41E1500F7DAA3 /* gbfrtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85E13EE98B30094E3FE /* gbfrtf.cpp */; };
+ 0A5887B51FB41E1500F7DAA3 /* gbfstrongs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85F13EE98B30094E3FE /* gbfstrongs.cpp */; };
+ 0A5887B61FB41E1500F7DAA3 /* gbfthml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86013EE98B30094E3FE /* gbfthml.cpp */; };
+ 0A5887B71FB41E1500F7DAA3 /* gbfwebif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86113EE98B30094E3FE /* gbfwebif.cpp */; };
+ 0A5887B81FB41E1500F7DAA3 /* gbfwordjs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86213EE98B30094E3FE /* gbfwordjs.cpp */; };
+ 0A5887B91FB41E1500F7DAA3 /* gbfxhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86313EE98B30094E3FE /* gbfxhtml.cpp */; };
+ 0A5887BA1FB41E1500F7DAA3 /* greeklexattribs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86413EE98B30094E3FE /* greeklexattribs.cpp */; };
+ 0A5887BB1FB41E1500F7DAA3 /* latin1utf16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86513EE98B30094E3FE /* latin1utf16.cpp */; };
+ 0A5887BC1FB41E1500F7DAA3 /* latin1utf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86613EE98B30094E3FE /* latin1utf8.cpp */; };
+ 0A5887BD1FB41E1500F7DAA3 /* osisfootnotes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86913EE98B30094E3FE /* osisfootnotes.cpp */; };
+ 0A5887BE1FB41E1500F7DAA3 /* osisheadings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86A13EE98B30094E3FE /* osisheadings.cpp */; };
+ 0A5887BF1FB41E1500F7DAA3 /* osishtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86B13EE98B30094E3FE /* osishtmlhref.cpp */; };
+ 0A5887C01FB41E1500F7DAA3 /* osislemma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86C13EE98B30094E3FE /* osislemma.cpp */; };
+ 0A5887C11FB41E1500F7DAA3 /* osismorph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86D13EE98B30094E3FE /* osismorph.cpp */; };
+ 0A5887C21FB41E1500F7DAA3 /* osismorphsegmentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86E13EE98B30094E3FE /* osismorphsegmentation.cpp */; };
+ 0A5887C31FB41E1500F7DAA3 /* osisosis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86F13EE98B30094E3FE /* osisosis.cpp */; };
+ 0A5887C41FB41E1500F7DAA3 /* osisplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87013EE98B30094E3FE /* osisplain.cpp */; };
+ 0A5887C51FB41E1500F7DAA3 /* osisredletterwords.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87113EE98B30094E3FE /* osisredletterwords.cpp */; };
+ 0A5887C61FB41E1500F7DAA3 /* osisrtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87213EE98B30094E3FE /* osisrtf.cpp */; };
+ 0A5887C71FB41E1500F7DAA3 /* osisscripref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87413EE98B30094E3FE /* osisscripref.cpp */; };
+ 0A5887C81FB41E1500F7DAA3 /* osisstrongs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87513EE98B30094E3FE /* osisstrongs.cpp */; };
+ 0A5887C91FB41E1500F7DAA3 /* osisvariants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87613EE98B30094E3FE /* osisvariants.cpp */; };
+ 0A5887CA1FB41E1500F7DAA3 /* osiswebif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87713EE98B30094E3FE /* osiswebif.cpp */; };
+ 0A5887CB1FB41E1500F7DAA3 /* osiswordjs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87813EE98B30094E3FE /* osiswordjs.cpp */; };
+ 0A5887CC1FB41E1500F7DAA3 /* osisxhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87913EE98B30094E3FE /* osisxhtml.cpp */; };
+ 0A5887CD1FB41E1500F7DAA3 /* papyriplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87A13EE98B30094E3FE /* papyriplain.cpp */; };
+ 0A5887CE1FB41E1500F7DAA3 /* rtfhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87D13EE98B30094E3FE /* rtfhtml.cpp */; };
+ 0A5887CF1FB41E1500F7DAA3 /* swbasicfilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87E13EE98B30094E3FE /* swbasicfilter.cpp */; };
+ 0A5887D01FB41E1500F7DAA3 /* swoptfilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87F13EE98B30094E3FE /* swoptfilter.cpp */; };
+ 0A5887D11FB41E1500F7DAA3 /* teihtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88013EE98B30094E3FE /* teihtmlhref.cpp */; };
+ 0A5887D21FB41E1500F7DAA3 /* teiplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88113EE98B30094E3FE /* teiplain.cpp */; };
+ 0A5887D31FB41E1500F7DAA3 /* teirtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88213EE98B30094E3FE /* teirtf.cpp */; };
+ 0A5887D41FB41E1500F7DAA3 /* thmlfootnotes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88313EE98B30094E3FE /* thmlfootnotes.cpp */; };
+ 0A5887D51FB41E1500F7DAA3 /* thmlgbf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88413EE98B30094E3FE /* thmlgbf.cpp */; };
+ 0A5887D61FB41E1500F7DAA3 /* thmlheadings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88513EE98B30094E3FE /* thmlheadings.cpp */; };
+ 0A5887D71FB41E1500F7DAA3 /* thmlhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88613EE98B30094E3FE /* thmlhtml.cpp */; };
+ 0A5887D81FB41E1500F7DAA3 /* thmlhtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88713EE98B30094E3FE /* thmlhtmlhref.cpp */; };
+ 0A5887D91FB41E1500F7DAA3 /* thmllemma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88813EE98B30094E3FE /* thmllemma.cpp */; };
+ 0A5887DA1FB41E1500F7DAA3 /* thmlmorph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88913EE98B30094E3FE /* thmlmorph.cpp */; };
+ 0A5887DB1FB41E1500F7DAA3 /* thmlosis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88A13EE98B30094E3FE /* thmlosis.cpp */; };
+ 0A5887DC1FB41E1500F7DAA3 /* thmlplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88B13EE98B30094E3FE /* thmlplain.cpp */; };
+ 0A5887DD1FB41E1500F7DAA3 /* thmlrtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88C13EE98B30094E3FE /* thmlrtf.cpp */; };
+ 0A5887DE1FB41E1500F7DAA3 /* thmlscripref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88D13EE98B30094E3FE /* thmlscripref.cpp */; };
+ 0A5887DF1FB41E1500F7DAA3 /* thmlstrongs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88E13EE98B30094E3FE /* thmlstrongs.cpp */; };
+ 0A5887E01FB41E1500F7DAA3 /* thmlvariants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88F13EE98B30094E3FE /* thmlvariants.cpp */; };
+ 0A5887E11FB41E1500F7DAA3 /* thmlwebif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89013EE98B30094E3FE /* thmlwebif.cpp */; };
+ 0A5887E21FB41E1500F7DAA3 /* thmlwordjs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89113EE98B30094E3FE /* thmlwordjs.cpp */; };
+ 0A5887E31FB41E1500F7DAA3 /* thmlxhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89213EE98B30094E3FE /* thmlxhtml.cpp */; };
+ 0A5887E41FB41E1500F7DAA3 /* unicodertf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89313EE98B30094E3FE /* unicodertf.cpp */; };
+ 0A5887E51FB41E1500F7DAA3 /* utf16utf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89413EE98B30094E3FE /* utf16utf8.cpp */; };
+ 0A5887E61FB41E1500F7DAA3 /* utf8arabicpoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89513EE98B30094E3FE /* utf8arabicpoints.cpp */; };
+ 0A5887E71FB41E1500F7DAA3 /* utf8arshaping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89613EE98B30094E3FE /* utf8arshaping.cpp */; };
+ 0A5887E81FB41E1500F7DAA3 /* utf8bidireorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89713EE98B30094E3FE /* utf8bidireorder.cpp */; };
+ 0A5887E91FB41E1500F7DAA3 /* utf8cantillation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89813EE98B30094E3FE /* utf8cantillation.cpp */; };
+ 0A5887EA1FB41E1500F7DAA3 /* utf8greekaccents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89913EE98B30094E3FE /* utf8greekaccents.cpp */; };
+ 0A5887EB1FB41E1500F7DAA3 /* utf8hebrewpoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89A13EE98B30094E3FE /* utf8hebrewpoints.cpp */; };
+ 0A5887EC1FB41E1500F7DAA3 /* utf8html.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89B13EE98B30094E3FE /* utf8html.cpp */; };
+ 0A5887ED1FB41E1500F7DAA3 /* utf8latin1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89C13EE98B30094E3FE /* utf8latin1.cpp */; };
+ 0A5887EE1FB41E1500F7DAA3 /* utf8nfc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89D13EE98B30094E3FE /* utf8nfc.cpp */; };
+ 0A5887EF1FB41E1500F7DAA3 /* utf8nfkd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89E13EE98B30094E3FE /* utf8nfkd.cpp */; };
+ 0A5887F01FB41E1500F7DAA3 /* utf8transliterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89F13EE98B30094E3FE /* utf8transliterator.cpp */; };
+ 0A5887F11FB41E1500F7DAA3 /* utf8utf16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8A013EE98B30094E3FE /* utf8utf16.cpp */; };
+ 0A5887F21FB41E5800F7DAA3 /* rawgenbook.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8A713EE98B30094E3FE /* rawgenbook.cpp */; };
+ 0A5887F31FB41E5800F7DAA3 /* swgenbook.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8A813EE98B30094E3FE /* swgenbook.cpp */; };
+ 0A5887F41FB41E5800F7DAA3 /* rawld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8AF13EE98B30094E3FE /* rawld.cpp */; };
+ 0A5887F51FB41E5800F7DAA3 /* rawld4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8B313EE98B30094E3FE /* rawld4.cpp */; };
+ 0A5887F61FB41E5800F7DAA3 /* swld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8B413EE98B30094E3FE /* swld.cpp */; };
+ 0A5887F71FB41E5800F7DAA3 /* zld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8B813EE98B30094E3FE /* zld.cpp */; };
+ 0A5887F81FB41E5800F7DAA3 /* swmodule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8BC13EE98B30094E3FE /* swmodule.cpp */; };
+ 0A5887F91FB41E5800F7DAA3 /* rawtext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8C613EE98B30094E3FE /* rawtext.cpp */; };
+ 0A5887FA1FB41E5800F7DAA3 /* rawtext4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8C913EE98B30094E3FE /* rawtext4.cpp */; };
+ 0A5887FB1FB41E5800F7DAA3 /* swtext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8CA13EE98B30094E3FE /* swtext.cpp */; };
+ 0A5887FC1FB41E5800F7DAA3 /* ztext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8CE13EE98B30094E3FE /* ztext.cpp */; };
+ 0A5887FD1FB41E5800F7DAA3 /* ztext4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A982038819A09BC000DD808C /* ztext4.cpp */; };
+ 0A5888051FB44ABE00F7DAA3 /* canon_calvin.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A94A351DCB21AB00F69260 /* canon_calvin.h */; };
+ 0A5888061FB44ABE00F7DAA3 /* canon_darbyfr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A94A361DCB21AB00F69260 /* canon_darbyfr.h */; };
+ 0A5888071FB44ABE00F7DAA3 /* canon_segond.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A94A371DCB21AB00F69260 /* canon_segond.h */; };
+ 0A5888081FB44ABE00F7DAA3 /* bz2comprs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1291C19DF144D005BCBC1 /* bz2comprs.h */; };
+ 0A5888091FB44ABE00F7DAA3 /* canon.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1291D19DF144D005BCBC1 /* canon.h */; };
+ 0A58880A1FB44ABE00F7DAA3 /* canon_abbrevs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1291E19DF144D005BCBC1 /* canon_abbrevs.h */; };
+ 0A58880B1FB44ABE00F7DAA3 /* canon_catholic.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1291F19DF144D005BCBC1 /* canon_catholic.h */; };
+ 0A58880C1FB44ABE00F7DAA3 /* canon_catholic2.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292019DF144D005BCBC1 /* canon_catholic2.h */; };
+ 0A58880D1FB44ABE00F7DAA3 /* canon_german.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292119DF144D005BCBC1 /* canon_german.h */; };
+ 0A58880E1FB44ABE00F7DAA3 /* canon_kjva.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292219DF144D005BCBC1 /* canon_kjva.h */; };
+ 0A58880F1FB44ABE00F7DAA3 /* canon_leningrad.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292319DF144D005BCBC1 /* canon_leningrad.h */; };
+ 0A5888101FB44ABE00F7DAA3 /* canon_luther.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292419DF144D005BCBC1 /* canon_luther.h */; };
+ 0A5888111FB44ABE00F7DAA3 /* canon_lxx.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292519DF144D005BCBC1 /* canon_lxx.h */; };
+ 0A5888121FB44ABE00F7DAA3 /* canon_mt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292619DF144D005BCBC1 /* canon_mt.h */; };
+ 0A5888131FB44ABE00F7DAA3 /* canon_nrsv.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292719DF144D005BCBC1 /* canon_nrsv.h */; };
+ 0A5888141FB44ABE00F7DAA3 /* canon_nrsva.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292819DF144D005BCBC1 /* canon_nrsva.h */; };
+ 0A5888151FB44ABE00F7DAA3 /* canon_null.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292919DF144D005BCBC1 /* canon_null.h */; };
+ 0A5888161FB44ABE00F7DAA3 /* canon_orthodox.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292A19DF144D005BCBC1 /* canon_orthodox.h */; };
+ 0A5888171FB44ABE00F7DAA3 /* canon_synodal.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292B19DF144D005BCBC1 /* canon_synodal.h */; };
+ 0A5888181FB44ABE00F7DAA3 /* canon_synodalprot.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292C19DF144D005BCBC1 /* canon_synodalprot.h */; };
+ 0A5888191FB44ABE00F7DAA3 /* canon_vulg.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292D19DF144D005BCBC1 /* canon_vulg.h */; };
+ 0A58881A1FB44ABE00F7DAA3 /* cipherfil.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292E19DF144D005BCBC1 /* cipherfil.h */; };
+ 0A58881B1FB44ABE00F7DAA3 /* curlftpt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293019DF144D005BCBC1 /* curlftpt.h */; };
+ 0A58881C1FB44ABE00F7DAA3 /* curlhttpt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293119DF144D005BCBC1 /* curlhttpt.h */; };
+ 0A58881D1FB44ABE00F7DAA3 /* defs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293219DF144D005BCBC1 /* defs.h */; };
+ 0A58881E1FB44ABE00F7DAA3 /* echomod.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293319DF144D005BCBC1 /* echomod.h */; };
+ 0A58881F1FB44ABE00F7DAA3 /* encfiltmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293419DF144D005BCBC1 /* encfiltmgr.h */; };
+ 0A5888201FB44ABE00F7DAA3 /* entriesblk.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293519DF144D005BCBC1 /* entriesblk.h */; };
+ 0A5888211FB44ABE00F7DAA3 /* femain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293619DF144D005BCBC1 /* femain.h */; };
+ 0A5888221FB44ABE00F7DAA3 /* filemgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293719DF144D005BCBC1 /* filemgr.h */; };
+ 0A5888231FB44ABE00F7DAA3 /* flatapi.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293819DF144D005BCBC1 /* flatapi.h */; };
+ 0A5888241FB44ABE00F7DAA3 /* ftplib.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293919DF144D005BCBC1 /* ftplib.h */; };
+ 0A5888251FB44ABE00F7DAA3 /* ftplibftpt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293A19DF144D005BCBC1 /* ftplibftpt.h */; };
+ 0A5888261FB44ABE00F7DAA3 /* ftpparse.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293B19DF144D005BCBC1 /* ftpparse.h */; };
+ 0A5888271FB44ABE00F7DAA3 /* gbffootnotes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293C19DF144D005BCBC1 /* gbffootnotes.h */; };
+ 0A5888281FB44ABE00F7DAA3 /* gbfheadings.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293D19DF144D005BCBC1 /* gbfheadings.h */; };
+ 0A5888291FB44ABE00F7DAA3 /* gbfhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293E19DF144D005BCBC1 /* gbfhtml.h */; };
+ 0A58882A1FB44ABE00F7DAA3 /* gbfhtmlhref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293F19DF144D005BCBC1 /* gbfhtmlhref.h */; };
+ 0A58882B1FB44ABE00F7DAA3 /* gbflatex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294019DF144D005BCBC1 /* gbflatex.h */; };
+ 0A58882C1FB44ABE00F7DAA3 /* gbfmorph.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294119DF144D005BCBC1 /* gbfmorph.h */; };
+ 0A58882D1FB44ABE00F7DAA3 /* gbfosis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294219DF144D005BCBC1 /* gbfosis.h */; };
+ 0A58882E1FB44ABE00F7DAA3 /* gbfplain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294319DF144D005BCBC1 /* gbfplain.h */; };
+ 0A58882F1FB44ABE00F7DAA3 /* gbfredletterwords.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294419DF144D005BCBC1 /* gbfredletterwords.h */; };
+ 0A5888301FB44ABE00F7DAA3 /* gbfrtf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294519DF144D005BCBC1 /* gbfrtf.h */; };
+ 0A5888311FB44ABE00F7DAA3 /* gbfstrongs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294619DF144D005BCBC1 /* gbfstrongs.h */; };
+ 0A5888321FB44ABE00F7DAA3 /* gbfthml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294719DF144D005BCBC1 /* gbfthml.h */; };
+ 0A5888331FB44ABE00F7DAA3 /* gbfwebif.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294819DF144D005BCBC1 /* gbfwebif.h */; };
+ 0A5888341FB44ABE00F7DAA3 /* gbfwordjs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294919DF144D005BCBC1 /* gbfwordjs.h */; };
+ 0A5888351FB44ABE00F7DAA3 /* gbfxhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294A19DF144D005BCBC1 /* gbfxhtml.h */; };
+ 0A5888361FB44ABE00F7DAA3 /* greeklexattribs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294B19DF144D005BCBC1 /* greeklexattribs.h */; };
+ 0A5888371FB44ABE00F7DAA3 /* hebrewmcim.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294C19DF144D005BCBC1 /* hebrewmcim.h */; };
+ 0A5888381FB44ABE00F7DAA3 /* hrefcom.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294D19DF144D005BCBC1 /* hrefcom.h */; };
+ 0A5888391FB44ABE00F7DAA3 /* installmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294E19DF144D005BCBC1 /* installmgr.h */; };
+ 0A58883A1FB44ABE00F7DAA3 /* latin1utf16.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295219DF144D005BCBC1 /* latin1utf16.h */; };
+ 0A58883B1FB44ABE00F7DAA3 /* latin1utf8.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295319DF144D005BCBC1 /* latin1utf8.h */; };
+ 0A58883C1FB44ABE00F7DAA3 /* listkey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295419DF144D005BCBC1 /* listkey.h */; };
+ 0A58883D1FB44ABE00F7DAA3 /* localemgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295519DF144D005BCBC1 /* localemgr.h */; };
+ 0A58883E1FB44ABE00F7DAA3 /* lzsscomprs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295619DF144D005BCBC1 /* lzsscomprs.h */; };
+ 0A58883F1FB44ABE00F7DAA3 /* markupfiltmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295919DF144D005BCBC1 /* markupfiltmgr.h */; };
+ 0A5888401FB44ABE00F7DAA3 /* multimapwdef.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295A19DF144D005BCBC1 /* multimapwdef.h */; };
+ 0A5888411FB44ABE00F7DAA3 /* nullim.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295B19DF144D005BCBC1 /* nullim.h */; };
+ 0A5888421FB44ABE00F7DAA3 /* osisenum.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295C19DF144D005BCBC1 /* osisenum.h */; };
+ 0A5888431FB44ABE00F7DAA3 /* osisfootnotes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295D19DF144D005BCBC1 /* osisfootnotes.h */; };
+ 0A5888441FB44ABE00F7DAA3 /* osisglosses.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295E19DF144D005BCBC1 /* osisglosses.h */; };
+ 0A5888451FB44ABE00F7DAA3 /* osisheadings.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295F19DF144D005BCBC1 /* osisheadings.h */; };
+ 0A5888461FB44ABE00F7DAA3 /* osishtmlhref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296019DF144D005BCBC1 /* osishtmlhref.h */; };
+ 0A5888471FB44ABE00F7DAA3 /* osislatex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296119DF144D005BCBC1 /* osislatex.h */; };
+ 0A5888481FB44ABE00F7DAA3 /* osislemma.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296219DF144D005BCBC1 /* osislemma.h */; };
+ 0A5888491FB44ABE00F7DAA3 /* osismorph.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296319DF144D005BCBC1 /* osismorph.h */; };
+ 0A58884A1FB44ABE00F7DAA3 /* osismorphsegmentation.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296419DF144D005BCBC1 /* osismorphsegmentation.h */; };
+ 0A58884B1FB44ABE00F7DAA3 /* osisosis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296519DF144D005BCBC1 /* osisosis.h */; };
+ 0A58884C1FB44ABE00F7DAA3 /* osisplain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296619DF144D005BCBC1 /* osisplain.h */; };
+ 0A58884D1FB44ABE00F7DAA3 /* osisredletterwords.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296719DF144D005BCBC1 /* osisredletterwords.h */; };
+ 0A58884E1FB44ABE00F7DAA3 /* osisreferencelinks.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296819DF144D005BCBC1 /* osisreferencelinks.h */; };
+ 0A58884F1FB44ABE00F7DAA3 /* osisrtf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296919DF144D005BCBC1 /* osisrtf.h */; };
+ 0A5888501FB44ABE00F7DAA3 /* osisscripref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296A19DF144D005BCBC1 /* osisscripref.h */; };
+ 0A5888511FB44ABE00F7DAA3 /* osisstrongs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296B19DF144D005BCBC1 /* osisstrongs.h */; };
+ 0A5888521FB44ABE00F7DAA3 /* osisvariants.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296C19DF144D005BCBC1 /* osisvariants.h */; };
+ 0A5888531FB44ABE00F7DAA3 /* osiswebif.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296D19DF144D005BCBC1 /* osiswebif.h */; };
+ 0A5888541FB44ABE00F7DAA3 /* osiswordjs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296E19DF144D005BCBC1 /* osiswordjs.h */; };
+ 0A5888551FB44ABE00F7DAA3 /* osisxhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296F19DF144D005BCBC1 /* osisxhtml.h */; };
+ 0A5888561FB44ABE00F7DAA3 /* osisxlit.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297019DF144D005BCBC1 /* osisxlit.h */; };
+ 0A5888571FB44ABE00F7DAA3 /* papyriplain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297119DF144D005BCBC1 /* papyriplain.h */; };
+ 0A5888581FB44ABE00F7DAA3 /* rawcom.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297219DF144D005BCBC1 /* rawcom.h */; };
+ 0A5888591FB44ABE00F7DAA3 /* rawcom4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297319DF144D005BCBC1 /* rawcom4.h */; };
+ 0A58885A1FB44ABE00F7DAA3 /* rawfiles.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297419DF144D005BCBC1 /* rawfiles.h */; };
+ 0A58885B1FB44ABE00F7DAA3 /* rawgenbook.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297519DF144D005BCBC1 /* rawgenbook.h */; };
+ 0A58885C1FB44ABE00F7DAA3 /* rawld.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297619DF144D005BCBC1 /* rawld.h */; };
+ 0A58885D1FB44ABE00F7DAA3 /* rawld4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297719DF144D005BCBC1 /* rawld4.h */; };
+ 0A58885E1FB44ABE00F7DAA3 /* rawstr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297819DF144D005BCBC1 /* rawstr.h */; };
+ 0A58885F1FB44ABE00F7DAA3 /* rawstr4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297919DF144D005BCBC1 /* rawstr4.h */; };
+ 0A5888601FB44ABE00F7DAA3 /* rawtext.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297A19DF144D005BCBC1 /* rawtext.h */; };
+ 0A5888611FB44ABE00F7DAA3 /* rawtext4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297B19DF144D005BCBC1 /* rawtext4.h */; };
+ 0A5888621FB44ABE00F7DAA3 /* rawverse.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297C19DF144D005BCBC1 /* rawverse.h */; };
+ 0A5888631FB44ABE00F7DAA3 /* rawverse4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297D19DF144D005BCBC1 /* rawverse4.h */; };
+ 0A5888641FB44ABE00F7DAA3 /* remotetrans.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297E19DF144D005BCBC1 /* remotetrans.h */; };
+ 0A5888651FB44ABE00F7DAA3 /* roman.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297F19DF144D005BCBC1 /* roman.h */; };
+ 0A5888661FB44ABE00F7DAA3 /* rtfhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298019DF144D005BCBC1 /* rtfhtml.h */; };
+ 0A5888671FB44ABE00F7DAA3 /* sapphire.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298119DF144D005BCBC1 /* sapphire.h */; };
+ 0A5888681FB44ABE00F7DAA3 /* scsuutf8.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298219DF144D005BCBC1 /* scsuutf8.h */; };
+ 0A5888691FB44ABE00F7DAA3 /* stringmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298419DF144D005BCBC1 /* stringmgr.h */; };
+ 0A58886A1FB44ABE00F7DAA3 /* strkey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298519DF144D005BCBC1 /* strkey.h */; };
+ 0A58886B1FB44ABE00F7DAA3 /* swbasicfilter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298619DF144D005BCBC1 /* swbasicfilter.h */; };
+ 0A58886C1FB44ABE00F7DAA3 /* swbuf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298719DF144D005BCBC1 /* swbuf.h */; };
+ 0A58886D1FB44ABE00F7DAA3 /* swcacher.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298819DF144D005BCBC1 /* swcacher.h */; };
+ 0A58886E1FB44ABE00F7DAA3 /* swcipher.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298919DF144D005BCBC1 /* swcipher.h */; };
+ 0A58886F1FB44ABE00F7DAA3 /* swcom.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298A19DF144D005BCBC1 /* swcom.h */; };
+ 0A5888701FB44ABE00F7DAA3 /* swcomprs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298B19DF144D005BCBC1 /* swcomprs.h */; };
+ 0A5888711FB44ABE00F7DAA3 /* swconfig.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298C19DF144D005BCBC1 /* swconfig.h */; };
+ 0A5888721FB44ABE00F7DAA3 /* swdisp.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298D19DF144D005BCBC1 /* swdisp.h */; };
+ 0A5888731FB44ABE00F7DAA3 /* swfilter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298E19DF144D005BCBC1 /* swfilter.h */; };
+ 0A5888741FB44ABE00F7DAA3 /* swfiltermgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298F19DF144D005BCBC1 /* swfiltermgr.h */; };
+ 0A5888751FB44ABE00F7DAA3 /* swgenbook.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299019DF144D005BCBC1 /* swgenbook.h */; };
+ 0A5888761FB44ABE00F7DAA3 /* swinputmeth.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299119DF144D005BCBC1 /* swinputmeth.h */; };
+ 0A5888771FB44ABE00F7DAA3 /* swkey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299219DF144D005BCBC1 /* swkey.h */; };
+ 0A5888781FB44ABE00F7DAA3 /* swld.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299319DF144D005BCBC1 /* swld.h */; };
+ 0A5888791FB44ABE00F7DAA3 /* swlocale.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299419DF144D005BCBC1 /* swlocale.h */; };
+ 0A58887A1FB44ABE00F7DAA3 /* swlog.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299519DF144D005BCBC1 /* swlog.h */; };
+ 0A58887B1FB44ABE00F7DAA3 /* swmacs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299619DF144D005BCBC1 /* swmacs.h */; };
+ 0A58887C1FB44ABE00F7DAA3 /* swmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299719DF144D005BCBC1 /* swmgr.h */; };
+ 0A58887D1FB44ABE00F7DAA3 /* swmodule.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299819DF144D005BCBC1 /* swmodule.h */; };
+ 0A58887E1FB44ABE00F7DAA3 /* swobject.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299919DF144D005BCBC1 /* swobject.h */; };
+ 0A58887F1FB44ABE00F7DAA3 /* swoptfilter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299A19DF144D005BCBC1 /* swoptfilter.h */; };
+ 0A5888801FB44ABF00F7DAA3 /* swsearchable.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299C19DF144D005BCBC1 /* swsearchable.h */; };
+ 0A5888811FB44ABF00F7DAA3 /* swtext.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299D19DF144D005BCBC1 /* swtext.h */; };
+ 0A5888821FB44ABF00F7DAA3 /* swversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299E19DF144D005BCBC1 /* swversion.h */; };
+ 0A5888831FB44ABF00F7DAA3 /* sysdata.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A019DF144D005BCBC1 /* sysdata.h */; };
+ 0A5888841FB44ABF00F7DAA3 /* teihtmlhref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A119DF144D005BCBC1 /* teihtmlhref.h */; };
+ 0A5888851FB44ABF00F7DAA3 /* teilatex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A219DF144D005BCBC1 /* teilatex.h */; };
+ 0A5888861FB44ABF00F7DAA3 /* teiplain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A319DF144D005BCBC1 /* teiplain.h */; };
+ 0A5888871FB44ABF00F7DAA3 /* teirtf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A419DF144D005BCBC1 /* teirtf.h */; };
+ 0A5888881FB44ABF00F7DAA3 /* teixhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A519DF144D005BCBC1 /* teixhtml.h */; };
+ 0A5888891FB44ABF00F7DAA3 /* thmlfootnotes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A619DF144D005BCBC1 /* thmlfootnotes.h */; };
+ 0A58888A1FB44ABF00F7DAA3 /* thmlgbf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A719DF144D005BCBC1 /* thmlgbf.h */; };
+ 0A58888B1FB44ABF00F7DAA3 /* thmlheadings.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A819DF144D005BCBC1 /* thmlheadings.h */; };
+ 0A58888C1FB44ABF00F7DAA3 /* thmlhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A919DF144D005BCBC1 /* thmlhtml.h */; };
+ 0A58888D1FB44ABF00F7DAA3 /* thmlhtmlhref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AA19DF144D005BCBC1 /* thmlhtmlhref.h */; };
+ 0A58888E1FB44ABF00F7DAA3 /* thmllatex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AB19DF144D005BCBC1 /* thmllatex.h */; };
+ 0A58888F1FB44ABF00F7DAA3 /* thmllemma.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AC19DF144D005BCBC1 /* thmllemma.h */; };
+ 0A5888901FB44ABF00F7DAA3 /* thmlmorph.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AD19DF144D005BCBC1 /* thmlmorph.h */; };
+ 0A5888911FB44ABF00F7DAA3 /* thmlosis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AE19DF144D005BCBC1 /* thmlosis.h */; };
+ 0A5888921FB44ABF00F7DAA3 /* thmlplain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AF19DF144D005BCBC1 /* thmlplain.h */; };
+ 0A5888931FB44ABF00F7DAA3 /* thmlrtf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B019DF144D005BCBC1 /* thmlrtf.h */; };
+ 0A5888941FB44ABF00F7DAA3 /* thmlscripref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B119DF144D005BCBC1 /* thmlscripref.h */; };
+ 0A5888951FB44ABF00F7DAA3 /* thmlstrongs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B219DF144D005BCBC1 /* thmlstrongs.h */; };
+ 0A5888961FB44ABF00F7DAA3 /* thmlvariants.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B319DF144D005BCBC1 /* thmlvariants.h */; };
+ 0A5888971FB44ABF00F7DAA3 /* thmlwebif.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B419DF144D005BCBC1 /* thmlwebif.h */; };
+ 0A5888981FB44ABF00F7DAA3 /* thmlwordjs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B519DF144D005BCBC1 /* thmlwordjs.h */; };
+ 0A5888991FB44ABF00F7DAA3 /* thmlxhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B619DF144D005BCBC1 /* thmlxhtml.h */; };
+ 0A58889A1FB44ABF00F7DAA3 /* treekey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B719DF144D005BCBC1 /* treekey.h */; };
+ 0A58889B1FB44ABF00F7DAA3 /* treekeyidx.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B819DF144D005BCBC1 /* treekeyidx.h */; };
+ 0A58889C1FB44ABF00F7DAA3 /* unicodertf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B919DF144D005BCBC1 /* unicodertf.h */; };
+ 0A58889D1FB44ABF00F7DAA3 /* untgz.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BA19DF144D005BCBC1 /* untgz.h */; };
+ 0A58889E1FB44ABF00F7DAA3 /* url.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BB19DF144D005BCBC1 /* url.h */; };
+ 0A58889F1FB44ABF00F7DAA3 /* utf16utf8.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BC19DF144D005BCBC1 /* utf16utf8.h */; };
+ 0A5888A01FB44ABF00F7DAA3 /* utf8arabicpoints.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BD19DF144D005BCBC1 /* utf8arabicpoints.h */; };
+ 0A5888A11FB44ABF00F7DAA3 /* utf8arshaping.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BE19DF144D005BCBC1 /* utf8arshaping.h */; };
+ 0A5888A21FB44ABF00F7DAA3 /* utf8bidireorder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BF19DF144D005BCBC1 /* utf8bidireorder.h */; };
+ 0A5888A31FB44ABF00F7DAA3 /* utf8cantillation.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C019DF144D005BCBC1 /* utf8cantillation.h */; };
+ 0A5888A41FB44ABF00F7DAA3 /* utf8greekaccents.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C119DF144D005BCBC1 /* utf8greekaccents.h */; };
+ 0A5888A51FB44ABF00F7DAA3 /* utf8hebrewpoints.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C219DF144D005BCBC1 /* utf8hebrewpoints.h */; };
+ 0A5888A61FB44ABF00F7DAA3 /* utf8html.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C319DF144D005BCBC1 /* utf8html.h */; };
+ 0A5888A71FB44ABF00F7DAA3 /* utf8latin1.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C419DF144D005BCBC1 /* utf8latin1.h */; };
+ 0A5888A81FB44ABF00F7DAA3 /* utf8nfc.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C519DF144D005BCBC1 /* utf8nfc.h */; };
+ 0A5888A91FB44ABF00F7DAA3 /* utf8nfkd.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C619DF144D005BCBC1 /* utf8nfkd.h */; };
+ 0A5888AA1FB44ABF00F7DAA3 /* utf8scsu.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C719DF144D005BCBC1 /* utf8scsu.h */; };
+ 0A5888AB1FB44ABF00F7DAA3 /* utf8transliterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C819DF144D005BCBC1 /* utf8transliterator.h */; };
+ 0A5888AC1FB44ABF00F7DAA3 /* utf8utf16.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C919DF144D005BCBC1 /* utf8utf16.h */; };
+ 0A5888AD1FB44ABF00F7DAA3 /* utilstr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CA19DF144D005BCBC1 /* utilstr.h */; };
+ 0A5888AE1FB44ABF00F7DAA3 /* utilxml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CB19DF144D005BCBC1 /* utilxml.h */; };
+ 0A5888AF1FB44ABF00F7DAA3 /* versekey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CC19DF144D005BCBC1 /* versekey.h */; };
+ 0A5888B01FB44ABF00F7DAA3 /* versetreekey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CD19DF144D005BCBC1 /* versetreekey.h */; };
+ 0A5888B11FB44ABF00F7DAA3 /* versificationmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CE19DF144D005BCBC1 /* versificationmgr.h */; };
+ 0A5888B21FB44ABF00F7DAA3 /* xzcomprs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CF19DF144D005BCBC1 /* xzcomprs.h */; };
+ 0A5888B31FB44ABF00F7DAA3 /* zcom.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D019DF144D005BCBC1 /* zcom.h */; };
+ 0A5888B41FB44ABF00F7DAA3 /* zcom4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D119DF144D005BCBC1 /* zcom4.h */; };
+ 0A5888B51FB44ABF00F7DAA3 /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D219DF144D005BCBC1 /* zconf.h */; };
+ 0A5888B61FB44ABF00F7DAA3 /* zipcomprs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D319DF144D005BCBC1 /* zipcomprs.h */; };
+ 0A5888B71FB44ABF00F7DAA3 /* zld.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D419DF144D005BCBC1 /* zld.h */; };
+ 0A5888B81FB44ABF00F7DAA3 /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D519DF144D005BCBC1 /* zlib.h */; };
+ 0A5888B91FB44ABF00F7DAA3 /* zstr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D619DF144D005BCBC1 /* zstr.h */; };
+ 0A5888BA1FB44ABF00F7DAA3 /* ztext.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D719DF144D005BCBC1 /* ztext.h */; };
+ 0A5888BB1FB44ABF00F7DAA3 /* ztext4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D819DF144D005BCBC1 /* ztext4.h */; };
+ 0A5888BC1FB44ABF00F7DAA3 /* zverse.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D919DF144D005BCBC1 /* zverse.h */; };
+ 0A5888BD1FB44ABF00F7DAA3 /* zverse4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129DA19DF144D005BCBC1 /* zverse4.h */; };
+ 0A5888BE1FB44ACC00F7DAA3 /* regex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295119DF144D005BCBC1 /* regex.h */; };
+ 0AA1DD361FB46FD00082E131 /* sword.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AA1DD341FB46FD00082E131 /* sword.m */; };
+ 0AA1DD371FB46FD00082E131 /* sword.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AA1DD351FB46FD00082E131 /* sword.h */; };
8C92C31DC92DF0671FCEB5B3 /* SwordFilter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8C92CC111DC521DE0C054C60 /* SwordFilter.mm */; };
8C92CC7B68FDCDFFFB8B4A31 /* DefaultFilterProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8C92C0124F354F4CB4F294F9 /* DefaultFilterProvider.mm */; };
+ 8C92CC9CEC8A341B902C53E2 /* SwordInstallSourceManagerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C92C0CA467F3114A1DC89DD /* SwordInstallSourceManagerTest.m */; };
8C92CE0B19FBB659FB8F8B71 /* FilterProviderFactory.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8C92C25F57CB01957B086256 /* FilterProviderFactory.mm */; };
8C92CE39E231FF9CAAB5308B /* SwordUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C92C291C40A77060C12A21B /* SwordUtil.m */; };
8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; };
8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
A917AF2616B1BE38006367FC /* Tests-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = A917AF2516B1BE38006367FC /* Tests-Info.plist */; };
- A91C8B6817523609008702B9 /* versificationmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A91C8B66175233F3008702B9 /* versificationmgr.cpp */; };
A929619C16B1BA240094E5BE /* SwordBibleTextEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = A929619616B1BA240094E5BE /* SwordBibleTextEntry.m */; };
A929619D16B1BA240094E5BE /* SwordKey.h in Headers */ = {isa = PBXBuildFile; fileRef = A929619716B1BA240094E5BE /* SwordKey.h */; settings = {ATTRIBUTES = (Public, ); }; };
A929619E16B1BA240094E5BE /* SwordKey.mm in Sources */ = {isa = PBXBuildFile; fileRef = A929619816B1BA240094E5BE /* SwordKey.mm */; };
@@ -81,358 +606,243 @@
A94EAC30117B28920018B06F /* SwordVerseManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94EAC08117B28920018B06F /* SwordVerseManager.mm */; };
A94EAC31117B28920018B06F /* VerseEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = A94EAC09117B28920018B06F /* VerseEnumerator.h */; settings = {ATTRIBUTES = (Public, ); }; };
A94EAC32117B28920018B06F /* VerseEnumerator.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94EAC0A117B28920018B06F /* VerseEnumerator.mm */; };
- A954ABCB13EE9E460094E3FE /* AnalysisHeader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A9E413EE9A2B0094E3FE /* AnalysisHeader.cpp */; };
- A954ABCC13EE9E460094E3FE /* Analyzers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A9E613EE9A2B0094E3FE /* Analyzers.cpp */; };
- A954ABCD13EE9E470094E3FE /* StandardAnalyzer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A9E913EE9A2B0094E3FE /* StandardAnalyzer.cpp */; };
- A954ABCE13EE9E470094E3FE /* StandardFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A9EB13EE9A2B0094E3FE /* StandardFilter.cpp */; };
- A954ABCF13EE9E470094E3FE /* StandardTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A9ED13EE9A2B0094E3FE /* StandardTokenizer.cpp */; };
- A954ABD013EE9E470094E3FE /* gunichartables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A9F913EE9A2B0094E3FE /* gunichartables.cpp */; };
- A954ABD113EE9E470094E3FE /* repl_lltot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A9FE13EE9A2B0094E3FE /* repl_lltot.cpp */; };
- A954ABD213EE9E470094E3FE /* repl_tcscasecmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA0013EE9A2B0094E3FE /* repl_tcscasecmp.cpp */; };
- A954ABD313EE9E470094E3FE /* repl_tcslwr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA0113EE9A2B0094E3FE /* repl_tcslwr.cpp */; };
- A954ABD413EE9E470094E3FE /* repl_tcstod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA0213EE9A2B0094E3FE /* repl_tcstod.cpp */; };
- A954ABD513EE9E470094E3FE /* repl_tcstoll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA0313EE9A2B0094E3FE /* repl_tcstoll.cpp */; };
- A954ABD613EE9E470094E3FE /* repl_tprintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA0413EE9A2B0094E3FE /* repl_tprintf.cpp */; };
- A954ABD713EE9E470094E3FE /* threads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA0813EE9A2B0094E3FE /* threads.cpp */; };
- A954ABD813EE9E470094E3FE /* utf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA0913EE9A2B0094E3FE /* utf8.cpp */; };
- A954ABD913EE9E470094E3FE /* condition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA0B13EE9A2B0094E3FE /* condition.cpp */; };
- A954ABDA13EE9E470094E3FE /* error.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA0D13EE9A2B0094E3FE /* error.cpp */; };
- A954ABDB13EE9E470094E3FE /* memtracking.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA1113EE9A2B0094E3FE /* memtracking.cpp */; };
- A954ABDC13EE9E470094E3FE /* DateField.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA1313EE9A2B0094E3FE /* DateField.cpp */; };
- A954ABDD13EE9E470094E3FE /* Document.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA1513EE9A2B0094E3FE /* Document.cpp */; };
- A954ABDE13EE9E470094E3FE /* Field.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA1713EE9A2B0094E3FE /* Field.cpp */; };
- A954ABDF13EE9E470094E3FE /* CompoundFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA1A13EE9A2B0094E3FE /* CompoundFile.cpp */; };
- A954ABE013EE9E470094E3FE /* DocumentWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA1C13EE9A2B0094E3FE /* DocumentWriter.cpp */; };
- A954ABE113EE9E470094E3FE /* FieldInfos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA1F13EE9A2B0094E3FE /* FieldInfos.cpp */; };
- A954ABE213EE9E470094E3FE /* FieldsReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA2113EE9A2B0094E3FE /* FieldsReader.cpp */; };
- A954ABE313EE9E470094E3FE /* FieldsWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA2313EE9A2B0094E3FE /* FieldsWriter.cpp */; };
- A954ABE413EE9E470094E3FE /* IndexModifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA2513EE9A2B0094E3FE /* IndexModifier.cpp */; };
- A954ABE513EE9E470094E3FE /* IndexReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA2713EE9A2B0094E3FE /* IndexReader.cpp */; };
- A954ABE613EE9E470094E3FE /* IndexWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA2913EE9A2B0094E3FE /* IndexWriter.cpp */; };
- A954ABE713EE9E470094E3FE /* MultiReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA2B13EE9A2B0094E3FE /* MultiReader.cpp */; };
- A954ABE813EE9E470094E3FE /* SegmentInfos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA2E13EE9A2B0094E3FE /* SegmentInfos.cpp */; };
- A954ABE913EE9E470094E3FE /* SegmentMergeInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA3013EE9A2B0094E3FE /* SegmentMergeInfo.cpp */; };
- A954ABEA13EE9E470094E3FE /* SegmentMergeQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA3213EE9A2B0094E3FE /* SegmentMergeQueue.cpp */; };
- A954ABEB13EE9E470094E3FE /* SegmentMerger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA3413EE9A2B0094E3FE /* SegmentMerger.cpp */; };
- A954ABEC13EE9E470094E3FE /* SegmentReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA3613EE9A2B0094E3FE /* SegmentReader.cpp */; };
- A954ABED13EE9E470094E3FE /* SegmentTermDocs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA3713EE9A2B0094E3FE /* SegmentTermDocs.cpp */; };
- A954ABEE13EE9E470094E3FE /* SegmentTermEnum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA3813EE9A2B0094E3FE /* SegmentTermEnum.cpp */; };
- A954ABEF13EE9E470094E3FE /* SegmentTermPositions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA3A13EE9A2B0094E3FE /* SegmentTermPositions.cpp */; };
- A954ABF013EE9E470094E3FE /* SegmentTermVector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA3B13EE9A2B0094E3FE /* SegmentTermVector.cpp */; };
- A954ABF113EE9E470094E3FE /* Term.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA3C13EE9A2B0094E3FE /* Term.cpp */; };
- A954ABF213EE9E470094E3FE /* TermInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA3E13EE9A2B0094E3FE /* TermInfo.cpp */; };
- A954ABF313EE9E470094E3FE /* TermInfosReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA4013EE9A2B0094E3FE /* TermInfosReader.cpp */; };
- A954ABF413EE9E470094E3FE /* TermInfosWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA4213EE9A2B0094E3FE /* TermInfosWriter.cpp */; };
- A954ABF513EE9E470094E3FE /* TermVectorReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA4613EE9A2B0094E3FE /* TermVectorReader.cpp */; };
- A954ABF613EE9E470094E3FE /* TermVectorWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA4713EE9A2B0094E3FE /* TermVectorWriter.cpp */; };
- A954ABF713EE9E470094E3FE /* Lexer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA4A13EE9A2B0094E3FE /* Lexer.cpp */; };
- A954ABF813EE9E470094E3FE /* MultiFieldQueryParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA4C13EE9A2B0094E3FE /* MultiFieldQueryParser.cpp */; };
- A954ABF913EE9E470094E3FE /* QueryParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA4E13EE9A2B0094E3FE /* QueryParser.cpp */; };
- A954ABFA13EE9E470094E3FE /* QueryParserBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA5013EE9A2B0094E3FE /* QueryParserBase.cpp */; };
- A954ABFB13EE9E470094E3FE /* QueryToken.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA5213EE9A2B0094E3FE /* QueryToken.cpp */; };
- A954ABFC13EE9E470094E3FE /* TokenList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA5413EE9A2B0094E3FE /* TokenList.cpp */; };
- A954ABFD13EE9E470094E3FE /* BooleanQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA5813EE9A2B0094E3FE /* BooleanQuery.cpp */; };
- A954ABFE13EE9E470094E3FE /* BooleanScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA5A13EE9A2B0094E3FE /* BooleanScorer.cpp */; };
- A954ABFF13EE9E470094E3FE /* CachingWrapperFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA5C13EE9A2B0094E3FE /* CachingWrapperFilter.cpp */; };
- A954AC0013EE9E470094E3FE /* ChainedFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA5E13EE9A2B0094E3FE /* ChainedFilter.cpp */; };
- A954AC0113EE9E470094E3FE /* ConjunctionScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA6113EE9A2B0094E3FE /* ConjunctionScorer.cpp */; };
- A954AC0213EE9E470094E3FE /* DateFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA6313EE9A2B0094E3FE /* DateFilter.cpp */; };
- A954AC0313EE9E470094E3FE /* ExactPhraseScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA6513EE9A2B0094E3FE /* ExactPhraseScorer.cpp */; };
- A954AC0413EE9E470094E3FE /* Explanation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA6713EE9A2B0094E3FE /* Explanation.cpp */; };
- A954AC0513EE9E470094E3FE /* FieldCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA6913EE9A2B0094E3FE /* FieldCache.cpp */; };
- A954AC0613EE9E470094E3FE /* FieldCacheImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA6B13EE9A2B0094E3FE /* FieldCacheImpl.cpp */; };
- A954AC0713EE9E470094E3FE /* FieldDocSortedHitQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA6E13EE9A2B0094E3FE /* FieldDocSortedHitQueue.cpp */; };
- A954AC0813EE9E470094E3FE /* FieldSortedHitQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA7013EE9A2B0094E3FE /* FieldSortedHitQueue.cpp */; };
- A954AC0913EE9E470094E3FE /* FilteredTermEnum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA7313EE9A2B0094E3FE /* FilteredTermEnum.cpp */; };
- A954AC0A13EE9E470094E3FE /* FuzzyQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA7513EE9A2B0094E3FE /* FuzzyQuery.cpp */; };
- A954AC0B13EE9E470094E3FE /* HitQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA7713EE9A2B0094E3FE /* HitQueue.cpp */; };
- A954AC0C13EE9E470094E3FE /* Hits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA7913EE9A2B0094E3FE /* Hits.cpp */; };
- A954AC0D13EE9E470094E3FE /* IndexSearcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA7A13EE9A2B0094E3FE /* IndexSearcher.cpp */; };
- A954AC0E13EE9E470094E3FE /* MultiSearcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA7C13EE9A2B0094E3FE /* MultiSearcher.cpp */; };
- A954AC0F13EE9E470094E3FE /* MultiTermQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA7E13EE9A2B0094E3FE /* MultiTermQuery.cpp */; };
- A954AC1013EE9E470094E3FE /* PhrasePositions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA8013EE9A2B0094E3FE /* PhrasePositions.cpp */; };
- A954AC1113EE9E470094E3FE /* PhraseQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA8213EE9A2B0094E3FE /* PhraseQuery.cpp */; };
- A954AC1213EE9E470094E3FE /* PhraseScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA8513EE9A2B0094E3FE /* PhraseScorer.cpp */; };
- A954AC1313EE9E470094E3FE /* PrefixQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA8713EE9A2B0094E3FE /* PrefixQuery.cpp */; };
- A954AC1413EE9E470094E3FE /* QueryFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA8913EE9A2B0094E3FE /* QueryFilter.cpp */; };
- A954AC1513EE9E470094E3FE /* RangeFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA8B13EE9A2B0094E3FE /* RangeFilter.cpp */; };
- A954AC1613EE9E470094E3FE /* RangeQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA8D13EE9A2B0094E3FE /* RangeQuery.cpp */; };
- A954AC1713EE9E470094E3FE /* SearchHeader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA9013EE9A2B0094E3FE /* SearchHeader.cpp */; };
- A954AC1813EE9E470094E3FE /* Similarity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA9213EE9A2B0094E3FE /* Similarity.cpp */; };
- A954AC1913EE9E470094E3FE /* SloppyPhraseScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA9413EE9A2B0094E3FE /* SloppyPhraseScorer.cpp */; };
- A954AC1A13EE9E470094E3FE /* Sort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA9613EE9A2B0094E3FE /* Sort.cpp */; };
- A954AC1B13EE9E470094E3FE /* TermQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA9813EE9A2B0094E3FE /* TermQuery.cpp */; };
- A954AC1C13EE9E470094E3FE /* TermScorer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA9A13EE9A2B0094E3FE /* TermScorer.cpp */; };
- A954AC1D13EE9E470094E3FE /* WildcardQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA9C13EE9A2B0094E3FE /* WildcardQuery.cpp */; };
- A954AC1E13EE9E470094E3FE /* WildcardTermEnum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AA9E13EE9A2B0094E3FE /* WildcardTermEnum.cpp */; };
- A954AC1F13EE9E470094E3FE /* StdHeader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAA013EE9A2B0094E3FE /* StdHeader.cpp */; };
- A954AC2013EE9E470094E3FE /* FSDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAA413EE9A2B0094E3FE /* FSDirectory.cpp */; };
- A954AC2113EE9E470094E3FE /* IndexInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAA613EE9A2B0094E3FE /* IndexInput.cpp */; };
- A954AC2213EE9E470094E3FE /* IndexOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAA813EE9A2B0094E3FE /* IndexOutput.cpp */; };
- A954AC2313EE9E470094E3FE /* Lock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAAB13EE9A2B0094E3FE /* Lock.cpp */; };
- A954AC2413EE9E470094E3FE /* MMapInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAAD13EE9A2B0094E3FE /* MMapInput.cpp */; };
- A954AC2513EE9E470094E3FE /* RAMDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAAF13EE9A2B0094E3FE /* RAMDirectory.cpp */; };
- A954AC2613EE9E470094E3FE /* TransactionalRAMDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAB113EE9A2B0094E3FE /* TransactionalRAMDirectory.cpp */; };
- A954AC2713EE9E470094E3FE /* BitSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAB513EE9A2B0094E3FE /* BitSet.cpp */; };
- A954AC2813EE9E470094E3FE /* dirent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAB813EE9A2B0094E3FE /* dirent.cpp */; };
- A954AC2913EE9E470094E3FE /* Equators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AABA13EE9A2B0094E3FE /* Equators.cpp */; };
- A954AC2A13EE9E470094E3FE /* FastCharStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AABC13EE9A2B0094E3FE /* FastCharStream.cpp */; };
- A954AC2B13EE9E470094E3FE /* fileinputstream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AABE13EE9A2B0094E3FE /* fileinputstream.cpp */; };
- A954AC2C13EE9E470094E3FE /* MD5Digester.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAC313EE9A2B0094E3FE /* MD5Digester.cpp */; };
- A954AC2D13EE9E470094E3FE /* Misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAC513EE9A2B0094E3FE /* Misc.cpp */; };
- A954AC2E13EE9E470094E3FE /* Reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAC813EE9A2B0094E3FE /* Reader.cpp */; };
- A954AC2F13EE9E470094E3FE /* StringBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AACB13EE9A2B0094E3FE /* StringBuffer.cpp */; };
- A954AC3013EE9E470094E3FE /* StringIntern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AACD13EE9A2B0094E3FE /* StringIntern.cpp */; };
- A954AC3113EE9E470094E3FE /* ThreadLocal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954AAD113EE9A2B0094E3FE /* ThreadLocal.cpp */; };
- A954AC3313EE9F620094E3FE /* libcurl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954AC3213EE9F620094E3FE /* libcurl.dylib */; };
- A954AC3713EE9FA10094E3FE /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954AC3413EE9FA10094E3FE /* libicucore.dylib */; };
- A954AC3813EE9FA10094E3FE /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954AC3513EE9FA10094E3FE /* libstdc++.dylib */; };
- A954AC3913EE9FA10094E3FE /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954AC3613EE9FA10094E3FE /* libz.dylib */; };
- A954AC3A13EEA0C10094E3FE /* swdisp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80113EE98B30094E3FE /* swdisp.cpp */; };
- A954AC3B13EEA0C10094E3FE /* swlog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80213EE98B30094E3FE /* swlog.cpp */; };
- A954AC3C13EEA0C10094E3FE /* listkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80913EE98B30094E3FE /* listkey.cpp */; };
- A954AC3D13EEA0C10094E3FE /* strkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81013EE98B30094E3FE /* strkey.cpp */; };
- A954AC3E13EEA0C10094E3FE /* swkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81113EE98B30094E3FE /* swkey.cpp */; };
- A954AC3F13EEA0C10094E3FE /* treekey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81213EE98B30094E3FE /* treekey.cpp */; };
- A954AC4013EEA0C10094E3FE /* treekeyidx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81313EE98B30094E3FE /* treekeyidx.cpp */; };
- A954AC4113EEA0C10094E3FE /* versekey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81413EE98B30094E3FE /* versekey.cpp */; };
- A954AC4213EEA0C10094E3FE /* versetreekey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81513EE98B30094E3FE /* versetreekey.cpp */; };
- A954AC4313EEA0C10094E3FE /* curlftpt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81813EE98B30094E3FE /* curlftpt.cpp */; };
- A954AC4413EEA0C10094E3FE /* curlhttpt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81913EE98B30094E3FE /* curlhttpt.cpp */; };
- A954AC4513EEA0C10094E3FE /* encfiltmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81A13EE98B30094E3FE /* encfiltmgr.cpp */; };
- A954AC4613EEA0C10094E3FE /* filemgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81B13EE98B30094E3FE /* filemgr.cpp */; };
- A954AC4713EEA0C10094E3FE /* ftplibftpt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81C13EE98B30094E3FE /* ftplibftpt.cpp */; };
- A954AC4913EEA0C10094E3FE /* installmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81E13EE98B30094E3FE /* installmgr.cpp */; };
- A954AC4A13EEA0C10094E3FE /* localemgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81F13EE98B30094E3FE /* localemgr.cpp */; };
- A954AC4B13EEA0C10094E3FE /* markupfiltmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82213EE98B30094E3FE /* markupfiltmgr.cpp */; };
- A954AC4C13EEA0C10094E3FE /* stringmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82313EE98B30094E3FE /* stringmgr.cpp */; };
- A954AC4D13EEA0C10094E3FE /* swcacher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82413EE98B30094E3FE /* swcacher.cpp */; };
- A954AC4E13EEA0C10094E3FE /* swconfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82513EE98B30094E3FE /* swconfig.cpp */; };
- A954AC4F13EEA0C10094E3FE /* swfiltermgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82613EE98B30094E3FE /* swfiltermgr.cpp */; };
- A954AC5013EEA0C10094E3FE /* swlocale.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82713EE98B30094E3FE /* swlocale.cpp */; };
- A954AC5113EEA0C10094E3FE /* swmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82813EE98B30094E3FE /* swmgr.cpp */; };
- A954AC5213EEA0C10094E3FE /* swsearchable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82913EE98B30094E3FE /* swsearchable.cpp */; };
- A954AC5413EEA0C10094E3FE /* hrefcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A82E13EE98B30094E3FE /* hrefcom.cpp */; };
- A954AC5513EEA0C10094E3FE /* rawcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83613EE98B30094E3FE /* rawcom.cpp */; };
- A954AC5613EEA0C10094E3FE /* rawcom4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83913EE98B30094E3FE /* rawcom4.cpp */; };
- A954AC5713EEA0C10094E3FE /* rawfiles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83D13EE98B30094E3FE /* rawfiles.cpp */; };
- A954AC5813EEA0C10094E3FE /* swcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A83E13EE98B30094E3FE /* swcom.cpp */; };
- A954AC5913EEA0C10094E3FE /* zcom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84213EE98B30094E3FE /* zcom.cpp */; };
- A954AC5A13EEA0C10094E3FE /* entriesblk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84513EE98B30094E3FE /* entriesblk.cpp */; };
- A954AC5B13EEA0C10094E3FE /* lzsscomprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84613EE98B30094E3FE /* lzsscomprs.cpp */; };
- A954AC5C13EEA0C10094E3FE /* rawstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84913EE98B30094E3FE /* rawstr.cpp */; };
- A954AC5D13EEA0C10094E3FE /* rawstr4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84A13EE98B30094E3FE /* rawstr4.cpp */; };
- A954AC5E13EEA0C10094E3FE /* rawverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84B13EE98B30094E3FE /* rawverse.cpp */; };
- A954AC5F13EEA0C10094E3FE /* rawverse4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84C13EE98B30094E3FE /* rawverse4.cpp */; };
- A954AC6013EEA0C10094E3FE /* sapphire.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84D13EE98B30094E3FE /* sapphire.cpp */; };
- A954AC6113EEA0C10094E3FE /* swcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84E13EE98B30094E3FE /* swcipher.cpp */; };
- A954AC6213EEA0C10094E3FE /* swcomprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A84F13EE98B30094E3FE /* swcomprs.cpp */; };
- A954AC6313EEA0C10094E3FE /* zipcomprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85113EE98B30094E3FE /* zipcomprs.cpp */; };
- A954AC6413EEA0C10094E3FE /* zstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85213EE98B30094E3FE /* zstr.cpp */; };
- A954AC6513EEA0C10094E3FE /* zverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85313EE98B30094E3FE /* zverse.cpp */; };
- A954AC6613EEA0C10094E3FE /* cipherfil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85513EE98B30094E3FE /* cipherfil.cpp */; };
- A954AC6713EEA0C10094E3FE /* gbffootnotes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85613EE98B30094E3FE /* gbffootnotes.cpp */; };
- A954AC6813EEA0C10094E3FE /* gbfheadings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85713EE98B30094E3FE /* gbfheadings.cpp */; };
- A954AC6913EEA0C10094E3FE /* gbfhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85813EE98B30094E3FE /* gbfhtml.cpp */; };
- A954AC6A13EEA0C10094E3FE /* gbfhtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85913EE98B30094E3FE /* gbfhtmlhref.cpp */; };
- A954AC6B13EEA0C10094E3FE /* gbfmorph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85A13EE98B30094E3FE /* gbfmorph.cpp */; };
- A954AC6C13EEA0C10094E3FE /* gbfosis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85B13EE98B30094E3FE /* gbfosis.cpp */; };
- A954AC6D13EEA0C10094E3FE /* gbfplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85C13EE98B30094E3FE /* gbfplain.cpp */; };
- A954AC6E13EEA0C10094E3FE /* gbfredletterwords.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85D13EE98B30094E3FE /* gbfredletterwords.cpp */; };
- A954AC6F13EEA0C10094E3FE /* gbfrtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85E13EE98B30094E3FE /* gbfrtf.cpp */; };
- A954AC7013EEA0C10094E3FE /* gbfstrongs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A85F13EE98B30094E3FE /* gbfstrongs.cpp */; };
- A954AC7113EEA0C10094E3FE /* gbfthml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86013EE98B30094E3FE /* gbfthml.cpp */; };
- A954AC7213EEA0C10094E3FE /* gbfwebif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86113EE98B30094E3FE /* gbfwebif.cpp */; };
- A954AC7313EEA0C10094E3FE /* gbfwordjs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86213EE98B30094E3FE /* gbfwordjs.cpp */; };
- A954AC7413EEA0C10094E3FE /* gbfxhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86313EE98B30094E3FE /* gbfxhtml.cpp */; };
- A954AC7513EEA0C10094E3FE /* greeklexattribs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86413EE98B30094E3FE /* greeklexattribs.cpp */; };
- A954AC7613EEA0C10094E3FE /* latin1utf16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86513EE98B30094E3FE /* latin1utf16.cpp */; };
- A954AC7713EEA0C10094E3FE /* latin1utf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86613EE98B30094E3FE /* latin1utf8.cpp */; };
- A954AC7813EEA0C10094E3FE /* osisfootnotes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86913EE98B30094E3FE /* osisfootnotes.cpp */; };
- A954AC7913EEA0C10094E3FE /* osisheadings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86A13EE98B30094E3FE /* osisheadings.cpp */; };
- A954AC7A13EEA0C10094E3FE /* osishtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86B13EE98B30094E3FE /* osishtmlhref.cpp */; };
- A954AC7B13EEA0C10094E3FE /* osislemma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86C13EE98B30094E3FE /* osislemma.cpp */; };
- A954AC7C13EEA0C10094E3FE /* osismorph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86D13EE98B30094E3FE /* osismorph.cpp */; };
- A954AC7D13EEA0C10094E3FE /* osismorphsegmentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86E13EE98B30094E3FE /* osismorphsegmentation.cpp */; };
- A954AC7E13EEA0C10094E3FE /* osisosis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A86F13EE98B30094E3FE /* osisosis.cpp */; };
- A954AC7F13EEA0C10094E3FE /* osisplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87013EE98B30094E3FE /* osisplain.cpp */; };
- A954AC8013EEA0C10094E3FE /* osisredletterwords.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87113EE98B30094E3FE /* osisredletterwords.cpp */; };
- A954AC8113EEA0C10094E3FE /* osisrtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87213EE98B30094E3FE /* osisrtf.cpp */; };
- A954AC8313EEA0C10094E3FE /* osisscripref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87413EE98B30094E3FE /* osisscripref.cpp */; };
- A954AC8413EEA0C10094E3FE /* osisstrongs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87513EE98B30094E3FE /* osisstrongs.cpp */; };
- A954AC8513EEA0C10094E3FE /* osisvariants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87613EE98B30094E3FE /* osisvariants.cpp */; };
- A954AC8613EEA0C10094E3FE /* osiswebif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87713EE98B30094E3FE /* osiswebif.cpp */; };
- A954AC8713EEA0C10094E3FE /* osiswordjs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87813EE98B30094E3FE /* osiswordjs.cpp */; };
- A954AC8813EEA0C10094E3FE /* osisxhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87913EE98B30094E3FE /* osisxhtml.cpp */; };
- A954AC8913EEA0C10094E3FE /* papyriplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87A13EE98B30094E3FE /* papyriplain.cpp */; };
- A954AC8C13EEA0C10094E3FE /* rtfhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87D13EE98B30094E3FE /* rtfhtml.cpp */; };
- A954AC8D13EEA0C10094E3FE /* swbasicfilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87E13EE98B30094E3FE /* swbasicfilter.cpp */; };
- A954AC8E13EEA0C10094E3FE /* swoptfilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A87F13EE98B30094E3FE /* swoptfilter.cpp */; };
- A954AC8F13EEA0C10094E3FE /* teihtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88013EE98B30094E3FE /* teihtmlhref.cpp */; };
- A954AC9013EEA0C10094E3FE /* teiplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88113EE98B30094E3FE /* teiplain.cpp */; };
- A954AC9113EEA0C10094E3FE /* teirtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88213EE98B30094E3FE /* teirtf.cpp */; };
- A954AC9213EEA0C10094E3FE /* thmlfootnotes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88313EE98B30094E3FE /* thmlfootnotes.cpp */; };
- A954AC9313EEA0C10094E3FE /* thmlgbf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88413EE98B30094E3FE /* thmlgbf.cpp */; };
- A954AC9413EEA0C10094E3FE /* thmlheadings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88513EE98B30094E3FE /* thmlheadings.cpp */; };
- A954AC9513EEA0C10094E3FE /* thmlhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88613EE98B30094E3FE /* thmlhtml.cpp */; };
- A954AC9613EEA0C10094E3FE /* thmlhtmlhref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88713EE98B30094E3FE /* thmlhtmlhref.cpp */; };
- A954AC9713EEA0C10094E3FE /* thmllemma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88813EE98B30094E3FE /* thmllemma.cpp */; };
- A954AC9813EEA0C10094E3FE /* thmlmorph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88913EE98B30094E3FE /* thmlmorph.cpp */; };
- A954AC9913EEA0C10094E3FE /* thmlosis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88A13EE98B30094E3FE /* thmlosis.cpp */; };
- A954AC9A13EEA0C10094E3FE /* thmlplain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88B13EE98B30094E3FE /* thmlplain.cpp */; };
- A954AC9B13EEA0C10094E3FE /* thmlrtf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88C13EE98B30094E3FE /* thmlrtf.cpp */; };
- A954AC9C13EEA0C10094E3FE /* thmlscripref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88D13EE98B30094E3FE /* thmlscripref.cpp */; };
- A954AC9D13EEA0C10094E3FE /* thmlstrongs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88E13EE98B30094E3FE /* thmlstrongs.cpp */; };
- A954AC9E13EEA0C10094E3FE /* thmlvariants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A88F13EE98B30094E3FE /* thmlvariants.cpp */; };
- A954AC9F13EEA0C10094E3FE /* thmlwebif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89013EE98B30094E3FE /* thmlwebif.cpp */; };
- A954ACA013EEA0C10094E3FE /* thmlwordjs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89113EE98B30094E3FE /* thmlwordjs.cpp */; };
- A954ACA113EEA0C10094E3FE /* thmlxhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89213EE98B30094E3FE /* thmlxhtml.cpp */; };
- A954ACA213EEA0C10094E3FE /* unicodertf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89313EE98B30094E3FE /* unicodertf.cpp */; };
- A954ACA313EEA0C10094E3FE /* utf16utf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89413EE98B30094E3FE /* utf16utf8.cpp */; };
- A954ACA413EEA0C10094E3FE /* utf8arabicpoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89513EE98B30094E3FE /* utf8arabicpoints.cpp */; };
- A954ACA513EEA0C10094E3FE /* utf8arshaping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89613EE98B30094E3FE /* utf8arshaping.cpp */; };
- A954ACA613EEA0C10094E3FE /* utf8bidireorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89713EE98B30094E3FE /* utf8bidireorder.cpp */; };
- A954ACA713EEA0C10094E3FE /* utf8cantillation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89813EE98B30094E3FE /* utf8cantillation.cpp */; };
- A954ACA813EEA0C10094E3FE /* utf8greekaccents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89913EE98B30094E3FE /* utf8greekaccents.cpp */; };
- A954ACA913EEA0C10094E3FE /* utf8hebrewpoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89A13EE98B30094E3FE /* utf8hebrewpoints.cpp */; };
- A954ACAA13EEA0C10094E3FE /* utf8html.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89B13EE98B30094E3FE /* utf8html.cpp */; };
- A954ACAB13EEA0C10094E3FE /* utf8latin1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89C13EE98B30094E3FE /* utf8latin1.cpp */; };
- A954ACAC13EEA0C10094E3FE /* utf8nfc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89D13EE98B30094E3FE /* utf8nfc.cpp */; };
- A954ACAD13EEA0C10094E3FE /* utf8nfkd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89E13EE98B30094E3FE /* utf8nfkd.cpp */; };
- A954ACAE13EEA0C10094E3FE /* utf8transliterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A89F13EE98B30094E3FE /* utf8transliterator.cpp */; };
- A954ACAF13EEA0C10094E3FE /* utf8utf16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8A013EE98B30094E3FE /* utf8utf16.cpp */; };
- A954ACB013EEA0C10094E3FE /* rawgenbook.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8A713EE98B30094E3FE /* rawgenbook.cpp */; };
- A954ACB113EEA0C10094E3FE /* swgenbook.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8A813EE98B30094E3FE /* swgenbook.cpp */; };
- A954ACB213EEA0C10094E3FE /* rawld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8AF13EE98B30094E3FE /* rawld.cpp */; };
- A954ACB313EEA0C10094E3FE /* rawld4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8B313EE98B30094E3FE /* rawld4.cpp */; };
- A954ACB413EEA0C10094E3FE /* swld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8B413EE98B30094E3FE /* swld.cpp */; };
- A954ACB513EEA0C10094E3FE /* zld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8B813EE98B30094E3FE /* zld.cpp */; };
- A954ACB613EEA0C10094E3FE /* swmodule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8BC13EE98B30094E3FE /* swmodule.cpp */; };
- A954ACB713EEA0C10094E3FE /* rawtext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8C613EE98B30094E3FE /* rawtext.cpp */; };
- A954ACB813EEA0C10094E3FE /* rawtext4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8C913EE98B30094E3FE /* rawtext4.cpp */; };
- A954ACB913EEA0C10094E3FE /* swtext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8CA13EE98B30094E3FE /* swtext.cpp */; };
- A954ACBA13EEA0C10094E3FE /* ztext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8CE13EE98B30094E3FE /* ztext.cpp */; };
- A954ACBB13EEA0C10094E3FE /* roman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D513EE98B30094E3FE /* roman.cpp */; };
- A954ACBC13EEA0C10094E3FE /* swbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D613EE98B30094E3FE /* swbuf.cpp */; };
- A954ACBD13EEA0C10094E3FE /* swobject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D713EE98B30094E3FE /* swobject.cpp */; };
- A954ACBF13EEA0C10094E3FE /* swversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D913EE98B30094E3FE /* swversion.cpp */; };
- A954ACC013EEA0C10094E3FE /* url.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DA13EE98B30094E3FE /* url.cpp */; };
- A954ACC113EEA0C10094E3FE /* utilstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DB13EE98B30094E3FE /* utilstr.cpp */; };
- A954ACC213EEA0C10094E3FE /* utilxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DC13EE98B30094E3FE /* utilxml.cpp */; };
- A954ACCA13EEA5340094E3FE /* ftplib.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D013EE98B30094E3FE /* ftplib.c */; };
- A954ACCB13EEA5340094E3FE /* ftpparse.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D113EE98B30094E3FE /* ftpparse.c */; };
- A954ACCD13EEA5340094E3FE /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8E113EE98B30094E3FE /* adler32.c */; };
- A954ACCE13EEA5340094E3FE /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8E213EE98B30094E3FE /* compress.c */; };
- A954ACCF13EEA5340094E3FE /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8E313EE98B30094E3FE /* crc32.c */; };
- A954ACD013EEA5340094E3FE /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8E413EE98B30094E3FE /* deflate.c */; };
- A954ACD413EEA5340094E3FE /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8EB13EE98B30094E3FE /* inffast.c */; };
- A954ACD513EEA5340094E3FE /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8EE13EE98B30094E3FE /* inflate.c */; };
- A954ACD613EEA5340094E3FE /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8EF13EE98B30094E3FE /* inftrees.c */; };
- A954ACD913EEA5340094E3FE /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8F413EE98B30094E3FE /* trees.c */; };
- A954ACDA13EEA5340094E3FE /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8F613EE98B30094E3FE /* uncompr.c */; };
- A954ACDB13EEA5340094E3FE /* untgz.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8F713EE98B30094E3FE /* untgz.c */; };
- A954ACDC13EEA5340094E3FE /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = A954A8F813EE98B30094E3FE /* zutil.c */; };
- A954ACDD13EEA6780094E3FE /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; };
- A967FB5616806B16004ED73C /* teixhtml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9E9C5ED16806A2B00ECEB39 /* teixhtml.cpp */; };
- A96C2359176AFA3C008D714B /* remotetrans.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2351176AF188008D714B /* remotetrans.cpp */; };
- A96C235A176AFA3C008D714B /* osisenum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2353176AF19C008D714B /* osisenum.cpp */; };
- A96C235B176AFA3C008D714B /* osisglosses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2354176AF19C008D714B /* osisglosses.cpp */; };
- A96C235C176AFA3C008D714B /* osisxlit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2355176AF19C008D714B /* osisxlit.cpp */; };
- A96C235C176AFA3C008D714B /* osisreferencelinks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A96C2355176AF19C008D714B /* osisreferencelinks.cpp */; };
- A96C235D176AFA3C008D714B /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = A96C233E176AF139008D714B /* gzclose.c */; };
- A96C235E176AFA3C008D714B /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = A96C2340176AF139008D714B /* gzlib.c */; };
- A96C235F176AFA3C008D714B /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = A96C2341176AF139008D714B /* gzread.c */; };
- A96C2360176AFA3C008D714B /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = A96C2342176AF139008D714B /* gzwrite.c */; };
- A96C2361176AFA3C008D714B /* infback.c in Sources */ = {isa = PBXBuildFile; fileRef = A96C2343176AF139008D714B /* infback.c */; };
+ A968BE4D19DFF832002C9B78 /* SwordBibleTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A968BE4C19DFF832002C9B78 /* SwordBibleTest.swift */; };
+ A969DC7B1DA1289100C8E976 /* SwordLocaleManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A969DC7A1DA1289100C8E976 /* SwordLocaleManagerTest.swift */; };
A975EAC511C77862007C1532 /* ObjCSword.h in Headers */ = {isa = PBXBuildFile; fileRef = A975EAC411C77862007C1532 /* ObjCSword.h */; settings = {ATTRIBUTES = (Public, ); }; };
A975EEE511C79308007C1532 /* mod2osis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDAC11C7925C007C1532 /* mod2osis.cpp */; };
- A999FF3F17951CCE00E65919 /* bz2comprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A999FF3917951C8900E65919 /* bz2comprs.cpp */; };
- A999FF4017951CCE00E65919 /* xzcomprs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A999FF3A17951C8900E65919 /* xzcomprs.cpp */; };
- A999FF4117951CCE00E65919 /* scsuutf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A999FF3D17951CA000E65919 /* scsuutf8.cpp */; };
+ A995E6241C876E8900843E13 /* TestModules in Resources */ = {isa = PBXBuildFile; fileRef = A995E6231C876E8900843E13 /* TestModules */; };
+ A995E6271C877DD000843E13 /* SwordManagerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A995E6261C877DD000843E13 /* SwordManagerTest.m */; };
+ A9A127A519DE93A0005BCBC1 /* SwordUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C92C7B2EB245D47FEB5E3B0 /* SwordUtil.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ A9A127A619DE93A0005BCBC1 /* FilterProviderFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C92C72ADACB017A434CD268 /* FilterProviderFactory.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ A9A127A719DE93A0005BCBC1 /* DefaultFilterProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C92C980D4DE32C7AB93159D /* DefaultFilterProvider.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ A9A127A819DE93A0005BCBC1 /* SwordFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C92C02A5C86E1C75ED1CEF4 /* SwordFilter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ A9A129DB19DF144D005BCBC1 /* bz2comprs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1291C19DF144D005BCBC1 /* bz2comprs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129DC19DF144D005BCBC1 /* canon.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1291D19DF144D005BCBC1 /* canon.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129DD19DF144D005BCBC1 /* canon_abbrevs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1291E19DF144D005BCBC1 /* canon_abbrevs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129DE19DF144D005BCBC1 /* canon_catholic.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1291F19DF144D005BCBC1 /* canon_catholic.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129DF19DF144D005BCBC1 /* canon_catholic2.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292019DF144D005BCBC1 /* canon_catholic2.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129E019DF144D005BCBC1 /* canon_german.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292119DF144D005BCBC1 /* canon_german.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129E119DF144D005BCBC1 /* canon_kjva.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292219DF144D005BCBC1 /* canon_kjva.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129E219DF144D005BCBC1 /* canon_leningrad.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292319DF144D005BCBC1 /* canon_leningrad.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129E319DF144D005BCBC1 /* canon_luther.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292419DF144D005BCBC1 /* canon_luther.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129E419DF144D005BCBC1 /* canon_lxx.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292519DF144D005BCBC1 /* canon_lxx.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129E519DF144D005BCBC1 /* canon_mt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292619DF144D005BCBC1 /* canon_mt.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129E619DF144D005BCBC1 /* canon_nrsv.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292719DF144D005BCBC1 /* canon_nrsv.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129E719DF144D005BCBC1 /* canon_nrsva.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292819DF144D005BCBC1 /* canon_nrsva.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129E819DF144D005BCBC1 /* canon_null.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292919DF144D005BCBC1 /* canon_null.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129E919DF144D005BCBC1 /* canon_orthodox.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292A19DF144D005BCBC1 /* canon_orthodox.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129EA19DF144D005BCBC1 /* canon_synodal.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292B19DF144D005BCBC1 /* canon_synodal.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129EB19DF144D005BCBC1 /* canon_synodalprot.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292C19DF144D005BCBC1 /* canon_synodalprot.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129EC19DF144D005BCBC1 /* canon_vulg.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292D19DF144D005BCBC1 /* canon_vulg.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129ED19DF144D005BCBC1 /* cipherfil.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1292E19DF144D005BCBC1 /* cipherfil.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129EF19DF144D005BCBC1 /* curlftpt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293019DF144D005BCBC1 /* curlftpt.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129F019DF144D005BCBC1 /* curlhttpt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293119DF144D005BCBC1 /* curlhttpt.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129F119DF144D005BCBC1 /* defs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293219DF144D005BCBC1 /* defs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129F219DF144D005BCBC1 /* echomod.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293319DF144D005BCBC1 /* echomod.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129F319DF144D005BCBC1 /* encfiltmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293419DF144D005BCBC1 /* encfiltmgr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129F419DF144D005BCBC1 /* entriesblk.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293519DF144D005BCBC1 /* entriesblk.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129F519DF144E005BCBC1 /* femain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293619DF144D005BCBC1 /* femain.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129F619DF144E005BCBC1 /* filemgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293719DF144D005BCBC1 /* filemgr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129F719DF144E005BCBC1 /* flatapi.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293819DF144D005BCBC1 /* flatapi.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129F819DF144E005BCBC1 /* ftplib.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293919DF144D005BCBC1 /* ftplib.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129F919DF144E005BCBC1 /* ftplibftpt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293A19DF144D005BCBC1 /* ftplibftpt.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129FA19DF144E005BCBC1 /* ftpparse.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293B19DF144D005BCBC1 /* ftpparse.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129FB19DF144E005BCBC1 /* gbffootnotes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293C19DF144D005BCBC1 /* gbffootnotes.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129FC19DF144E005BCBC1 /* gbfheadings.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293D19DF144D005BCBC1 /* gbfheadings.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129FD19DF144E005BCBC1 /* gbfhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293E19DF144D005BCBC1 /* gbfhtml.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129FE19DF144E005BCBC1 /* gbfhtmlhref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1293F19DF144D005BCBC1 /* gbfhtmlhref.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A129FF19DF144E005BCBC1 /* gbflatex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294019DF144D005BCBC1 /* gbflatex.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0019DF144E005BCBC1 /* gbfmorph.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294119DF144D005BCBC1 /* gbfmorph.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0119DF144E005BCBC1 /* gbfosis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294219DF144D005BCBC1 /* gbfosis.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0219DF144E005BCBC1 /* gbfplain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294319DF144D005BCBC1 /* gbfplain.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0319DF144E005BCBC1 /* gbfredletterwords.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294419DF144D005BCBC1 /* gbfredletterwords.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0419DF144E005BCBC1 /* gbfrtf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294519DF144D005BCBC1 /* gbfrtf.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0519DF144E005BCBC1 /* gbfstrongs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294619DF144D005BCBC1 /* gbfstrongs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0619DF144E005BCBC1 /* gbfthml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294719DF144D005BCBC1 /* gbfthml.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0719DF144E005BCBC1 /* gbfwebif.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294819DF144D005BCBC1 /* gbfwebif.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0819DF144E005BCBC1 /* gbfwordjs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294919DF144D005BCBC1 /* gbfwordjs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0919DF144E005BCBC1 /* gbfxhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294A19DF144D005BCBC1 /* gbfxhtml.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0A19DF144E005BCBC1 /* greeklexattribs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294B19DF144D005BCBC1 /* greeklexattribs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0B19DF144E005BCBC1 /* hebrewmcim.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294C19DF144D005BCBC1 /* hebrewmcim.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0C19DF144F005BCBC1 /* hrefcom.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294D19DF144D005BCBC1 /* hrefcom.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0D19DF144F005BCBC1 /* installmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1294E19DF144D005BCBC1 /* installmgr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0E19DF144F005BCBC1 /* regex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295119DF144D005BCBC1 /* regex.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A0F19DF144F005BCBC1 /* latin1utf16.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295219DF144D005BCBC1 /* latin1utf16.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1019DF144F005BCBC1 /* latin1utf8.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295319DF144D005BCBC1 /* latin1utf8.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1119DF144F005BCBC1 /* listkey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295419DF144D005BCBC1 /* listkey.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1219DF144F005BCBC1 /* localemgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295519DF144D005BCBC1 /* localemgr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1319DF144F005BCBC1 /* lzsscomprs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295619DF144D005BCBC1 /* lzsscomprs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1619DF144F005BCBC1 /* markupfiltmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295919DF144D005BCBC1 /* markupfiltmgr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1719DF144F005BCBC1 /* multimapwdef.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295A19DF144D005BCBC1 /* multimapwdef.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1819DF144F005BCBC1 /* nullim.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295B19DF144D005BCBC1 /* nullim.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1919DF144F005BCBC1 /* osisenum.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295C19DF144D005BCBC1 /* osisenum.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1A19DF144F005BCBC1 /* osisfootnotes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295D19DF144D005BCBC1 /* osisfootnotes.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1B19DF144F005BCBC1 /* osisglosses.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295E19DF144D005BCBC1 /* osisglosses.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1C19DF144F005BCBC1 /* osisheadings.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295F19DF144D005BCBC1 /* osisheadings.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1D19DF1450005BCBC1 /* osishtmlhref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296019DF144D005BCBC1 /* osishtmlhref.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1E19DF1450005BCBC1 /* osislatex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296119DF144D005BCBC1 /* osislatex.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A1F19DF1450005BCBC1 /* osislemma.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296219DF144D005BCBC1 /* osislemma.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2019DF1450005BCBC1 /* osismorph.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296319DF144D005BCBC1 /* osismorph.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2119DF1450005BCBC1 /* osismorphsegmentation.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296419DF144D005BCBC1 /* osismorphsegmentation.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2219DF1450005BCBC1 /* osisosis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296519DF144D005BCBC1 /* osisosis.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2319DF1450005BCBC1 /* osisplain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296619DF144D005BCBC1 /* osisplain.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2419DF1450005BCBC1 /* osisredletterwords.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296719DF144D005BCBC1 /* osisredletterwords.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2519DF1450005BCBC1 /* osisreferencelinks.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296819DF144D005BCBC1 /* osisreferencelinks.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2619DF1450005BCBC1 /* osisrtf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296919DF144D005BCBC1 /* osisrtf.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2719DF1450005BCBC1 /* osisscripref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296A19DF144D005BCBC1 /* osisscripref.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2819DF1450005BCBC1 /* osisstrongs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296B19DF144D005BCBC1 /* osisstrongs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2919DF1450005BCBC1 /* osisvariants.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296C19DF144D005BCBC1 /* osisvariants.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2A19DF1451005BCBC1 /* osiswebif.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296D19DF144D005BCBC1 /* osiswebif.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2B19DF1451005BCBC1 /* osiswordjs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296E19DF144D005BCBC1 /* osiswordjs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2C19DF1451005BCBC1 /* osisxhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1296F19DF144D005BCBC1 /* osisxhtml.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2D19DF1451005BCBC1 /* osisxlit.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297019DF144D005BCBC1 /* osisxlit.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2E19DF1451005BCBC1 /* papyriplain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297119DF144D005BCBC1 /* papyriplain.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A2F19DF1451005BCBC1 /* rawcom.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297219DF144D005BCBC1 /* rawcom.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3019DF1451005BCBC1 /* rawcom4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297319DF144D005BCBC1 /* rawcom4.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3119DF1451005BCBC1 /* rawfiles.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297419DF144D005BCBC1 /* rawfiles.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3219DF1451005BCBC1 /* rawgenbook.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297519DF144D005BCBC1 /* rawgenbook.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3319DF1451005BCBC1 /* rawld.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297619DF144D005BCBC1 /* rawld.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3419DF1451005BCBC1 /* rawld4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297719DF144D005BCBC1 /* rawld4.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3519DF1452005BCBC1 /* rawstr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297819DF144D005BCBC1 /* rawstr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3619DF1452005BCBC1 /* rawstr4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297919DF144D005BCBC1 /* rawstr4.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3719DF1452005BCBC1 /* rawtext.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297A19DF144D005BCBC1 /* rawtext.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3819DF1452005BCBC1 /* rawtext4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297B19DF144D005BCBC1 /* rawtext4.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3919DF1452005BCBC1 /* rawverse.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297C19DF144D005BCBC1 /* rawverse.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3A19DF1452005BCBC1 /* rawverse4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297D19DF144D005BCBC1 /* rawverse4.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3B19DF1452005BCBC1 /* remotetrans.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297E19DF144D005BCBC1 /* remotetrans.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3C19DF1452005BCBC1 /* roman.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1297F19DF144D005BCBC1 /* roman.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3D19DF1452005BCBC1 /* rtfhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298019DF144D005BCBC1 /* rtfhtml.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3E19DF1452005BCBC1 /* sapphire.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298119DF144D005BCBC1 /* sapphire.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A3F19DF1453005BCBC1 /* scsuutf8.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298219DF144D005BCBC1 /* scsuutf8.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4119DF1453005BCBC1 /* stringmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298419DF144D005BCBC1 /* stringmgr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4219DF1453005BCBC1 /* strkey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298519DF144D005BCBC1 /* strkey.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4319DF1453005BCBC1 /* swbasicfilter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298619DF144D005BCBC1 /* swbasicfilter.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4419DF1453005BCBC1 /* swbuf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298719DF144D005BCBC1 /* swbuf.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4519DF1453005BCBC1 /* swcacher.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298819DF144D005BCBC1 /* swcacher.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4619DF1453005BCBC1 /* swcipher.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298919DF144D005BCBC1 /* swcipher.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4719DF1453005BCBC1 /* swcom.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298A19DF144D005BCBC1 /* swcom.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4819DF1454005BCBC1 /* swcomprs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298B19DF144D005BCBC1 /* swcomprs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4919DF1454005BCBC1 /* swconfig.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298C19DF144D005BCBC1 /* swconfig.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4A19DF1454005BCBC1 /* swdisp.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298D19DF144D005BCBC1 /* swdisp.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4B19DF1454005BCBC1 /* swfilter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298E19DF144D005BCBC1 /* swfilter.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4C19DF1454005BCBC1 /* swfiltermgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1298F19DF144D005BCBC1 /* swfiltermgr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4D19DF1454005BCBC1 /* swgenbook.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299019DF144D005BCBC1 /* swgenbook.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4E19DF1454005BCBC1 /* swinputmeth.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299119DF144D005BCBC1 /* swinputmeth.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A4F19DF1454005BCBC1 /* swkey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299219DF144D005BCBC1 /* swkey.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5019DF1455005BCBC1 /* swld.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299319DF144D005BCBC1 /* swld.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5119DF1455005BCBC1 /* swlocale.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299419DF144D005BCBC1 /* swlocale.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5219DF1455005BCBC1 /* swlog.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299519DF144D005BCBC1 /* swlog.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5319DF1455005BCBC1 /* swmacs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299619DF144D005BCBC1 /* swmacs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5419DF1455005BCBC1 /* swmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299719DF144D005BCBC1 /* swmgr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5519DF1455005BCBC1 /* swmodule.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299819DF144D005BCBC1 /* swmodule.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5619DF1455005BCBC1 /* swobject.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299919DF144D005BCBC1 /* swobject.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5719DF1455005BCBC1 /* swoptfilter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299A19DF144D005BCBC1 /* swoptfilter.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5919DF1456005BCBC1 /* swsearchable.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299C19DF144D005BCBC1 /* swsearchable.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5A19DF1456005BCBC1 /* swtext.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299D19DF144D005BCBC1 /* swtext.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5B19DF1456005BCBC1 /* swversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1299E19DF144D005BCBC1 /* swversion.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5D19DF1456005BCBC1 /* sysdata.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A019DF144D005BCBC1 /* sysdata.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5E19DF1456005BCBC1 /* teihtmlhref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A119DF144D005BCBC1 /* teihtmlhref.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A5F19DF1456005BCBC1 /* teilatex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A219DF144D005BCBC1 /* teilatex.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6019DF1457005BCBC1 /* teiplain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A319DF144D005BCBC1 /* teiplain.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6119DF1457005BCBC1 /* teirtf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A419DF144D005BCBC1 /* teirtf.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6219DF1457005BCBC1 /* teixhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A519DF144D005BCBC1 /* teixhtml.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6319DF1457005BCBC1 /* thmlfootnotes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A619DF144D005BCBC1 /* thmlfootnotes.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6419DF1457005BCBC1 /* thmlgbf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A719DF144D005BCBC1 /* thmlgbf.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6519DF1457005BCBC1 /* thmlheadings.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A819DF144D005BCBC1 /* thmlheadings.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6619DF1457005BCBC1 /* thmlhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129A919DF144D005BCBC1 /* thmlhtml.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6719DF1458005BCBC1 /* thmlhtmlhref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AA19DF144D005BCBC1 /* thmlhtmlhref.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6819DF1458005BCBC1 /* thmllatex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AB19DF144D005BCBC1 /* thmllatex.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6919DF1458005BCBC1 /* thmllemma.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AC19DF144D005BCBC1 /* thmllemma.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6A19DF1458005BCBC1 /* thmlmorph.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AD19DF144D005BCBC1 /* thmlmorph.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6B19DF1458005BCBC1 /* thmlosis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AE19DF144D005BCBC1 /* thmlosis.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6C19DF1458005BCBC1 /* thmlplain.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129AF19DF144D005BCBC1 /* thmlplain.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6D19DF1458005BCBC1 /* thmlrtf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B019DF144D005BCBC1 /* thmlrtf.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6E19DF1459005BCBC1 /* thmlscripref.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B119DF144D005BCBC1 /* thmlscripref.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A6F19DF1459005BCBC1 /* thmlstrongs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B219DF144D005BCBC1 /* thmlstrongs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7019DF1459005BCBC1 /* thmlvariants.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B319DF144D005BCBC1 /* thmlvariants.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7119DF1459005BCBC1 /* thmlwebif.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B419DF144D005BCBC1 /* thmlwebif.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7219DF1459005BCBC1 /* thmlwordjs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B519DF144D005BCBC1 /* thmlwordjs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7319DF1459005BCBC1 /* thmlxhtml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B619DF144D005BCBC1 /* thmlxhtml.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7419DF145A005BCBC1 /* treekey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B719DF144D005BCBC1 /* treekey.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7519DF145A005BCBC1 /* treekeyidx.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B819DF144D005BCBC1 /* treekeyidx.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7619DF145A005BCBC1 /* unicodertf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129B919DF144D005BCBC1 /* unicodertf.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7719DF145A005BCBC1 /* untgz.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BA19DF144D005BCBC1 /* untgz.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7819DF145A005BCBC1 /* url.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BB19DF144D005BCBC1 /* url.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7919DF145A005BCBC1 /* utf16utf8.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BC19DF144D005BCBC1 /* utf16utf8.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7A19DF145B005BCBC1 /* utf8arabicpoints.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BD19DF144D005BCBC1 /* utf8arabicpoints.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7B19DF145B005BCBC1 /* utf8arshaping.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BE19DF144D005BCBC1 /* utf8arshaping.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7C19DF145B005BCBC1 /* utf8bidireorder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129BF19DF144D005BCBC1 /* utf8bidireorder.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7D19DF145B005BCBC1 /* utf8cantillation.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C019DF144D005BCBC1 /* utf8cantillation.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7E19DF145B005BCBC1 /* utf8greekaccents.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C119DF144D005BCBC1 /* utf8greekaccents.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A7F19DF145C005BCBC1 /* utf8hebrewpoints.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C219DF144D005BCBC1 /* utf8hebrewpoints.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8019DF145C005BCBC1 /* utf8html.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C319DF144D005BCBC1 /* utf8html.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8119DF145C005BCBC1 /* utf8latin1.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C419DF144D005BCBC1 /* utf8latin1.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8219DF145C005BCBC1 /* utf8nfc.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C519DF144D005BCBC1 /* utf8nfc.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8319DF145C005BCBC1 /* utf8nfkd.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C619DF144D005BCBC1 /* utf8nfkd.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8419DF145C005BCBC1 /* utf8scsu.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C719DF144D005BCBC1 /* utf8scsu.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8519DF145D005BCBC1 /* utf8transliterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C819DF144D005BCBC1 /* utf8transliterator.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8619DF145D005BCBC1 /* utf8utf16.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129C919DF144D005BCBC1 /* utf8utf16.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8719DF145D005BCBC1 /* utilstr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CA19DF144D005BCBC1 /* utilstr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8819DF145D005BCBC1 /* utilxml.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CB19DF144D005BCBC1 /* utilxml.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8919DF145D005BCBC1 /* versekey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CC19DF144D005BCBC1 /* versekey.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8A19DF145E005BCBC1 /* versetreekey.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CD19DF144D005BCBC1 /* versetreekey.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8B19DF145E005BCBC1 /* versificationmgr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CE19DF144D005BCBC1 /* versificationmgr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8C19DF145E005BCBC1 /* xzcomprs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129CF19DF144D005BCBC1 /* xzcomprs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8D19DF145E005BCBC1 /* zcom.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D019DF144D005BCBC1 /* zcom.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8E19DF145E005BCBC1 /* zcom4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D119DF144D005BCBC1 /* zcom4.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A8F19DF145F005BCBC1 /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D219DF144D005BCBC1 /* zconf.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A9019DF145F005BCBC1 /* zipcomprs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D319DF144D005BCBC1 /* zipcomprs.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A9119DF145F005BCBC1 /* zld.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D419DF144D005BCBC1 /* zld.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A9219DF145F005BCBC1 /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D519DF144D005BCBC1 /* zlib.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A9319DF145F005BCBC1 /* zstr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D619DF144D005BCBC1 /* zstr.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A9419DF1460005BCBC1 /* ztext.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D719DF144D005BCBC1 /* ztext.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A9519DF1460005BCBC1 /* ztext4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D819DF144D005BCBC1 /* ztext4.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A9619DF1460005BCBC1 /* zverse.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D919DF144D005BCBC1 /* zverse.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ A9A12A9719DF1460005BCBC1 /* zverse4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129DA19DF144D005BCBC1 /* zverse4.h */; settings = {ATTRIBUTES = (Private, ); }; };
A9A2C17D118D9D3D0002873D /* Notifications.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A2C17C118D9D3D0002873D /* Notifications.h */; settings = {ATTRIBUTES = (Public, ); }; };
- A9A7EEAF14D5D4C300B76B6A /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; };
A9A7EEBE14D5D64C00B76B6A /* osis2mod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDB111C7925C007C1532 /* osis2mod.cpp */; };
- A9A7EEBF14D5D65900B76B6A /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
- A9BDFA621207F9870067ED5B /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9C2818D11C43BD400803CB5 /* SenTestingKit.framework */; };
- A9BDFA631207F9870067ED5B /* ObjCSword.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* ObjCSword.framework */; };
- A9BDFA661207F9870067ED5B /* SwordManagerTest.h in Headers */ = {isa = PBXBuildFile; fileRef = A964658011C663E200640FAC /* SwordManagerTest.h */; };
- A9BDFA671207F9870067ED5B /* SwordModuleTest.h in Headers */ = {isa = PBXBuildFile; fileRef = A918B8E211C6697400024D84 /* SwordModuleTest.h */; };
- A9BDFA7C1207FA2F0067ED5B /* SwordModuleLongRunTest.h in Headers */ = {isa = PBXBuildFile; fileRef = A9BDFA7A1207FA2F0067ED5B /* SwordModuleLongRunTest.h */; };
- A9BDFA7D1207FA2F0067ED5B /* SwordModuleLongRunTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9BDFA7B1207FA2F0067ED5B /* SwordModuleLongRunTest.mm */; };
- A9BFB0A513EDF51100032679 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9BFB0A413EDF51000032679 /* SenTestingKit.framework */; };
+ A9A94A381DCB21AB00F69260 /* canon_calvin.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A94A351DCB21AB00F69260 /* canon_calvin.h */; };
+ A9A94A391DCB21AB00F69260 /* canon_darbyfr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A94A361DCB21AB00F69260 /* canon_darbyfr.h */; };
+ A9A94A3A1DCB21AB00F69260 /* canon_segond.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A94A371DCB21AB00F69260 /* canon_segond.h */; };
A9BFB0A713EDF51100032679 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9BFB0A613EDF51100032679 /* Cocoa.framework */; };
- A9BFB0BC13EDF5C900032679 /* SwordManagerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A964658111C663E200640FAC /* SwordManagerTest.m */; };
A9BFB0BD13EDF5C900032679 /* SwordModuleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A918B8E311C6697400024D84 /* SwordModuleTest.m */; };
A9BFB0BE13EDF5C900032679 /* SwordListKeyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A9BDFA771207F9F00067ED5B /* SwordListKeyTest.m */; };
- A9BFB0BF13EDF5D500032679 /* ObjCSword.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* ObjCSword.framework */; };
+ A9BFB0BF13EDF5D500032679 /* SWORD.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* SWORD.framework */; };
A9C2856F11C446B700803CB5 /* Configuration.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2856D11C446B700803CB5 /* Configuration.h */; settings = {ATTRIBUTES = (Public, ); }; };
A9C2857311C4471400803CB5 /* OSXConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2857111C4471400803CB5 /* OSXConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
A9C2857411C4471400803CB5 /* OSXConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = A9C2857211C4471400803CB5 /* OSXConfiguration.m */; };
A9C2858311C44A0A00803CB5 /* Configuration.m in Sources */ = {isa = PBXBuildFile; fileRef = A9C2858211C44A0A00803CB5 /* Configuration.m */; };
- A9D2714A14D717D800DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; };
A9D2715014D717F600DA8926 /* imp2gbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975ED9811C7925C007C1532 /* imp2gbs.cpp */; };
- A9D2715714D717FD00DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; };
A9D2715D14D7180F00DA8926 /* imp2ld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975ED9911C7925C007C1532 /* imp2ld.cpp */; };
- A9D2716414D7181200DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; };
A9D2716A14D7182100DA8926 /* imp2vs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975ED9A11C7925C007C1532 /* imp2vs.cpp */; };
- A9D2717114D7182300DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; };
A9D2717714D7183700DA8926 /* installmgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975ED9B11C7925C007C1532 /* installmgr.cpp */; };
- A9D2717E14D7183B00DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; };
A9D2718414D7184E00DA8926 /* mod2imp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDAB11C7925C007C1532 /* mod2imp.cpp */; };
- A9D2718B14D7185800DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; };
A9D2719114D7186800DA8926 /* mod2vpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDAD11C7925C007C1532 /* mod2vpl.cpp */; };
- A9D2719814D7186A00DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; };
A9D2719E14D7187A00DA8926 /* mod2zmod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDAE11C7925C007C1532 /* mod2zmod.cpp */; };
- A9D271A514D7187E00DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
A9D271AB14D7189100DA8926 /* step2vpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDB811C7925C007C1532 /* step2vpl.cpp */; };
- A9D271B214D7189300DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
A9D271B814D718A300DA8926 /* stepdump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDB911C7925C007C1532 /* stepdump.cpp */; };
- A9D271BF14D718A400DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
A9D271C514D718B700DA8926 /* tei2mod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDBB11C7925C007C1532 /* tei2mod.cpp */; };
- A9D271CC14D718B800DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
A9D271D214D718C600DA8926 /* vpl2mod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDD811C7925C007C1532 /* vpl2mod.cpp */; };
- A9D271D914D718C800DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
A9D271DF14D718DE00DA8926 /* vs2osisref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDD911C7925C007C1532 /* vs2osisref.cpp */; };
- A9D271E614D718DF00DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
A9D271EC14D718F400DA8926 /* vs2osisreftxt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDDA11C7925C007C1532 /* vs2osisreftxt.cpp */; };
- A9D271F314D718F500DA8926 /* libsword.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
A9D271F914D7190400DA8926 /* xml2gbs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A975EDDB11C7925C007C1532 /* xml2gbs.cpp */; };
A9D4360511C4FE97007AFE83 /* SwordModule+Index.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D4360311C4FE97007AFE83 /* SwordModule+Index.h */; settings = {ATTRIBUTES = (Public, ); }; };
A9D4360611C4FE97007AFE83 /* SwordModule+Index.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9D4360411C4FE97007AFE83 /* SwordModule+Index.mm */; };
A9D4382311C52947007AFE83 /* locales.d in Resources */ = {isa = PBXBuildFile; fileRef = A9D437CE11C52947007AFE83 /* locales.d */; };
- A9D9FA0B13EEE5CF00EA9DEB /* libsword.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A954ABC313EE9AB00094E3FE /* libsword.dylib */; };
+ A9D8FD3819E2EC730055700C /* introtest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9D8FD2C19E2EC0E0055700C /* introtest.cpp */; };
+ A9EE8A9119E286E500CFFE6A /* SWORD.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* SWORD.framework */; };
+ A9EE8A9719E2877500CFFE6A /* SwordModuleLongRunTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9BDFA7B1207FA2F0067ED5B /* SwordModuleLongRunTest.mm */; };
A9EF1416120595650078A27C /* SwordLocaleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9EF1414120595650078A27C /* SwordLocaleManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
A9EF1417120595650078A27C /* SwordLocaleManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9EF1415120595650078A27C /* SwordLocaleManager.mm */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
- A954ABC913EE9D0F0094E3FE /* PBXContainerItemProxy */ = {
+ 0A011DA81FB4142500778C2B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9A7EEAD14D5D4BB00B76B6A /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9A7EEC014D5D66400B76B6A /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9BDFA5C1207F9870067ED5B /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
- remoteInfo = ObjCSword;
+ remoteGlobalIDString = 0A011D9D1FB4142500778C2B;
+ remoteInfo = SWORD;
};
A9BFB0BA13EDF5B600032679 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
@@ -441,111 +851,6 @@
remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
remoteInfo = ObjCSword;
};
- A9D2714614D717D800DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D2715314D717FD00DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D2716014D7181200DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D2716D14D7182300DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D2717A14D7183B00DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D2718714D7185800DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D2719414D7186A00DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D271A114D7187E00DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D271AE14D7189300DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D271BB14D718A400DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D271C814D718B800DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D271D514D718C800DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D271E214D718DF00DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D271EF14D718F500DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
- A9D271FE14D7193A00DA8926 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = A954ABC213EE9AB00094E3FE;
- remoteInfo = sword;
- };
A9D2720014D7194E00DA8926 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
@@ -658,16 +963,32 @@
remoteGlobalIDString = A9D271ED14D718F500DA8926;
remoteInfo = xml2gbs;
};
+ A9EE8A9219E286E500CFFE6A /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
+ remoteInfo = ObjCSword;
+ };
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
+ 0A1F169E1FBB755B00E0AEFA /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "include/$(PRODUCT_NAME)";
+ dstSubfolderSpec = 16;
+ files = (
+ 0A1F16A51FBB755B00E0AEFA /* SWORD.h in CopyFiles */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
A9A5050211C75C4B00EB6EA5 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
- A9D9FA0B13EEE5CF00EA9DEB /* libsword.dylib in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -677,10 +998,22 @@
0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ 0A011D9E1FB4142500778C2B /* sword.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = sword.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 0A011DA11FB4142500778C2B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ 0A011DA61FB4142500778C2B /* SWORDTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SWORDTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 0A011DAB1FB4142500778C2B /* SWORDTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SWORDTests.m; sourceTree = "<group>"; };
+ 0A011DAD1FB4142500778C2B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ 0A1F16991FBB70E200E0AEFA /* flatapi.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = flatapi.cpp; path = ../flatapi.cpp; sourceTree = "<group>"; };
+ 0A1F16A01FBB755B00E0AEFA /* libSWORD.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSWORD.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ 0A1F16A21FBB755B00E0AEFA /* SWORD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SWORD.h; sourceTree = "<group>"; };
+ 0A1F16A31FBB755B00E0AEFA /* SWORD.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SWORD.m; sourceTree = "<group>"; };
+ 0AA1DD341FB46FD00082E131 /* sword.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = sword.m; sourceTree = "<group>"; };
+ 0AA1DD351FB46FD00082E131 /* sword.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sword.h; sourceTree = "<group>"; };
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
32DBCF5E0370ADEE00C91783 /* ObjCSword_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjCSword_Prefix.pch; sourceTree = "<group>"; };
8C92C0124F354F4CB4F294F9 /* DefaultFilterProvider.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = DefaultFilterProvider.mm; path = src/DefaultFilterProvider.mm; sourceTree = "<group>"; };
8C92C02A5C86E1C75ED1CEF4 /* SwordFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SwordFilter.h; path = src/SwordFilter.h; sourceTree = "<group>"; };
+ 8C92C0CA467F3114A1DC89DD /* SwordInstallSourceManagerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SwordInstallSourceManagerTest.m; sourceTree = "<group>"; };
8C92C25F57CB01957B086256 /* FilterProviderFactory.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FilterProviderFactory.mm; path = src/FilterProviderFactory.mm; sourceTree = "<group>"; };
8C92C291C40A77060C12A21B /* SwordUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SwordUtil.m; path = src/SwordUtil.m; sourceTree = "<group>"; };
8C92C72ADACB017A434CD268 /* FilterProviderFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FilterProviderFactory.h; path = src/FilterProviderFactory.h; sourceTree = "<group>"; };
@@ -688,7 +1021,792 @@
8C92C980D4DE32C7AB93159D /* DefaultFilterProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DefaultFilterProvider.h; path = src/DefaultFilterProvider.h; sourceTree = "<group>"; };
8C92CC111DC521DE0C054C60 /* SwordFilter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SwordFilter.mm; path = src/SwordFilter.mm; sourceTree = "<group>"; };
8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- 8DC2EF5B0486A6940098B216 /* ObjCSword.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ObjCSword.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8DC2EF5B0486A6940098B216 /* SWORD.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SWORD.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ A90152BE19A9E8E100F7FC7D /* appendable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = appendable.cpp; sourceTree = "<group>"; };
+ A90152BF19A9E8E100F7FC7D /* bmpset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bmpset.cpp; sourceTree = "<group>"; };
+ A90152C019A9E8E100F7FC7D /* bmpset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bmpset.h; sourceTree = "<group>"; };
+ A90152C119A9E8E100F7FC7D /* brkeng.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = brkeng.cpp; sourceTree = "<group>"; };
+ A90152C219A9E8E100F7FC7D /* brkeng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = brkeng.h; sourceTree = "<group>"; };
+ A90152C319A9E8E100F7FC7D /* brkiter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = brkiter.cpp; sourceTree = "<group>"; };
+ A90152C419A9E8E100F7FC7D /* bytestream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bytestream.cpp; sourceTree = "<group>"; };
+ A90152C519A9E8E100F7FC7D /* bytestrie.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bytestrie.cpp; sourceTree = "<group>"; };
+ A90152C619A9E8E100F7FC7D /* bytestriebuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bytestriebuilder.cpp; sourceTree = "<group>"; };
+ A90152C719A9E8E100F7FC7D /* bytestrieiterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bytestrieiterator.cpp; sourceTree = "<group>"; };
+ A90152C819A9E8E100F7FC7D /* caniter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = caniter.cpp; sourceTree = "<group>"; };
+ A90152C919A9E8E100F7FC7D /* chariter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = chariter.cpp; sourceTree = "<group>"; };
+ A90152CA19A9E8E100F7FC7D /* charstr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = charstr.cpp; sourceTree = "<group>"; };
+ A90152CB19A9E8E100F7FC7D /* charstr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = charstr.h; sourceTree = "<group>"; };
+ A90152CC19A9E8E100F7FC7D /* cmemory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmemory.c; sourceTree = "<group>"; };
+ A90152CD19A9E8E100F7FC7D /* cmemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cmemory.h; sourceTree = "<group>"; };
+ A90152CE19A9E8E100F7FC7D /* cmutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cmutex.h; sourceTree = "<group>"; };
+ A90152D219A9E8E100F7FC7D /* cpputils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpputils.h; sourceTree = "<group>"; };
+ A90152D319A9E8E100F7FC7D /* cstring.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cstring.c; sourceTree = "<group>"; };
+ A90152D419A9E8E100F7FC7D /* cstring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cstring.h; sourceTree = "<group>"; };
+ A90152D519A9E8E100F7FC7D /* cwchar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cwchar.c; sourceTree = "<group>"; };
+ A90152D619A9E8E100F7FC7D /* cwchar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cwchar.h; sourceTree = "<group>"; };
+ A90152D719A9E8E100F7FC7D /* dictbe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dictbe.cpp; sourceTree = "<group>"; };
+