14c52cad2SJung-uk Kim /****************************************************************************** 24c52cad2SJung-uk Kim * 34c52cad2SJung-uk Kim * Module Name: preprocess.h - header for iASL Preprocessor 44c52cad2SJung-uk Kim * 54c52cad2SJung-uk Kim *****************************************************************************/ 64c52cad2SJung-uk Kim 70d84335fSJung-uk Kim /****************************************************************************** 80d84335fSJung-uk Kim * 90d84335fSJung-uk Kim * 1. Copyright Notice 100d84335fSJung-uk Kim * 11*58308fadSJung-uk Kim * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. 124c52cad2SJung-uk Kim * All rights reserved. 134c52cad2SJung-uk Kim * 140d84335fSJung-uk Kim * 2. License 150d84335fSJung-uk Kim * 160d84335fSJung-uk Kim * 2.1. This is your license from Intel Corp. under its intellectual property 170d84335fSJung-uk Kim * rights. You may have additional license terms from the party that provided 180d84335fSJung-uk Kim * you this software, covering your right to use that party's intellectual 190d84335fSJung-uk Kim * property rights. 200d84335fSJung-uk Kim * 210d84335fSJung-uk Kim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 220d84335fSJung-uk Kim * copy of the source code appearing in this file ("Covered Code") an 230d84335fSJung-uk Kim * irrevocable, perpetual, worldwide license under Intel's copyrights in the 240d84335fSJung-uk Kim * base code distributed originally by Intel ("Original Intel Code") to copy, 250d84335fSJung-uk Kim * make derivatives, distribute, use and display any portion of the Covered 260d84335fSJung-uk Kim * Code in any form, with the right to sublicense such rights; and 270d84335fSJung-uk Kim * 280d84335fSJung-uk Kim * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 290d84335fSJung-uk Kim * license (with the right to sublicense), under only those claims of Intel 300d84335fSJung-uk Kim * patents that are infringed by the Original Intel Code, to make, use, sell, 310d84335fSJung-uk Kim * offer to sell, and import the Covered Code and derivative works thereof 320d84335fSJung-uk Kim * solely to the minimum extent necessary to exercise the above copyright 330d84335fSJung-uk Kim * license, and in no event shall the patent license extend to any additions 340d84335fSJung-uk Kim * to or modifications of the Original Intel Code. No other license or right 350d84335fSJung-uk Kim * is granted directly or by implication, estoppel or otherwise; 360d84335fSJung-uk Kim * 370d84335fSJung-uk Kim * The above copyright and patent license is granted only if the following 380d84335fSJung-uk Kim * conditions are met: 390d84335fSJung-uk Kim * 400d84335fSJung-uk Kim * 3. Conditions 410d84335fSJung-uk Kim * 420d84335fSJung-uk Kim * 3.1. Redistribution of Source with Rights to Further Distribute Source. 430d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 440d84335fSJung-uk Kim * Code or modification with rights to further distribute source must include 450d84335fSJung-uk Kim * the above Copyright Notice, the above License, this list of Conditions, 460d84335fSJung-uk Kim * and the following Disclaimer and Export Compliance provision. In addition, 470d84335fSJung-uk Kim * Licensee must cause all Covered Code to which Licensee contributes to 480d84335fSJung-uk Kim * contain a file documenting the changes Licensee made to create that Covered 490d84335fSJung-uk Kim * Code and the date of any change. Licensee must include in that file the 500d84335fSJung-uk Kim * documentation of any changes made by any predecessor Licensee. Licensee 510d84335fSJung-uk Kim * must include a prominent statement that the modification is derived, 520d84335fSJung-uk Kim * directly or indirectly, from Original Intel Code. 530d84335fSJung-uk Kim * 540d84335fSJung-uk Kim * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 550d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 560d84335fSJung-uk Kim * Code or modification without rights to further distribute source must 570d84335fSJung-uk Kim * include the following Disclaimer and Export Compliance provision in the 580d84335fSJung-uk Kim * documentation and/or other materials provided with distribution. In 590d84335fSJung-uk Kim * addition, Licensee may not authorize further sublicense of source of any 600d84335fSJung-uk Kim * portion of the Covered Code, and must include terms to the effect that the 610d84335fSJung-uk Kim * license from Licensee to its licensee is limited to the intellectual 620d84335fSJung-uk Kim * property embodied in the software Licensee provides to its licensee, and 630d84335fSJung-uk Kim * not to intellectual property embodied in modifications its licensee may 640d84335fSJung-uk Kim * make. 650d84335fSJung-uk Kim * 660d84335fSJung-uk Kim * 3.3. Redistribution of Executable. Redistribution in executable form of any 670d84335fSJung-uk Kim * substantial portion of the Covered Code or modification must reproduce the 680d84335fSJung-uk Kim * above Copyright Notice, and the following Disclaimer and Export Compliance 690d84335fSJung-uk Kim * provision in the documentation and/or other materials provided with the 700d84335fSJung-uk Kim * distribution. 710d84335fSJung-uk Kim * 720d84335fSJung-uk Kim * 3.4. Intel retains all right, title, and interest in and to the Original 730d84335fSJung-uk Kim * Intel Code. 740d84335fSJung-uk Kim * 750d84335fSJung-uk Kim * 3.5. Neither the name Intel nor any other trademark owned or controlled by 760d84335fSJung-uk Kim * Intel shall be used in advertising or otherwise to promote the sale, use or 770d84335fSJung-uk Kim * other dealings in products derived from or relating to the Covered Code 780d84335fSJung-uk Kim * without prior written authorization from Intel. 790d84335fSJung-uk Kim * 800d84335fSJung-uk Kim * 4. Disclaimer and Export Compliance 810d84335fSJung-uk Kim * 820d84335fSJung-uk Kim * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 830d84335fSJung-uk Kim * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 840d84335fSJung-uk Kim * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 850d84335fSJung-uk Kim * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 860d84335fSJung-uk Kim * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 870d84335fSJung-uk Kim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 880d84335fSJung-uk Kim * PARTICULAR PURPOSE. 890d84335fSJung-uk Kim * 900d84335fSJung-uk Kim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 910d84335fSJung-uk Kim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 920d84335fSJung-uk Kim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 930d84335fSJung-uk Kim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 940d84335fSJung-uk Kim * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 950d84335fSJung-uk Kim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 960d84335fSJung-uk Kim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 970d84335fSJung-uk Kim * LIMITED REMEDY. 980d84335fSJung-uk Kim * 990d84335fSJung-uk Kim * 4.3. Licensee shall not export, either directly or indirectly, any of this 1000d84335fSJung-uk Kim * software or system incorporating such software without first obtaining any 1010d84335fSJung-uk Kim * required license or other approval from the U. S. Department of Commerce or 1020d84335fSJung-uk Kim * any other agency or department of the United States Government. In the 1030d84335fSJung-uk Kim * event Licensee exports any such software from the United States or 1040d84335fSJung-uk Kim * re-exports any such software from a foreign destination, Licensee shall 1050d84335fSJung-uk Kim * ensure that the distribution and export/re-export of the software is in 1060d84335fSJung-uk Kim * compliance with all laws, regulations, orders, or other restrictions of the 1070d84335fSJung-uk Kim * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1080d84335fSJung-uk Kim * any of its subsidiaries will export/re-export any technical data, process, 1090d84335fSJung-uk Kim * software, or service, directly or indirectly, to any country for which the 1100d84335fSJung-uk Kim * United States government or any agency thereof requires an export license, 1110d84335fSJung-uk Kim * other governmental approval, or letter of assurance, without first obtaining 1120d84335fSJung-uk Kim * such license, approval or letter. 1130d84335fSJung-uk Kim * 1140d84335fSJung-uk Kim ***************************************************************************** 1150d84335fSJung-uk Kim * 1160d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 1170d84335fSJung-uk Kim * following license: 1180d84335fSJung-uk Kim * 1194c52cad2SJung-uk Kim * Redistribution and use in source and binary forms, with or without 1204c52cad2SJung-uk Kim * modification, are permitted provided that the following conditions 1214c52cad2SJung-uk Kim * are met: 1224c52cad2SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 1234c52cad2SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 1244c52cad2SJung-uk Kim * without modification. 1254c52cad2SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 1264c52cad2SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 1274c52cad2SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 1284c52cad2SJung-uk Kim * including a substantially similar Disclaimer requirement for further 1294c52cad2SJung-uk Kim * binary redistribution. 1304c52cad2SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 1314c52cad2SJung-uk Kim * of any contributors may be used to endorse or promote products derived 1324c52cad2SJung-uk Kim * from this software without specific prior written permission. 1334c52cad2SJung-uk Kim * 1340d84335fSJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1350d84335fSJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1360d84335fSJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1370d84335fSJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1380d84335fSJung-uk Kim * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1390d84335fSJung-uk Kim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1400d84335fSJung-uk Kim * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1410d84335fSJung-uk Kim * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1420d84335fSJung-uk Kim * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1430d84335fSJung-uk Kim * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1440d84335fSJung-uk Kim * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1450d84335fSJung-uk Kim * 1460d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 1474c52cad2SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 1484c52cad2SJung-uk Kim * Software Foundation. 1494c52cad2SJung-uk Kim * 1500d84335fSJung-uk Kim *****************************************************************************/ 1514c52cad2SJung-uk Kim 1524c52cad2SJung-uk Kim #define __PREPROCESS_H__ 1534c52cad2SJung-uk Kim 1544c52cad2SJung-uk Kim #ifndef _PREPROCESS 1554c52cad2SJung-uk Kim #define _PREPROCESS 1564c52cad2SJung-uk Kim 1574c52cad2SJung-uk Kim #undef PR_EXTERN 1584c52cad2SJung-uk Kim 1594c52cad2SJung-uk Kim #ifdef _DECLARE_PR_GLOBALS 1604c52cad2SJung-uk Kim #define PR_EXTERN 1614c52cad2SJung-uk Kim #define PR_INIT_GLOBAL(a,b) (a)=(b) 1624c52cad2SJung-uk Kim #else 1634c52cad2SJung-uk Kim #define PR_EXTERN extern 1644c52cad2SJung-uk Kim #define PR_INIT_GLOBAL(a,b) (a) 1654c52cad2SJung-uk Kim #endif 1664c52cad2SJung-uk Kim 1674c52cad2SJung-uk Kim 1684c52cad2SJung-uk Kim /* 1694c52cad2SJung-uk Kim * Configuration 1704c52cad2SJung-uk Kim */ 1714c52cad2SJung-uk Kim #define PR_MAX_MACRO_ARGS 32 /* Max number of macro args */ 1724c52cad2SJung-uk Kim #define PR_MAX_ARG_INSTANCES 24 /* Max instances of any one arg */ 1734c52cad2SJung-uk Kim #define PR_LINES_PER_BLOCK 4096 /* Max input source lines per block */ 1744c52cad2SJung-uk Kim 1754c52cad2SJung-uk Kim 1764c52cad2SJung-uk Kim /* 1774c52cad2SJung-uk Kim * Local defines and macros 1784c52cad2SJung-uk Kim */ 1794c52cad2SJung-uk Kim #define PR_TOKEN_SEPARATORS " ,(){}\t\n" 1804c52cad2SJung-uk Kim #define PR_MACRO_SEPARATORS " ,(){}~!*/%+-<>=&^|\"\t\n" 1814c52cad2SJung-uk Kim #define PR_MACRO_ARGUMENTS " ,\t\n" 1824c52cad2SJung-uk Kim #define PR_EXPR_SEPARATORS " ,(){}~!*/%+-<>=&^|\"\t\n" 1834c52cad2SJung-uk Kim 1844c52cad2SJung-uk Kim #define PR_PREFIX_ID "Pr(%.4u) - " /* Used for debug output */ 1854c52cad2SJung-uk Kim 1866f1f1a63SJung-uk Kim #define THIS_TOKEN_OFFSET(t) ((AslGbl_MainTokenBuffer - t) + 1) 1874c52cad2SJung-uk Kim 1884c52cad2SJung-uk Kim 1894c52cad2SJung-uk Kim /* 1904c52cad2SJung-uk Kim * Preprocessor structures 1914c52cad2SJung-uk Kim */ 1924c52cad2SJung-uk Kim typedef struct pr_macro_arg 1934c52cad2SJung-uk Kim { 1944c52cad2SJung-uk Kim char *Name; 1954c52cad2SJung-uk Kim UINT32 Offset[PR_MAX_ARG_INSTANCES]; 1964c52cad2SJung-uk Kim UINT16 UseCount; 1974c52cad2SJung-uk Kim 1984c52cad2SJung-uk Kim } PR_MACRO_ARG; 1994c52cad2SJung-uk Kim 2004c52cad2SJung-uk Kim typedef struct pr_define_info 2014c52cad2SJung-uk Kim { 2024c52cad2SJung-uk Kim struct pr_define_info *Previous; 2034c52cad2SJung-uk Kim struct pr_define_info *Next; 2044c52cad2SJung-uk Kim char *Identifier; 2054c52cad2SJung-uk Kim char *Replacement; 2064c52cad2SJung-uk Kim char *Body; /* Macro body */ 2074c52cad2SJung-uk Kim PR_MACRO_ARG *Args; /* Macro arg list */ 2084c52cad2SJung-uk Kim UINT16 ArgCount; /* Macro arg count */ 2094c52cad2SJung-uk Kim BOOLEAN Persist; /* Keep for entire compiler run */ 2104c52cad2SJung-uk Kim 2114c52cad2SJung-uk Kim } PR_DEFINE_INFO; 2124c52cad2SJung-uk Kim 2134c52cad2SJung-uk Kim typedef struct pr_directive_info 2144c52cad2SJung-uk Kim { 2154c52cad2SJung-uk Kim char *Name; /* Directive name */ 2164c52cad2SJung-uk Kim UINT8 ArgCount; /* Required # of args */ 2174c52cad2SJung-uk Kim 2184c52cad2SJung-uk Kim } PR_DIRECTIVE_INFO; 2194c52cad2SJung-uk Kim 2204c52cad2SJung-uk Kim typedef struct pr_operator_info 2214c52cad2SJung-uk Kim { 2224c52cad2SJung-uk Kim char *Op; 2234c52cad2SJung-uk Kim 2244c52cad2SJung-uk Kim } PR_OPERATOR_INFO; 2254c52cad2SJung-uk Kim 2264c52cad2SJung-uk Kim typedef struct pr_file_node 2274c52cad2SJung-uk Kim { 2284c52cad2SJung-uk Kim struct pr_file_node *Next; 2294c52cad2SJung-uk Kim FILE *File; 2304c52cad2SJung-uk Kim char *Filename; 2314c52cad2SJung-uk Kim UINT32 CurrentLineNumber; 2324c52cad2SJung-uk Kim 2334c52cad2SJung-uk Kim } PR_FILE_NODE; 2344c52cad2SJung-uk Kim 2358d744e47SJung-uk Kim #define MAX_ARGUMENT_LENGTH 24 2368d744e47SJung-uk Kim 2378d744e47SJung-uk Kim typedef struct directive_info 2388d744e47SJung-uk Kim { 2398d744e47SJung-uk Kim struct directive_info *Next; 2408d744e47SJung-uk Kim char Argument[MAX_ARGUMENT_LENGTH]; 2418d744e47SJung-uk Kim int Directive; 2428d744e47SJung-uk Kim BOOLEAN IgnoringThisCodeBlock; 2438d744e47SJung-uk Kim 2448d744e47SJung-uk Kim } DIRECTIVE_INFO; 2458d744e47SJung-uk Kim 2464c52cad2SJung-uk Kim 2474c52cad2SJung-uk Kim /* 2484c52cad2SJung-uk Kim * Globals 2494c52cad2SJung-uk Kim */ 2506f1f1a63SJung-uk Kim PR_EXTERN char PR_INIT_GLOBAL (*AslGbl_MainTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ 2516f1f1a63SJung-uk Kim PR_EXTERN char PR_INIT_GLOBAL (*AslGbl_MacroTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ 252722b1667SJung-uk Kim PR_EXTERN char PR_INIT_GLOBAL (*AslGbl_MacroTokenReplaceBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ 2536f1f1a63SJung-uk Kim PR_EXTERN char PR_INIT_GLOBAL (*AslGbl_ExpressionTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ 2546f1f1a63SJung-uk Kim 2556f1f1a63SJung-uk Kim PR_EXTERN UINT32 AslGbl_PreprocessorLineNumber; 2566f1f1a63SJung-uk Kim PR_EXTERN int AslGbl_IfDepth; 2576f1f1a63SJung-uk Kim PR_EXTERN PR_FILE_NODE *AslGbl_InputFileList; 2586f1f1a63SJung-uk Kim PR_EXTERN BOOLEAN PR_INIT_GLOBAL (AslGbl_PreprocessorError, FALSE); 2596f1f1a63SJung-uk Kim PR_EXTERN BOOLEAN PR_INIT_GLOBAL (AslGbl_IgnoringThisCodeBlock, FALSE); 2606f1f1a63SJung-uk Kim PR_EXTERN PR_DEFINE_INFO PR_INIT_GLOBAL (*AslGbl_DefineList, NULL); 2616f1f1a63SJung-uk Kim PR_EXTERN DIRECTIVE_INFO PR_INIT_GLOBAL (*AslGbl_DirectiveStack, NULL); 2626f1f1a63SJung-uk Kim 263042ff955SJung-uk Kim #if 0 /* TBD for macros */ 264042ff955SJung-uk Kim PR_EXTERN char PR_INIT_GLOBAL (*XXXEvalBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ 265042ff955SJung-uk Kim #endif 266042ff955SJung-uk Kim 2674c52cad2SJung-uk Kim 2684c52cad2SJung-uk Kim /* 2694c52cad2SJung-uk Kim * prscan - Preprocessor entry 2704c52cad2SJung-uk Kim */ 2714c52cad2SJung-uk Kim void 2724c52cad2SJung-uk Kim PrInitializePreprocessor ( 2734c52cad2SJung-uk Kim void); 2744c52cad2SJung-uk Kim 2754c52cad2SJung-uk Kim void 2764c52cad2SJung-uk Kim PrInitializeGlobals ( 2774c52cad2SJung-uk Kim void); 2784c52cad2SJung-uk Kim 2794c52cad2SJung-uk Kim void 2804c52cad2SJung-uk Kim PrTerminatePreprocessor ( 2814c52cad2SJung-uk Kim void); 2824c52cad2SJung-uk Kim 2838d744e47SJung-uk Kim void 2844c52cad2SJung-uk Kim PrDoPreprocess ( 2854c52cad2SJung-uk Kim void); 2864c52cad2SJung-uk Kim 2874c52cad2SJung-uk Kim UINT64 2884c52cad2SJung-uk Kim PrIsDefined ( 2894c52cad2SJung-uk Kim char *Identifier); 2904c52cad2SJung-uk Kim 2914c52cad2SJung-uk Kim UINT64 2924c52cad2SJung-uk Kim PrResolveDefine ( 2934c52cad2SJung-uk Kim char *Identifier); 2944c52cad2SJung-uk Kim 2954c52cad2SJung-uk Kim int 2964c52cad2SJung-uk Kim PrInitLexer ( 2974c52cad2SJung-uk Kim char *String); 2984c52cad2SJung-uk Kim 2994c52cad2SJung-uk Kim void 3004c52cad2SJung-uk Kim PrTerminateLexer ( 3014c52cad2SJung-uk Kim void); 3024c52cad2SJung-uk Kim 3034c52cad2SJung-uk Kim 3044c52cad2SJung-uk Kim /* 3054c52cad2SJung-uk Kim * prmacros - Support for #defines and macros 3064c52cad2SJung-uk Kim */ 3074c52cad2SJung-uk Kim void 3084c52cad2SJung-uk Kim PrDumpPredefinedNames ( 3094c52cad2SJung-uk Kim void); 3104c52cad2SJung-uk Kim 3114c52cad2SJung-uk Kim PR_DEFINE_INFO * 3124c52cad2SJung-uk Kim PrAddDefine ( 3134c52cad2SJung-uk Kim char *Token, 3144c52cad2SJung-uk Kim char *Token2, 3154c52cad2SJung-uk Kim BOOLEAN Persist); 3164c52cad2SJung-uk Kim 3174c52cad2SJung-uk Kim void 3184c52cad2SJung-uk Kim PrRemoveDefine ( 3194c52cad2SJung-uk Kim char *DefineName); 3204c52cad2SJung-uk Kim 3214c52cad2SJung-uk Kim PR_DEFINE_INFO * 3224c52cad2SJung-uk Kim PrMatchDefine ( 3234c52cad2SJung-uk Kim char *MatchString); 3244c52cad2SJung-uk Kim 3254c52cad2SJung-uk Kim void 3264c52cad2SJung-uk Kim PrAddMacro ( 3274c52cad2SJung-uk Kim char *Name, 3284c52cad2SJung-uk Kim char **Next); 3294c52cad2SJung-uk Kim 3304c52cad2SJung-uk Kim void 3314c52cad2SJung-uk Kim PrDoMacroInvocation ( 3324c52cad2SJung-uk Kim char *TokenBuffer, 3334c52cad2SJung-uk Kim char *MacroStart, 3344c52cad2SJung-uk Kim PR_DEFINE_INFO *DefineInfo, 3354c52cad2SJung-uk Kim char **Next); 3364c52cad2SJung-uk Kim 3374c52cad2SJung-uk Kim 3384c52cad2SJung-uk Kim /* 3394c52cad2SJung-uk Kim * prexpress - #if expression support 3404c52cad2SJung-uk Kim */ 3414c52cad2SJung-uk Kim ACPI_STATUS 3424c52cad2SJung-uk Kim PrResolveIntegerExpression ( 3434c52cad2SJung-uk Kim char *Line, 3444c52cad2SJung-uk Kim UINT64 *ReturnValue); 3454c52cad2SJung-uk Kim 3464c52cad2SJung-uk Kim char * 3474c52cad2SJung-uk Kim PrPrioritizeExpression ( 3484c52cad2SJung-uk Kim char *OriginalLine); 3494c52cad2SJung-uk Kim 3504c52cad2SJung-uk Kim /* 3514c52cad2SJung-uk Kim * prparser - lex/yacc expression parser 3524c52cad2SJung-uk Kim */ 3534c52cad2SJung-uk Kim UINT64 3544c52cad2SJung-uk Kim PrEvaluateExpression ( 3554c52cad2SJung-uk Kim char *ExprString); 3564c52cad2SJung-uk Kim 3574c52cad2SJung-uk Kim 3584c52cad2SJung-uk Kim /* 3591b7a2680SJung-uk Kim * prutils - Preprocessor utilities 3604c52cad2SJung-uk Kim */ 3614c52cad2SJung-uk Kim char * 3624c52cad2SJung-uk Kim PrGetNextToken ( 3634c52cad2SJung-uk Kim char *Buffer, 3644c52cad2SJung-uk Kim char *MatchString, 3654c52cad2SJung-uk Kim char **Next); 3664c52cad2SJung-uk Kim 3674c52cad2SJung-uk Kim void 3684c52cad2SJung-uk Kim PrError ( 3694c52cad2SJung-uk Kim UINT8 Level, 370313a0c13SJung-uk Kim UINT16 MessageId, 3714c52cad2SJung-uk Kim UINT32 Column); 3724c52cad2SJung-uk Kim 3734c52cad2SJung-uk Kim void 374722b1667SJung-uk Kim PrReplaceResizeSubstring( 375722b1667SJung-uk Kim PR_MACRO_ARG *Args, 376722b1667SJung-uk Kim UINT32 Diff1, 377722b1667SJung-uk Kim UINT32 Diff2, 378722b1667SJung-uk Kim UINT32 i, 379722b1667SJung-uk Kim char *Token); 380722b1667SJung-uk Kim 381722b1667SJung-uk Kim char * 3824c52cad2SJung-uk Kim PrReplaceData ( 3834c52cad2SJung-uk Kim char *Buffer, 3844c52cad2SJung-uk Kim UINT32 LengthToRemove, 3854c52cad2SJung-uk Kim char *BufferToAdd, 3864c52cad2SJung-uk Kim UINT32 LengthToAdd); 3874c52cad2SJung-uk Kim 388a371a5fdSJung-uk Kim FILE * 3894c52cad2SJung-uk Kim PrOpenIncludeFile ( 390a371a5fdSJung-uk Kim char *Filename, 391a371a5fdSJung-uk Kim char *OpenMode, 392a371a5fdSJung-uk Kim char **FullPathname); 3934c52cad2SJung-uk Kim 3944c52cad2SJung-uk Kim FILE * 3954c52cad2SJung-uk Kim PrOpenIncludeWithPrefix ( 3964c52cad2SJung-uk Kim char *PrefixDir, 397a371a5fdSJung-uk Kim char *Filename, 398a371a5fdSJung-uk Kim char *OpenMode, 399a371a5fdSJung-uk Kim char **FullPathname); 4004c52cad2SJung-uk Kim 4014c52cad2SJung-uk Kim void 4024c52cad2SJung-uk Kim PrPushInputFileStack ( 4034c52cad2SJung-uk Kim FILE *InputFile, 4044c52cad2SJung-uk Kim char *Filename); 4054c52cad2SJung-uk Kim 4064c52cad2SJung-uk Kim BOOLEAN 4074c52cad2SJung-uk Kim PrPopInputFileStack ( 4084c52cad2SJung-uk Kim void); 4094c52cad2SJung-uk Kim 4104c52cad2SJung-uk Kim #endif 411