/******************************************************************************
 *	sword.idl	- This file contains a simple idl for accessing sword
 */

#ifndef SWORDORB_IDL
#define SWORDORB_IDL

module swordorb {

typedef sequence<string> StringList;

struct ModInfo {
	string name;
	string description;
	string category;
	string language;
};

typedef sequence<ModInfo> ModInfoList;

struct SearchHit {
	string modName;
	string key;
	long   score;
};

typedef sequence<SearchHit> SearchHitList;
//-----------------------------------------------------------------
// SWModule methods

	enum SearchType {
		REGEX,
		PHRASE,
		MULTIWORD,
		ENTRYATTR,
		LUCENE
	};


interface SWModule {
	void          terminateSearch();
	SearchHitList search(in string istr, in SearchType searchType, in long flags, in string scope);
	char          error();
	long          getEntrySize();
	StringList    getEntryAttribute(in string level1, in string level2, in string level3, in boolean filtered);
	StringList    parseKeyList(in string keyText);
	void          setKeyText(in string key);
	string        getKeyText();
	boolean       hasKeyChildren();
	StringList    getKeyChildren();
	string        getKeyParent();
	string        getName();
	string        getDescription();
	string        getCategory();
	void          previous();
	void          next();
	void          begin();
	string        getStripText();
	string        getRenderText();
	string        getRawEntry();
	void          setRawEntry(in string entryBuffer);
	string        getConfigEntry(in string key);
	void          deleteSearchFramework();
	boolean       hasSearchFramework();
};


//-----------------------------------------------------------------
// SWMgr methods
//
interface SWMgr {
	ModInfoList getModInfoList();
	SWModule    getModuleByName(in string name);
	string      getPrefixPath();
	string      getConfigPath();
	void        setGlobalOption(in string option, in string value);
	string      getGlobalOption(in string option);
	string      getGlobalOptionTip(in string option);
	string      filterText(in string filterName, in string text);
	StringList  getGlobalOptions();
	StringList  getGlobalOptionValues(in string option);
	void        setCipherKey(in string modName, in string key);
	void        terminate();
	boolean     testConnection();
	void        setJavascript(in boolean val);
	StringList  getAvailableLocales();
	void        setDefaultLocale(in string name);
};

};

#endif
