This is ptlList.c in view mode; [Download] [Up]
#include "ooglutil.h"
#include "geom.h"
#include "listP.h"
#include "pointlistP.h"
void *list_PointList_get(int sel, Geom *geom, va_list args);
void *list_PointList_fillin(int sel, Geom *geom, va_list args);
void *list_PointList_set(int sel, Geom *geom, va_list args);
void *list_PointList_length(int sel, Geom *geom, va_list args);
#define MAX_METHODS 4
static SpecFunc methods[] = {
"PointList_get", list_PointList_get,
"PointList_fillin", list_PointList_fillin,
"PointList_set", list_PointList_set,
"PointList_length", list_PointList_length
};
static char msg[] = "ptlList.c";
ptlList_init() {
pointlist_initspec(methods, MAX_METHODS, GeomClassLookup("list"));
}
void *list_PointList_get(int sel, Geom *geom, va_list args) {
List *l = (List *)geom;
HPoint3 *plist;
float **f;
plist = OOGLNewNE(HPoint3,
(int)GeomCall(GeomMethodSel("PointList_length"), geom),
msg);
f = va_arg(args, float **);
return(GeomCall(GeomMethodSel("PointList_fillin"), geom, f, 0, plist));
}
void *list_PointList_fillin(int sel, Geom *geom, va_list args) {
float **t;
int n_points1;
HPoint3 *plist;
List *l = (List *)geom;
t = va_arg(args, float **);
va_arg(args, int);
plist = va_arg(args, HPoint3 *);
n_points1 = (int)GeomCall(GeomMethodSel("PointList_length"), l->car);
GeomCall(GeomMethodSel("PointList_fillin"), l->car, t, 0, plist);
GeomCall(GeomMethodSel("PointList_fillin"), (Geom *)l->cdr, t, 0,
&plist[n_points1]);
return plist;
}
void *list_PointList_set(int sel, Geom *geom, va_list args) {
HPoint3 *pt1;
int n_points1, coordsys;
List *l = (List *)geom;
coordsys = va_arg(args, int);
pt1 = va_arg(args, HPoint3 *);
n_points1 = (int)GeomCall(GeomMethodSel("PointList_length"), l->car);
GeomCall(GeomMethodSel("PointList_set"), l->car, coordsys, pt1);
GeomCall(GeomMethodSel("PointList_set"), (Geom *)l->cdr,
coordsys, &pt1[n_points1]);
return geom;
}
void *list_PointList_length(int sel, Geom *geom, va_list args) {
List *l = (List *)geom;
return (void *)
((int)GeomCall(GeomMethodSel("PointList_length"), l->car) +
(int)GeomCall(GeomMethodSel("PointList_length"), (Geom *)l->cdr));
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.