VirtualBox

Changeset 73978 in vbox for trunk/include


Ignore:
Timestamp:
Aug 30, 2018 1:19:36 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
124714
Message:

IPRT/rest: Fixed empty array & map handling by making the begin iteration functions return VERR_JSON_IS_EMPTY rather than letter the query method do that. Made query parameter processing table driven and made it use the right escapeing. bugref:9167

Location:
trunk/include/iprt
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/cpp/restbase.h

    r73977 r73978  
    303303        kCollectionFormat_tsv,              /**< Tab-separated list. */
    304304        kCollectionFormat_pipes,            /**< Pipe-separated list. */
     305        kCollectionFormat_multi,            /**< Special collection type that must be handled by caller of toString. */
    305306        kCollectionFormat_Mask = 7,         /**< Collection type mask. */
    306307
     
    13701371
    13711372    /**
     1373     * Do path parameters.
    13721374     *
    13731375     * @returns IPRT status code
     
    13801382    int doPathParameters(RTCString *a_pStrPath, const char *a_pszPathTemplate, size_t a_cchPathTemplate,
    13811383                         PATHREPLACEENTRY *a_paPathParams, size_t a_cPathParams) const;
     1384
     1385    /** Query parameter descriptor. */
     1386    typedef struct
     1387    {
     1388        const char                 *pszName;    /**< The parameter name. */
     1389        uint32_t                    fFlags;     /**< The toString flags. */
     1390        bool                        fRequired;  /**< Required or not. */
     1391    } QUERYPARAMDESC;
     1392
     1393    /**
     1394     * Do query parameters.
     1395     *
     1396     * @returns IPRT status code
     1397     * @param   a_pStrQuery         The destination string.
     1398     * @param   a_paQueryParams     The query parameter descriptors.
     1399     * @param   a_papQueryParamObjs The query parameter objects, parallel to @a a_paQueryParams.
     1400     * @param   a_cQueryParams      Number of query parameters.
     1401     */
     1402    int doQueryParameters(RTCString *a_pStrQuery, QUERYPARAMDESC const *a_paQueryParams,
     1403                          RTCRestObjectBase const **a_papQueryParamObjs, size_t a_cQueryParams) const;
    13821404};
    13831405
  • trunk/include/iprt/err.h

    r73933 r73978  
    28772877/** The JSON document is malformed. */
    28782878#define VERR_JSON_MALFORMED                         (-24702)
     2879/** Object or array is empty. */
     2880#define VERR_JSON_IS_EMPTY                          (-24703)
    28792881/** @} */
    28802882
  • trunk/include/iprt/json.h

    r73956 r73978  
    277277 * @param   hJsonVal        The JSON value handle.
    278278 * @param   phJsonIt        Where to store the JSON iterator handle on success.
     279 * @todo    Make return VERR_JSON_IS_EMPTY (or remove it).
    279280 */
    280281RTDECL(int) RTJsonIteratorBegin(RTJSONVAL hJsonVal, PRTJSONIT phJsonIt);
     
    285286 * @returns IPRT status code.
    286287 * @retval  VERR_JSON_VALUE_INVALID_TYPE if the JSON value is not an array.
     288 * @retval  VERR_JSON_IS_EMPTY if no members.
    287289 * @param   hJsonVal        The JSON value handle.
    288290 * @param   phJsonIt        Where to store the JSON iterator handle on success.
     
    295297 * @returns IPRT status code.
    296298 * @retval  VERR_JSON_VALUE_INVALID_TYPE if the JSON value is not an object.
     299 * @retval  VERR_JSON_IS_EMPTY if no members.
    297300 * @param   hJsonVal        The JSON value handle.
    298301 * @param   phJsonIt        Where to store the JSON iterator handle on success.
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