/* {{{ Mosquitto\Message::tokeniseTopic() */ PHP_METHOD(Mosquitto_Message, tokeniseTopic) { char *topic = NULL, **topics = NULL; int topic_len = 0, retval = 0, count = 0, i = 0; PHP_MOSQUITTO_ERROR_HANDLING(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &topic, &topic_len) == FAILURE) { PHP_MOSQUITTO_RESTORE_ERRORS(); return; } PHP_MOSQUITTO_RESTORE_ERRORS(); retval = mosquitto_sub_topic_tokenise(topic, &topics, &count); if (retval == MOSQ_ERR_NOMEM) { zend_throw_exception_ex(mosquitto_ce_exception, 0 TSRMLS_CC, "Failed to tokenise topic"); return; } array_init(return_value); for (i = 0; i < count; i++) { if (topics[i] == NULL) { add_next_index_null(return_value); } else { add_next_index_string(return_value, topics[i], 1); } } mosquitto_sub_topic_tokens_free(&topics, count); }
int sub_topic_tokens_free(char ***topics, int count) { return mosquitto_sub_topic_tokens_free(topics, count); }