]> git.sesse.net Git - vlc/blob - bindings/python/vlc_module.c
libvlc_release(): removes unused exception
[vlc] / bindings / python / vlc_module.c
1 /*****************************************************************************
2  * vlc_module.c: vlc python binding module
3  *****************************************************************************
4  * Copyright (C) 2006 the VideoLAN team
5  * $Id$
6  *
7  * Authors: Olivier Aubert <oaubert at bat710.univ-lyon1.fr>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23
24 #include "vlcglue.h"
25
26 /**************************************************************************
27  * VLC Module
28  **************************************************************************/
29
30 #ifndef vlcMODINIT_FUNC /* declarations for DLL import/export */
31 #define vlcMODINIT_FUNC void
32 #endif
33
34 static PyMethodDef vlc_methods[] = {
35     { NULL }  /* Sentinel */
36 };
37
38 /* Module globals */
39 PyObject* MediaControl_InternalException          = NULL;
40 PyObject* MediaControl_PositionKeyNotSupported    = NULL;
41 PyObject *MediaControl_PositionOriginNotSupported = NULL;
42 PyObject* MediaControl_InvalidPosition            = NULL;
43 PyObject *MediaControl_PlaylistException          = NULL;
44
45 vlcMODINIT_FUNC
46 initvlc( void )
47 {
48     PyObject* p_module;
49
50     vlcMediaInstance_Type.tp_new = PyType_GenericNew;
51     vlcMediaInstance_Type.tp_alloc = PyType_GenericAlloc;
52     vlcMediaDescriptor_Type.tp_new = PyType_GenericNew;
53     vlcMediaDescriptor_Type.tp_alloc = PyType_GenericAlloc;
54
55     p_module = Py_InitModule3( "vlc", vlc_methods,
56                                "VLC media player embedding module." );
57
58     if( !p_module )
59       return;
60
61     if( PyType_Ready( &PyPosition_Type ) < 0 )
62         return;
63     if( PyType_Ready( &MediaControl_Type ) < 0 )
64         return;
65     if( PyType_Ready( &vlcInstance_Type ) < 0 )
66         return;
67     if( PyType_Ready( &vlcMediaInstance_Type ) < 0 )
68         return;
69     if( PyType_Ready( &vlcMediaDescriptor_Type ) < 0 )
70         return;
71
72     /* Exceptions */
73     MediaControl_InternalException =
74             PyErr_NewException( "vlc.InternalException", NULL, NULL );
75     Py_INCREF( MediaControl_InternalException );
76     PyModule_AddObject( p_module, "InternalException",
77                         MediaControl_InternalException );
78
79     MediaControl_PositionKeyNotSupported =
80             PyErr_NewException( "vlc.PositionKeyNotSupported", NULL, NULL );
81     Py_INCREF( MediaControl_PositionKeyNotSupported );
82     PyModule_AddObject( p_module, "PositionKeyNotSupported",
83                         MediaControl_PositionKeyNotSupported );
84
85     MediaControl_PositionOriginNotSupported=
86             PyErr_NewException( "vlc.InvalidPosition", NULL, NULL );
87     Py_INCREF( MediaControl_PositionOriginNotSupported );
88     PyModule_AddObject( p_module, "PositionOriginNotSupported",
89                         MediaControl_PositionOriginNotSupported );
90
91     MediaControl_InvalidPosition =
92             PyErr_NewException( "vlc.InvalidPosition", NULL, NULL );
93     Py_INCREF( MediaControl_InvalidPosition );
94     PyModule_AddObject( p_module, "InvalidPosition",
95                         MediaControl_InvalidPosition );
96
97     MediaControl_PlaylistException =
98             PyErr_NewException( "vlc.PlaylistException", NULL, NULL );
99     Py_INCREF( MediaControl_PlaylistException );
100     PyModule_AddObject( p_module, "PlaylistException",
101                         MediaControl_PlaylistException );
102
103     /* Exceptions */
104     vlcInstance_Exception =
105         PyErr_NewException( "vlc.InstanceException", NULL, NULL );
106     Py_INCREF( vlcInstance_Exception );
107     PyModule_AddObject( p_module, "InstanceException",
108                         vlcInstance_Exception );
109
110     /* Types */
111     Py_INCREF( &PyPosition_Type );
112     PyModule_AddObject( p_module, "Position",
113                         ( PyObject * )&PyPosition_Type );
114
115     Py_INCREF( &MediaControl_Type );
116     PyModule_AddObject( p_module, "MediaControl",
117                         ( PyObject * )&MediaControl_Type );
118
119     Py_INCREF( &vlcInstance_Type );
120     PyModule_AddObject( p_module, "Instance",
121                         ( PyObject * )&vlcInstance_Type );
122     Py_INCREF( &vlcMediaInstance_Type );
123     PyModule_AddObject( p_module, "MediaInstance",
124                         ( PyObject * )&vlcMediaInstance_Type );
125     Py_INCREF( &vlcMediaDescriptor_Type );
126     PyModule_AddObject( p_module, "MediaDescriptor",
127                         ( PyObject * )&vlcMediaDescriptor_Type );
128
129     /* Constants */
130     PyModule_AddIntConstant( p_module, "AbsolutePosition",
131                              mediacontrol_AbsolutePosition );
132     PyModule_AddIntConstant( p_module, "RelativePosition",
133                              mediacontrol_RelativePosition );
134     PyModule_AddIntConstant( p_module, "ModuloPosition",
135                              mediacontrol_ModuloPosition );
136
137     PyModule_AddIntConstant( p_module, "ByteCount",
138                              mediacontrol_ByteCount );
139     PyModule_AddIntConstant( p_module, "SampleCount",
140                              mediacontrol_SampleCount );
141     PyModule_AddIntConstant( p_module, "MediaTime",
142                              mediacontrol_MediaTime );
143
144     PyModule_AddIntConstant( p_module, "PlayingStatus",
145                              mediacontrol_PlayingStatus );
146     PyModule_AddIntConstant( p_module, "PauseStatus",
147                              mediacontrol_PauseStatus );
148     PyModule_AddIntConstant( p_module, "ForwardStatus",
149                              mediacontrol_ForwardStatus );
150     PyModule_AddIntConstant( p_module, "BackwardStatus",
151                              mediacontrol_BackwardStatus );
152     PyModule_AddIntConstant( p_module, "InitStatus",
153                              mediacontrol_InitStatus );
154     PyModule_AddIntConstant( p_module, "EndStatus",
155                              mediacontrol_EndStatus );
156     PyModule_AddIntConstant( p_module, "UndefinedStatus",
157                              mediacontrol_UndefinedStatus );
158     
159 }
160
161
162 /* Make libpostproc happy... */
163 void * fast_memcpy( void * to, const void * from, size_t len )
164 {
165   return memcpy( to, from, len );
166 }
167
168 /* Horrible hack... Please do not look.  Temporary workaround for the
169    forward declaration mess of python types (cf vlcglue.h). If we do a
170    separate compilation, we have to declare some types as extern. But
171    the recommended way to forward declared types in python is
172    static... I am sorting the mess but in the meantime, this will
173    produce a working python module.
174 */
175 #include "vlc_mediacontrol.c"
176 #include "vlc_position.c"
177 #include "vlc_instance.c"
178 #include "vlc_input.c"
179 #include "vlc_mediadescriptor.c"