home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d8xx
/
d891
/
skew.lha
/
Skew
/
source.lha
/
source
/
skew3.c
< prev
Wrap
C/C++ Source or Header
|
1993-07-04
|
21KB
|
733 lines
/*
* skew3.c -- stuff needed for writing output file
*
*/
#include <dos/dos.h>
#include "skew.h"
/* flags related to gadgets & output file */
extern LONG Flag1, Flag2A, Flag2B, Flag3;
/* flags for cycle gadgets on display #2 (zero indexing) */
extern LONG
WaitingMode_FLAG, Variables_FLAG, Comments_FLAG, FillIns_FLAG,
WaitingMode_START, Variables_START, Comments_START, FillIns_START,
TopArgs_FLAG, TopReturn_FLAG, TestVarScope_FLAG;
/* name for top-level function, as well as prefix & suffix for the rest */
extern char *IDCMP_WIN_BUF, *TOP_LEVEL_BUF, *PREFIX_BUF, *SUFFIX_BUF,
*TEST_VAR_BUF;
BOOL Writing_Done = FALSE; /* TRUE when work was saved and no gadget hit */
/* we hope AmigaDOS will handle error checking for us */
__regargs VOID GenerateCode( BPTR );
static VOID WriteHeader( VOID );
static VOID WriteGlobalDefs( VOID );
static VOID WriteLocalDefs( VOID );
static VOID WriteProtos( VOID );
static VOID WriteTopLevelF( VOID );
static VOID WriteCases( VOID );
static VOID WriteFSkeletons( VOID );
static VOID WriteFillIn( VOID );
static VOID Pad( VOID );
static VOID WriteRefreshTopL( VOID );
static VOID lowWriteRefreshTopL( VOID );
static VOID WriteRefreshSkel( VOID );
static VOID lowWriteRefreshSkel( VOID );
__regargs static VOID lowWriteProtos( BOOL, LONG, UBYTE * );
__regargs static VOID lowWriteCases( BOOL, LONG, LONG, UBYTE *, UBYTE * );
__regargs static VOID lowWriteFSkeletons( BOOL, LONG, UBYTE * );
VOID
GenerateCode( BPTR fh )
{
SelectOutput( fh );
if ( Comments_FLAG != NO_COMMENTS )
WriteHeader();
else
PutStr( "\n" ); /* start one line lower */
if ( TestVarScope_FLAG == TestVar_GLOBAL ) {
PutStr( "BOOL " );
PutStr( TEST_VAR_BUF );
PutStr( " = FALSE;\n" );
}
if ( Variables_FLAG == GLOBAL )
WriteGlobalDefs();
if ( Flag3 & Prototypes_FLAG )
WriteProtos();
WriteTopLevelF();
if ( Flag3 & Skeletons_FLAG )
WriteFSkeletons();
Writing_Done = TRUE;
}
VOID
WriteHeader()
{
PutStr( "/*\n * Skeleton generated by SKEleton Writer v1.28 \n */\n\n" );
}
VOID
WriteGlobalDefs()
{
PutStr( "\n" );
if ( ( Flag1 & CLASS_FLAG ) | Flag2A | Flag2B )
PutStr( "ULONG Class;\n" );
if ( Flag1 & CODE_FLAG && Flag1 & QUALIFIER_FLAG )
PutStr( "USHORT Code, Qualifier;\n" );
else if ( Flag1 & CODE_FLAG )
PutStr( "USHORT Code\n;" );
else if ( Flag1 & QUALIFIER_FLAG )
PutStr( "USHORT Qualifier;\n" );
if ( Flag1 & IADDRESS_FLAG )
PutStr( "APTR IAddress;\n" );
if ( Flag1 & MOUSEX_FLAG && Flag1 & MOUSEY_FLAG )
PutStr( "SHORT MouseX, MouseY;\n" );
else if ( Flag1 & MOUSEX_FLAG )
PutStr( "SHORT MouseX;\n" );
else if ( Flag1 & MOUSEY_FLAG )
PutStr( "SHORT MouseY;\n" );
if ( Flag1 & SECONDS_FLAG && Flag1 & MICROS_FLAG )
PutStr( "ULONG Seconds, Micros;\n" );
else if ( Flag1 & SECONDS_FLAG )
PutStr( "ULONG Seconds;\n" );
else if ( Flag1 & MICROS_FLAG )
PutStr( "ULONG Micros;\n" );
}
VOID
WriteLocalDefs()
{
PutStr( "\n" );
if ( ( Flag1 & CLASS_FLAG ) | Flag2A | Flag2B )
PutStr( " ULONG class;\n" );
if ( Flag1 & CODE_FLAG && Flag1 & QUALIFIER_FLAG )
PutStr( " USHORT code, qualifier;\n" );
else if ( Flag1 & CODE_FLAG )
PutStr( " USHORT code;" );
else if ( Flag1 & QUALIFIER_FLAG )
PutStr( " USHORT qualifier;\n" );
if ( Flag1 & IADDRESS_FLAG )
PutStr( " APTR iaddress;\n" );
if ( Flag1 & MOUSEX_FLAG && Flag1 & MOUSEY_FLAG )
PutStr( " SHORT mouse_x, mouse_y;\n" );
else if ( Flag1 & MOUSEX_FLAG )
PutStr( " SHORT mouse_x;\n" );
else if ( Flag1 & MOUSEY_FLAG )
PutStr( " SHORT mouse_y;\n" );
if ( Flag1 & SECONDS_FLAG && Flag1 & MICROS_FLAG )
PutStr( " ULONG seconds, micros;\n" );
else if ( Flag1 & SECONDS_FLAG )
PutStr( " ULONG seconds;\n" );
else if ( Flag1 & MICROS_FLAG )
PutStr( " ULONG micros;\n" );
}
VOID
WriteProtos()
{
PutStr( "\n" );
if ( TopArgs_FLAG ) {
if ( TopReturn_FLAG )
VPrintf( "LONG %s( struct Window * );\n\n", (LONG *)&TOP_LEVEL_BUF );
else
VPrintf( "VOID %s( struct Window * );\n\n", (LONG *)&TOP_LEVEL_BUF );
}
else {
if ( TopReturn_FLAG )
VPrintf( "LONG %s( VOID );\n\n", (LONG *)&TOP_LEVEL_BUF );
else
VPrintf( "VOID %s( VOID );\n\n", (LONG *)&TOP_LEVEL_BUF );
}
/* still lots of brute force, but less... */
/* Flag2A */
lowWriteProtos( TRUE, MOUSEBUTTONS_F_FLAG, "MouseButtons" );
lowWriteProtos( TRUE, MOUSEMOVE_F_FLAG, "MouseMove" );
lowWriteProtos( TRUE, GADGETDOWN_F_FLAG, "GadgetDown" );
lowWriteProtos( TRUE, GADGETUP_F_FLAG, "GadgetUp" );
lowWriteProtos( TRUE, CLOSEWINDOW_F_FLAG, "CloseWindow" );
lowWriteProtos( TRUE, MENUPICK_F_FLAG, "MenuPick" );
lowWriteProtos( TRUE, MENUVERIFY_F_FLAG, "MenuVerify" );
lowWriteProtos( TRUE, MENUHELP_F_FLAG, "MenuHelp" );
lowWriteProtos( TRUE, RAWKEY_F_FLAG, "RawKey" );
lowWriteProtos( TRUE, VANILLAKEY_F_FLAG, "VanillaKey" );
lowWriteProtos( TRUE, REQSET_F_FLAG, "ReqSet" );
lowWriteProtos( TRUE, REQCLEAR_F_FLAG, "ReqClear" );
lowWriteProtos( TRUE, REQVERIFY_F_FLAG, "ReqVerify" );
/* Flag2B */
lowWriteProtos( FALSE, NEWSIZE_F_FLAG, "NewSize" );
lowWriteProtos( FALSE, SIZEVERIFY_F_FLAG, "SizeVerify" );
lowWriteProtos( FALSE, ACTIVEWINDOW_F_FLAG, "ActiveWindow" );
lowWriteProtos( FALSE, INACTIVEWINDOW_F_FLAG, "InactiveWindow" );
lowWriteProtos( FALSE, CHANGEWINDOW_F_FLAG, "ChangeWindow" );
lowWriteProtos( FALSE, REFRESHWINDOW_F_FLAG, "RefreshWindow" );
lowWriteProtos( FALSE, DISKINSERTED_F_FLAG, "DiskInserted" );
lowWriteProtos( FALSE, DISKREMOVED_F_FLAG, "DiskRemoved" );
lowWriteProtos( FALSE, NEWPREFS_F_FLAG, "NewPrefs" );
lowWriteProtos( FALSE, INTUITICKS_F_FLAG, "IntuiTicks" );
lowWriteProtos( FALSE, IDCMPUPDATE_F_FLAG, "IDCMPUpdate" );
lowWriteProtos( FALSE, LONELYMESSAGE_F_FLAG, "LonelyMessage" );
}
VOID
lowWriteProtos( BOOL fA, LONG flag, UBYTE *name )
{
LONG our_flag = ( fA ) ? Flag2A : Flag2B;
if ( our_flag & flag ) {
if ( Variables_FLAG == LOCAL ) {
WriteFillIn();
Pad();
PutStr( PREFIX_BUF );
PutStr( name );
VPrintf( "%s(", (LONG *)&SUFFIX_BUF );
Pad();
WriteFillIn();
Pad();
PutStr( ");\n" );
}
else {
VPrintf( "VOID %s", (LONG *)&PREFIX_BUF );
PutStr( name );
VPrintf( "%s( VOID );\n", (LONG *)&SUFFIX_BUF );
}
}
}
VOID
WriteTopLevelF()
{
if ( TopArgs_FLAG ) {
if ( TopReturn_FLAG )
VPrintf( "\n\nLONG %s( struct Window *wnd )\n{", (LONG *)&TOP_LEVEL_BUF );
else
VPrintf( "\n\nVOID %s( struct Window *wnd )\n{", (LONG *)&TOP_LEVEL_BUF );
}
else {
if ( TopReturn_FLAG )
VPrintf( "\n\nLONG %s()\n{", (LONG *)&TOP_LEVEL_BUF );
else
VPrintf( "\n\nVOID %s()\n{", (LONG *)&TOP_LEVEL_BUF );
}
PutStr( "\n struct IntuiMessage *msg;\n" );
if ( Variables_FLAG == LOCAL )
WriteLocalDefs();
PutStr( "\n" );
if ( TestVarScope_FLAG == TestVar_LOCAL ) {
PutStr( " BOOL " );
PutStr( TEST_VAR_BUF );
PutStr( " = FALSE;\n\n" );
}
PutStr( " while ( ! " );
PutStr( TEST_VAR_BUF );
PutStr( " ) {\n" );
if ( WaitingMode_FLAG == PASSIVE ) {
if ( TopArgs_FLAG )
PutStr( " WaitPort( wnd->UserPort );\n" );
else
VPrintf( " WaitPort( %s->UserPort );\n",
(LONG *)&IDCMP_WIN_BUF );
}
else {
PutStr( "\n " );
WriteFillIn();
if ( Comments_FLAG == VERBOSE_COMMENTS ) {
PutStr( "/* do your thing while you're looping */\n\n" );
}
else {
PutStr( "\n\n" );
}
}
if ( Flag1 & gadtools_FLAG ) {
if ( TopArgs_FLAG ) {
PutStr( " while ( msg = (struct IntuiMessage *)GT_GetIMsg( wnd->UserPort ) ) {\n" );
}
else {
VPrintf( " while ( msg = (struct IntuiMessage *)GT_GetIMsg( %s->UserPort ) ) {\n",
(LONG *)&IDCMP_WIN_BUF );
}
}
else {
if ( TopArgs_FLAG ) {
PutStr( " while ( msg = (struct IntuiMessage *)GetMsg( wnd->UserPort ) ) {\n" );
}
else {
VPrintf( " while ( msg = (struct IntuiMessage *)GetMsg( %s->UserPort ) ) {\n",
(LONG *)&IDCMP_WIN_BUF );
}
}
PutStr( "\n" );
/* assignements */
if ( ( Flag1 & CLASS_FLAG ) | Flag2A | Flag2B ) {
if ( Variables_FLAG == LOCAL )
PutStr( " class = msg->Class;\n" );
else
PutStr( " Class = msg->Class;\n" );
}
if ( Flag1 & CODE_FLAG ) {
if ( Variables_FLAG == LOCAL )
PutStr( " code = msg->Code;\n" );
else
PutStr( " Code = msg->Code;\n" );
}
if ( Flag1 & QUALIFIER_FLAG ) {
if ( Variables_FLAG == LOCAL )
PutStr( " qualifier = msg->Qualifier;\n" );
else
PutStr( " Qualifier = msg->Qualifier;\n" );
}
if ( Flag1 & IADDRESS_FLAG ) {
if ( Variables_FLAG == LOCAL )
PutStr( " iaddress = msg->IAddress;\n" );
else
PutStr( " IAddress = msg->IAddress;\n" );
}
if ( Flag1 & MOUSEX_FLAG ) {
if ( Variables_FLAG == LOCAL )
PutStr( " mouse_x = msg->MouseX;\n" );
else
PutStr( " MouseX = msg->MouseX;\n" );
}
if ( Flag1 & MOUSEY_FLAG ) {
if ( Variables_FLAG == LOCAL )
PutStr( " mouse_y = msg->MouseY;\n" );
else
PutStr( " MouseY = msg->MouseY;\n" );
}
if ( Flag1 & SECONDS_FLAG ) {
if ( Variables_FLAG == LOCAL )
PutStr( " seconds = msg->Seconds;\n" );
else
PutStr( " Seconds = msg->Seconds;\n" );
}
if ( Flag1 & MICROS_FLAG ) {
if ( Variables_FLAG == LOCAL )
PutStr( " micros = msg->Micros;\n" );
else
PutStr( " Micros = msg->Micros;\n" );
}
PutStr( "\n" );
/* we are replying the message... */
if ( Flag1 & gadtools_FLAG )
PutStr( " GT_ReplyIMsg( msg );\n" );
else
PutStr( " ReplyMsg( msg );\n" );
/* switch */
if ( Variables_FLAG == LOCAL ) {
PutStr( "\n switch ( class ) {\n" );
}
else {
PutStr( "\n switch ( Class ) {\n" );
}
if ( !Flag2A && !Flag2B )
PutStr( "\n\n" );
else
WriteCases();
PutStr( " default:\n" );
PutStr( " " );
WriteFillIn();
PutStr( "\n break;\n" );
PutStr( " }\n }\n }\n" );
if ( TopReturn_FLAG ) {
PutStr( "\n return( " );
WriteFillIn();
PutStr( " );\n" );
}
PutStr( "}\n" );
}
VOID
WriteCases()
{
/* Flag2A */
lowWriteCases( TRUE, MOUSEBUTTONS_FLAG, MOUSEBUTTONS_F_FLAG, "MouseButtons", "IDCMP_MOUSEBUTTONS" );
lowWriteCases( TRUE, MOUSEMOVE_FLAG, MOUSEMOVE_F_FLAG, "MouseMove", "IDCMP_MOUSEMOVE" );
lowWriteCases( TRUE, GADGETDOWN_FLAG, GADGETDOWN_F_FLAG, "GadgetDown", "IDCMP_GADGETDOWN" );
lowWriteCases( TRUE, GADGETUP_FLAG, GADGETUP_F_FLAG, "GadgetUp", "IDCMP_GADGETUP" );
lowWriteCases( TRUE, CLOSEWINDOW_FLAG, CLOSEWINDOW_F_FLAG, "CloseWindow", "IDCMP_CLOSEWINDOW" );
lowWriteCases( TRUE, MENUPICK_FLAG, MENUPICK_F_FLAG, "MenuPick", "IDCMP_MENUPICK" );
lowWriteCases( TRUE, MENUVERIFY_FLAG, MENUVERIFY_F_FLAG, "MenuVerify", "IDCMP_MENUVERIFY" );
lowWriteCases( TRUE, MENUHELP_FLAG, MENUHELP_F_FLAG, "MenuHelp", "IDCMP_MENUHELP" );
lowWriteCases( TRUE, RAWKEY_FLAG, RAWKEY_F_FLAG, "RawKey", "IDCMP_RAWKEY" );
lowWriteCases( TRUE, VANILLAKEY_FLAG, VANILLAKEY_F_FLAG, "VanillaKey", "IDCMP_VANILLAKEY" );
lowWriteCases( TRUE, REQSET_FLAG, REQSET_F_FLAG, "ReqSet", "IDCMP_REQSET" );
lowWriteCases( TRUE, REQCLEAR_FLAG, REQCLEAR_F_FLAG, "ReqClear", "IDCMP_REQCLEAR" );
lowWriteCases( TRUE, REQVERIFY_FLAG, REQVERIFY_F_FLAG, "ReqVerify", "IDCMP_REQVERIFY" );
/* Flag2B */
lowWriteCases( FALSE, NEWSIZE_FLAG, NEWSIZE_F_FLAG, "NewSize", "IDCMP_NEWSIZE" );
lowWriteCases( FALSE, SIZEVERIFY_FLAG, SIZEVERIFY_F_FLAG, "SizeVerify", "IDCMP_SIZEVERIFY" );
lowWriteCases( FALSE, ACTIVEWINDOW_FLAG, ACTIVEWINDOW_F_FLAG, "ActiveWindow", "IDCMP_ACTIVEWINDOW" );
lowWriteCases( FALSE, INACTIVEWINDOW_FLAG, INACTIVEWINDOW_F_FLAG, "InactiveWindow", "IDCMP_INACTIVEWINDOW" );
lowWriteCases( FALSE, CHANGEWINDOW_FLAG, CHANGEWINDOW_F_FLAG, "ChangeWindow", "IDCMP_CHANGEWINDOW" );
/* we refresh window automatically if gadtools are used! */
if ( Flag1 & gadtools_FLAG || Flag2B & REFRESHWINDOW_FLAG || Flag2B & REFRESHWINDOW_F_FLAG )
WriteRefreshTopL();
lowWriteCases( FALSE, DISKINSERTED_FLAG, DISKINSERTED_F_FLAG, "DiskInserted", "IDCMP_DISKINSERTED" );
lowWriteCases( FALSE, DISKREMOVED_FLAG, DISKREMOVED_F_FLAG, "DiskRemoved", "IDCMP_DISKREMOVED" );
lowWriteCases( FALSE, NEWPREFS_FLAG, NEWPREFS_F_FLAG, "NewPrefs", "IDCMP_NEWPREFS" );
lowWriteCases( FALSE, INTUITICKS_FLAG, INTUITICKS_F_FLAG, "IntuiTicks", "IDCMP_INTUITICKS" );
lowWriteCases( FALSE, IDCMPUPDATE_FLAG, IDCMPUPDATE_F_FLAG, "IDCMPUpdate", "IDCMP_IDCMPUPDATE" );
lowWriteCases( FALSE, LONELYMESSAGE_FLAG, LONELYMESSAGE_F_FLAG, "LonelyMessage", "IDCMP_LONELYMESSAGE" );
}
VOID
lowWriteCases( BOOL fA, LONG flag, LONG f_flag,
UBYTE *low_name, UBYTE *up_name )
{
LONG our_flag = ( fA ) ? Flag2A : Flag2B;
if ( our_flag & flag || our_flag & f_flag ) {
PutStr( " case " );
PutStr( up_name );
PutStr( ":\n" );
if ( our_flag & f_flag ) {
PutStr( " " );
PutStr( (UBYTE *)PREFIX_BUF );
PutStr( low_name );
VPrintf( "%s(", (LONG *)&SUFFIX_BUF );
Pad();
if ( Variables_FLAG == LOCAL )
WriteFillIn();
Pad();
PutStr( ");\n" );
}
else {
PutStr( " " );
WriteFillIn();
PutStr( "\n" );
}
PutStr( " break;\n" );
}
}
VOID
WriteRefreshTopL()
{
PutStr( " case " );
PutStr( "IDCMP_REFRESHWINDOW" );
PutStr( ":\n" );
if ( Flag2B & REFRESHWINDOW_F_FLAG ) {
PutStr( " " );
PutStr( (UBYTE *)PREFIX_BUF );
PutStr( "RefreshWindow" );
VPrintf( "%s(", (LONG *)&SUFFIX_BUF );
Pad();
if ( Variables_FLAG == LOCAL )
WriteFillIn();
Pad();
PutStr( ");\n" );
}
else {
PutStr( " " );
lowWriteRefreshTopL();
PutStr( "\n" );
}
PutStr( " break;\n" );
}
VOID
lowWriteRefreshTopL()
{
if ( Flag1 & gadtools_FLAG ) {
/* O.K. -- the guy explicitly asked for refreshing... */
if (Flag2B & REFRESHWINDOW_FLAG || Flag2B & REFRESHWINDOW_F_FLAG ) {
if ( TopArgs_FLAG ) {
PutStr( "GT_BeginRefresh( wnd );\n\n" );
if ( Comments_FLAG == VERBOSE_COMMENTS )
PutStr( " /* own rendering (if needed) here */\n\n" );
PutStr( " GT_EndRefresh( wnd, TRUE );" );
}
else {
VPrintf( "GT_BeginRefresh( %s );\n\n", (LONG *)&IDCMP_WIN_BUF );
if ( Comments_FLAG == VERBOSE_COMMENTS ) {
PutStr( " /* own rendering (if needed) here */\n\n" );
}
VPrintf( " GT_EndRefresh( %s, TRUE );", (LONG *)&IDCMP_WIN_BUF );
}
}
/* he gets refreshing AGINST his will! */
else {
if ( TopArgs_FLAG ) {
PutStr( "GT_BeginRefresh( wnd );" );
if ( Comments_FLAG != NO_COMMENTS )
PutStr( " /* NECESSARY with gadtools! */" );
PutStr( "\n GT_EndRefresh( wnd, TRUE );" );
}
else {
VPrintf( "GT_BeginRefresh( %s );", (LONG *)&IDCMP_WIN_BUF );
if ( Comments_FLAG != NO_COMMENTS )
PutStr( " /* NECESSARY with gadtools! */" );
VPrintf( "\n GT_EndRefresh( %s, TRUE );", (LONG *)&IDCMP_WIN_BUF );
}
}
}
/* he says NO GADTOOLS required -- if so -- no AI needed either */
else {
if ( TopArgs_FLAG ) {
PutStr( "BeginRefresh( wnd );\n\n" );
if ( Comments_FLAG == VERBOSE_COMMENTS ) {
PutStr( " /* own rendering (if needed) here */\n\n" );
}
PutStr( " EndRefresh( wnd, TRUE );" );
}
else {
VPrintf( "BeginRefresh( %s );\n\n", (LONG *)&IDCMP_WIN_BUF );
if ( Comments_FLAG == VERBOSE_COMMENTS ) {
PutStr( " /* own rendering (if needed) here */\n\n" );
}
VPrintf( " EndRefresh( %s, TRUE );", (LONG *)&IDCMP_WIN_BUF );
}
}
}
VOID
WriteFSkeletons()
{
PutStr( "\n\n" );
/* still lots of raw force; perhaps should use arrays,
** but in fact this ain't bad...
*/
/* Flag2A */
lowWriteFSkeletons( TRUE, MOUSEBUTTONS_F_FLAG, "MouseButtons" );
lowWriteFSkeletons( TRUE, MOUSEMOVE_F_FLAG, "MouseMove" );
lowWriteFSkeletons( TRUE, GADGETDOWN_F_FLAG, "GadgetDown" );
lowWriteFSkeletons( TRUE, GADGETUP_F_FLAG, "GadgetUp" );
lowWriteFSkeletons( TRUE, CLOSEWINDOW_F_FLAG, "CloseWindow" );
lowWriteFSkeletons( TRUE, MENUPICK_F_FLAG, "MenuPick" );
lowWriteFSkeletons( TRUE, MENUVERIFY_F_FLAG, "MenuVerify" );
lowWriteFSkeletons( TRUE, MENUHELP_F_FLAG, "MenuHelp" );
lowWriteFSkeletons( TRUE, RAWKEY_F_FLAG, "RawKey" );
lowWriteFSkeletons( TRUE, VANILLAKEY_F_FLAG, "VanillaKey" );
lowWriteFSkeletons( TRUE, REQSET_F_FLAG, "ReqSet" );
lowWriteFSkeletons( TRUE, REQCLEAR_F_FLAG, "ReqClear" );
lowWriteFSkeletons( TRUE, REQVERIFY_F_FLAG, "ReqVerify" );
/* Flag2B */
lowWriteFSkeletons( FALSE, NEWSIZE_F_FLAG, "NewSize" );
lowWriteFSkeletons( FALSE, SIZEVERIFY_F_FLAG, "SizeVerify" );
lowWriteFSkeletons( FALSE, ACTIVEWINDOW_F_FLAG, "ActiveWindow" );
lowWriteFSkeletons( FALSE, INACTIVEWINDOW_F_FLAG, "InactiveWindow" );
lowWriteFSkeletons( FALSE, CHANGEWINDOW_F_FLAG, "ChangeWindow" );
if ( Flag2B & REFRESHWINDOW_F_FLAG )
WriteRefreshSkel();
lowWriteFSkeletons( FALSE, DISKINSERTED_F_FLAG, "DiskInserted" );
lowWriteFSkeletons( FALSE, DISKREMOVED_F_FLAG, "DiskRemoved" );
lowWriteFSkeletons( FALSE, NEWPREFS_F_FLAG, "NewPrefs" );
lowWriteFSkeletons( FALSE, INTUITICKS_F_FLAG, "IntuiTicks" );
lowWriteFSkeletons( FALSE, IDCMPUPDATE_F_FLAG, "IDCMPUpdate" );
lowWriteFSkeletons( FALSE, LONELYMESSAGE_F_FLAG, "LonelyMessage" );
}
VOID
lowWriteFSkeletons( BOOL fA, LONG flag, UBYTE *name )
{
LONG our_flag = ( fA ) ? Flag2A : Flag2B;
if ( our_flag & flag ) {
if ( Variables_FLAG == LOCAL ) {
WriteFillIn();
Pad();
PutStr( (UBYTE *)PREFIX_BUF );
PutStr( name );
VPrintf( "%s(", (LONG *)&SUFFIX_BUF );
Pad();
WriteFillIn();
Pad();
PutStr( ")\n{\n " );
WriteFillIn();
PutStr( "\n}\n\n" );
}
else {
PutStr( "\nVOID " );
PutStr( (UBYTE *)PREFIX_BUF );
PutStr( name );
VPrintf( "%s() \n{\n ", (LONG *)&SUFFIX_BUF );
WriteFillIn();
PutStr( "\n}\n\n" );
}
}
}
VOID
WriteRefreshSkel()
{
if ( Variables_FLAG == LOCAL ) {
WriteFillIn();
Pad();
PutStr( (UBYTE *)PREFIX_BUF );
PutStr( "RefreshWindow" );
if ( TopArgs_FLAG ) {
VPrintf( "%s( struct Window *wnd )\n{\n ", (LONG *)&SUFFIX_BUF );
lowWriteRefreshSkel();
}
else {
VPrintf( "%s(", (LONG *)&SUFFIX_BUF );
Pad();
WriteFillIn();
Pad();
PutStr( ")\n{\n " );
lowWriteRefreshSkel();
}
}
else {
PutStr( "\nVOID " );
PutStr( "RefreshWindow" );
if ( TopArgs_FLAG ) {
VPrintf( "%s( struct Window *wnd )\n{\n ", (LONG *)&SUFFIX_BUF );
lowWriteRefreshSkel();
}
else {
VPrintf( "%s() \n{\n ", (LONG *)&SUFFIX_BUF );
lowWriteRefreshSkel();
}
}
}
VOID
lowWriteRefreshSkel()
{
if ( Flag1 & gadtools_FLAG ) {
if ( TopArgs_FLAG ) {
PutStr( "GT_BeginRefresh( wnd );\n\n");
if ( Comments_FLAG == VERBOSE_COMMENTS ) {
PutStr( " /* own rendering (if needed) here */\n\n" );
}
PutStr( " GT_EndRefresh( wnd, TRUE );");
}
else {
VPrintf( "GT_BeginRefresh( %s );\n\n", (LONG *)&IDCMP_WIN_BUF );
if ( Comments_FLAG == VERBOSE_COMMENTS ) {
PutStr( " /* own rendering (if needed) here */\n\n" );
}
VPrintf( " GT_EndRefresh( %s, TRUE );", (LONG *)&IDCMP_WIN_BUF );
}
}
else {
if ( TopArgs_FLAG ) {
PutStr( "BeginRefresh( wnd );\n\n");
if ( Comments_FLAG == VERBOSE_COMMENTS ) {
PutStr( " /* own rendering (if needed) here */\n\n" );
}
PutStr( " EndRefresh( wnd, TRUE );");
}
else {
VPrintf( "BeginRefresh( %s );\n\n", (LONG *)&IDCMP_WIN_BUF );
if ( Comments_FLAG == VERBOSE_COMMENTS ) {
PutStr( " /* own rendering (if needed) here */\n\n" );
}
VPrintf( " EndRefresh( %s, TRUE );", (LONG *)&IDCMP_WIN_BUF );
}
}
PutStr( "\n}\n\n" );
}
VOID
WriteFillIn()
{
switch ( FillIns_FLAG ) {
case 0:
return;
case 1:
PutStr( "@@@@@@@@@@" );
break;
case 2:
PutStr( "/* @@ */" );
break;
case 3:
PutStr( "@@" );
break;
}
}
VOID
Pad()
{
if ( FillIns_FLAG != FILLS_NONE && Variables_FLAG == LOCAL )
PutStr( " " );
}