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 >
C/C++ Source or Header  |  1996-03-05  |  4KB  |  162 lines

  1.  
  2.  
  3. /* 
  4.  * C-side stub functions
  5.  * Incoming parameters appear on xdr_in stream, 
  6.  * Outgoing return value placed on xdr_out stream.
  7.  */
  8.  
  9. #include <rpc/rpc.h>
  10. #include <stdio.h>
  11. #include "rcde_types.h"
  12.  
  13. extern XDR  xdr_in, xdr_out;
  14.  
  15.  
  16. extern int sv_return_length, sv_return_type;
  17. char *proj_name = "Poly";
  18.  
  19. /* 
  20.  * Dispatching table of C function names.
  21.  * Culled from def-foreign-function-switch list.
  22.  * Names are mangled, with _stub appended.
  23.  */
  24.  
  25. void set_building_parameters_stub();
  26. void find_polygons_stub();
  27. void acquireModel_stub();
  28.  
  29. void (*c_function_table[])() = { 
  30.     set_building_parameters_stub,
  31.     find_polygons_stub,
  32.     acquireModel_stub
  33.     };
  34.  
  35. extern int set_building_parameters();
  36.  
  37. void
  38. set_building_parameters_stub()
  39.     {
  40.     unsigned int proj_id;
  41.     double angle_error;
  42.     double line_endpoint_window;
  43.     double search_angle;
  44.     double support_column;
  45.     double min_line_support;
  46.     double token_support;
  47.     double token_window;
  48.     int result;
  49.  
  50.     if (xdr_double(&xdr_in, &angle_error) &&
  51.         xdr_double(&xdr_in, &line_endpoint_window) &&
  52.         xdr_double(&xdr_in, &search_angle) &&
  53.         xdr_double(&xdr_in, &support_column) &&
  54.         xdr_double(&xdr_in, &min_line_support) &&
  55.         xdr_double(&xdr_in, &token_support) &&
  56.         xdr_double(&xdr_in, &token_window) )
  57.         {
  58.         result =  set_building_parameters(angle_error, line_endpoint_window, search_angle, support_column, min_line_support, token_support, token_window);
  59.         if (xdr_int(&xdr_out, &result))
  60.             return;    /* Return type always void */
  61.         else
  62.             {
  63.             sprintf(stderr, "Result XDR error in set_building_parameters.\n");
  64.             exit(1);
  65.             }
  66.         }
  67.     else
  68.         {
  69.         sprintf(stderr, "Main XDR error in set_building_parameters.\n");
  70.         exit(1);
  71.         }
  72.     }
  73.  
  74.  
  75.  
  76.  
  77. extern int find_polygons();
  78.  
  79. void
  80. find_polygons_stub()
  81.     {
  82.     unsigned int proj_id;
  83.     double sensitivity;
  84.     boolean constrain;
  85.     boolean manual;
  86.     boolean lines;
  87.     int x1;
  88.     int y1;
  89.     int x2;
  90.     int y2;
  91.     int k;
  92.     c_handle panechoice;
  93.     int result;
  94.  
  95.     if (xdr_double(&xdr_in, &sensitivity) &&
  96.         xdr_bool(&xdr_in, &constrain) &&
  97.         xdr_bool(&xdr_in, &manual) &&
  98.         xdr_bool(&xdr_in, &lines) &&
  99.         xdr_int(&xdr_in, &x1) &&
  100.         xdr_int(&xdr_in, &y1) &&
  101.         xdr_int(&xdr_in, &x2) &&
  102.         xdr_int(&xdr_in, &y2) &&
  103.         xdr_int(&xdr_in, &k) &&
  104.         xdr_int(&xdr_in, &panechoice) )
  105.         {
  106.         result =  find_polygons(sensitivity, constrain, manual, lines, x1, y1, x2, y2, k, panechoice);
  107.         if (xdr_int(&xdr_out, &result))
  108.             return;    /* Return type always void */
  109.         else
  110.             {
  111.             sprintf(stderr, "Result XDR error in find_polygons.\n");
  112.             exit(1);
  113.             }
  114.         }
  115.     else
  116.         {
  117.         sprintf(stderr, "Main XDR error in find_polygons.\n");
  118.         exit(1);
  119.         }
  120.     }
  121.  
  122.  
  123.  
  124.  
  125. extern int acquireModel();
  126.  
  127. void
  128. acquireModel_stub()
  129.     {
  130.     unsigned int proj_id;
  131.     double sensitivity;
  132.     boolean constrain;
  133.     double regionsize;
  134.     double overlap;
  135.     int result;
  136.  
  137.     if (xdr_double(&xdr_in, &sensitivity) &&
  138.         xdr_bool(&xdr_in, &constrain) &&
  139.         xdr_double(&xdr_in, ®ionsize) &&
  140.         xdr_double(&xdr_in, &overlap) )
  141.         {
  142.         result =  acquireModel(sensitivity, constrain, regionsize, overlap);
  143.         if (xdr_int(&xdr_out, &result))
  144.             return;    /* Return type always void */
  145.         else
  146.             {
  147.             sprintf(stderr, "Result XDR error in acquireModel.\n");
  148.             exit(1);
  149.             }
  150.         }
  151.     else
  152.         {
  153.         sprintf(stderr, "Main XDR error in acquireModel.\n");
  154.         exit(1);
  155.         }
  156.     }
  157.  
  158.  
  159.  
  160.  
  161.  
  162.