~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Mac/Modules/launch/launchsupport.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
ImportĀ upstreamĀ versionĀ 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# This script generates a Python interface for an Apple Macintosh Manager.
 
2
# It uses the "bgen" package to generate C code.
 
3
# The function specifications are generated by scanning the mamager's header file,
 
4
# using the "scantools" package (customized for this particular manager).
 
5
 
 
6
import string
 
7
 
 
8
# Declarations that change for each manager
 
9
MODNAME = '_Launch'                             # The name of the module
 
10
OBJECTNAME = 'UNUSED'                   # The basic name of the objects used here
 
11
KIND = 'Record'                         # Usually 'Ptr' or 'Handle'
 
12
 
 
13
# The following is *usually* unchanged but may still require tuning
 
14
MODPREFIX = 'Launch'                    # The prefix for module-wide routines
 
15
OBJECTTYPE = OBJECTNAME + KIND          # The C type used to represent them
 
16
OBJECTPREFIX = MODPREFIX + 'Obj'        # The prefix for object methods
 
17
INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
 
18
OUTPUTFILE = MODNAME + "module.c"       # The file generated by this program
 
19
 
 
20
from macsupport import *
 
21
 
 
22
# Create the type objects
 
23
LSAcceptanceFlags = Type("LSAcceptanceFlags", "l")
 
24
LSInitializeFlags = Type("LSInitializeFlags", "l")
 
25
LSRequestedInfo = Type("LSRequestedInfo", "l")
 
26
LSRolesMask = Type("LSRolesMask", "l")
 
27
UniCharCount = Type("UniCharCount", "l")
 
28
OptCFStringRef = OpaqueByValueType("CFStringRef", "OptCFStringRefObj")
 
29
LSItemInfoRecord = OpaqueType("LSItemInfoRecord", "LSItemInfoRecord")
 
30
 
 
31
includestuff = includestuff + """
 
32
#if PY_VERSION_HEX < 0x02040000
 
33
PyObject *PyMac_GetOSErrException(void);
 
34
#endif
 
35
 
 
36
#include <ApplicationServices/ApplicationServices.h>
 
37
 
 
38
/*
 
39
** Optional CFStringRef. None will pass NULL
 
40
*/
 
41
static int
 
42
OptCFStringRefObj_Convert(PyObject *v, CFStringRef *spec)
 
43
{
 
44
        if (v == Py_None) {
 
45
                *spec = NULL;
 
46
                return 1;
 
47
        }
 
48
        return CFStringRefObj_Convert(v, spec);
 
49
}
 
50
 
 
51
PyObject *
 
52
OptCFStringRefObj_New(CFStringRef it)
 
53
{
 
54
        if (it == NULL) {
 
55
                Py_INCREF(Py_None);
 
56
                return Py_None;
 
57
        }
 
58
        return CFStringRefObj_New(it);
 
59
}
 
60
 
 
61
/*
 
62
** Convert LSItemInfoRecord to Python.
 
63
*/
 
64
PyObject *
 
65
LSItemInfoRecord_New(LSItemInfoRecord *it)
 
66
{
 
67
        return Py_BuildValue("{s:is:O&s:O&s:O&s:O&s:i}",
 
68
                "flags", it->flags,
 
69
                "filetype", PyMac_BuildOSType, it->filetype,
 
70
                "creator", PyMac_BuildOSType, it->creator,
 
71
                "extension", OptCFStringRefObj_New, it->extension,
 
72
                "iconFileName", OptCFStringRefObj_New, it->iconFileName,
 
73
                "kindID", it->kindID);
 
74
}
 
75
"""
 
76
 
 
77
# From here on it's basically all boiler plate...
 
78
execfile(string.lower(MODPREFIX) + 'typetest.py')
 
79
 
 
80
# Create the generator groups and link them
 
81
module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
 
82
##object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)
 
83
##module.addobject(object)
 
84
 
 
85
# Create the generator classes used to populate the lists
 
86
Function = OSErrFunctionGenerator
 
87
##Method = OSErrMethodGenerator
 
88
 
 
89
# Create and populate the lists
 
90
functions = []
 
91
##methods = []
 
92
execfile(INPUTFILE)
 
93
 
 
94
# add the populated lists to the generator groups
 
95
# (in a different wordl the scan program would generate this)
 
96
for f in functions: module.add(f)
 
97
##for f in methods: object.add(f)
 
98
 
 
99
# generate output (open the output file as late as possible)
 
100
SetOutputFileName(OUTPUTFILE)
 
101
module.generate()