|
Packit Service |
c6b9b0 |
#!/usr/bin/python
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
# gobject-foo.py: generate standard GObject type macros etc.
|
|
Packit Service |
c6b9b0 |
#
|
|
Packit Service |
c6b9b0 |
# The master copy of this program is in the telepathy-glib repository -
|
|
Packit Service |
c6b9b0 |
# please make any changes there.
|
|
Packit Service |
c6b9b0 |
#
|
|
Packit Service |
c6b9b0 |
# Copyright (C) 2007-2010 Collabora Ltd. <http://www.collabora.co.uk/>
|
|
Packit Service |
c6b9b0 |
#
|
|
Packit Service |
c6b9b0 |
# This library is free software; you can redistribute it and/or
|
|
Packit Service |
c6b9b0 |
# modify it under the terms of the GNU Lesser General Public
|
|
Packit Service |
c6b9b0 |
# License as published by the Free Software Foundation; either
|
|
Packit Service |
c6b9b0 |
# version 2.1 of the License, or (at your option) any later version.
|
|
Packit Service |
c6b9b0 |
#
|
|
Packit Service |
c6b9b0 |
# This library is distributed in the hope that it will be useful,
|
|
Packit Service |
c6b9b0 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
c6b9b0 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
c6b9b0 |
# Lesser General Public License for more details.
|
|
Packit Service |
c6b9b0 |
#
|
|
Packit Service |
c6b9b0 |
# You should have received a copy of the GNU Lesser General Public
|
|
Packit Service |
c6b9b0 |
# License along with this library; if not, write to the Free Software
|
|
Packit Service |
c6b9b0 |
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
def gobject_header(head, tail, as_interface=False):
|
|
Packit Service |
c6b9b0 |
out = []
|
|
Packit Service |
c6b9b0 |
o = out.append
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
name = head + '_' + tail
|
|
Packit Service |
c6b9b0 |
MixedCase = name.replace('_', '')
|
|
Packit Service |
c6b9b0 |
lower_case = name.lower()
|
|
Packit Service |
c6b9b0 |
UPPER_CASE = name.upper()
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
gtype = head.upper() + '_TYPE_' + tail.upper()
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
o("typedef struct _%s %s;" % (MixedCase, MixedCase))
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
if as_interface:
|
|
Packit Service |
c6b9b0 |
o("typedef struct _%sInterface %sInterface;" % (MixedCase, MixedCase))
|
|
Packit Service |
c6b9b0 |
else:
|
|
Packit Service |
c6b9b0 |
o("typedef struct _%sClass %sClass;" % (MixedCase, MixedCase))
|
|
Packit Service |
c6b9b0 |
o("typedef struct _%sPrivate %sPrivate;" % (MixedCase, MixedCase))
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
o("")
|
|
Packit Service |
c6b9b0 |
o("GType %s_get_type (void);" % lower_case)
|
|
Packit Service |
c6b9b0 |
o("")
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
o("#define %s \\" % gtype)
|
|
Packit Service |
c6b9b0 |
o(" (%s_get_type ())" % lower_case)
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
o("#define %s(obj) \\" % UPPER_CASE)
|
|
Packit Service |
c6b9b0 |
o(" (G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, \\" % gtype)
|
|
Packit Service |
c6b9b0 |
o(" %s))" % MixedCase)
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
if not as_interface:
|
|
Packit Service |
c6b9b0 |
o("#define %s_CLASS(klass) \\" % UPPER_CASE)
|
|
Packit Service |
c6b9b0 |
o(" (G_TYPE_CHECK_CLASS_CAST ((klass), %s, \\" % gtype)
|
|
Packit Service |
c6b9b0 |
o(" %sClass))" % MixedCase)
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
o("#define %s_IS_%s(obj) \\" % (head.upper(), tail.upper()))
|
|
Packit Service |
c6b9b0 |
o(" (G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))" % gtype)
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
if as_interface:
|
|
Packit Service |
c6b9b0 |
o("#define %s_GET_IFACE(obj) \\" % UPPER_CASE)
|
|
Packit Service |
c6b9b0 |
o(" (G_TYPE_INSTANCE_GET_INTERFACE ((obj), %s, \\" % gtype)
|
|
Packit Service |
c6b9b0 |
o(" %sInterface))" % MixedCase)
|
|
Packit Service |
c6b9b0 |
else:
|
|
Packit Service |
c6b9b0 |
o("#define %s_IS_%s_CLASS(klass) \\" % (head.upper(), tail.upper()))
|
|
Packit Service |
c6b9b0 |
o(" (G_TYPE_CHECK_CLASS_TYPE ((klass), %s))" % gtype)
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
o("#define %s_GET_CLASS(obj) \\" % UPPER_CASE)
|
|
Packit Service |
c6b9b0 |
o(" (G_TYPE_INSTANCE_GET_CLASS ((obj), %s, \\" % gtype)
|
|
Packit Service |
c6b9b0 |
o(" %sClass))" % MixedCase)
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
return out
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
if __name__ == '__main__':
|
|
Packit Service |
c6b9b0 |
import sys
|
|
Packit Service |
c6b9b0 |
from getopt import gnu_getopt
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
options, argv = gnu_getopt(sys.argv[1:], '', ['interface'])
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
as_interface = False
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
for opt, val in options:
|
|
Packit Service |
c6b9b0 |
if opt == '--interface':
|
|
Packit Service |
c6b9b0 |
as_interface = True
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
head, tail = argv
|
|
Packit Service |
c6b9b0 |
|
|
Packit Service |
c6b9b0 |
print('\n'.join(gobject_header(head, tail, as_interface=as_interface)))
|