home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
vis-ftp.cs.umass.edu
/
vis-ftp.cs.umass.edu.tar
/
vis-ftp.cs.umass.edu
/
pub
/
Software
/
ASCENDER
/
ascendMar8.tar
/
UMass
/
BuildingFinder
/
Staging
/
c-stubs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-03-05
|
4KB
|
162 lines
/*
* C-side stub functions
* Incoming parameters appear on xdr_in stream,
* Outgoing return value placed on xdr_out stream.
*/
#include <rpc/rpc.h>
#include <stdio.h>
#include "rcde_types.h"
extern XDR xdr_in, xdr_out;
extern int sv_return_length, sv_return_type;
char *proj_name = "Poly";
/*
* Dispatching table of C function names.
* Culled from def-foreign-function-switch list.
* Names are mangled, with _stub appended.
*/
void set_building_parameters_stub();
void find_polygons_stub();
void acquireModel_stub();
void (*c_function_table[])() = {
set_building_parameters_stub,
find_polygons_stub,
acquireModel_stub
};
extern int set_building_parameters();
void
set_building_parameters_stub()
{
unsigned int proj_id;
double angle_error;
double line_endpoint_window;
double search_angle;
double support_column;
double min_line_support;
double token_support;
double token_window;
int result;
if (xdr_double(&xdr_in, &angle_error) &&
xdr_double(&xdr_in, &line_endpoint_window) &&
xdr_double(&xdr_in, &search_angle) &&
xdr_double(&xdr_in, &support_column) &&
xdr_double(&xdr_in, &min_line_support) &&
xdr_double(&xdr_in, &token_support) &&
xdr_double(&xdr_in, &token_window) )
{
result = set_building_parameters(angle_error, line_endpoint_window, search_angle, support_column, min_line_support, token_support, token_window);
if (xdr_int(&xdr_out, &result))
return; /* Return type always void */
else
{
sprintf(stderr, "Result XDR error in set_building_parameters.\n");
exit(1);
}
}
else
{
sprintf(stderr, "Main XDR error in set_building_parameters.\n");
exit(1);
}
}
extern int find_polygons();
void
find_polygons_stub()
{
unsigned int proj_id;
double sensitivity;
boolean constrain;
boolean manual;
boolean lines;
int x1;
int y1;
int x2;
int y2;
int k;
c_handle panechoice;
int result;
if (xdr_double(&xdr_in, &sensitivity) &&
xdr_bool(&xdr_in, &constrain) &&
xdr_bool(&xdr_in, &manual) &&
xdr_bool(&xdr_in, &lines) &&
xdr_int(&xdr_in, &x1) &&
xdr_int(&xdr_in, &y1) &&
xdr_int(&xdr_in, &x2) &&
xdr_int(&xdr_in, &y2) &&
xdr_int(&xdr_in, &k) &&
xdr_int(&xdr_in, &panechoice) )
{
result = find_polygons(sensitivity, constrain, manual, lines, x1, y1, x2, y2, k, panechoice);
if (xdr_int(&xdr_out, &result))
return; /* Return type always void */
else
{
sprintf(stderr, "Result XDR error in find_polygons.\n");
exit(1);
}
}
else
{
sprintf(stderr, "Main XDR error in find_polygons.\n");
exit(1);
}
}
extern int acquireModel();
void
acquireModel_stub()
{
unsigned int proj_id;
double sensitivity;
boolean constrain;
double regionsize;
double overlap;
int result;
if (xdr_double(&xdr_in, &sensitivity) &&
xdr_bool(&xdr_in, &constrain) &&
xdr_double(&xdr_in, ®ionsize) &&
xdr_double(&xdr_in, &overlap) )
{
result = acquireModel(sensitivity, constrain, regionsize, overlap);
if (xdr_int(&xdr_out, &result))
return; /* Return type always void */
else
{
sprintf(stderr, "Result XDR error in acquireModel.\n");
exit(1);
}
}
else
{
sprintf(stderr, "Main XDR error in acquireModel.\n");
exit(1);
}
}