diff options
author | Daniel Glassey <wdg@debian.org> | 2015-09-07 11:14:57 +0100 |
---|---|---|
committer | Daniel Glassey <wdg@debian.org> | 2015-09-07 11:14:57 +0100 |
commit | 7b6c8b08e9d29332dcd0a1029e7421334bfb6f61 (patch) | |
tree | dc263ee8b6c923716a8e0fed64756b7af1238dc7 /bindings/csharp/Module.cs | |
parent | 7a00574163029c0c2b649878c95d5acbd083564a (diff) |
Imported Upstream version 1.7.3+dfsg
Diffstat (limited to 'bindings/csharp/Module.cs')
-rw-r--r-- | bindings/csharp/Module.cs | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/bindings/csharp/Module.cs b/bindings/csharp/Module.cs new file mode 100644 index 0000000..b9cb965 --- /dev/null +++ b/bindings/csharp/Module.cs @@ -0,0 +1,214 @@ +// Copyright 2014 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. +using System; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +namespace Sword +{ + public class Module + { + IntPtr _handle; + + internal Module(IntPtr handle) + { + _handle = handle; + } + + public string Name + { + get + { + IntPtr namePtr = NativeMethods.org_crosswire_sword_SWModule_getName(_handle); + return Marshal.PtrToStringAnsi(namePtr); + } + } + + public string Description + { + get + { + IntPtr descriptionPtr = NativeMethods.org_crosswire_sword_SWModule_getDescription(_handle); + return Marshal.PtrToStringAnsi(descriptionPtr); + } + } + + public string Category + { + get + { + IntPtr categoryPtr = NativeMethods.org_crosswire_sword_SWModule_getCategory(_handle); + return Marshal.PtrToStringAnsi(categoryPtr); + } + } + + + /// <summary> + /// Special values handled for VerseKey modules: + /// [+-][book|chapter] - [de|in]crement by chapter or book + /// (e.g. "+chapter" will increment the VerseKey 1 chapter) + /// [=][key] - position absolutely and don't normalize + /// (e.g. "jn.1.0" for John Chapter 1 intro; "jn.0.0" For Book of John Intro) + /// </summary> + public string KeyText + { + get + { + IntPtr keyTextPtr = NativeMethods.org_crosswire_sword_SWModule_getKeyText(_handle); + return Marshal.PtrToStringAnsi(keyTextPtr); + } + set + { + NativeMethods.org_crosswire_sword_SWModule_setKeyText(_handle, value); + } + } + + public string RenderText() + { + IntPtr keyTextPtr = NativeMethods.org_crosswire_sword_SWModule_renderText(_handle); + return Marshal.PtrToStringAnsi(keyTextPtr); + } + + public string RawEntry + { + get + { + IntPtr keyTextPtr = NativeMethods.org_crosswire_sword_SWModule_getRawEntry(_handle); + return Marshal.PtrToStringAnsi(keyTextPtr); + } + set + { + NativeMethods.org_crosswire_sword_SWModule_setRawEntry(_handle, value); + } + } + + public string StripText() + { + IntPtr keyTextPtr = NativeMethods.org_crosswire_sword_SWModule_stripText(_handle); + return Marshal.PtrToStringAnsi(keyTextPtr); + } + + public IEnumerable<SearchHit> Search(string searchString, SearchType searchType, long flags, string scope) + { + IntPtr searchHitPtr = NativeMethods.org_crosswire_sword_SWModule_search(_handle, searchString, (int)searchType, flags, scope, IntPtr.Zero); + SearchHit searchHit = (SearchHit)Marshal.PtrToStructure(searchHitPtr, typeof(SearchHit)); + while (!searchHit.IsNull()) + { + yield return searchHit; + searchHitPtr = new IntPtr(searchHitPtr.ToInt64() + Marshal.SizeOf(typeof(SearchHit))); + searchHit = (SearchHit)Marshal.PtrToStructure(searchHitPtr, typeof(SearchHit)); + } + } + + public void TerminateSearch() + { + NativeMethods.org_crosswire_sword_SWModule_terminateSearch(_handle); + } + + public char PopError() + { + return NativeMethods.org_crosswire_sword_SWModule_popError(_handle); + } + + public long EntrySize + { + get + { + return NativeMethods.org_crosswire_sword_SWModule_getEntrySize(_handle); + } + } + + public IEnumerable<string> GetEntryAttribute(string level1, string level2, string level3, char filteredBool) + { + IntPtr attributePtrs = NativeMethods.org_crosswire_sword_SWModule_getEntryAttribute(_handle, level1, level2, level3, filteredBool); + return NativeMethods.MarshalStringArray(attributePtrs); + } + + public IEnumerable<string> ParseKeyList(string keyText) + { + IntPtr keyListPtrs = NativeMethods.org_crosswire_sword_SWModule_parseKeyList(_handle, keyText); + return NativeMethods.MarshalStringArray(keyListPtrs); + } + + public bool HasKeyChildren() + { + char hasChildren = NativeMethods.org_crosswire_sword_SWModule_hasKeyChildren(_handle); + return hasChildren == 1 ? true : false; + } + + /// <summary> + /// This method returns child nodes for a genbook, + /// but has special handling if called on a VerseKey module: + /// [0..7] [testament, book, chapter, verse, chapterMax, verseMax, bookName, osisRef] + /// </summary> + public IEnumerable<string> KeyChildren + { + get + { + IntPtr childrenPtr = NativeMethods.org_crosswire_sword_SWModule_getKeyChildren(_handle); + return NativeMethods.MarshalStringArray(childrenPtr); + } + } + + public string KeyParent + { + get + { + IntPtr keyPtr = NativeMethods.org_crosswire_sword_SWModule_getKeyChildren(_handle); + return Marshal.PtrToStringAnsi(keyPtr); + } + } + + public void Prevous() + { + NativeMethods.org_crosswire_sword_SWModule_previous(_handle); + } + + public void Next() + { + NativeMethods.org_crosswire_sword_SWModule_next(_handle); + } + + public void Begin() + { + NativeMethods.org_crosswire_sword_SWModule_begin(_handle); + } + + public string RenderHeader + { + get + { + IntPtr headerPtr = NativeMethods.org_crosswire_sword_SWModule_getRenderHeader(_handle); + return Marshal.PtrToStringAnsi(headerPtr); + } + } + + public string GetConfigEntry(string key) + { + IntPtr entryPtr = NativeMethods.org_crosswire_sword_SWModule_getConfigEntry(_handle, key); + return Marshal.PtrToStringAnsi(entryPtr); + } + + public void DeleteSearchFramework() + { + NativeMethods.org_crosswire_sword_SWModule_deleteSearchFramework(_handle); + } + + public bool HasSearchFramework() + { + return NativeMethods.org_crosswire_sword_SWModule_hasSearchFramework(_handle); + } + } +} + |