typedef struct { 
  union { 
    void *ptr; 
    int data[2]; 
    double dbl;
  } user_context; /* user-context, initialy zero, 64 bits (aligned) */
  int context_version; /* == 0, struct stops here */
  union { 
    struct { int call_num; /* call on line */
      int line_number; /* source line number */
      const char *file_name; /* may be null string    but not null*/
    } call_inst; // if (context_version & SVC_CONTEXT_LINE)1 
  } cvu; 
} svcContext;

typedef void *handle;

/* template for external context calls */
typedef void (*svcExtFunc)(handle,svcContext *,...); 


/* template for locater routines */ 
typedef svcExtFunc (*svcLocater)( void *locater_context,
				  char *mod_spec,
				  char *inst_name,
				  char *rtn_name, 
				  svcContext *svcContext,
                                  ... /* argument types */);

 
int svcRegisterLocator(svcLocater,
		       void *locator_context,
		       char *module_spec, 
		       int capabilities);


     


