jwasm/H/macro.h
2014-06-18 19:16:56 +04:00

77 lines
3.1 KiB
C

/****************************************************************************
*
* Open Watcom Project
*
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
* ========================================================================
*
* This file contains Original Code and/or Modifications of Original
* Code as defined in and that are subject to the Sybase Open Watcom
* Public License version 1.0 (the 'License'). You may not use this file
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
* provided with the Original Code and Modifications, and is also
* available at www.sybase.com/developer/opensource.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
* NON-INFRINGEMENT. Please see the License for the specific language
* governing rights and limitations under the License.
*
* ========================================================================
*
* Description: prototypes for macro stuff
*
****************************************************************************/
#ifndef _MACRO_H_
#define _MACRO_H_
#define PLACEHOLDER_CHAR '\n' /* "escape" char for macro placeholders */
enum macro_flags {
#if MACROLABEL
MF_LABEL = 0x01, /* a label exists at pos 0 */
#endif
MF_NOSAVE = 0x02, /* no need to save/restore input status */
MF_IGNARGS = 0x04 /* ignore additional arguments (for FOR directive) */
};
/* functions in expans.c */
extern int GetLiteralValue( char *, const char * );
extern int RunMacro( struct dsym *, int, struct asm_tok[], char *, int, bool * );
extern ret_code ExpandText( char *, struct asm_tok[], unsigned int );
extern int ExpandLineItems( char *, int, struct asm_tok[], int, int );
extern ret_code ExpandLine( char *, struct asm_tok[] );
extern void ExpandLiterals( int i, struct asm_tok[] );
/* functions in macro.c */
extern struct dsym *CreateMacro( const char * );/* create a macro symbol */
extern void ReleaseMacroData( struct dsym * );
extern void fill_placeholders( char *, const char *, unsigned, unsigned, char * * );
extern void SkipCurrentQueue( struct asm_tok[] );
extern ret_code StoreMacro( struct dsym *, int, struct asm_tok[], bool ); /* store macro content */
extern ret_code MacroInit( int );
#ifdef DEBUG_OUT
extern void MacroFini( void );
#endif
/* functions in string.c */
extern struct asym *SetTextMacro( struct asm_tok[], struct asym *, const char *, const char * ); /* EQU for texts */
extern struct asym *AddPredefinedText( const char *, const char * );
extern int TextItemError( struct asm_tok * );
extern void StringInit( void );
#ifdef DEBUG_OUT
extern void StringFini( void );
#endif
#endif