This is pickfunc.h in view mode; [Download] [Up]
#define PICKFUNC(name, maxfaceverts, maxpathlen, body) \ LObject *name(Lake *lake, LList *args) \ { \ char *coordsys = NULL, *id = NULL; \ HPoint3 point; int pn = 4; \ HPoint3 vertex; int vn = 4; \ HPoint3 edge[2]; int en = 8; \ HPoint3 face[maxfaceverts]; int fn = maxfaceverts*4; \ int ppath[maxpathlen]; int ppn = maxpathlen; \ int vi; \ int ei[2]; int ein = 2; \ int fi; \ \ LDECLARE(("pick", LBEGIN, \ LSTRING, &coordsys, \ LSTRING, &id, \ LHOLD, LARRAY, LFLOAT, &point, &pn, \ LHOLD, LARRAY, LFLOAT, &vertex, &vn, \ LHOLD, LARRAY, LFLOAT, edge, &en, \ LHOLD, LARRAY, LFLOAT, face, &fn, \ LHOLD, LARRAY, LINT, ppath, &ppn, \ LINT, &vi, \ LHOLD, LARRAY, LINT, ei, &ein, \ LINT, &fi, \ LEND)); \ \ if (1) { body }; \ return Lt; \ } /* Note: the "if (1)" business above is to prevent a warning about the following statement ("return Lt") not being reached if the body itself returns. */ /* Note: Don't use DEFPICKFUNC any more. Use the newer PICKFUNC * instead. DEFPICKFUNC is provided for backward compatibility. */ #define DEFPICKFUNC(helpstr, \ coordsys, \ id, \ point, pn, \ vertex, vn, \ edge, en, \ face, fn, maxfaceverts, \ ppath, ppn, maxpathlen, \ vi, \ ei, ein, \ fi, \ body) \ LDEFINE(pick, LVOID, helpstr) \ { \ char *coordsys = NULL, *id = NULL; \ HPoint3 point; int pn = 4; \ HPoint3 vertex; int vn = 4; \ HPoint3 edge[2]; int en = 8; \ HPoint3 face[maxfaceverts]; int fn = maxfaceverts*4; \ int ppath[maxpathlen]; int ppn = maxpathlen; \ int vi; \ int ei[2]; int ein = 2; \ int fi; \ \ LDECLARE(("pick", LBEGIN, \ LSTRING, &coordsys, \ LSTRING, &id, \ LHOLD, LARRAY, LFLOAT, &point, &pn, \ LHOLD, LARRAY, LFLOAT, &vertex, &vn, \ LHOLD, LARRAY, LFLOAT, edge, &en, \ LHOLD, LARRAY, LFLOAT, face, &fn, \ LHOLD, LARRAY, LINT, ppath, &ppn, \ LINT, &vi, \ LHOLD, LARRAY, LINT, ei, &ein, \ LINT, &fi, \ LEND)); \ \ if (1) { body }; \ return Lt; \ }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.