Skip to content

Commit 94eb992

Browse files
committed
Fix compilation problem and add some missing functions
1 parent c78fbc9 commit 94eb992

18 files changed

+324
-273
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
*.lo
33
*.la
44
.deps
5+
*.dep
56
.libs
67
Makefile
78
Makefile.fragments

config.m4

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@ if test "$PHP_SDL_MIXER" != "no"; then
3434

3535
PHP_SUBST(SDL_MIXER_SHARED_LIBADD)
3636

37-
PHP_NEW_EXTENSION(sdl_mixer, src/music.c src/chunk.c src/php_sdl_mixer.c, $ext_shared)
37+
PHP_NEW_EXTENSION(sdl_mixer, src/effect_position.c src/effect_stereoreverse.c src/Mix_Music.c src/Mix_Chunk.c src/music.c src/mixer.c src/php_sdl_mixer.c, $ext_shared)
3838
PHP_ADD_EXTENSION_DEP(sdl_mixer, sdl)
3939
fi

src/Mix_Chunk.c

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

src/Mix_Chunk.h

+12-66
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,23 @@
1+
#ifndef PHP_MIX_CHUNK_H
2+
#define PHP_MIX_CHUNK_H
13

2-
/** {{{ Mix_Chunk */
3-
static zend_class_entry *mix_chunk_ce = NULL;
4-
static zend_object_handlers php_mix_chunk_object_handlers;
4+
#include "php_sdl_mixer.h"
55

66
typedef struct _php_mix_chunk_object {
77
Mix_Chunk *mix_chunk;
88
zend_object std;
99
} php_mix_chunk_object;
1010

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-
}
11+
php_mix_chunk_object *php_mix_chunk_object_from_zend_object(zend_object *zobj);
12+
zend_object *php_mix_chunk_object_to_zend_object(php_mix_chunk_object *obj);
1513

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-
}
14+
Mix_Chunk* php_mix_chunk_from_zval_p(zval* zp);
15+
void mix_chunk_to_zval(Mix_Chunk *mix_chunk, zval *zp);
16+
zend_object *php_mix_chunk_object_create(zend_class_entry *ce);
2017

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-
}
18+
void php_mix_chunk_object_free(zend_object *zobj);
19+
zend_function *php_mix_chunk_object_get_constructor(zend_object *object);
2520

21+
void php_mix_chunk_minit_helper(void);
2622

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-
/** }}} */
23+
#endif

src/Mix_Music.c

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

src/Mix_Music.h

+12-66
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,23 @@
1+
#ifndef PHP_MIX_MUSIC_H
2+
#define PHP_MIX_MUSIC_H
13

2-
/** {{{ Mix_Music */
3-
static zend_class_entry *mix_music_ce = NULL;
4-
static zend_object_handlers php_mix_music_object_handlers;
4+
#include "php_sdl_mixer.h"
55

66
typedef struct _php_mix_music_object {
77
Mix_Music *mix_music;
88
zend_object std;
99
} php_mix_music_object;
1010

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-
}
11+
php_mix_music_object *php_mix_music_object_from_zend_object(zend_object *zobj);
12+
zend_object *php_mix_music_object_to_zend_object(php_mix_music_object *obj);
1513

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-
}
14+
Mix_Music* php_mix_music_from_zval_p(zval* zp);
15+
void mix_music_to_zval(Mix_Music *mix_music, zval *zp);
16+
zend_object *php_mix_music_object_create(zend_class_entry *ce);
2017

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-
}
18+
void php_mix_music_object_free(zend_object *zobj);
19+
zend_function *php_mix_music_object_get_constructor(zend_object *object);
2520

21+
void php_mix_music_minit_helper(void);
2622

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-
/** }}} */
23+
#endif

src/effect_position.c

+24-12
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,37 @@
1+
#ifdef HAVE_CONFIG_H
2+
#include "config.h"
3+
#endif
4+
5+
#include "effect_position.h"
6+
17
PHP_FUNCTION(Mix_SetPosition)
28
{
3-
zend_long channel;
9+
zend_long channel;
10+
zend_long angle;
11+
zend_long distance;
412

5-
ZEND_PARSE_PARAMETERS_START(1, 1);
6-
Z_PARAM_LONG(channel)
7-
ZEND_PARSE_PARAMETERS_END();
13+
ZEND_PARSE_PARAMETERS_START(3, 3);
14+
Z_PARAM_LONG(channel)
15+
Z_PARAM_LONG(angle)
16+
Z_PARAM_LONG(distance)
17+
ZEND_PARSE_PARAMETERS_END();
818

9-
int result = Mix_SetPosition(channel);
19+
int result = Mix_SetPosition(channel, angle, distance);
1020

11-
RETURN_LONG(result);
21+
RETURN_LONG(result);
1222
}
1323

1424
PHP_FUNCTION(Mix_SetDistance)
1525
{
16-
zend_long channel;
26+
zend_long channel;
27+
zend_long distance;
1728

18-
ZEND_PARSE_PARAMETERS_START(1, 1);
19-
Z_PARAM_LONG(channel)
20-
ZEND_PARSE_PARAMETERS_END();
29+
ZEND_PARSE_PARAMETERS_START(2, 2);
30+
Z_PARAM_LONG(channel)
31+
Z_PARAM_LONG(distance)
32+
ZEND_PARSE_PARAMETERS_END();
2133

22-
int result = Mix_SetDistance(channel);
34+
int result = Mix_SetDistance(channel, distance);
2335

24-
RETURN_LONG(result);
36+
RETURN_LONG(result);
2537
}

src/effect_position.h

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#ifndef PHP_EFFECT_POSITION_H
2+
#define PHP_EFFECT_POSITION_H
3+
4+
#include "php_sdl_mixer.h"
5+
6+
#endif

0 commit comments

Comments
 (0)