 
#ifndef nessmark_DEFINED
#define nessmark_DEFINED 1
 
#ifndef class_DEFINED
#include <class.h>
#endif /* class_DEFINED */
/* 
 * This file was generated by the Andrew class system preprocessor.
 * Don't make changes to this file as it is created from nessmark.ch and will be
 * overwritten.  Make changes to nessmark.ch instead.
 */ 
 
#ifndef class_StaticInfoOnly
/* 
 * The following information was copied, as-is, from nessmark.ch.
 */ 
 
/* ********************************************************************** *\
 *         Copyright IBM Corporation 1988,1991 - All Rights Reserved      *
\* ********************************************************************** */

/*
	$Disclaimer: 
*Permission to use, copy, modify, and distribute this software and its 
*documentation for any purpose is hereby granted without fee, 
*provided that the above copyright notice appear in all copies and that 
*both that copyright notice, this permission notice, and the following 
*disclaimer appear in supporting documentation, and that the names of 
*IBM, Carnegie Mellon University, and other copyright holders, not be 
*used in advertising or publicity pertaining to distribution of the software 
*without specific, written prior permission.
*
*IBM, CARNEGIE MELLON UNIVERSITY, AND THE OTHER COPYRIGHT HOLDERS 
*DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 
*ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT 
*SHALL IBM, CARNEGIE MELLON UNIVERSITY, OR ANY OTHER COPYRIGHT HOLDER 
*BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 
*DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 
*WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS 
*ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
*OF THIS SOFTWARE.
* $
*/




/*
    $Log: nessmark.ch,v $
*Revision 1.10  1993/05/04  01:23:55  susan
*RCS Tree Split
*
*Revision 1.9.1.1  1993/02/02  03:02:55  rr2b
*new R6tape branch
*
*Revision 1.9  1992/12/14  20:49:20  rr2b
*disclaimerization
*
Revision 1.8  1992/11/26  02:39:52  wjh
converted CorrectGetChar to GetUnsignedChar
moved ExtendShortSign to interp.h
remove xgetchar.h; use simpletext_GetUnsignedChar
nessrun timing messages go to stderr
replaced curNess with curComp
replaced genPush/genPop with struct compilation
created compile.c to handle compilation
moved scope routines to compile.c
converted from lex to tlex
convert to use lexan_ParseNumber
truncated logs to 1992 only
use bison and gentlex instead of yacc and lexdef/lex

.

Revision 1.7  92/06/05  16:39:31  rr2b
added test for a null text before performing
operation referencing it.

Revision 1.6  1991/09/12  19:44:10  bobg
Update copyright notice

Revision 1.5  1989/06/01  15:58:17  wjh
campus release version

Revision 1.2  88/12/07  22:43:44  wjh

9 Nov
implemented access level control
skip first line of script if starts with # (for shell script)
changed so the name of all initialization functions is init()
added ness-load
moved execution of init() from compilation to first execution
deferred compilation to first FullUpdate time

22 Nov
proc table calls now work correctly with type-free procs  (the first arg can be anything)
added "cheat_" functions which will remain undocumented
changed inset() to a function
fixed some bugs in initial access

25 November
added long strings
added Next Error menu option
made replace() work correctly in all cases
added class() and new()

29 Nov
added ^<upper-case> and \e as characters in strings
added nextn() and length()

6 Dec
added functions: parseint(), parsereal(), firstobject(), whereitwas(), replacewithobject(), addstyles(), nextstylegroup(), enclosingstylegroup(), clearstyles(), hasstyles()
catch bus and segmentation errors


Revision 1.1  88/10/21  10:59:54  wjh
Initial revision

 * Creation 88/03/24 14:56:00 wjh
 * Created by WJHansen following definitions in 
 *	"A Practical Algebra for Substring Expressions"
*/

typedef long sysMarkIndex;
 






/* 
 * End of information copied from nessmark.ch.
 */ 
 
#endif /* class_StaticInfoOnly *//* 
 * Include the superclass information
 */ 
#define dontDefineRoutinesFor_mark
#include "mark.ih"
#undef dontDefineRoutinesFor_mark

 
 
#ifndef class_StaticInfoOnly
/* 
 * Data structure for nessmark 
 */ 
struct nessmark { 
    union {
	struct basicobject_methods *nessmark_methods;
	struct mark mark;
    } header;

};

 
/* 
 * End of data structure for nessmark.
 */ 
 

#endif /* class_StaticInfoOnly */

#ifndef class_StaticInfoOnly

#ifndef nessmark_PROGRAMMERVERSION
#define nessmark_PROGRAMMERVERSION 1
#endif /* nessmark_PROGRAMMERVERSION */

#ifdef nessmark_VERSION
#undef nessmark_VERSION
#endif /* nessmark_VERSION */
#define nessmark_VERSION ((((nessmark_PROGRAMMERVERSION << 16) ^ (16 << 8) ^ sizeof(struct nessmark)) & 0x7ffff) + 0x80000 + (2 << 20))


#endif /* class_StaticInfoOnly */
#define nessmark_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *nessmark__GetClassInfo(); \
 extern struct classheader *nessmark_classheader_StaticExport; \
  (void) class_EnterInfo(NULL, nessmark_classheader_StaticExport->name, nessmark__GetClassInfo, NULL, nessmark_classheader_StaticExport->namekey); } 
 
#define nessmark_StaticLoad()  \
    { \
    mark_StaticLoad(); \
    nessmark_StaticLoadOnlyThisClass();  \
    } 
 
#define nessmark_StaticEntry  {nessmark_StaticLoad()} 
 
#ifndef class_StaticInfoOnly
static struct classheader nessmark_classheader = {
    nessmark_VERSION,
    "nessmark",
    "nessmark",
    (struct basicobject_methods *) &class_RoutineStruct,
};

#define nessmark_CLASSPROCEDURES (nessmark_classheader.classprocedures)
int nessmark_classref_;
#endif /* class_StaticInfoOnly */

#endif /* nessmark_DEFINED */

#if !defined(nessmark_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_nessmark) && !defined(class_StaticEntriesOnly)
#define nessmark_ROUTINESDEFINED

#define nessmark_SetStyle(self,beginning,ending) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[0]))) (self,beginning,ending))
#define nessmark_UpdateMarks(self,pos,size) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[1]))) (self,pos,size))
#define nessmark_GetObject(self) \
	(((&(self)->header.mark))->object)
#define nessmark_GetPos(self) \
 	(((&(self)->header.mark))->pos)
#define nessmark_GetLength(self) \
	(((&(self)->header.mark))->length)
#define nessmark_GetEndPos(self) \
	(((&(self)->header.mark))->pos + ((&(self)->header.mark))->length)
#define nessmark_IncludeBeginning(self) \
	(((&(self)->header.mark))->includeBeginning)
#define nessmark_IncludeEnding(self) \
	(((&(self)->header.mark))->includeEnding)
#define nessmark_GetModified(self) \
	(((&(self)->header.mark))->modified)
#define nessmark_ObjectFree(self) \
	(((&(self)->header.mark))->objectFree)
#define nessmark_GetNext(self) \
	(((&(self)->header.mark))->next)
#define nessmark_SetObject(self,obj) \
	(((&(self)->header.mark))->object = (struct basicobject *)(obj))
#define nessmark_SetPos(self,position) \
	(((&(self)->header.mark))->pos = position)
#define nessmark_SetLength(self,len) \
	(((&(self)->header.mark))->length = len)
#define nessmark_SetModified(self,val) \
	(((&(self)->header.mark))->modified = val)
#define nessmark_SetObjectFree(self,v) \
	(((&(self)->header.mark))->objectFree = v)
#define nessmark_SetNext(self,n) \
	(((&(self)->header.mark))->next = n)
#define nessmark_SetText(self,text) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[2]))) (self,text))
#define nessmark_Set(self,text,pos,length) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[3]))) (self,text,pos,length))
#define nessmark_MakeConst(self,cx) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[4]))) (self,cx))
#define nessmark_Next(self) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[5]))) (self))
#define nessmark_Start(self) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[6]))) (self))
#define nessmark_Base(self) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[7]))) (self))
#define nessmark_Extent(self,tail) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[8]))) (self,tail))
#define nessmark_Replace(self,replacement) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[9]))) (self,replacement))
#define nessmark_Equal(self,comparand) \
    ((* ((boolean (*)())((self)->header.nessmark_methods->routines[10]))) (self,comparand))
#define nessmark_IsEmpty(self) \
    ((* ((boolean (*)())((self)->header.nessmark_methods->routines[11]))) (self))
#define nessmark_Length(self) \
    ((* ((long (*)())((self)->header.nessmark_methods->routines[12]))) (self))
#define nessmark_NextN(self,n) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[13]))) (self,n))
#define nessmark_SetFrom(self,src) \
    ((* ((void (*)())((self)->header.nessmark_methods->routines[14]))) (self,src))
#define nessmark_ToC(self) \
    ((* ((unsigned char * (*)())((self)->header.nessmark_methods->routines[15]))) (self))
#define nessmark_GetText(self) \
   		((struct simpletext *)(mark_GetObject((struct mark *)(self))))
#define nessmark_DetachFromText(self) \
 if (nessmark_GetText((self))) { 		simpletext_RemoveMark(nessmark_GetText((self)), (self));  		mark_SetObject((struct mark *)(self), NULL);  	}
#define nessmark_AttachToText(self,text) \
 { 		mark_SetObject((struct mark *)(self), (struct simpletext *)text);  		mark_SetNext((struct mark *)((self)), ((struct simpletext *)text)->markList);  		((struct simpletext *)text)->markList = (struct mark *)((self));  	}
#define nessmark_InitFrom(self,src) \
 {*((self)) = *(src);  		nessmark_AttachToText((self), nessmark_GetText((self)));}

#define nessmark_NewFromObject(self) \
    ((* ((struct nessmark * (*)())((self)->header.nessmark_methods->info->procs->routines[0]))) (&nessmark_classheader, (self)->header.nessmark_methods->info->versionnumber))
#define nessmark_New() \
    (*((struct nessmark * (*)()) (nessmark_CLASSPROCEDURES->routines[0])))(&nessmark_classheader,nessmark_VERSION)
#define nessmark_Initialize(self) \
    (*((void (*)()) (nessmark_CLASSPROCEDURES->routines[2])))(&nessmark_classheader,self, nessmark_VERSION)

#define nessmark_Destroy(self) \
    ((* ((void (*)()) ((self)->header.nessmark_methods->info->procs->routines[1]))) (&nessmark_classheader, self))
#define nessmark_Finalize(self) \
    (*((void (*)()) (nessmark_CLASSPROCEDURES->routines[3])))(&nessmark_classheader,self)

#define nessmark_InitializeClass() \
    (*((boolean (*)()) (nessmark_CLASSPROCEDURES->routines[5])))(&nessmark_classheader)
#define nessmark_InitializeObject(self) \
    (*((boolean (*)()) (nessmark_CLASSPROCEDURES->routines[6])))(&nessmark_classheader,self)
#define nessmark_FinalizeObject(self) \
    (*((void (*)()) (nessmark_CLASSPROCEDURES->routines[7])))(&nessmark_classheader,self)


#endif /* !defined(nessmark_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_nessmark ) && !defined(class_StaticEntriesOnly)*/

