ftp.nice.ch/pub/next/developer/objc/appkit/DeckofCards.Nbs.tar.gz#/DeckofCards/Include/Card.h

This is Card.h in view mode; [Download] [Up]

/*
	Card.h
	Version 0.0		6/26/90		Ernest N. Prabhakar
	Version 0.1		6/29/90		Ernest N. Prabhakar
	Version 1.0		7/17/90		Ernest N. Prabhakar
	Version 1.1		8/17/90		Ernest N. Prabhakar
	
*/
#define CARD_VERSION 1
#import <objc/Storage.h>

typedef struct _CardFace {
	char *data;
	int length;
	int tag;	
	id object; } CardFace;
static const char *cardDescription = "{*ii@}";

@interface Card : Storage
 /*
  * A Card is any object to be collected in a Deck. 
  * Card is expected to receive the following messages
  *	- findSTR:aString (returns self or nil) 
  *		This is to support searching.  Can also use the compiled regex.
  *	- (int)compare:aCard (-,0,+ if self <,=,> aCard)
  *		This is to support finding.
  * This particular implementation is designed for use with
  * flashcards, index cards, or playing cards.  It implements the
  * data as strings which can be read from/to streams.
  * Data streams are usually RTF or PostScript, but it doesn't matter.
  * Tags are generic storage.  Must be set directly.
  */
 /*
  * METHOD TYPES
  * Creating
  * set parameters for Find and Sort
  * setting and retrieving values to strings or streams
  * 'findSTR:' for Card find
  * 'compare:' for Card sort
  * Action methods
  */

/* Creating and Archiving */

+ initialize;
 /*
  * TYPE: Creating; Set initial parameters
  *
  * Sets up a new Card.  Registers version.
  */

+ new;
 /*
  * TYPE: Creating; Make a new Card.
  *
  * Creates a Card with two (2) faces;
  */

+ newCount:(unsigned)numSlots;
 /*
  * TYPE: Creating; Make a new Card.
  *
  * Creates a Card with count faces;
  */

/* Set and Return Parameters */
  
+ (int) activeFace;
+ setActiveFace:(int)face;

+ (int) sortFlag;
+ setSortFlag:(int)flag;

 /*
  * TYPE: Parameters; Sets and returns values used for sort/find.
  *
  * Application-wide Card parameters.
  *
  * These are initially set to zero.
  * Set messages set those variables to the given value,
  * The others return it.
  * If 'face' is out of range, nothing is changed,
  * There are no restrictions on 'flag' value, so to change sorting 
  * all you would need is redefine the compare method.
  * Existing values use String, InvertedStrings, and the Tag to sort;
  */

/* Data input and output */
- printStream:(NXStream *)stream;
- scanStream:(NXStream *)stream;
 /*
  * TYPE: Archiving; Reads/Writes quoted, comma-separated strings.
  */


/* Set Data values */

- setFace:(int)face string:(STR)string;
- setFace:(int)face stream:(NXStream *)stream;
 /*
  * TYPE: Manipulating Faces; Sets Data
  *
  * Set the data value to a string, 
  * reading either a String or from a Stream.
  *
  */

- (STR) faceString:(int)face;
- (NXStream *)faceStream:(int)face;
 /*
  * TYPE: Manipulating Faces; Returns Data
  *
  * Either returns the value of the data string,
  * or writes it out to the returned stream.
  *
  */

- setFace:(int)face tag:(int)tag;
 /*
  * TYPE: Manipulating Faces; Sets Tag
  *
  * reading either a String or from a Stream.
  *
  */

- (int) faceTag:(int)face;
 /*
  * TYPE: Manipulating Faces; Returns Tag
  *
  * returns tag value (integer)
  *
  */
   
- setFace:(int)face object:anObject;
 /*
  * TYPE: Manipulating Faces; Sets Object
  *
  * reading an Object
  *
  */

- faceObject:(int)face;
 /*
  * TYPE: Manipulating Faces; Returns Object
  *
  * returns object
  *
  */
   
/* Find and Sort Cards */

- findSTR:(STR)aString;
 /*
  * TYPE: Finding; Tries to find String
  *
  * If aString matches faces[sortFace], return that data string.
  * Otherwise return null.  Can also use regular expersion (re_cmp).
  */

- (int)compare:aCard; //(-,0,+ if self <,=,> aCard)
 /*
  * TYPE: Sort;  Sorts according to sortFace and sortType.
  *
  * Pulls out the equivalent sortFace string and compares it.
  * If sortType is zero, it just does a lexographic compare.
  * Otherwise, it reverse strings before comparison.
  * You can overrule this for specialize Card types.
  */

/* Card Manipulation */

- flip;
 /*
  * TYPE: Manipulation; Changes order of Faces
  *
  * Makes the first element the last, and shifts the rest down.
  * i.e., for two faces simply flips the card over. 
  */

@end

#define CARDSORT_Face 0
#define CARDSORT_InvFace -1
#define CARDSORT_Tag 1
#define CARDSORT_Object 2

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.