#ifndef __INTERPRETER_H__
#define __INTERPRETER_H__

/* return 0 for success, 1 for failure */
int attach(char *url);
int detach();

/* gets a vector of node numbers.  Returns count*/
int getNodeList(int *list);

/* gets a list of contexts.  Returns count */
int getContextList(int node, int *list);

/* gets a list of threads.  Returns count */
int getThreadList(int context, int node, int *list);

/* gets a list of functions.  Returns count */
int getFunctionList(int context, int node, 
  struct functionList *funcList);

/* gets a database entry for a function */
struct functionDatum *getFunctionData(int functionID, int thread, 
  int context, int node);

/* gets the current call stack data structure.  Returns count */
int getCallStack(int thread, int context, int node, 
  struct callStack *rtrnCallStack);

/* get the data field from a function datum */

char *getFunctionName(int functionID, int thread, int context, int node);
char *getFunctionType(int functionID, int thread, int context, int node);
char *getFunctionGroupName(int functionID, int thread, int context, int node);
int getFunctionFunctionId(int functionID, int thread, int context, int node);
int getFunctionNumCalls(int functionID, int thread, int context, int node);
int getFunctionNumSubrs(int functionID, int thread, int context, int node);
float getFunctionExclTime(int functionID, int thread, int context, int node);
float getFunctionInclTime(int functionID, int thread, int context, int node);
float getFunctionSumExclSqr(int functionID, int thread, int context, int node);

#endif

