bson php,php_bson.h

/*

+----------------------------------------------------------------------+

| PHP Version 5 |

+----------------------------------------------------------------------+

| Copyright (c) 20142015 Hannes Magnusson |

+----------------------------------------------------------------------+

| This source file is subject to version 3.01 of the PHP license, |

| that is bundled with this package in the file LICENSE, and is |

| available through the world-wide-web at the following url: |

| http://www.php.net/license/3_01.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. |

+----------------------------------------------------------------------+

| Author: Hannes Magnusson |

+----------------------------------------------------------------------+

*/

/* $Id$ */

#ifndef PHONGO_BSON_H

#define PHONGO_BSON_H

#include

/* PHP Core stuff */

#include

#define BSON_UNSERIALIZE_FUNC_NAME "bsonUnserialize"

#define BSON_SERIALIZE_FUNC_NAME "bsonSerialize"

typedef enum {

PHONGO_BSON_NONE = 0x00,

PHONGO_BSON_ADD_ID = 0x01,

PHONGO_BSON_RETURN_ID = 0x02

} php_phongo_bson_flags_t;

typedef enum {

PHONGO_TYPEMAP_NONE,

PHONGO_TYPEMAP_NATIVE_ARRAY,

PHONGO_TYPEMAP_NATIVE_OBJECT,

PHONGO_TYPEMAP_CLASS

} php_phongo_bson_typemap_types;

typedef struct {

php_phongo_bson_typemap_types document_type;

zend_class_entry *document;

php_phongo_bson_typemap_types array_type;

zend_class_entry *array;

php_phongo_bson_typemap_types root_type;

zend_class_entry *root;

} php_phongo_bson_typemap;

typedef struct {

#if PHP_VERSION_ID >= 70000

zval zchild;

#else

zval *zchild;

#endif

php_phongo_bson_typemap map;

zend_class_entry *odm;

} php_phongo_bson_state;

#if PHP_VERSION_ID >= 70000

#define PHONGO_BSON_STATE_INITIALIZER { {{ 0 }}, { PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL}, NULL}

#else

#define PHONGO_BSON_STATE_INITIALIZER { NULL, { PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL}, NULL}

#endif

void phongo_zval_to_bson(zval *data, php_phongo_bson_flags_t flags, bson_t *bson, bson_t **bson_out TSRMLS_DC);

int phongo_bson_to_zval_ex(const unsigned char *data, int data_len, php_phongo_bson_state *state);

#if PHP_VERSION_ID >= 70000

int phongo_bson_to_zval(const unsigned char *data, int data_len, zval *out);

#else

int phongo_bson_to_zval(const unsigned char *data, int data_len, zval **out);

#endif

void phongo_bson_typemap_to_state(zval *typemap, php_phongo_bson_typemap *map TSRMLS_DC);

PHP_FUNCTION(toPHP);

PHP_FUNCTION(fromPHP);

PHP_FUNCTION(toJSON);

PHP_FUNCTION(fromJSON);

#endif/* PHONGO_BSON_H */

/*

* Local variables:

* tab-width: 4

* c-basic-offset: 4

* End:

* vim600: noet sw=4 ts=4 fdm=marker

* vim<600: noet sw=4 ts=4

*/

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值