diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2001-07-13 20:56:52 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2001-07-13 20:56:52 (GMT) |
commit | 2aadb891e7c8192ad538413e13caa0c59fb720ec (patch) | |
tree | 4e3da1cee38824cc903015fe84d534a090a0e6a8 /Mac/Modules/mlte/mltescan.py | |
parent | 3269cc8bd111af7fe9f35e6e90669251bace5ef1 (diff) | |
download | cpython-2aadb891e7c8192ad538413e13caa0c59fb720ec.zip cpython-2aadb891e7c8192ad538413e13caa0c59fb720ec.tar.gz cpython-2aadb891e7c8192ad538413e13caa0c59fb720ec.tar.bz2 |
First stab at an interface to the Multi Language Text Editor. It compiles and imports, but that's about all. Apple didn't put const in front of their input-only by-reference args, so that needs fixing first.
Diffstat (limited to 'Mac/Modules/mlte/mltescan.py')
-rw-r--r-- | Mac/Modules/mlte/mltescan.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/Mac/Modules/mlte/mltescan.py b/Mac/Modules/mlte/mltescan.py new file mode 100644 index 0000000..28ba342 --- /dev/null +++ b/Mac/Modules/mlte/mltescan.py @@ -0,0 +1,71 @@ +# Scan an Apple header file, generating a Python file of generator calls. + +import sys +import os +BGENDIR=os.path.join(sys.prefix, ':Tools:bgen:bgen') +sys.path.append(BGENDIR) +from scantools import Scanner_OSX +from bgenlocations import TOOLBOXDIR + +LONG = "MacTextEditor" +SHORT = "mlte" +OBJECTS = ("TXNObject", "TXNFontMenuObject") +# ADD object typenames here + +def main(): + input = "MacTextEditor.h" + output = SHORT + "gen.py" + defsoutput = TOOLBOXDIR + LONG + ".py" + scanner = MyScanner(input, output, defsoutput) + scanner.scan() + scanner.gentypetest(SHORT+"typetest.py") + scanner.close() + print "=== Done scanning and generating, now importing the generated code... ===" + exec "import " + SHORT + "support" + print "=== Done. It's up to you to compile it now! ===" + +class MyScanner(Scanner_OSX): + + def destination(self, type, name, arglist): + classname = "Function" + listname = "functions" + if arglist: + t, n, m = arglist[0] + if t in OBJECTS and m == "InMode": + classname = "Method" + listname = t + "_methods" + return classname, listname + + def writeinitialdefs(self): + self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") + + def makeblacklistnames(self): + return [ + ] + + def makegreylist(self): + return [] + + def makeblacklisttypes(self): + return [ + "TXNTab", # TBD + "TXNMargins", # TBD + "TXNControlData", #TBD + "TXNATSUIFeatures", #TBD + "TXNATSUIVariations", #TBD + "TXNAttributeData", #TBD + "TXNTypeAttributes", #TBD + "TXNMatchTextRecord", #TBD + "TXNBackground", #TBD + "UniChar", #TBD + "TXNFindUPP", + ] + + def makerepairinstructions(self): + return [ + ([("void", "*", "OutMode"), ("ByteCount", "*", "InMode")], + [("MlteInBuffer", "*", "InMode")]), + ] + +if __name__ == "__main__": + main() |