home *** CD-ROM | disk | FTP | other *** search
- diff -c -r sipp-2.0/Makefile sipp-2.0.1/Makefile
- *** sipp-2.0/Makefile Thu Dec 20 15:54:47 1990
- --- sipp-2.0.1/Makefile Tue Jan 15 07:12:04 1991
- ***************
- *** 40,45 ****
- --- 40,48 ----
- LEX = lex
-
-
- + SHELL = /bin/sh
- + RM = rm -f
- +
- # LIBDIR is where libsipp.a will be placed when you make install.
- # INCLUDEDIR is where the include files will be placed when you make install.
- # MANDIR is where the manuals will be placed when you make install.
- diff -c -r sipp-2.0/README sipp-2.0.1/README
- *** sipp-2.0/README Thu Dec 20 15:00:18 1990
- --- sipp-2.0.1/README Mon Apr 22 19:18:33 1991
- ***************
- *** 1,5 ****
- *******************************************************************
- ! sipp 2.0 -- 3d rendering package
-
- by Jonas Yngvesson jonas-y@isy.liu.se
- Inge Wallin ingwa@isy.liu.se
- --- 1,5 ----
- *******************************************************************
- ! sipp 2.0.1 -- 3d rendering package
-
- by Jonas Yngvesson jonas-y@isy.liu.se
- Inge Wallin ingwa@isy.liu.se
- ***************
- *** 8,21 ****
- Sweden
- *******************************************************************
-
- ! This is the beta-test release of version 2.0 of SIPP, the SImple
- ! Polygon Processor. SIPP is a library for creating 3-dimensional
- ! scenes and rendering them using a scan-line z-buffer algorithm. A
- ! scene is built up of objects which can be transformed with rotation,
- ! translation and scaling. The objects form hierarchies where each
- ! object can have arbitrarily many subobjects and subsurfaces. A
- ! surface is a number of connected polygons which are rendered with
- ! Phong interpolation of the surface normals.
-
- The library has an internal database for the objects that is to be
- rendered. Objects can be installed in, and removed from, this
- --- 8,21 ----
- Sweden
- *******************************************************************
-
- ! This is SIPP, the SImple Polygon Processor, version 2.0.1. SIPP is a
- ! library for creating 3-dimensional scenes and rendering them using a
- ! scan-line z-buffer algorithm. A scene is built up of objects which
- ! can be transformed with rotation, translation and scaling. The
- ! objects form hierarchies where each object can have arbitrarily many
- ! subobjects and subsurfaces. A surface is a number of connected
- ! polygons which are rendered with Phong interpolation of the surface
- ! normals.
-
- The library has an internal database for the objects that is to be
- rendered. Objects can be installed in, and removed from, this
- ***************
- *** 31,42 ****
- exist.
-
- The program has some bugs & limitations. See the BUGS entry in the
- ! manuals for more information.
-
- To install the library, edit the Makefile and type 'make install'. If
- ! Your system does not have the drand48() random number generator, change
- ! the macro RANDOM() in sipp.h to use the random number generator available
- ! on your system.
-
- If you only want to make the library but not install it, just type
- 'make library'.
- --- 31,43 ----
- exist.
-
- The program has some bugs & limitations. See the BUGS entry in the
- ! manuals for more information. All bugs in version 2.0 which were
- ! reported to us have been fixed though.
-
- To install the library, edit the Makefile and type 'make install'. If
- ! Your system does not have the drand48() random number generator,
- ! change the macro RANDOM() in sipp.h to use the random number
- ! generator available on your system.
-
- If you only want to make the library but not install it, just type
- 'make library'.
- ***************
- *** 54,59 ****
- then compile a library of object functions and let other people share
- the benefits.
-
- ! Linkoping 19 December 1990
-
- enjoy! /Jonas & Inge
- --- 55,60 ----
- then compile a library of object functions and let other people share
- the benefits.
-
- ! Linkoping 22 April 1991
-
- enjoy! /Jonas & Inge
- Common subdirectories: sipp-2.0/demo and sipp-2.0.1/demo
- Common subdirectories: sipp-2.0/doc and sipp-2.0.1/doc
- Common subdirectories: sipp-2.0/libsipp and sipp-2.0.1/libsipp
- diff -c -r sipp-2.0/demo/Makefile sipp-2.0.1/demo/Makefile
- *** sipp-2.0/demo/Makefile Thu Dec 20 15:47:17 1990
- --- sipp-2.0.1/demo/Makefile Tue Jan 15 04:38:35 1991
- ***************
- *** 6,11 ****
- --- 6,13 ----
- CC = cc
- CFLAGS = -O -I../libsipp
-
- + SHELL = /bin/sh
- + RM = rm -f
-
- SRCS = torustest.c cylindertest.c ellipsoid.c blocktest.c chain.c \
- teapot.c structure.c planettest.c isy90.c
- diff -c -r sipp-2.0/demo/blocktest.c sipp-2.0.1/demo/blocktest.c
- *** sipp-2.0/demo/blocktest.c Wed Dec 12 14:20:48 1990
- --- sipp-2.0.1/demo/blocktest.c Tue Jan 15 04:36:15 1991
- ***************
- *** 43,47 ****
- fp = fopen("block.ppm", "w");
- render_image(side, side, fp);
- printf("Done.\n");
- - }
-
- --- 43,48 ----
- fp = fopen("block.ppm", "w");
- render_image(side, side, fp);
- printf("Done.\n");
-
- + exit(0);
- + }
- diff -c -r sipp-2.0/demo/chain.c sipp-2.0.1/demo/chain.c
- *** sipp-2.0/demo/chain.c Wed Dec 12 14:20:47 1990
- --- sipp-2.0.1/demo/chain.c Tue Jan 15 04:36:33 1991
- ***************
- *** 77,80 ****
- --- 77,82 ----
- fp = fopen("chain.ppm", "w");
- render_image(side, side, fp);
- printf("Done.\n");
- +
- + exit(0);
- }
- diff -c -r sipp-2.0/demo/cylindertest.c sipp-2.0.1/demo/cylindertest.c
- *** sipp-2.0/demo/cylindertest.c Wed Dec 12 14:20:51 1990
- --- sipp-2.0.1/demo/cylindertest.c Tue Jan 15 04:36:40 1991
- ***************
- *** 46,49 ****
- --- 46,51 ----
- fp = fopen("cylinder.ppm", "w");
- render_image(side, side, fp);
- printf("Done.\n");
- +
- + exit(0);
- }
- diff -c -r sipp-2.0/demo/ellipsoid.c sipp-2.0.1/demo/ellipsoid.c
- *** sipp-2.0/demo/ellipsoid.c Wed Dec 12 14:20:49 1990
- --- sipp-2.0.1/demo/ellipsoid.c Tue Jan 15 04:36:57 1991
- ***************
- *** 47,50 ****
- --- 47,52 ----
- fp = fopen("ellipsoid.ppm", "w");
- render_image(side, side, fp);
- printf("Done.\n");
- +
- + exit(0);
- }
- diff -c -r sipp-2.0/demo/isy90.c sipp-2.0.1/demo/isy90.c
- *** sipp-2.0/demo/isy90.c Wed Dec 19 11:43:12 1990
- --- sipp-2.0.1/demo/isy90.c Tue Jan 15 04:37:07 1991
- ***************
- *** 116,119 ****
- --- 116,121 ----
- view_focal(0.2);
- image = fopen("isy90.ppm", "w");
- render_image(siz, siz, image);
- +
- + exit(0);
- }
- diff -c -r sipp-2.0/demo/planettest.c sipp-2.0.1/demo/planettest.c
- *** sipp-2.0/demo/planettest.c Wed Dec 12 14:19:49 1990
- --- sipp-2.0.1/demo/planettest.c Tue Jan 15 04:37:19 1991
- ***************
- *** 41,45 ****
-
- outfile = fopen("planet.ppm", "w");
- render_image(size, size, outfile);
- - }
-
- --- 41,46 ----
-
- outfile = fopen("planet.ppm", "w");
- render_image(size, size, outfile);
-
- + exit(0);
- + }
- diff -c -r sipp-2.0/demo/structure.c sipp-2.0.1/demo/structure.c
- *** sipp-2.0/demo/structure.c Wed Dec 12 14:20:44 1990
- --- sipp-2.0.1/demo/structure.c Tue Jan 15 04:37:28 1991
- ***************
- *** 103,107 ****
- fp = fopen("structure.ppm", "w");
- render_image(size, size, fp);
- printf("Done.\n");
- - }
-
- --- 103,108 ----
- fp = fopen("structure.ppm", "w");
- render_image(size, size, fp);
- printf("Done.\n");
-
- + exit(0);
- + }
- diff -c -r sipp-2.0/demo/teapot.c sipp-2.0.1/demo/teapot.c
- *** sipp-2.0/demo/teapot.c Tue Dec 18 17:02:54 1990
- --- sipp-2.0.1/demo/teapot.c Tue Jan 15 04:37:36 1991
- ***************
- *** 67,70 ****
- --- 67,72 ----
- view_focal(0.25);
- image = fopen("teapot.ppm", "w");
- render_image(siz, siz, image);
- +
- + exit(0);
- }
- diff -c -r sipp-2.0/demo/torustest.c sipp-2.0.1/demo/torustest.c
- *** sipp-2.0/demo/torustest.c Wed Dec 12 14:20:54 1990
- --- sipp-2.0.1/demo/torustest.c Tue Jan 15 04:37:48 1991
- ***************
- *** 48,51 ****
- --- 48,53 ----
- fp = fopen("torus.ppm", "w");
- render_image(side, side, fp);
- printf("Done.\n");
- +
- + exit(0);
- }
- diff -c -r sipp-2.0/libsipp/Makefile sipp-2.0.1/libsipp/Makefile
- *** sipp-2.0/libsipp/Makefile Thu Dec 20 15:52:10 1990
- --- sipp-2.0.1/libsipp/Makefile Tue Jan 15 04:40:56 1991
- ***************
- *** 6,11 ****
- --- 6,13 ----
- CC = cc
- CFLAGS = -pipe -I. -DHAVE_NO_ALLOCA
-
- + SHELL = /bin/sh
- + RM = rm -f
-
- IHDRS = sipptypes.h geometric.h noise.h bezier.h
- EHDRS = sipp.h shaders.h primitives.h
- diff -c -r sipp-2.0/libsipp/TODO sipp-2.0.1/libsipp/TODO
- *** sipp-2.0/libsipp/TODO Wed Dec 12 14:33:53 1990
- --- sipp-2.0.1/libsipp/TODO Fri Apr 12 22:44:04 1991
- ***************
- *** 1,17 ****
- -
- - Minor:
- -
- Make antialiasing optional with some kind of flag.
-
- ! [Have the program whistle while it works with a verbose flag.]
-
- Make it possible to render into a pixmap in core.
-
- ! Major:
-
- [Arbitrary number of "texture coordinates" (numbers to be
- interpolated over polygon surfaces).]
-
- ! [More sofisticated antialiasing (A-buffer??)]
-
- ! [Line image (without hidden lines) for preview.]
- --- 1,24 ----
- Make antialiasing optional with some kind of flag.
-
- ! More sofisticated antialiasing.
-
- Make it possible to render into a pixmap in core.
-
- ! [New and better shading model (CG&A Nov 90)]
-
- + [Shaped lightsources, e.g. point, spotlight]
- +
- + [Colored lightsources]
- +
- + [Several rendering modes, e.g. wire frame, hidden line, flat shading,
- + Gouraud shading]
- +
- [Arbitrary number of "texture coordinates" (numbers to be
- interpolated over polygon surfaces).]
-
- ! [Have the program whistle while it works with a verbose flag.]
-
- ! [Shadows, see eg article in siggraph 87 about depth maps]
- !
- ! [Curved surface rendering (not siPp any longer)]
- !
- diff -c -r sipp-2.0/libsipp/bumpy.c sipp-2.0.1/libsipp/bumpy.c
- *** sipp-2.0/libsipp/bumpy.c Fri Apr 12 22:36:14 1991
- --- sipp-2.0.1/libsipp/bumpy.c Wed Apr 3 20:05:27 1991
- ***************
- *** 1,5 ****
- /*
- ! * erode shader - simulates an eroded surface using noise
- */
-
- #include <math.h>
- --- 1,5 ----
- /*
- ! * bumpy shader - simulates an bumpy surfaces using noise and Dnoise
- */
-
- #include <math.h>
- ***************
- *** 36,44 ****
- tmp.z = w * bd->scale;
-
- if ((bd->bumpflag && bd->holeflag)
- ! || ((no = noise(tmp)) < 0.0 && bd->bumpflag)
- || (no > 0.0 && bd->holeflag)) {
- ! tmp = Dnoise(tmp);
- len = sqrt(nx * nx + ny * ny + nz * nz);
- nx = nx / len + tmp.x;
- ny = ny / len + tmp.y;
- --- 36,44 ----
- tmp.z = w * bd->scale;
-
- if ((bd->bumpflag && bd->holeflag)
- ! || ((no = noise(&tmp)) < 0.0 && bd->bumpflag)
- || (no > 0.0 && bd->holeflag)) {
- ! tmp = Dnoise(&tmp);
- len = sqrt(nx * nx + ny * ny + nz * nz);
- nx = nx / len + tmp.x;
- ny = ny / len + tmp.y;
- diff -c -r sipp-2.0/libsipp/geometric.c sipp-2.0.1/libsipp/geometric.c
- *** sipp-2.0/libsipp/geometric.c Thu Dec 20 15:10:49 1990
- --- sipp-2.0.1/libsipp/geometric.c Mon Apr 22 18:51:11 1991
- ***************
- *** 58,64 ****
- /*
- * Set MAT to the transformation matrix that represents the
- * concatenation between the previous transformation in MAT
- ! * and a translation along the Vector VEC.
- *
- * [a b c 0] [ 1 0 0 0] [ a b c 0]
- * [d e f 0] [ 0 1 0 0] [ d e f 0]
- --- 58,64 ----
- /*
- * Set MAT to the transformation matrix that represents the
- * concatenation between the previous transformation in MAT
- ! * and a translation along the vector described by DX, DY and DZ.
- *
- * [a b c 0] [ 1 0 0 0] [ a b c 0]
- * [d e f 0] [ 0 1 0 0] [ d e f 0]
- ***************
- *** 202,209 ****
- mat_rotate_z(mat, -ang2);
- mat_rotate_y(mat, -ang3);
- mat_rotate_z(mat, ang);
- - mat_rotate_z(mat, ang2);
- mat_rotate_y(mat, ang3);
- mat_translate(mat, point->x, point->y, point->z);
- }
-
- --- 202,209 ----
- mat_rotate_z(mat, -ang2);
- mat_rotate_y(mat, -ang3);
- mat_rotate_z(mat, ang);
- mat_rotate_y(mat, ang3);
- + mat_rotate_z(mat, ang2);
- mat_translate(mat, point->x, point->y, point->z);
- }
-
- ***************
- *** 212,218 ****
- /*
- * Set MAT to the transformation matrix that represents the
- * concatenation between the previous transformation in MAT
- ! * and a scaling with the scaling factors in the Vector scale.
- *
- * [a b c 0] [Sx 0 0 0] [a*Sx b*Sy c*Sz 0]
- * [d e f 0] [ 0 Sy 0 0] [d*Sx e*Sy f*Sz 0]
- --- 212,218 ----
- /*
- * Set MAT to the transformation matrix that represents the
- * concatenation between the previous transformation in MAT
- ! * and a scaling with the scaling factors XSCALE, YSCALE and ZSCALE
- *
- * [a b c 0] [Sx 0 0 0] [a*Sx b*Sy c*Sz 0]
- * [d e f 0] [ 0 Sy 0 0] [d*Sx e*Sy f*Sz 0]
- ***************
- *** 242,248 ****
- * Set MAT to the transformation matrix that represents the
- * concatenation between the previous transformation in MAT
- * and a mirroring in the plane defined by the point POINT
- ! * and the normal vector NORMAL.
- */
-
- void
- --- 242,248 ----
- * Set MAT to the transformation matrix that represents the
- * concatenation between the previous transformation in MAT
- * and a mirroring in the plane defined by the point POINT
- ! * and the normal vector NORM.
- */
-
- void
- Only in sipp-2.0.1/libsipp: patchlevel.h
- diff -c -r sipp-2.0/libsipp/sipp.c sipp-2.0.1/libsipp/sipp.c
- *** sipp-2.0/libsipp/sipp.c Thu Dec 20 15:20:25 1990
- --- sipp-2.0.1/libsipp/sipp.c Mon Apr 22 19:17:24 1991
- ***************
- *** 3,10 ****
- *
- * A general 3d graphic package
- *
- ! * Copyright Jonas Yngvesson (jonas-y@isy.liu.se) 1988/89/90
- ! * Inge Wallin (ingwa@isy.liu.se) 1990
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- --- 3,10 ----
- *
- * A general 3d graphic package
- *
- ! * Copyright Jonas Yngvesson (jonas-y@isy.liu.se) 1988/89/90/91
- ! * Inge Wallin (ingwa@isy.liu.se) 1990/91
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- ***************
- *** 19,24 ****
- --- 19,30 ----
- *
- * Revision history:
- *
- + * 910412 Ver. 2.0.1. Some minor bugfixes. Division by zero in
- + * create_edges() if an edge was horizontal in both x and y.
- + * Free-list became corrupted since the y_bucket was freed
- + * twice. Wrong parameters to (D)noise() in bumpy.c. Two lines
- + * interchanged in mat_rotate(). A few other minor changes.
- + *
- * 901219 At last! 2.0 is out of the bag. And right in time for X-mas :-)
- * *Major* rewrite. A new level in the object hierarchy introduced.
- * An object is now a collection of surfaces and other objects
- ***************
- *** 83,89 ****
- #include <geometric.h>
-
-
- ! #define VERSION "2.0"
-
- #define ZCLIPF 100.0 /* Magic number used when defining hither & yon */
-
- --- 89,95 ----
- #include <geometric.h>
-
-
- ! #define VERSION "2.0.1"
-
- #define ZCLIPF 100.0 /* Magic number used when defining hither & yon */
-
- ***************
- *** 92,110 ****
- /*
- * Global variables.
- */
- ! static Vertex *vertex_tree; /* Vertex tree for current object. */
- ! static Vertex_ref *vertex_stack; /* Vertex stack for current polygon. */
- ! static Vertex_ref *vstack_bottom; /* Last entry in vertex stack. */
- ! static Polygon *poly_stack; /* Polygon stack for current object. */
- ! static Inst_object *object_db; /* Object database. */
- ! static Lightsource *lightsrc_stack; /* Lightsource list. */
- ! static Bucket *y_bucket; /* Y-bucket for edge lists. */
- ! static double dist_limit; /* Minimal distance between two */
- ! /* vertices without them being */
- ! /* considered to be the same vertex. */
- ! static int first_vertex; /* Used when determining if we are */
- ! /* installing the first vertex in an */
- ! /* object. *Not* a boolean! */
-
- /*
- * Stack of transformation matrices used
- --- 98,116 ----
- /*
- * Global variables.
- */
- ! static Vertex *vertex_tree; /* Vertex tree for current object. */
- ! static Vertex_ref *vertex_stack; /* Vertex stack for current polygon. */
- ! static Vertex_ref *vstack_bottom; /* Last entry in vertex stack. */
- ! static Polygon *poly_stack; /* Polygon stack for current object. */
- ! static Inst_object *object_db; /* Object database. */
- ! static Lightsource *lightsrc_stack; /* Lightsource list. */
- ! static Edge **y_bucket; /* Y-bucket for edge lists. */
- ! static double dist_limit; /* Minimal distance between two */
- ! /* vertices without them being */
- ! /* considered to be the same vertex. */
- ! static int first_vertex; /* Used when determining if we are */
- ! /* installing the first vertex in an */
- ! /* object. *Not* a boolean! */
-
- /*
- * Stack of transformation matrices used
- ***************
- *** 1297,1303 ****
- edge->wstep = wstep;
- }
- } else {
- ! zstep = (z2 - z1) / fabs(x2 - x1);
- edge = (Edge *)smalloc(sizeof(Edge));
- edge->y = y2;
- edge->y_stop = y1;
- --- 1303,1313 ----
- edge->wstep = wstep;
- }
- } else {
- ! if (x2 != x1) {
- ! zstep = (z2 - z1) / fabs(x2 - x1);
- ! } else {
- ! zstep = z2 - z1;
- ! }
- edge = (Edge *)smalloc(sizeof(Edge));
- edge->y = y2;
- edge->y_stop = y1;
- ***************
- *** 1315,1328 ****
- }
- edge->polygon = polygon;
- edge->surface = surface;
- ! edge->next = NULL;
- ! if (y_bucket[edge->y].last == NULL) {
- ! y_bucket[edge->y].first = edge;
- ! y_bucket[edge->y].last = edge;
- ! } else {
- ! y_bucket[edge->y].last->next = edge;
- ! y_bucket[edge->y].last = edge;
- ! }
- }
- } while (view_ref != last);
- }
- --- 1325,1332 ----
- }
- edge->polygon = polygon;
- edge->surface = surface;
- ! edge->next = y_bucket[edge->y];
- ! y_bucket[edge->y] = edge;
- }
- } while (view_ref != last);
- }
- ***************
- *** 1605,1613 ****
- stmp = scanline1;
-
- while (y >= 0) {
- ! active_list = merge_edge_lists(active_list, y_bucket[y].first);
- next_edge = y - 1;
- ! while (next_edge >=0 && y_bucket[next_edge].first == NULL)
- next_edge--;
- while (y > next_edge) {
- init_buffers(xres, z_buffer, stmp);
- --- 1609,1617 ----
- stmp = scanline1;
-
- while (y >= 0) {
- ! active_list = merge_edge_lists(active_list, y_bucket[y]);
- next_edge = y - 1;
- ! while (next_edge >=0 && y_bucket[next_edge] == NULL)
- next_edge--;
- while (y > next_edge) {
- init_buffers(xres, z_buffer, stmp);
- ***************
- *** 1796,1820 ****
- }
-
-
- - /*
- - * Free the memory used by an edge list.
- - */
- - static void
- - delete_edges(edge_list)
- - Edge *edge_list;
- - {
- - Edge *edgeref1, *edgeref2;
-
- - edgeref1 = edge_list;
- - while (edgeref1 != NULL) {
- - edgeref2 = edgeref1->next;
- - free(edgeref1);
- - edgeref1 = edgeref2;
- - }
- - }
- -
- -
- -
- /*
- * Push the current transformation matrix on the matrix stack.
- */
- --- 1800,1806 ----
- ***************
- *** 1904,1910 ****
-
- if (!polyref->backface) {
- transf_vertices(polyref->vertices, surfref, loc_view_mat,
- ! &curr_mat, (double)xres, (double)yres);
- }
-
- }
- --- 1890,1897 ----
-
- if (!polyref->backface) {
- transf_vertices(polyref->vertices, surfref, loc_view_mat,
- ! &curr_mat, (double)(xres >> 1),
- ! (double)(yres >> 1));
- }
-
- }
- ***************
- *** 1951,1970 ****
- double matrix[4][4];
- int i;
-
- ! y_bucket = (Bucket *)calloc(yres << 1, sizeof(Bucket));
-
- get_view_transf(matrix);
- MatCopy(&curr_mat, &ident_matrix);
-
- ! traverse_object_db(object_db, matrix, xres, yres);
-
- vecnorm(&camera.vec);
- scan_and_render(xres << 1, yres << 1, image_file);
- view_vec_eval();
- -
- - for (i = 0; i < (yres << 1); i++)
- - delete_edges(y_bucket[i].first);
- - free(y_bucket);
- }
-
-
- --- 1938,1953 ----
- double matrix[4][4];
- int i;
-
- ! y_bucket = (Edge **)calloc(yres << 1, sizeof(Edge *));
-
- get_view_transf(matrix);
- MatCopy(&curr_mat, &ident_matrix);
-
- ! traverse_object_db(object_db, matrix, xres << 1, yres << 1);
-
- vecnorm(&camera.vec);
- scan_and_render(xres << 1, yres << 1, image_file);
- view_vec_eval();
- }
-
-
- diff -c -r sipp-2.0/libsipp/sipptypes.h sipp-2.0.1/libsipp/sipptypes.h
- *** sipp-2.0/libsipp/sipptypes.h Sat Nov 17 01:43:53 1990
- --- sipp-2.0.1/libsipp/sipptypes.h Thu Mar 21 20:55:12 1991
- ***************
- *** 41,54 ****
-
-
- /*
- - * Y-bucket to keep the edge lists
- - */
- - typedef struct {
- - Edge *first, *last; /* Firs and last entry in the list */
- - } Bucket;
- -
- -
- - /*
- * Objects installed in the database for rendering are kept
- * in a binary tree, internal to sipp. This database will
- * automatically contain all top level objects, but the user
- --- 41,46 ----
- --
-