| 
#ifdef HAVE_CONFIG_H
#include "../../ext_config.h"
#endif
#include <php.h>
#include "../../php_ext.h"
#include "../../ext.h"
#include <Zend/zend_operators.h>
#include <Zend/zend_exceptions.h>
#include <Zend/zend_interfaces.h>
#include "kernel/main.h"
#include "kernel/math.h"
#include "kernel/operators.h"
#include "kernel/memory.h"
#include "kernel/fcall.h"
#include "kernel/string.h"
#include "kernel/concat.h"
/**
  * @class Phady\Util\Uuid - Util class for generate uuid
  *
  * @author  Alien Fernández Fuentes <[email protected] >
  * @package Util
  * @copyright (c) 2015
  * @version 1.0.0
  */
ZEPHIR_INIT_CLASS(Phady_Util_Uuid) {
	ZEPHIR_REGISTER_CLASS(Phady\\Util, Uuid, phady, util_uuid, phady_util_uuid_method_entry, 0);
	return SUCCESS;
}
/**
 * Generates version 1: MAC address
 */
PHP_METHOD(Phady_Util_Uuid, v1) {
}
/**
 *
 * Generate v4 UUID
 *
 * Version 4 UUIDs are pseudo-random.
 */
PHP_METHOD(Phady_Util_Uuid, v4) {
	int ZEPHIR_LAST_CALL_STATUS;
	zval _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24;
	ZEPHIR_MM_GROW();
	ZEPHIR_SINIT_VAR(_0);
	ZVAL_LONG(&_0, 0);
	ZEPHIR_SINIT_VAR(_1);
	ZVAL_LONG(&_1, 0xffff);
	ZEPHIR_SINIT_VAR(_2);
	ZVAL_LONG(&_2, 0);
	ZEPHIR_SINIT_VAR(_3);
	ZVAL_LONG(&_3, 0xffff);
	ZEPHIR_SINIT_VAR(_4);
	ZVAL_LONG(&_4, 0);
	ZEPHIR_SINIT_VAR(_5);
	ZVAL_LONG(&_5, 0xffff);
	ZEPHIR_SINIT_VAR(_6);
	ZVAL_LONG(&_6, 0);
	ZEPHIR_SINIT_VAR(_7);
	ZVAL_LONG(&_7, 0x0fff);
	ZEPHIR_SINIT_VAR(_8);
	ZVAL_LONG(&_8, 0);
	ZEPHIR_SINIT_VAR(_9);
	ZVAL_LONG(&_9, 0x3fff);
	ZEPHIR_SINIT_VAR(_10);
	ZVAL_LONG(&_10, 0);
	ZEPHIR_SINIT_VAR(_11);
	ZVAL_LONG(&_11, 0xffff);
	ZEPHIR_SINIT_VAR(_12);
	ZVAL_LONG(&_12, 0);
	ZEPHIR_SINIT_VAR(_13);
	ZVAL_LONG(&_13, 0xffff);
	ZEPHIR_SINIT_VAR(_14);
	ZVAL_LONG(&_14, 0);
	ZEPHIR_SINIT_VAR(_15);
	ZVAL_LONG(&_15, 0xffff);
	ZEPHIR_SINIT_VAR(_16);
	ZVAL_STRING(&_16, "%04x%04x-%04x-%04x-%04x-%04x%04x%04x", 0);
	ZEPHIR_SINIT_VAR(_17);
	ZVAL_LONG(&_17, zephir_mt_rand(zephir_get_intval(&_0), zephir_get_intval(&_1) TSRMLS_CC));
	ZEPHIR_SINIT_VAR(_18);
	ZVAL_LONG(&_18, zephir_mt_rand(zephir_get_intval(&_2), zephir_get_intval(&_3) TSRMLS_CC));
	ZEPHIR_SINIT_VAR(_19);
	ZVAL_LONG(&_19, zephir_mt_rand(zephir_get_intval(&_4), zephir_get_intval(&_5) TSRMLS_CC));
	ZEPHIR_SINIT_VAR(_20);
	ZVAL_LONG(&_20, (zephir_mt_rand(zephir_get_intval(&_6), zephir_get_intval(&_7) TSRMLS_CC) | 0x4000));
	ZEPHIR_SINIT_VAR(_21);
	ZVAL_LONG(&_21, (zephir_mt_rand(zephir_get_intval(&_8), zephir_get_intval(&_9) TSRMLS_CC) | 0x8000));
	ZEPHIR_SINIT_VAR(_22);
	ZVAL_LONG(&_22, zephir_mt_rand(zephir_get_intval(&_10), zephir_get_intval(&_11) TSRMLS_CC));
	ZEPHIR_SINIT_VAR(_23);
	ZVAL_LONG(&_23, zephir_mt_rand(zephir_get_intval(&_12), zephir_get_intval(&_13) TSRMLS_CC));
	ZEPHIR_SINIT_VAR(_24);
	ZVAL_LONG(&_24, zephir_mt_rand(zephir_get_intval(&_14), zephir_get_intval(&_15) TSRMLS_CC));
	ZEPHIR_RETURN_CALL_FUNCTION("sprintf", NULL, 8, &_16, &_17, &_18, &_19, &_20, &_21, &_22, &_23, &_24);
	zephir_check_call_status();
	RETURN_MM();
}
/**
 * Generate v5 UUID
 *
 * Version 5 UUIDs are named based. They require a namespace (another
 * valid UUID) and a value (the name). Given the same namespace and
 * name, the output is always the same.
 *
 * @param uuid $namespace
 * @param string $name
 */
PHP_METHOD(Phady_Util_Uuid, v5) {
	zval *ns_param = NULL, *name_param = NULL;
	zval *ns = NULL, *name = NULL;
	ZEPHIR_MM_GROW();
	zephir_fetch_params(1, 2, 0, &ns_param, &name_param);
	zephir_get_strval(ns, ns_param);
	zephir_get_strval(name, name_param);
}
PHP_METHOD(Phady_Util_Uuid, is_valid) {
	zval *_2;
	zval *uuid, *_0, *_1;
	ZEPHIR_MM_GROW();
	zephir_fetch_params(1, 1, 0, &uuid);
	ZEPHIR_INIT_VAR(_0);
	ZEPHIR_INIT_VAR(_1);
	ZEPHIR_INIT_VAR(_2);
	ZEPHIR_CONCAT_SS(_2, "/^\\{?[0-9a-f]{8}\\-?[0-9a-f]{4}\\-?[0-9a-f]{4}\\-?", "[0-9a-f]{4}\\-?[0-9a-f]{12}\\}?$/i");
	zephir_preg_match(_1, _2, uuid, _0, 0, 0 , 0  TSRMLS_CC);
	RETURN_MM_BOOL(ZEPHIR_IS_LONG_IDENTICAL(_1, 1));
}
 |