VirtualBox

Ignore:
Timestamp:
Aug 21, 2024 9:46:44 AM (8 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164462
Message:

Runtime/script: Add a simple lexer API to turn a stream of characters into tokens for a defined configuration, bugref:10394 [build fix]

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/script/scriptlex.cpp

    r105746 r105750  
    564564                                        PFNRTSCRIPTLEXDTOR pfnDtor, void *pvUser,
    565565                                        size_t cchBuf, PRTSTRCACHE phStrCacheId, PRTSTRCACHE phStrCacheStringLit,
    566                                         PCRTSCRIPTLEXCFG pCfg)
     566                                        PCRTSCRIPTLEXCFG pCfg) RT_NO_THROW_DEF
    567567{
    568568    AssertPtrReturn(phScriptLex, VERR_INVALID_POINTER);
     
    573573        cchBuf = _16K;
    574574    int rc = VINF_SUCCESS;
    575     PRTSCRIPTLEXINT pThis = (PRTSCRIPTLEXINT)RTMemAllocZ(RT_OFFSETOF(RTSCRIPTLEXINT, achBuf[cchBuf]));
     575    PRTSCRIPTLEXINT pThis = (PRTSCRIPTLEXINT)RTMemAllocZ(RT_UOFFSETOF_DYN(RTSCRIPTLEXINT, achBuf[cchBuf]));
    576576    if (RT_LIKELY(pThis))
    577577    {
     
    658658
    659659RTDECL(int) RTScriptLexCreateFromString(PRTSCRIPTLEX phScriptLex, const char *pszSrc, PRTSTRCACHE phStrCacheId,
    660                                         PRTSTRCACHE phStrCacheStringLit, PCRTSCRIPTLEXCFG pCfg)
     660                                        PRTSTRCACHE phStrCacheStringLit, PCRTSCRIPTLEXCFG pCfg) RT_NO_THROW_DEF
    661661{
    662662    return RTScriptLexCreateFromReader(phScriptLex, rtScriptLexReaderStr, NULL, (void *)pszSrc, 0,
     
    681681 * @callback_method_impl{FNRTSCRIPTLEXDTOR, Destructor for the file variant.}
    682682 */
    683 static DECLCALLBACK(void) rtScriptLexDtorFile(RTSCRIPTLEX hScriptLex, void *pvUser)
     683static DECLCALLBACK(void) rtScriptLexDtorFile(RTSCRIPTLEX hScriptLex, void *pvUser) RT_NO_THROW_DEF
    684684{
    685685    RT_NOREF(hScriptLex);
     
    691691
    692692RTDECL(int) RTScriptLexCreateFromFile(PRTSCRIPTLEX phScriptLex, const char *pszFilename, PRTSTRCACHE phStrCacheId,
    693                                       PRTSTRCACHE phStrCacheStringLit, PCRTSCRIPTLEXCFG pCfg)
     693                                      PRTSTRCACHE phStrCacheStringLit, PCRTSCRIPTLEXCFG pCfg) RT_NO_THROW_DEF
    694694{
    695695    RTFILE hFile;
     
    707707
    708708
    709 RTDECL(void) RTScriptLexDestroy(RTSCRIPTLEX hScriptLex)
     709RTDECL(void) RTScriptLexDestroy(RTSCRIPTLEX hScriptLex) RT_NO_THROW_DEF
    710710{
    711711    PRTSCRIPTLEXINT pThis = hScriptLex;
     
    727727
    728728
    729 RTDECL(int) RTScriptLexQueryToken(RTSCRIPTLEX hScriptLex, PCRTSCRIPTLEXTOKEN *ppToken)
     729RTDECL(int) RTScriptLexQueryToken(RTSCRIPTLEX hScriptLex, PCRTSCRIPTLEXTOKEN *ppToken) RT_NO_THROW_DEF
    730730{
    731731    PRTSCRIPTLEXINT pThis = hScriptLex;
     
    740740
    741741
    742 RTDECL(RTSCRIPTLEXTOKTYPE) RTScriptLexGetTokenType(RTSCRIPTLEX hScriptLex)
     742RTDECL(RTSCRIPTLEXTOKTYPE) RTScriptLexGetTokenType(RTSCRIPTLEX hScriptLex) RT_NO_THROW_DEF
    743743{
    744744    PRTSCRIPTLEXINT pThis = hScriptLex;
     
    752752
    753753
    754 RTDECL(RTSCRIPTLEXTOKTYPE) RTScriptLexPeekNextTokenType(RTSCRIPTLEX hScriptLex)
     754RTDECL(RTSCRIPTLEXTOKTYPE) RTScriptLexPeekNextTokenType(RTSCRIPTLEX hScriptLex) RT_NO_THROW_DEF
    755755{
    756756    PRTSCRIPTLEXINT pThis = hScriptLex;
     
    764764
    765765
    766 RTDECL(PCRTSCRIPTLEXTOKEN) RTScriptLexConsumeToken(RTSCRIPTLEX hScriptLex)
     766RTDECL(PCRTSCRIPTLEXTOKEN) RTScriptLexConsumeToken(RTSCRIPTLEX hScriptLex) RT_NO_THROW_DEF
    767767{
    768768    PRTSCRIPTLEXINT pThis = hScriptLex;
     
    792792
    793793
    794 RTDECL(char) RTScriptLexConsumeCh(RTSCRIPTLEX hScriptLex)
     794RTDECL(char) RTScriptLexConsumeCh(RTSCRIPTLEX hScriptLex) RT_NO_THROW_DEF
    795795{
    796796    return RTScriptLexConsumeChEx(hScriptLex, RTSCRIPT_LEX_CONV_F_DEFAULT);
     
    798798
    799799
    800 RTDECL(char) RTScriptLexConsumeChEx(RTSCRIPTLEX hScriptLex, uint32_t fFlags)
     800RTDECL(char) RTScriptLexConsumeChEx(RTSCRIPTLEX hScriptLex, uint32_t fFlags) RT_NO_THROW_DEF
    801801{
    802802    PRTSCRIPTLEXINT pThis = hScriptLex;
     
    812812
    813813
    814 RTDECL(char) RTScriptLexPeekCh(RTSCRIPTLEX hScriptLex, unsigned idx)
     814RTDECL(char) RTScriptLexPeekCh(RTSCRIPTLEX hScriptLex, unsigned idx) RT_NO_THROW_DEF
    815815{
    816816    return RTScriptLexPeekChEx(hScriptLex, idx, RTSCRIPT_LEX_CONV_F_DEFAULT);
     
    818818
    819819
    820 RTDECL(char) RTScriptLexPeekChEx(RTSCRIPTLEX hScriptLex, unsigned idx, uint32_t fFlags)
     820RTDECL(char) RTScriptLexPeekChEx(RTSCRIPTLEX hScriptLex, unsigned idx, uint32_t fFlags) RT_NO_THROW_DEF
    821821{
    822822    PRTSCRIPTLEXINT pThis = hScriptLex;
     
    842842
    843843
    844 RTDECL(char) RTScriptLexGetCh(RTSCRIPTLEX hScriptLex)
     844RTDECL(char) RTScriptLexGetCh(RTSCRIPTLEX hScriptLex) RT_NO_THROW_DEF
    845845{
    846846    return RTScriptLexPeekCh(hScriptLex, 0);
     
    848848
    849849
    850 RTDECL(char) RTScriptLexGetChEx(RTSCRIPTLEX hScriptLex, uint32_t fFlags)
     850RTDECL(char) RTScriptLexGetChEx(RTSCRIPTLEX hScriptLex, uint32_t fFlags) RT_NO_THROW_DEF
    851851{
    852852    return RTScriptLexPeekChEx(hScriptLex, 0, fFlags);
     
    854854
    855855
    856 RTDECL(void) RTScriptLexSkipWhitespace(RTSCRIPTLEX hScriptLex)
     856RTDECL(void) RTScriptLexSkipWhitespace(RTSCRIPTLEX hScriptLex) RT_NO_THROW_DEF
    857857{
    858858    PRTSCRIPTLEXINT pThis = hScriptLex;
     
    882882
    883883RTDECL(int) RTScriptLexScanNumber(RTSCRIPTLEX hScriptLex, uint8_t uBase, bool fAllowReal,
    884                                   PRTSCRIPTLEXTOKEN pTok)
     884                                  PRTSCRIPTLEXTOKEN pTok) RT_NO_THROW_DEF
    885885{
    886886    RT_NOREF(uBase, fAllowReal, pTok);
     
    945945
    946946RTDECL(DECLCALLBACK(int)) RTScriptLexScanIdentifier(RTSCRIPTLEX hScriptLex, char ch,
    947                                                     PRTSCRIPTLEXTOKEN pTok, void *pvUser)
     947                                                    PRTSCRIPTLEXTOKEN pTok, void *pvUser) RT_NO_THROW_DEF
    948948{
    949949    PRTSCRIPTLEXINT pThis = hScriptLex;
     
    987987 * @param   idx                    At which position to add the character in the string.
    988988 */
    989 static int rtScriptLexScanStringLiteralChAdd(PRTSCRIPTLEXINT pThis, char ch, uint32_t idx)
     989static int rtScriptLexScanStringLiteralChAdd(PRTSCRIPTLEXINT pThis, char ch, uint32_t idx) RT_NO_THROW_DEF
    990990{
    991991    int rc = VINF_SUCCESS;
     
    10161016
    10171017RTDECL(DECLCALLBACK(int)) RTScriptLexScanStringLiteralC(RTSCRIPTLEX hScriptLex, char ch,
    1018                                                         PRTSCRIPTLEXTOKEN pTok, void *pvUser)
     1018                                                        PRTSCRIPTLEXTOKEN pTok, void *pvUser) RT_NO_THROW_DEF
    10191019{
    10201020    RT_NOREF(ch, pvUser);
     
    11141114
    11151115RTDECL(DECLCALLBACK(int)) RTScriptLexScanStringLiteralPascal(RTSCRIPTLEX hScriptLex, char ch,
    1116                                                              PRTSCRIPTLEXTOKEN pTok, void *pvUser)
     1116                                                             PRTSCRIPTLEXTOKEN pTok, void *pvUser) RT_NO_THROW_DEF
    11171117{
    11181118    RT_NOREF(ch, pvUser);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette