Ignore:
Timestamp:
Aug 12, 2019, 6:11:05 PM (4 months ago)
Author:
matszpk
Message:

CLRadeonExtender: ROCm: Add next stuff to parse MsgPack? metadata.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdbin/ROCmBinaries.cpp

    r4883 r4884  
    16531653    const cxbyte* dataEnd;
    16541654    size_t count;
     1655    void handleErrors();
    16551656public:
    16561657    MsgPackArrayParser(const cxbyte*& _dataPtr, const cxbyte* _dataEnd);
     
    16741675    size_t count;
    16751676    bool keyLeft;
     1677    void handleErrors(bool key);
    16761678public:
    16771679    MsgPackMapParser(const cxbyte*& _dataPtr, const cxbyte* _dataEnd);
     
    17271729}
    17281730
    1729 void MsgPackArrayParser::parseNil()
     1731void MsgPackArrayParser::handleErrors()
    17301732{
    17311733    if (count == 0)
    17321734        throw ParseException("MsgPack: No left element to parse");
     1735}
     1736
     1737void MsgPackArrayParser::parseNil()
     1738{
     1739    handleErrors();
    17331740    parseMsgPackNil(dataPtr, dataEnd);
    17341741    count--;
     
    17371744bool MsgPackArrayParser::parseBool()
    17381745{
    1739     if (count == 0)
    1740         throw ParseException("MsgPack: No left element to parse");
     1746    handleErrors();
    17411747    auto v = parseMsgPackBool(dataPtr, dataEnd);
    17421748    count--;
     
    17461752uint64_t MsgPackArrayParser::parseInteger(cxbyte signess)
    17471753{
    1748     if (count == 0)
    1749         throw ParseException("MsgPack: No left element to parse");
     1754    handleErrors();
    17501755    auto v = parseMsgPackInteger(dataPtr, dataEnd, signess);
    17511756    count--;
     
    17551760double MsgPackArrayParser::parseFloat()
    17561761{
    1757     if (count == 0)
    1758         throw ParseException("MsgPack: No left element to parse");
     1762    handleErrors();
    17591763    auto v = parseMsgPackFloat(dataPtr, dataEnd);
    17601764    count--;
     
    17641768CString MsgPackArrayParser::parseString()
    17651769{
    1766     if (count == 0)
    1767         throw ParseException("MsgPack: No left element to parse");
     1770    handleErrors();
    17681771    auto v = parseMsgPackString(dataPtr, dataEnd);
    17691772    count--;
     
    17731776Array<cxbyte> MsgPackArrayParser::parseData()
    17741777{
    1775     if (count == 0)
    1776         throw ParseException("MsgPack: No left element to parse");
     1778    handleErrors();
    17771779    auto v = parseMsgPackData(dataPtr, dataEnd);
    17781780    count--;
     
    17821784MsgPackArrayParser MsgPackArrayParser::parseArray()
    17831785{
    1784     if (count == 0)
    1785         throw ParseException("MsgPack: No left element to parse");
     1786    handleErrors();
    17861787    auto v = MsgPackArrayParser(dataPtr, dataEnd);
    17871788    count--;
     
    17911792MsgPackMapParser MsgPackArrayParser::parseMap()
    17921793{
    1793     if (count == 0)
    1794         throw ParseException("MsgPack: No left element to parse");
     1794    handleErrors();
    17951795    auto v = MsgPackMapParser(dataPtr, dataEnd);
    17961796    count--;
     
    18361836}
    18371837
    1838 void MsgPackMapParser::parseKeyNil()
     1838void MsgPackMapParser::handleErrors(bool key)
    18391839{
    18401840    if (count == 0)
    18411841        throw ParseException("MsgPack: No left element to parse");
    1842     if (!keyLeft)
     1842    if (key && !keyLeft)
    18431843        throw ParseException("MsgPack: Key already parsed");
     1844    if (!key && keyLeft)
     1845        throw ParseException("MsgPack: Value already parsed");
     1846}
     1847
     1848void MsgPackMapParser::parseKeyNil()
     1849{
     1850    handleErrors(true);
    18441851    parseMsgPackNil(dataPtr, dataEnd);
    18451852    keyLeft = false;
     
    18481855bool MsgPackMapParser::parseKeyBool()
    18491856{
    1850     if (count == 0)
    1851         throw ParseException("MsgPack: No left element to parse");
    1852     if (!keyLeft)
    1853         throw ParseException("MsgPack: Key already parsed");
     1857    handleErrors(true);
    18541858    auto v = parseMsgPackBool(dataPtr, dataEnd);
    18551859    keyLeft = false;
     
    18591863uint64_t MsgPackMapParser::parseKeyInteger(cxbyte signess)
    18601864{
    1861     if (count == 0)
    1862         throw ParseException("MsgPack: No left element to parse");
    1863     if (!keyLeft)
    1864         throw ParseException("MsgPack: Key already parsed");
     1865    handleErrors(true);
    18651866    auto v = parseMsgPackInteger(dataPtr, dataEnd, signess);
    18661867    keyLeft = false;
    18671868    return v;
    18681869}
     1870
     1871CString MsgPackMapParser::parseKeyString()
     1872{
     1873    handleErrors(true);
     1874    auto v = parseMsgPackString(dataPtr, dataEnd);
     1875    keyLeft = false;
     1876    return v;
     1877}
     1878
     1879Array<cxbyte> MsgPackMapParser::parseKeyData()
     1880{
     1881    handleErrors(true);
     1882    auto v = parseMsgPackData(dataPtr, dataEnd);
     1883    keyLeft = false;
     1884    return v;
     1885}
     1886
     1887MsgPackArrayParser MsgPackMapParser::parseKeyArray()
     1888{
     1889    handleErrors(true);
     1890    auto v = MsgPackArrayParser(dataPtr, dataEnd);
     1891    keyLeft = false;
     1892    return v;
     1893}
     1894
     1895MsgPackMapParser MsgPackMapParser::parseKeyMap()
     1896{
     1897    handleErrors(true);
     1898    auto v = MsgPackMapParser(dataPtr, dataEnd);
     1899    keyLeft = false;
     1900    return v;
     1901}
     1902
     1903void MsgPackMapParser::parseValueNil()
     1904{
     1905    handleErrors(false);
     1906    parseMsgPackNil(dataPtr, dataEnd);
     1907    keyLeft = true;
     1908    count--;
     1909}
     1910
     1911bool MsgPackMapParser::parseValueBool()
     1912{
     1913    handleErrors(false);
     1914    auto v = parseMsgPackBool(dataPtr, dataEnd);
     1915    keyLeft = true;
     1916    count--;
     1917    return v;
     1918}
     1919
     1920uint64_t MsgPackMapParser::parseValueInteger(cxbyte signess)
     1921{
     1922    handleErrors(false);
     1923    auto v = parseMsgPackInteger(dataPtr, dataEnd, signess);
     1924    keyLeft = true;
     1925    count--;
     1926    return v;
     1927}
     1928
     1929CString MsgPackMapParser::parseValueString()
     1930{
     1931    handleErrors(false);
     1932    auto v = parseMsgPackString(dataPtr, dataEnd);
     1933    keyLeft = true;
     1934    count--;
     1935    return v;
     1936}
     1937
     1938Array<cxbyte> MsgPackMapParser::parseValueData()
     1939{
     1940    handleErrors(false);
     1941    auto v = parseMsgPackData(dataPtr, dataEnd);
     1942    keyLeft = true;
     1943    count--;
     1944    return v;
     1945}
     1946
     1947MsgPackArrayParser MsgPackMapParser::parseValueArray()
     1948{
     1949    handleErrors(false);
     1950    auto v = MsgPackArrayParser(dataPtr, dataEnd);
     1951    keyLeft = true;
     1952    count--;
     1953    return v;
     1954}
     1955
     1956MsgPackMapParser MsgPackMapParser::parseValueMap()
     1957{
     1958    handleErrors(false);
     1959    auto v = MsgPackMapParser(dataPtr, dataEnd);
     1960    keyLeft = true;
     1961    count--;
     1962    return v;
     1963}
     1964
     1965size_t MsgPackMapParser::end()
     1966{
     1967    if (!keyLeft)
     1968        skipMsgPackObject(dataPtr, dataEnd);
     1969    for (size_t i = 0; i < count; i++)
     1970    {
     1971        skipMsgPackObject(dataPtr, dataEnd);
     1972        skipMsgPackObject(dataPtr, dataEnd);
     1973    }
     1974    return count;
     1975}
     1976
    18691977
    18701978static void parseROCmMetadataMsgPack(size_t metadataSize, const cxbyte* metadata,
Note: See TracChangeset for help on using the changeset viewer.