🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: mod.mac.sources
1 messages
1 total messages Started by Mark Nodine Fri, 21 Nov 1986 14:44
Here's a SUMacC List Manager interface
#24
Author: Mark Nodine
Date: Fri, 21 Nov 1986 14:44
408 lines
9656 bytes
[Info-Mac Archive: SUMACC-LISTMANAGER.SHAR]

A couple of weeks ago I asked if anybody had written glue for the List
Manager for SUMacC.  I didn't get any response, so I wrote it myself.
In the spirit of SUMacC, I am posting this as public domain software
for anybody who wants to use it.  The posting is in the form of a shell
archive.  To unpack under Unix, type

	sh listmgr.shar

If you are not using unix, use an editor to chop the files apart.

	--Mark

---
#! /bin/sh
: This is a shar archive.  Extract with sh, not csh.
echo x -  liblist.c
cat > liblist.c << '10467!EOF!'
/*	liblist.c		1.0	86/10/27	*/

/*
 * Package library for the List Manager.
 *
 * Copyright (C) 1984, Stanford Univ. SUMEX project.
 * May be used but not sold without permission.
 */

/*
 * history
 * 10/27/86	Nodine	Created.
 */

/* LINTLIBRARY */

#include "quickdraw.h"
#undef v
#undef h
#include "toolintf.h"
#include "osintf.h"
#include "listintf.h"
#include "libmac.h"


/* List Manager */

ListHandle	LNew(rv,db,cs,p,w,d,hg,sh,sv) Rect *rv,db; Point *cs; WindowPtr w; { _macc9(RI,_lnew,L,L,L,SS,S,L,B,B,B,B)}
void	LDispose(l) ListHandle l; { _macc1(RN,_ldispose,N,L)}
int	LAddColumn(c,cn,l) ListHandle l; { _macc3(RI,_laddcolumn,S,S,S,L) }
int	LAddRow(c,cn,l) ListHandle l; { _macc3(RI,_laddrow,S,S,S,L) }
void	LDelColumn(c,cn,l) ListHandle l; { _macc3(RN,_ldelcolumn,N,S,S,L) }
void	LDelRow(c,cn,l) ListHandle l; { _macc3(RN,_ldelrow,N,S,S,L) }
void	LAddToCell(d,dl,c,l) Ptr d; Cell *c; ListHandle l; { _macc4(RN,_laddtocell,N,L,S,SS,L) }
void	LClrCell(c,l) Cell *c; ListHandle l; { _macc2(RN,_lclrcell,N,SS,L) }
void	LGetCell(d,dl,c,l) Ptr d; int *dl; Cell *c; ListHandle l;{ _macc4(RN,_lgetcell,N,L,VS,SS,L) }
void	LSetCell(d,dl,c,l) Ptr d; Cell *c; ListHandle l; { _macc4(RN,_lsetcell,N,L,S,SS,L) }
void	LCellSize(s,l) Point *s; ListHandle l; { _macc2(RN,_lcellsize,N,SS,L) }
int	LGetSelect(n,c,l) Cell *c; ListHandle l; { _macc3(RI,_lgetselect,B,B,L,L) }
void	LSetSelect(s,c,l) Cell *c; ListHandle l; { _macc3(RN,_lsetselect,N,B,SS,L) }
int	LClick(p,m,l) Point *p; ListHandle l; { _macc3(RI,_lclick,B,SS,S,L) }
int	LLastClick(l) ListHandle l; { _macc1(RI,_llastclick,L,L) }
void	LFind(o,len,c,l) int *o,*len; Cell *c; ListHandle l; { _macc4(RN,_lfind,N,VS,VS,SS,L) }
int	LNextCell(hn,vn,c,l) Cell *c; ListHandle l; { _macc4(RI,_lnextcell,B,B,B,L,L) }
void	LRect(r,c,l) Rect *r; Cell *c; ListHandle l; { _macc3(RN,_lrect,N,L,SS,L) }
int	LSearch(d,dl,p,c,l) Ptr d; ProcPtr p; Cell *c; ListHandle l; { _macc5(RI,_lsearch,B,L,S,L,SS,L) }
void	LSize(lw,lh,l) ListHandle l; { _macc3(RN,_lsize,N,S,S,L) }
void	LDraw(c,l) Cell *c; ListHandle l; { _macc2(RN,_ldraw,N,SS,L) }
void	LDoDraw(d,l) ListHandle l; { _macc2(RN,_ldodraw,N,B,L) }
void	LScroll(c,r,l) ListHandle l; { _macc3(RN,_lscroll,N,S,S,L) }
void	LAutoScroll(l) ListHandle l; { _macc1(RN,_lautoscroll,N,L) }
void	LUpdate(r,l) RgnHandle r; ListHandle l; { _macc2(RN,_lupdate,N,L,L) }
void	LActivate(a,l) ListHandle l; { _macc2(RN,_lactivate,N,B,L) }
10467!EOF!
echo x -  listintf.h
cat > listintf.h << '10467!EOF!'
/*
 * List definitions.
 *
 *
 * C language version (C) 1986, BBN
 * May be used but not sold without permission.
 */

/* Constants for controlling autoscrolling in listFlags */
#define lDoVAutoScroll		2
#define lDoHAutoScroll		1

/* Constants for the selFlags byte */
#define lOnlyOne		0x80
#define lExtendDrag		64
#define	lNoDisjoint		32
#define	lNoExtend		16
#define	lNoRect			8
#define lUseSense		4
#define lNoNilHilite		2

/* Messages to a list definition procedure */
#define lInitMsg		0
#define	lDrawMsg		1
#define lHiliteMsg		2
#define	lCloseMsg		3

/* Typedefs for the List Manager */
typedef struct { short row, col; } Cell;

typedef char DataArray[32000];
typedef DataArray *DataPtr;
typedef DataPtr *DataHandle;

typedef struct
{
    Rect rView;
    GrafPtr port;
    Point indent;
    Point cellSize;
    Rect visible;
    ControlHandle vScroll;
    ControlHandle hScroll;
    char selFlags;
    char lActive;
    char lReserved;
    char listFlags;
    long clikTime;
    Point clikLoc;
    Point mouseLoc;
    Ptr lClikLoop;
    Cell lastClick;
    long refCon;
    Handle listDefProc;
    Handle userHandle;
    Rect dataBounds;
    DataHandle cells;
    short maxIndex;
    int cellArray[1];
} ListRec;

typedef ListRec *ListPtr;
typedef ListPtr *ListHandle;

/* Functions returning other than integer */
ListHandle LNew();
int LLastClick();		/* actually returns a Cell */
10467!EOF!
echo x -  listpack.s
cat > listpack.s << '10467!EOF!'
|
| file packtraps.text
|
| implementation for the interface to packages
|

|
|procedure lnew(rview,databounds: rect| csize: point| theproc: integer|
|	thewindow: windowptr| drawit,hasgrow,scrollhoriz,scrollvert: boolean):
|	listhandle|
|

		.text
		.globl	_lnew
_lnew:

	moveq	#68,d2	|stuff the opcode

golist:	movl	sp@+,a0	|get user's rts
	movw	d2,sp@-	|the routine selector
	movl	a0,sp@-	|push the rts back on
	.word	/ade7	|__pack0 w/autopop
	|never gets here

|
|procedure ldispose(lhandle: listhandle)|
|
		.text
		.globl	_ldispose
_ldispose:

	moveq	#40,d2
	bra	golist
|
|procedure laddcolumn(count,colnum: integer| lhandle: listhandle): integer|
|
		.text
		.globl	_laddcolumn
_laddcolumn:

	moveq	#4,d2
	bra	golist
|
|procedure laddrow(count,rownum: integer| lhandle: listhandle): integer|
|
		.text
		.globl	_laddrow
_laddrow:

	moveq	#8,d2
	bra	golist

|
|procedure ldelcolumn(count,colnum: integer| lhandle: listhandle): integer|
|
		.text
		.globl	_ldelcolumn
_ldelcolumn:
	moveq	#32,d2	|stuff the opcode
	bra	golist

|
|procedure ldelrow(count,rownum: integer| lhandle: listhandle): integer|
|
		.text
		.globl	_ldelrow
_ldelrow:
	moveq	#36,d2
	bra	golist

|
|function laddtocell (dataptr: ptr| datalen: integer| thecell: cell|
|	lhandle: listhandle)|
|
		.text
		.globl	_laddtocell
_laddtocell:
	moveq	#12,d2
	bra	golist


|
|function lclrcell (thecell: cell| lhandle: listhandle)|
|
		.text
		.globl	_lclrcell
_lclrcell:
	moveq	#28,d2
	bra	golist


|
|function lgetcell (dataptr: ptr| var datalen: integer| thecell: cell|
|	lhandle: listhandle)|
|
		.text
		.globl	_lgetcell
_lgetcell:
	movw	#56,d2
	bra	golist


|
|function lsetcell (dataptr: ptr| datalen: integer| thecell: cell|
|	lhandle: listhandle)|
|
		.text
		.globl	_lsetcell
_lsetcell:
	movw	#88,d2
	bra	golist

|
|function lcellsize (csize, point| lhandle: listhandle)|
|
		.text
		.globl	_lcellsize
_lcellsize:
	moveq	#20,d2	|stuff the opcode
	bra	golist

|
|procedure lgetselect (next: boolean| var thecell: cell| 
|	lhandle: listhandle): boolean|
|
		.text
		.globl	_lgetselect
_lgetselect:
	moveq	#60,d2
	bra	golist


|
|procedure lsetselect (setit: boolean| thecell: cell| lhandle: listhandle)|
|
		.text
		.globl	_lsetselect
_lsetselect:
	moveq	#92,d2
	bra	golist

|
|procedure lclick (pt: point| modifiers: integer| lhandle: listhandle):
|	boolean|
|
		.text
		.globl	_lclick
_lclick:
	moveq	#24,d2
	bra	golist

|
|procedure llastclick (lhandle: listhandle): cell|
|
		.text
		.globl	_llastclick
_llastclick:
	moveq	#64,d2
	bra	golist

|
|procedure lfind (var offset, len: integer| thecell: cell|
|	lhandle: listhandle)|
|
		.text
		.globl	_lfind
_lfind:
	moveq	#52,d2
	bra	golist

|
|function lnextcell (hnext,vnext: boolean| var thecell: cell|
|	lhandle: listhandle): boolean|
|
		.text
		.globl	_lnextcell
_lnextcell:
	moveq	#72,d2
	bra	golist

|
|function lrect (var cellrect: rect| thecell: cell| lhandle: listhandle)|
|
		.text
		.globl	_lrect
_lrect:
	movw	#76,d2	|the routine selector
	bra	golist

|
|function lsearch (dataptr: ptr| datalen: integer| searchproc: ptr|
|	var thecell: cell| lhandle: listhandle): boolean|
|
		.text
		.globl	_lsearch
_lsearch:
	movw	#84,2	|the routine selector
	bra 	golist

|
|function lsize (listwidth,listheight: integer| lhandle: listhandle)|
|
		.text
		.globl	_lsize
_lsize:
	movw	#96,d2	|the routine selector
	bra	golist

|
|function ldraw (thecell: cell| lhandle: listhandle)|
|
		.text
		.globl	_ldraw
_ldraw:
	movw	#48,d2	|the routine selector
	bra	golist

|
| procedure ldodraw (drawit: boolean| lhandle: listhandle)|
|
		.text
		.globl	_ldodraw
_ldodraw:
	movw	#44,d2
	bra	golist

|
| procedure lscroll (dcols,drows: integer| lhandle: listhandle)|
|
		.text
		.globl	_lscroll
_lscroll:
	movw	#80,d2
	bra	golist

|
| procedure lautoscroll (lhandle: listhandle)|
|
		.text
		.globl _lautoscroll
_lautoscroll:
	movw	#16,d2
	bra	golist

|
| procedure lupdate (thergn: rgnhandle| lhandle: listhandle)|
|
		.text
		.globl _lupdate
_lupdate:
	movw	#100,d2
	bra	golist

|
| procedure lactivate (act: boolean| lhandle: listhandle)|
|
		.text
		.globl _lactivate
_lactivate:
	movw	#0,d2
	bra	golist
10467!EOF!
---
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads