/******************************************************************** * lindner * 3.2 * 1993/03/26 19:50:41 * /home/arcwelder/GopherSrc/CVS/gopher+/object/BLblock.h,v * Exp * * Paul Lindner, University of Minnesota CIS. * * Copyright 1991, 1992,1993 by the Regents of the University of Minnesota * see the file "Copyright" in the distribution for conditions of use. ********************************************************************* * MODULE: BLblock.h * Header file and abstraction of a gopher+ block ********************************************************************* * Revision History: * BLblock.h,v * Revision 3.2 1993/03/26 19:50:41 lindner * Mitra fixes for better/clearer fromNet code * * Revision 3.1.1.1 1993/02/11 18:03:06 lindner * Gopher+1.2beta release * * Revision 1.1 1993/01/31 00:31:12 lindner * Initial revision * * *********************************************************************/ #ifndef BLBLOCK_H #define BLBLOCK_H #include "STRstring.h" #include "STAarray.h" #include "boolean.h" /** Return Values for *fromNet() functions **/ #define SOFTERROR -1 #define HARDERROR -2 #define MORECOMING 1 #define FOUNDEOF 0 typedef struct block_struct Blockobj; typedef DynArray BlockArray; #include "GSgopherobj.h" /** The different types of blocks **/ #define BLOCK_UNKNOWN 0 #define BLOCK_VIEW 1 #define BLOCK_ASK 2 #define BLOCK_ABSTRACT 3 #define BLOCK_ADMIN 4 typedef int BlockType; /** The block data is a union, it can either be a filename or the ** actual data in a STRarray, or a gopher reference. **/ union BlockData_union { String *filename; StrArray *text; GopherObj *gs; }; typedef union BlockData_union BlockData; #define BDATA_NONE 0 #define BDATA_FILE 1 #define BDATA_TEXT 2 #define BDATA_GREF 3 typedef int BlockDataType; struct block_struct { BlockType btype; String *Blockname; BlockDataType datatype; BlockData data; }; /****** Macros/data access ********/ #define BLgetName(a) (STRget((a)->Blockname)) #define BLsetName(a,b) (STRset((a)->Blockname,(b))) #define BLgetBlocktype(a) (STRget((a)->btype)) #define BLsetBlocktype(a,b) (STRset((a)->btype,(b))) #define BLgetDatatype(a) ((a)->datatype) /**** Prototype declarations. ****/ Blockobj *BLnew(); void BLdestroy(); void BLinit(); void BLcpy(); void BLsetFile(); void BLsetGref(); void BLsetText(); char * BLgetLine(); /************************************************************* ** Define a dynamic block array **/ #include "DAarray.h" #define BLAnew(a) (DAnew((a),BLnew,BLinit,BLdestroy,BLcpy)) #define BLAinit(a) (DAinit((a))) #define BLAgetTop(a) (DAgetTop(a)) #define BLAgetEntry(a,b) (Blockobj*)(DAgetEntry(a,b)) #define BLApush(a,b) (DApush((DynArray*)(a),(b))) #define BLAdestroy(a) (DAdestroy(a)) #define BLAcpy(a,b) (DAcpy(a,b)) #endif .