1 //******************************************************************
3 // Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #ifndef IOTVT_SRM_UTILITY_H
22 #define IOTVT_SRM_UTILITY_H
40 typedef struct OicParseQueryIter OicParseQueryIter_t;
43 * @brief OicRestQueryIter data structure is used for book-keeping
44 * sub-REST query's attribute's and value's, starting location &
45 * length between calls to GetNextQuery(). This struct needs
46 * to be first initialized with ParseQueryIterInit().
49 struct OicParseQueryIter
51 unsigned char * attrPos; /**<stating location of attribute */
52 size_t attrLen; /**<length of the attribute */
53 unsigned char * valPos; /**<starting location of value*/
54 size_t valLen; /**<length of the value*/
55 coap_parse_iterator_t pi; /**<coap struct for tokenizing the query*/
60 * @brief Macro to verify success of operation.
61 * eg: VERIFY_SUCCESS(TAG, OC_STACK_OK == foo(), ERROR);
62 * @note Invoking function must define "exit:" label for goto functionality to work correctly.
65 #define VERIFY_SUCCESS(tag, op, logLevel) { if (!(op)) \
66 {OC_LOG((logLevel), tag, PCF(#op " failed!!")); goto exit;} }
69 * @def VERIFY_NON_NULL
70 * @brief Macro to verify argument is not equal to NULL.
71 * eg: VERIFY_NON_NULL(TAG, ptrData, ERROR);
72 * @note Invoking function must define "exit:" label for goto functionality to work correctly.
75 #define VERIFY_NON_NULL(tag, arg, logLevel) { if (NULL == (arg)) \
76 { OC_LOG((logLevel), tag, PCF(#arg " is NULL")); goto exit; } }
79 * This method initializes the OicParseQueryIter_t struct
81 *@param query - REST query, to be parsed
82 *@param parseIter - OicParseQueryIter_t struct, to be initialized
85 void ParseQueryIterInit(unsigned char * query, OicParseQueryIter_t * parseIter);
89 * This method fills the OicParseQueryIter_t struct with next REST query's
90 * attribute's and value's information
92 *@param parseIter - OicParseQueryIter_t struct, has next query's attribute's & value's info
95 * OicParseQueryIter_t * - has parsed query info
96 * NULL - has no query to parse
98 OicParseQueryIter_t * GetNextQuery(OicParseQueryIter_t * parseIter);
102 #endif // __cplusplus
104 #endif //IOTVT_SRM_UTILITY_H