X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_message_object.h;h=8e28de20009bd08e626cbd6846183e550261e85a;hp=8a0bcad17135e95c62173777b2393dbdf56b5404;hb=refs%2Fheads%2Fv1.7.x;hpb=456dd6f5e057a0fc4ff3dbaf006d71cf5c247f19 diff --git a/php_http_message_object.h b/php_http_message_object.h index 8a0bcad..8e28de2 100644 --- a/php_http_message_object.h +++ b/php_http_message_object.h @@ -1,16 +1,13 @@ /* - +----------------------------------------------------------------------+ - | PECL :: http | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, that | - | is bundled with this package in the file LICENSE, and is available | - | through the world-wide-web at http://www.php.net/license/3_0.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Copyright (c) 2004-2005 Michael Wallner | - +----------------------------------------------------------------------+ + +--------------------------------------------------------------------+ + | PECL :: http | + +--------------------------------------------------------------------+ + | Redistribution and use in source and binary forms, with or without | + | modification, are permitted provided that the conditions mentioned | + | in the accompanying LICENSE file are met. | + +--------------------------------------------------------------------+ + | Copyright (c) 2004-2010, Michael Wallner | + +--------------------------------------------------------------------+ */ /* $Id$ */ @@ -19,56 +16,90 @@ #define PHP_HTTP_MESSAGE_OBJECT_H #ifdef ZEND_ENGINE_2 -#include "php_http_message_api.h" - -typedef struct { +typedef struct _http_message_object_t { zend_object zo; http_message *message; - zend_object_value nested; + zend_object_value parent; + zval *iterator; } http_message_object; extern zend_class_entry *http_message_object_ce; extern zend_function_entry http_message_object_fe[]; -#define http_message_object_init _http_message_object_init -extern void _http_message_object_init(INIT_FUNC_ARGS); -#define http_message_object_new _http_message_object_new +extern PHP_MINIT_FUNCTION(http_message_object); +extern PHP_MSHUTDOWN_FUNCTION(http_message_object); + +#define http_message_object_prepend(o, p) http_message_object_prepend_ex((o), (p), 1) +#define http_message_object_prepend_ex(o, p, t) _http_message_object_prepend_ex((o), (p), (t) TSRMLS_CC) +extern void _http_message_object_prepend_ex(zval *this_ptr, zval *prepend, zend_bool top TSRMLS_DC); + +#define http_message_object_reverse(t, r) _http_message_object_reverse((t), (r) TSRMLS_CC) +extern void _http_message_object_reverse(zval *this_ptr, zval *return_value TSRMLS_DC); + +#define http_message_object_new(ce) _http_message_object_new((ce) TSRMLS_CC) extern zend_object_value _http_message_object_new(zend_class_entry *ce TSRMLS_DC); -#define http_message_object_new_ex(ce, msg) _http_message_object_new_ex(ce, msg TSRMLS_CC) -#define http_message_object_from_msg(msg) _http_message_object_new_ex(http_message_object_ce, msg TSRMLS_CC) -extern zend_object_value _http_message_object_new_ex(zend_class_entry *ce, http_message *msg TSRMLS_DC); -#define http_message_object_free _http_message_object_free +#define http_message_object_new_ex(ce, msg, ptr) _http_message_object_new_ex((ce), (msg), (ptr) TSRMLS_CC) +extern zend_object_value _http_message_object_new_ex(zend_class_entry *ce, http_message *msg, http_message_object **ptr TSRMLS_DC); +#define http_message_object_clone(zobj) _http_message_object_clone_obj(zobj TSRMLS_CC) +extern zend_object_value _http_message_object_clone_obj(zval *object TSRMLS_DC); +#define http_message_object_free(o) _http_message_object_free((o) TSRMLS_CC) extern void _http_message_object_free(zend_object *object TSRMLS_DC); -#define HTTP_MSG_PROPHASH_TYPE 276192743LU -#define HTTP_MSG_PROPHASH_HTTP_VERSION 1138628683LU -#define HTTP_MSG_PROPHASH_RAW 2090679983LU -#define HTTP_MSG_PROPHASH_BODY 254474387LU -#define HTTP_MSG_PROPHASH_HEADERS 3199929089LU -#define HTTP_MSG_PROPHASH_NESTED_MESSAGE 3652857165LU -#define HTTP_MSG_PROPHASH_REQUEST_METHOD 1669022159LU -#define HTTP_MSG_PROPHASH_REQUEST_URI 3208695486LU -#define HTTP_MSG_PROPHASH_RESPONSE_STATUS 3857097400LU -#define HTTP_MSG_PROPHASH_RESPONSE_CODE 1305615119LU +#define HTTP_MSG_CHECK_OBJ(obj, dofail) \ + if (!(obj)->message) { \ + http_error(E_WARNING, HTTP_E_MSG, "HttpMessage is empty"); \ + dofail; \ + } +#define HTTP_MSG_CHECK_STD() HTTP_MSG_CHECK_OBJ(obj, RETURN_FALSE) +#define HTTP_MSG_INIT_OBJ(obj) \ + if (!(obj)->message) { \ + (obj)->message = http_message_new(); \ + } +#define HTTP_MSG_INIT_STD() HTTP_MSG_INIT_OBJ(obj) + +PHP_METHOD(HttpMessage, __construct); PHP_METHOD(HttpMessage, getBody); +PHP_METHOD(HttpMessage, setBody); +PHP_METHOD(HttpMessage, getHeader); PHP_METHOD(HttpMessage, getHeaders); PHP_METHOD(HttpMessage, setHeaders); PHP_METHOD(HttpMessage, addHeaders); PHP_METHOD(HttpMessage, getType); PHP_METHOD(HttpMessage, setType); +PHP_METHOD(HttpMessage, getInfo); +PHP_METHOD(HttpMessage, setInfo); PHP_METHOD(HttpMessage, getResponseCode); PHP_METHOD(HttpMessage, setResponseCode); +PHP_METHOD(HttpMessage, getResponseStatus); +PHP_METHOD(HttpMessage, setResponseStatus); PHP_METHOD(HttpMessage, getRequestMethod); PHP_METHOD(HttpMessage, setRequestMethod); -PHP_METHOD(HttpMessage, getRequestUri); -PHP_METHOD(HttpMessage, setRequestUri); +PHP_METHOD(HttpMessage, getRequestUrl); +PHP_METHOD(HttpMessage, setRequestUrl); PHP_METHOD(HttpMessage, getHttpVersion); PHP_METHOD(HttpMessage, setHttpVersion); -PHP_METHOD(HttpMessage, getNestedMessage); +PHP_METHOD(HttpMessage, guessContentType); +PHP_METHOD(HttpMessage, getParentMessage); +PHP_METHOD(HttpMessage, send); PHP_METHOD(HttpMessage, toString); +PHP_METHOD(HttpMessage, toMessageTypeObject); + +PHP_METHOD(HttpMessage, count); +PHP_METHOD(HttpMessage, serialize); +PHP_METHOD(HttpMessage, unserialize); +PHP_METHOD(HttpMessage, rewind); +PHP_METHOD(HttpMessage, valid); +PHP_METHOD(HttpMessage, current); +PHP_METHOD(HttpMessage, key); +PHP_METHOD(HttpMessage, next); + +PHP_METHOD(HttpMessage, factory); +PHP_METHOD(HttpMessage, fromEnv); -PHP_METHOD(HttpMessage, fromString); +PHP_METHOD(HttpMessage, detach); +PHP_METHOD(HttpMessage, prepend); +PHP_METHOD(HttpMessage, reverse); #endif #endif