Skip to content

Commit c78fbc9

Browse files
committed
Add more functions
1 parent 598233c commit c78fbc9

14 files changed

+1396
-411
lines changed

src/Mix_Chunk.h

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
2+
/** {{{ Mix_Chunk */
3+
static zend_class_entry *mix_chunk_ce = NULL;
4+
static zend_object_handlers php_mix_chunk_object_handlers;
5+
6+
typedef struct _php_mix_chunk_object {
7+
Mix_Chunk *mix_chunk;
8+
zend_object std;
9+
} php_mix_chunk_object;
10+
11+
static php_mix_chunk_object *php_mix_chunk_object_from_zend_object(zend_object *zobj)
12+
{
13+
return ((php_mix_chunk_object*)(zobj + 1)) - 1;
14+
}
15+
16+
static zend_object *php_mix_chunk_object_to_zend_object(php_mix_chunk_object *obj)
17+
{
18+
return ((zend_object*)(obj + 1)) - 1;
19+
}
20+
21+
Mix_Chunk* php_mix_chunk_from_zval_p(zval* zp)
22+
{
23+
return php_mix_chunk_object_from_zend_object(Z_OBJ_P(zp))->mix_chunk;
24+
}
25+
26+
27+
static inline void mix_chunk_to_zval(Mix_Chunk *mix_chunk, zval *zp)
28+
{
29+
object_init_ex(zp, mix_chunk_ce);
30+
php_mix_chunk_object *php_mix_chunk = php_mix_chunk_object_from_zend_object(Z_OBJ_P(zp));
31+
php_mix_chunk->mix_chunkc = mix_chunk;
32+
}
33+
34+
static zend_object *php_mix_chunk_object_create(zend_class_entry *ce)
35+
{
36+
php_mix_chunk_object *obj = zend_object_alloc(sizeof(php_mix_chunk_object), ce);
37+
zend_object *zobj = php_mix_chunk_object_to_zend_object(obj);
38+
39+
obj->mix_chunk = NULL;
40+
zend_object_std_init(zobj, ce);
41+
object_properties_init(zobj, ce);
42+
zobj->handlers = &php_mix_chunk_object_handlers;
43+
44+
return zobj;
45+
}
46+
47+
static void php_mix_chunk_object_free(zend_object *zobj)
48+
{
49+
php_mix_chunk_object *obj = php_mix_chunk_object_from_zend_object(zobj);
50+
51+
if (obj->mix_chunk) {
52+
// @todo implement free es. TTF_CloseFont(obj->mix_chunk);
53+
obj->mix_chunk = NULL;
54+
}
55+
56+
zend_object_std_dtor(zobj);
57+
}
58+
59+
static zend_function *php_mix_chunk_object_get_constructor(zend_object *object)
60+
{
61+
zend_throw_error(NULL, "You cannot initialize a Mix_Chunk object except through helper functions");
62+
return NULL;
63+
}
64+
65+
static void php_mix_chunk_minit_helper(void)
66+
{
67+
mix_chunk_ce = register_class_Mix_Chunk();
68+
mix_chunk_ce->create_object = php_mix_chunk_object_create;
69+
70+
memcpy(&php_mix_chunk_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
71+
php_mix_chunk_object_handlers.clone_obj = NULL;
72+
php_mix_chunk_object_handlers.free_obj = php_mix_chunk_object_free;
73+
php_mix_chunk_object_handlers.get_constructor = php_mix_chunk_object_get_constructor;
74+
php_mix_chunk_object_handlers.offset = XtOffsetOf(php_mix_chunk_object, std);
75+
}
76+
77+
/** }}} */

src/Mix_Music.h

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
2+
/** {{{ Mix_Music */
3+
static zend_class_entry *mix_music_ce = NULL;
4+
static zend_object_handlers php_mix_music_object_handlers;
5+
6+
typedef struct _php_mix_music_object {
7+
Mix_Music *mix_music;
8+
zend_object std;
9+
} php_mix_music_object;
10+
11+
static php_mix_music_object *php_mix_music_object_from_zend_object(zend_object *zobj)
12+
{
13+
return ((php_mix_music_object*)(zobj + 1)) - 1;
14+
}
15+
16+
static zend_object *php_mix_music_object_to_zend_object(php_mix_music_object *obj)
17+
{
18+
return ((zend_object*)(obj + 1)) - 1;
19+
}
20+
21+
Mix_Music* php_mix_music_from_zval_p(zval* zp)
22+
{
23+
return php_mix_music_object_from_zend_object(Z_OBJ_P(zp))->mix_music;
24+
}
25+
26+
27+
static inline void mix_music_to_zval(Mix_Music *mix_music, zval *zp)
28+
{
29+
object_init_ex(zp, mix_music_ce);
30+
php_mix_music_object *php_mix_music = php_mix_music_object_from_zend_object(Z_OBJ_P(zp));
31+
php_mix_music->mix_music = mix_music;
32+
}
33+
34+
static zend_object *php_mix_music_object_create(zend_class_entry *ce)
35+
{
36+
php_mix_music_object *obj = zend_object_alloc(sizeof(php_mix_music_object), ce);
37+
zend_object *zobj = php_mix_music_object_to_zend_object(obj);
38+
39+
obj->mix_music = NULL;
40+
zend_object_std_init(zobj, ce);
41+
object_properties_init(zobj, ce);
42+
zobj->handlers = &php_mix_music_object_handlers;
43+
44+
return zobj;
45+
}
46+
47+
static void php_mix_music_object_free(zend_object *zobj)
48+
{
49+
php_mix_music_object *obj = php_mix_music_object_from_zend_object(zobj);
50+
51+
if (obj->mix_music) {
52+
// @todo implement free es. TTF_CloseFont(obj->mix_music);
53+
obj->mix_music = NULL;
54+
}
55+
56+
zend_object_std_dtor(zobj);
57+
}
58+
59+
static zend_function *php_mix_music_object_get_constructor(zend_object *object)
60+
{
61+
zend_throw_error(NULL, "You cannot initialize a Mix_Music object except through helper functions");
62+
return NULL;
63+
}
64+
65+
static void php_mix_music_minit_helper(void)
66+
{
67+
mix_music_ce = register_class_Mix_Music();
68+
mix_music_ce->create_object = php_mix_music_object_create;
69+
70+
memcpy(&php_mix_music_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
71+
php_mix_music_object_handlers.clone_obj = NULL;
72+
php_mix_music_object_handlers.free_obj = php_mix_music_object_free;
73+
php_mix_music_object_handlers.get_constructor = php_mix_music_object_get_constructor;
74+
php_mix_music_object_handlers.offset = XtOffsetOf(php_mix_music_object, std);
75+
}
76+
77+
/** }}} */

src/chunk.c

-182
This file was deleted.

src/chunk.h

-28
This file was deleted.

src/effect_position.c

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
PHP_FUNCTION(Mix_SetPosition)
2+
{
3+
zend_long channel;
4+
5+
ZEND_PARSE_PARAMETERS_START(1, 1);
6+
Z_PARAM_LONG(channel)
7+
ZEND_PARSE_PARAMETERS_END();
8+
9+
int result = Mix_SetPosition(channel);
10+
11+
RETURN_LONG(result);
12+
}
13+
14+
PHP_FUNCTION(Mix_SetDistance)
15+
{
16+
zend_long channel;
17+
18+
ZEND_PARSE_PARAMETERS_START(1, 1);
19+
Z_PARAM_LONG(channel)
20+
ZEND_PARSE_PARAMETERS_END();
21+
22+
int result = Mix_SetDistance(channel);
23+
24+
RETURN_LONG(result);
25+
}

0 commit comments

Comments
 (0)