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

#ifndef SWORDORB_IDL
#define SWORDORB_IDL

module swordorb {

typedef sequence<string> StringList;

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

typedef sequence<ModInfo> ModInfoList;

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

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

	enum SearchType {
		REGEX,
		PHRASE,
		MULTIWORD
	};


interface SWModule {
	void   terminateSearch();
	SearchHitList search(in string istr, in SearchType searchType, in long flags, in string scope);
	char   error();
	long  getEntrySize();
	StringList getEntryAttribute(in string level1, in string level2, in string level3);
	void   setKeyText(in string key);
	string getKeyText();
	StringList getKeyChildren();
	string getName();
	string getDescription();
	string getCategory();
	void   previous();
	void   next();
	void   begin();
	string getStripText();
	string getRenderText();
	string getConfigEntry(in string key);
};


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

};

};

#endif
