Lines Matching defs:pMacro

525 static RTEXITCODE   vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPPMACRO pMacro, size_t offParameters);
1561 PVBCPPMACRO pMacro = vbcppMacroLookup(pThis, pchDefine, cchDefine);
1562 if ( pMacro
1563 && ( !pMacro->fFunction
1580 rcExit = vbcppMacroExpandIt(pThis, &ExpCtx, 0 /* offset */, pMacro, cchDefine);
1671 static uint32_t vbcppMacroLookupArg(PVBCPPMACRO pMacro, const char *pchName, size_t cchName)
1676 for (uint32_t i = 0; i < pMacro->cArgs; i++)
1677 if ( pMacro->papszArgs[i][0] == ch
1678 && !strncmp(pMacro->papszArgs[i], pchName, cchName)
1679 && pMacro->papszArgs[i][cchName] == '\0')
1682 if ( pMacro->fVarArg
1685 return pMacro->cArgs;
2036 * @param pMacro The macro. Must be a function macro.
2040 static RTEXITCODE vbcppMacroExpandValueWithArguments(PVBCPP pThis, PVBCPPMACROEXP pExp, PVBCPPMACRO pMacro,
2043 Assert(pMacro->fFunction);
2048 if ( !pMacro->cchValue
2049 || (pMacro->cchValue == 1 && pMacro->szValue[0] == '#'))
2056 const char *pszSrc = pMacro->szValue;
2134 if ( VBCPP_BITMAP_IS_SET(pMacro->bmArgs, *pszSrcSeq)
2135 && (iArg = vbcppMacroLookupArg(pMacro, pszSrcSeq, cchDefine)) != UINT32_MAX)
2138 if (iArg < pMacro->cArgs)
2193 * @param pMacro The macro.
2200 static RTEXITCODE vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPPMACRO pMacro,
2204 Assert(offMacro + pMacro->Core.cchString <= pExp->StrBuf.cchBuf);
2205 Assert(!pMacro->fExpanding);
2210 if (pMacro->fFunction)
2212 rcExit = vbcppMacroExpandGatherParameters(pThis, pExp, &offParameters, pMacro->cArgs + pMacro->fVarArg);
2215 if (pExp->cArgs > pMacro->cArgs && !pMacro->fVarArg)
2217 pMacro->Core.pszString, pExp->cArgs, pMacro->cArgs);
2218 else if (pExp->cArgs < pMacro->cArgs)
2220 pMacro->Core.pszString, pExp->cArgs, pMacro->cArgs);
2226 rcExit = vbcppMacroExpandValueWithArguments(pThis, pExp, pMacro, &ValueBuf);
2237 rcExit = vbcppMacroExpandReplace(pThis, pExp, offMacro, pMacro->Core.cchString, pMacro->szValue, pMacro->cchValue);
2244 pMacro->fExpanding = true;
2245 pMacro->pUpExpanding = pExp->pMacroStack;
2246 pExp->pMacroStack = pMacro;
2437 PVBCPPMACRO pMacro = vbcppMacroLookup(pThis, &pExp->StrBuf.pszBuf[offDefine], cchDefine);
2438 if ( pMacro
2439 && ( !pMacro->fFunction
2442 rcExit = vbcppMacroExpandIt(pThis, pExp, offDefine, pMacro, off);
2447 if ( !pMacro
2480 PVBCPPMACRO pMacro = pExp->pMacroStack;
2481 pExp->pMacroStack = pMacro->pUpExpanding;
2483 pMacro->fExpanding = false;
2484 pMacro->pUpExpanding = NULL;
2561 * @param pMacro The define to insert.
2563 static RTEXITCODE vbcppMacroInsert(PVBCPP pThis, PVBCPPMACRO pMacro)
2568 if (!strcmp(pMacro->Core.pszString, "defined"))
2570 RTEXITCODE rcExit = vbcppError(pThis, "Cannot use '%s' as a macro name", pMacro->Core.pszString);
2571 vbcppMacroFree(&pMacro->Core, NULL);
2579 && !pMacro->fCmdLine)
2582 vbcppMacroFree(&pMacro->Core, NULL);
2589 if (RTStrSpaceInsert(&pThis->StrSpace, &pMacro->Core))
2590 VBCPP_BITMAP_SET(pThis->bmDefined, *pMacro->Core.pszString);
2597 PVBCPPMACRO pOld = (PVBCPPMACRO)RTStrSpaceGet(&pThis->StrSpace, pMacro->Core.pszString); Assert(pOld);
2599 || pMacro->fCmdLine == pOld->fCmdLine)
2601 if (pMacro->fCmdLine)
2602 RTMsgWarning("Redefining '%s'", pMacro->Core.pszString);
2607 bool fRc = RTStrSpaceInsert(&pThis->StrSpace, &pMacro->Core);
2612 RTMsgWarning("Ignoring redefinition of '%s'", pMacro->Core.pszString);
2613 vbcppMacroFree(&pMacro->Core, NULL);
2687 PVBCPPMACRO pMacro = (PVBCPPMACRO)RTMemAlloc(cbDef);
2688 if (!pMacro)
2691 char *pszDst = &pMacro->szValue[cchValue + 1];
2692 pMacro->Core.pszString = pszDst;
2696 pMacro->fFunction = true;
2697 pMacro->fVarArg = false;
2698 pMacro->fCmdLine = fCmdLine;
2699 pMacro->fExpanding = false;
2700 pMacro->cArgs = cArgs;
2701 pMacro->papszArgs = (const char **)((uintptr_t)pMacro + cbDef - sizeof(const char *) * cArgs);
2702 VBCPP_BITMAP_EMPTY(pMacro->bmArgs);
2703 pMacro->cchValue = cchValue;
2704 memcpy(pMacro->szValue, pszValue, cchValue);
2705 pMacro->szValue[cchValue] = '\0';
2729 VBCPP_BITMAP_SET(pMacro->bmArgs, pszParams[off]);
2730 pMacro->papszArgs[iArg] = pszDst;
2739 Assert((uintptr_t)pszDst <= (uintptr_t)pMacro->papszArgs);
2741 return vbcppMacroInsert(pThis, pMacro);
2802 PVBCPPMACRO pMacro = (PVBCPPMACRO)RTMemAlloc(RT_OFFSETOF(VBCPPMACRO, szValue[cchValue + 1 + cchDefine + 1]));
2803 if (!pMacro)
2806 pMacro->Core.pszString = &pMacro->szValue[cchValue + 1];
2807 memcpy((char *)pMacro->Core.pszString, pszDefine, cchDefine);
2808 ((char *)pMacro->Core.pszString)[cchDefine] = '\0';
2809 pMacro->fFunction = false;
2810 pMacro->fVarArg = false;
2811 pMacro->fCmdLine = fCmdLine;
2812 pMacro->fExpanding = false;
2813 pMacro->cArgs = 0;
2814 pMacro->papszArgs = NULL;
2815 VBCPP_BITMAP_EMPTY(pMacro->bmArgs);
2816 pMacro->cchValue = cchValue;
2817 memcpy(pMacro->szValue, pszValue, cchValue);
2818 pMacro->szValue[cchValue] = '\0';
2820 return vbcppMacroInsert(pThis, pMacro);
2829 * @param pMacro The macro.
2831 static RTEXITCODE vbcppMacroTryConvertToInlineD(PVBCPP pThis, PVBCPPMACRO pMacro)
2833 AssertReturn(pMacro, vbcppError(pThis, "Internal error"));
2834 if (pMacro->fFunction)
2840 const char *pszDefine = pMacro->Core.pszString;
2841 const char *pszValue = pMacro->szValue;
2842 size_t cchValue = pMacro->cchValue;
2857 if (!pMacro->cchValue)
3105 PVBCPPMACRO pMacro = vbcppMacroLookup(pThis, pchDefine, cchDefine);
3106 if ( pMacro
3108 && ( !pMacro->fCmdLine
3111 RTStrSpaceRemove(&pThis->StrSpace, pMacro->Core.pszString);
3112 vbcppMacroFree(&pMacro->Core, NULL);