1 /******************************************************************************
 2 *
 3 * Copyright (C) 2006, The Gentee Group. All rights reserved.
 4 * This file is part of the Gentee open source project - http://www.gentee.com.
 5 *
 6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT").
 7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS
 8 * ACCEPTANCE OF THE AGREEMENT.
 9 *
10 * ID: macroexp.h 03.11.06 0.0.A.
11 *
12 * Author: Alexander Krivonogov ( algen )
13 *
14 * Summary: Macro expression
15 *
16 ******************************************************************************/
17 
18 #ifndef _MACROEXP_
19 #define _MACROEXP_
20 
21    #ifdef __cplusplus
22       extern "C" {
23    #endif // __cplusplus
24 
25 #include "../os/user/defines.h"
26 #include "../lex/lex.h"
27 #include "../lex/lexgentee.h"
28 #include "../common/arrdata.h"
29 #include "../common/msglist.h"
30 #include "lexem.h"
31 #include "operlist.h"
32 #include "bcodes.h"
33 #include "../genteeapi/gentee.h"
34 
35 /*-----------------------------------------------------------------------------
36 *
37 * ID: macro 03.11.06 0.0.A.
38 *
39 * Summary: Macroexpression result structure
40 *
41 -----------------------------------------------------------------------------*/
42 typedef struct
43 {
44    lexem   vallexem; //Копия лексемы с результатом
45    uint    bvalue;   //Значение истинности для ifdef
46    uint    colpars;  //Количество параметров коллекции
47 } macrores, * pmacrores;
48 
49 /*-----------------------------------------------------------------------------
50 *
51 * ID: macro 03.11.06 0.0.A.
52 *
53 * Summary: Macroexpression operation stack structure
54 *
55 -----------------------------------------------------------------------------*/
56 typedef struct
57 {
58    plexem    operlexem;
59    uint      operid;
60    pmacrores left;
61    uint      flg;
62 } macrooper, * pmacrooper;
63 
64 //----------------------------------------------------------------------------
65 //macroexp.c
66 plexem STDCALL macroexpr( plexem curlexem, pmacrores * mr );
67 
68 //--------------------------------------------------------------------------
69 
70    #ifdef __cplusplus
71       }
72    #endif // __cplusplus
73 
74 #endif // _MACROEXP_
75