#include "api1/Cipres.idl" module CipresIDL_api1 { interface TreeDB : Scriptable { typedef sequence stringArray; //used for list of taxon names string findTaxa(in stringArray taxa); //returns taxa ID; "" if taxa matching array not found string setTaxa(in stringArray taxa); //establishes block of taxa and returns ID long getNumberOfTrees(in string taxaID); void putTree(in string taxaID, in Tree t); //could alternatively return treeID as string, or tree index as number (long) Tree getTree(in string taxaID, in long whichTree); //iterator to retrieve a particular tree string getDatabaseName(); }; interface TreeDBFactory { TreeDB build(in string clientID); //establishes a session for client. Give each client its own tree object }; };