Changeset 41297 in vbox
- Timestamp:
- May 15, 2012 9:28:05 AM (12 years ago)
- File:
-
- 1 edited
-
trunk/src/bldprogs/VBoxCPP.cpp (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bldprogs/VBoxCPP.cpp
r41266 r41297 105 105 106 106 /** 107 * A define.108 */ 109 typedef struct VBCPP DEF107 * A macro (aka define). 108 */ 109 typedef struct VBCPPMACRO 110 110 { 111 111 /** The string space core. */ 112 112 RTSTRSPACECORE Core; 113 113 /** For linking macros that have the fExpanding flag set. */ 114 struct VBCPP DEF*pUpExpanding;114 struct VBCPPMACRO *pUpExpanding; 115 115 /** Whether it's a function. */ 116 116 bool fFunction; … … 132 132 /** The define value. (This is followed by the name and arguments.) */ 133 133 char szValue[1]; 134 } VBCPP DEF;135 /** Pointer to a define. */136 typedef VBCPP DEF *PVBCPPDEF;134 } VBCPPMACRO; 135 /** Pointer to a macro. */ 136 typedef VBCPPMACRO *PVBCPPMACRO; 137 137 138 138 … … 145 145 VBCPPSTRBUF StrBuf; 146 146 /** List of expanding macros (Stack). */ 147 PVBCPP DEFpMacroStack;147 PVBCPPMACRO pMacroStack; 148 148 /** The input stream (in case we want to look for parameter lists). */ 149 149 PSCMSTREAM pStrmInput; … … 518 518 * Internal Functions * 519 519 *******************************************************************************/ 520 static PVBCPP DEFvbcppMacroLookup(PVBCPP pThis, const char *pszDefine, size_t cchDefine);521 static RTEXITCODE vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPP DEFpMacro, size_t *poffParameters);520 static PVBCPPMACRO vbcppMacroLookup(PVBCPP pThis, const char *pszDefine, size_t cchDefine); 521 static RTEXITCODE vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPPMACRO pMacro, size_t *poffParameters); 522 522 static RTEXITCODE vbcppMacroExpandReScan(PVBCPP pThis, PVBCPPMACROEXP pExp, VBCPPMACRORESCANMODE enmMode, size_t *pcReplacements); 523 523 static void vbcppMacroExpandCleanup(PVBCPPMACROEXP pExp); … … 1555 1555 * Does this look like a define we know? 1556 1556 */ 1557 PVBCPP DEFpMacro = vbcppMacroLookup(pThis, pchDefine, cchDefine);1557 PVBCPPMACRO pMacro = vbcppMacroLookup(pThis, pchDefine, cchDefine); 1558 1558 if ( pMacro 1559 1559 && ( !pMacro->fFunction … … 1656 1656 * @param cchDefine The length of the name. RTSTR_MAX is ok. 1657 1657 */ 1658 static PVBCPP DEFvbcppMacroLookup(PVBCPP pThis, const char *pszDefine, size_t cchDefine)1658 static PVBCPPMACRO vbcppMacroLookup(PVBCPP pThis, const char *pszDefine, size_t cchDefine) 1659 1659 { 1660 1660 if (!cchDefine) … … 1662 1662 if (!VBCPP_BITMAP_IS_SET(pThis->bmDefined, *pszDefine)) 1663 1663 return NULL; 1664 return (PVBCPP DEF)RTStrSpaceGetN(&pThis->StrSpace, pszDefine, cchDefine);1665 } 1666 1667 1668 static uint32_t vbcppMacroLookupArg(PVBCPP DEFpMacro, const char *pchName, size_t cchName)1664 return (PVBCPPMACRO)RTStrSpaceGetN(&pThis->StrSpace, pszDefine, cchDefine); 1665 } 1666 1667 1668 static uint32_t vbcppMacroLookupArg(PVBCPPMACRO pMacro, const char *pchName, size_t cchName) 1669 1669 { 1670 1670 Assert(cchName > 0); … … 2035 2035 * should initialize and destroy this! 2036 2036 */ 2037 static RTEXITCODE vbcppMacroExpandValueWithArguments(PVBCPP pThis, PVBCPPMACROEXP pExp, PVBCPP DEFpMacro,2037 static RTEXITCODE vbcppMacroExpandValueWithArguments(PVBCPP pThis, PVBCPPMACROEXP pExp, PVBCPPMACRO pMacro, 2038 2038 PVBCPPSTRBUF pStrBuf) 2039 2039 { … … 2199 2199 * failure. 2200 2200 */ 2201 static RTEXITCODE vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPP DEFpMacro,2201 static RTEXITCODE vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPPMACRO pMacro, 2202 2202 size_t *poffParameters) 2203 2203 { … … 2434 2434 size_t cchDefine = off - offDefine; 2435 2435 2436 PVBCPP DEFpMacro = vbcppMacroLookup(pThis, &pExp->StrBuf.pszBuf[offDefine], cchDefine);2436 PVBCPPMACRO pMacro = vbcppMacroLookup(pThis, &pExp->StrBuf.pszBuf[offDefine], cchDefine); 2437 2437 if ( pMacro 2438 2438 && ( !pMacro->fFunction … … 2473 2473 while (pExp->pMacroStack) 2474 2474 { 2475 PVBCPP DEFpMacro = pExp->pMacroStack;2475 PVBCPPMACRO pMacro = pExp->pMacroStack; 2476 2476 pExp->pMacroStack = pMacro->pUpExpanding; 2477 2477 … … 2498 2498 * 2499 2499 * @returns VINF_SUCCESS (used when called by RTStrSpaceDestroy) 2500 * @param pStr Pointer to the VBCPP DEF::Core member.2500 * @param pStr Pointer to the VBCPPMACRO::Core member. 2501 2501 * @param pvUser Unused. 2502 2502 */ … … 2555 2555 * @param pMacro The define to insert. 2556 2556 */ 2557 static RTEXITCODE vbcppMacroInsert(PVBCPP pThis, PVBCPP DEFpMacro)2557 static RTEXITCODE vbcppMacroInsert(PVBCPP pThis, PVBCPPMACRO pMacro) 2558 2558 { 2559 2559 /* … … 2589 2589 * line take precendece. 2590 2590 */ 2591 PVBCPP DEF pOld = (PVBCPPDEF)RTStrSpaceGet(&pThis->StrSpace, pMacro->Core.pszString); Assert(pOld);2591 PVBCPPMACRO pOld = (PVBCPPMACRO)RTStrSpaceGet(&pThis->StrSpace, pMacro->Core.pszString); Assert(pOld); 2592 2592 if ( pThis->fAllowRedefiningCmdLineDefines 2593 2593 || pMacro->fCmdLine == pOld->fCmdLine) … … 2676 2676 * Allocate a structure. 2677 2677 */ 2678 size_t cbDef = RT_OFFSETOF(VBCPP DEF, szValue[cchValue + 1 + cchDefine + 1 + cchArgNames])2678 size_t cbDef = RT_OFFSETOF(VBCPPMACRO, szValue[cchValue + 1 + cchDefine + 1 + cchArgNames]) 2679 2679 + sizeof(const char *) * cArgs; 2680 2680 cbDef = RT_ALIGN_Z(cbDef, sizeof(const char *)); 2681 PVBCPP DEF pMacro = (PVBCPPDEF)RTMemAlloc(cbDef);2681 PVBCPPMACRO pMacro = (PVBCPPMACRO)RTMemAlloc(cbDef); 2682 2682 if (!pMacro) 2683 2683 return RTMsgErrorExit(RTEXITCODE_FAILURE, "out of memory"); … … 2688 2688 pszDst += cchDefine; 2689 2689 *pszDst++ = '\0'; 2690 pMacro->fFunction = true; 2691 pMacro->fVarArg = false; 2692 pMacro->fCmdLine = fCmdLine; 2693 pMacro->cArgs = cArgs; 2694 pMacro->papszArgs = (const char **)((uintptr_t)pMacro + cbDef - sizeof(const char *) * cArgs); 2690 pMacro->fFunction = true; 2691 pMacro->fVarArg = false; 2692 pMacro->fCmdLine = fCmdLine; 2693 pMacro->fExpanding = false; 2694 pMacro->cArgs = cArgs; 2695 pMacro->papszArgs = (const char **)((uintptr_t)pMacro + cbDef - sizeof(const char *) * cArgs); 2695 2696 VBCPP_BITMAP_EMPTY(pMacro->bmArgs); 2696 pMacro->cchValue = cchValue;2697 pMacro->cchValue = cchValue; 2697 2698 memcpy(pMacro->szValue, pszValue, cchValue); 2698 2699 pMacro->szValue[cchValue] = '\0'; … … 2793 2794 return RTEXITCODE_FAILURE; 2794 2795 2795 PVBCPP DEF pMacro = (PVBCPPDEF)RTMemAlloc(RT_OFFSETOF(VBCPPDEF, szValue[cchValue + 1 + cchDefine + 1]));2796 PVBCPPMACRO pMacro = (PVBCPPMACRO)RTMemAlloc(RT_OFFSETOF(VBCPPMACRO, szValue[cchValue + 1 + cchDefine + 1])); 2796 2797 if (!pMacro) 2797 2798 return RTMsgErrorExit(RTEXITCODE_FAILURE, "out of memory"); … … 2800 2801 memcpy((char *)pMacro->Core.pszString, pszDefine, cchDefine); 2801 2802 ((char *)pMacro->Core.pszString)[cchDefine] = '\0'; 2802 pMacro->fFunction = false; 2803 pMacro->fVarArg = false; 2804 pMacro->fCmdLine = fCmdLine; 2805 pMacro->cArgs = 0; 2806 pMacro->papszArgs = NULL; 2803 pMacro->fFunction = false; 2804 pMacro->fVarArg = false; 2805 pMacro->fCmdLine = fCmdLine; 2806 pMacro->fExpanding = false; 2807 pMacro->cArgs = 0; 2808 pMacro->papszArgs = NULL; 2807 2809 VBCPP_BITMAP_EMPTY(pMacro->bmArgs); 2808 pMacro->cchValue = cchValue;2810 pMacro->cchValue = cchValue; 2809 2811 memcpy(pMacro->szValue, pszValue, cchValue); 2810 2812 pMacro->szValue[cchValue] = '\0'; … … 2821 2823 * @param pMacro The macro. 2822 2824 */ 2823 static RTEXITCODE vbcppMacroTryConvertToInlineD(PVBCPP pThis, PVBCPP DEFpMacro)2825 static RTEXITCODE vbcppMacroTryConvertToInlineD(PVBCPP pThis, PVBCPPMACRO pMacro) 2824 2826 { 2825 2827 AssertReturn(pMacro, vbcppError(pThis, "Internal error")); … … 2834 2836 size_t cchValue = pMacro->cchValue; 2835 2837 2836 unsigned i = 0;2837 PVBCPP DEFpMacro2;2838 unsigned i = 0; 2839 PVBCPPMACRO pMacro2; 2838 2840 while ( i < 10 2839 2841 && cchValue > 0 … … 3095 3097 * Take action. 3096 3098 */ 3097 PVBCPP DEFpMacro = vbcppMacroLookup(pThis, pchDefine, cchDefine);3099 PVBCPPMACRO pMacro = vbcppMacroLookup(pThis, pchDefine, cchDefine); 3098 3100 if ( pMacro 3099 3101 && pThis->fRespectSourceDefines … … 4498 4500 else 4499 4501 { 4500 4501 4502 PVBCPPCOND pCond = pThis->pCondStack; 4502 4503 if ( pCond->enmResult != kVBCppEval_Undecided
Note:
See TracChangeset
for help on using the changeset viewer.

