Cface__Generator.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 03 Jul 2008 22:00:07 +0000
changeset 2 cfd2c393abfe
parent 1 b6c0180314d1
child 3 110a9cbf8594
permissions -rw-r--r--
Smalltalk/X generator improvements: - generate C enums as SharedPools with accessors - generate externa function calls using FFI. Not yet finished! - CairoMappings improved.

"{ Package: 'cvut:fel/cface' }"

"{ NameSpace: Cface }"

CNodeVisitor subclass:#Generator
	instanceVariableNames:'changeset'
	classVariableNames:''
	poolDictionaries:''
	category:'Cface-Generators'
!

!Generator class methodsFor:'documentation'!

history

    "Created: / 02-11-2007 / 11:41:45 / haja"
    "Created: #parser / 02-11-2007 / 11:45:04 / haja"
    "Created: #parser: / 02-11-2007 / 11:45:04 / haja"
    "Created: #initialize / 02-11-2007 / 11:45:28 / haja"
    "Created: #new / 02-11-2007 / 11:45:28 / haja"
    "Created: #inputStream / 02-11-2007 / 11:46:15 / haja"
    "Created: #inputStream: / 02-11-2007 / 11:46:15 / haja"
    "Created: #on: / 02-11-2007 / 11:47:04 / haja"
    "Created: #onFile: / 02-11-2007 / 11:47:24 / haja"
    "Created: #defaultParser / 02-11-2007 / 11:54:49 / haja"
    "Created: #parse / 02-11-2007 / 12:01:29 / haja"
    "Created: #parseDef / 02-11-2007 / 12:03:18 / haja"
    "Deleted: #parse / 02-11-2007 / 12:03:20 / haja"
    "Created: #parseTree / 02-11-2007 / 12:38:27 / haja"
    "Created: #parseTree: / 02-11-2007 / 12:38:27 / haja"
    "Created: #analyser / 02-11-2007 / 12:38:27 / haja"
    "Created: #analyser: / 02-11-2007 / 12:38:27 / haja"
    "Created: #analyse / 02-11-2007 / 12:41:13 / haja"
    "Created: #writeToFile: / 05-11-2007 / 01:37:02 / haja"
    "Created: #startGeneration / 05-11-2007 / 01:37:42 / haja"
    "Created: #startGeneration:nameSpace:category: / 05-11-2007 / 01:44:05 / haja"
    "Deleted: #startGeneration / 05-11-2007 / 01:44:08 / haja"
    "Created: #otputStreamContents / 05-11-2007 / 02:00:05 / haja"
    "Created: #visitArrayNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitConstNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitEnumFieldNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitEnumNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitFileNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitFunctionNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitIdNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitStructFieldNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitStructNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitTypeDefNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitUnionFieldNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitUnionNode: / 05-11-2007 / 02:00:43 / haja"
    "Created: #visitSequenceableCollection:with: / 05-11-2007 / 02:23:19 / haja"
    "Created: #startGeneration:nameSpace: / 05-11-2007 / 16:44:25 / haja"
    "Created: #className / 05-11-2007 / 16:45:38 / haja"
    "Created: #className: / 05-11-2007 / 16:45:38 / haja"
    "Created: #nameSpace / 05-11-2007 / 16:45:38 / haja"
    "Created: #nameSpace: / 05-11-2007 / 16:45:38 / haja"
    "Deleted: #startGeneration:nameSpace:category: / 05-11-2007 / 16:47:31 / haja"
    "Created: #visitParseTreeNames: / 05-11-2007 / 17:28:23 / haja"
    "Created: #visitParseTreeName: / 05-11-2007 / 17:28:29 / haja"
    "Deleted: #visitParseTreeNames: / 05-11-2007 / 17:28:33 / haja"
    "Created: #visitNamePointerNode: / 05-11-2007 / 17:31:22 / haja"
    "Deleted: #visitPointerNode: / 05-11-2007 / 17:31:25 / haja"
    "Created: #visitNameParseTree: / 05-11-2007 / 17:32:21 / haja"
    "Deleted: #visitParseTreeName: / 05-11-2007 / 17:32:23 / haja"
    "Created: #visitNameIdNode: / 05-11-2007 / 17:36:40 / haja"
    "Created: #visitNameConstNode: / 05-11-2007 / 17:38:29 / haja"
    "Created: #visitPointerNode: / 05-11-2007 / 17:41:17 / haja"
    "Created: #visitNameFunctionNode: / 05-11-2007 / 17:43:20 / haja"
    "Created: #visitCheckParseTree: / 05-11-2007 / 21:06:38 / haja"
    "Deleted: #visitCheckParseTree: / 05-11-2007 / 21:23:44 / haja"
    "Deleted: #otputStreamContents / 05-11-2007 / 22:00:09 / haja"
    "Created: #generateName: / 12-11-2007 / 09:32:09 / haja"
    "Deleted: #outputStream: / 12-11-2007 / 09:43:58 / haja"
    "Deleted: #outputStream / 12-11-2007 / 09:43:58 / haja"
    "Deleted: #cr / 12-11-2007 / 09:44:39 / haja"
    "Deleted: #nextPut: / 12-11-2007 / 09:44:40 / haja"
    "Deleted: #nextPutString: / 12-11-2007 / 09:44:40 / haja"
    "Deleted: #tab / 12-11-2007 / 09:44:40 / haja"
    "Deleted: #visitNameFunctionNode: / 12-11-2007 / 09:44:52 / haja"
    "Deleted: #visitNameConstNode: / 12-11-2007 / 09:44:52 / haja"
    "Deleted: #visitNamePointerNode: / 12-11-2007 / 09:44:52 / haja"
    "Deleted: #visitNameParseTree: / 12-11-2007 / 09:44:52 / haja"
    "Deleted: #visitNameIdNode: / 12-11-2007 / 09:44:52 / haja"
    "Created: #structFieldsAccessing: / 12-11-2007 / 13:36:43 / haja"
    "Created: #generateAccessMethod:in: / 12-11-2007 / 13:41:38 / haja"
    "Created: #generateTypeCheck:name: / 12-11-2007 / 15:41:13 / haja"
    "Created: #generateValueExtraction:name: / 13-11-2007 / 16:39:24 / haja"
    "Created: #generateObjectCreation:name: / 13-11-2007 / 17:04:44 / haja"
    "Created: #generateObjectCreation: / 13-11-2007 / 17:05:54 / haja"
    "Deleted: #generateObjectCreation:name: / 13-11-2007 / 17:05:58 / haja"
    "Created: #unionieldsAccessing: / 13-11-2007 / 17:55:10 / haja"
    "Deleted: #generateAccessMethod:in: / 13-11-2007 / 17:55:32 / haja"
    "Created: #unionFieldsAccessing: / 13-11-2007 / 17:56:05 / haja"
    "Deleted: #unionieldsAccessing: / 13-11-2007 / 17:56:08 / haja"
    "Created: #generateUnionAccessMethod:in: / 13-11-2007 / 17:56:19 / haja"
    "Created: #enumFieldsAccessing: / 14-11-2007 / 10:40:20 / haja"
    "Created: #generateEnumAccessMethod:in: / 14-11-2007 / 10:40:48 / haja"
    "Created: #generateTypeDefAccessMethod: / 14-11-2007 / 17:38:11 / haja"
    "Created: #addToParseTree: / 14-11-2007 / 18:14:01 / haja"
    "Deleted: #addToParseTree: / 14-11-2007 / 18:19:41 / haja"
    "Created: #visitFunctionPrototypeNode: / 15-11-2007 / 00:43:26 / haja"
    "Created: #generateTypeName: / 15-11-2007 / 15:47:57 / haja"
    "Deleted: #generateName: / 15-11-2007 / 15:47:57 / haja"
    "Created: #generateTypeDescription: / 15-11-2007 / 15:48:46 / haja"
    "Deleted: #generateTypeName: / 15-11-2007 / 15:54:19 / haja"
    "Created: #getIdNode: / 15-11-2007 / 16:51:57 / haja"
    "Created: #generateLocalType: / 15-11-2007 / 17:01:53 / haja"
    "Deleted: #generateLocalType: / 15-11-2007 / 17:02:20 / haja"
    "Created: #generateLocalType:in: / 15-11-2007 / 17:03:36 / haja"
    "Created: #prototypes / 16-11-2007 / 00:54:23 / haja"
    "Created: #prototypes: / 16-11-2007 / 00:54:23 / haja"
    "Created: #generateCallbackCallingFunctions / 16-11-2007 / 01:04:09 / haja"
    "Created: #generateCallbackCalledFunctions / 16-11-2007 / 01:04:11 / haja"
    "Created: #generateCallbackSmalltalkMethods / 16-11-2007 / 09:49:30 / haja"
    "Deleted: #generateCallbackCalledFunctions / 16-11-2007 / 09:49:30 / haja"
    "Created: #generateCallbackCFunctions / 16-11-2007 / 09:49:43 / haja"
    "Deleted: #generateCallbackCallingFunctions / 16-11-2007 / 09:49:43 / haja"
    "Created: #generateCallbackSmalltalkMethod: / 16-11-2007 / 09:51:04 / haja"
    "Created: #hasValidReturn: / 16-11-2007 / 11:19:02 / haja"
    "Created: #includeFromSourceFile: / 16-11-2007 / 11:31:12 / haja"
    "Created: #generateCallbackCFunction: / 16-11-2007 / 15:26:47 / haja"
    "Created: #generateCType: / 16-11-2007 / 16:17:53 / haja"
    "Deleted: #visitFunctionPrototypeNode: / 17-11-2007 / 09:14:27 / haja"
    "Created: #generateInclude / 17-11-2007 / 23:38:53 / haja"
    "Created: #correctMethodName: / 19-11-2007 / 20:21:10 / haja"
    "Created: #builder / 22-11-2007 / 20:20:05 / haja"
    "Created: #builder: / 22-11-2007 / 20:20:05 / haja"
    "Created: #defaultBuilder / 22-11-2007 / 20:26:42 / haja"
    "Created: #startGeneration:nameSpace:ofFile: / 22-11-2007 / 21:22:30 / haja"
    "Created: #startGeneration:nameSpace:onFile: / 22-11-2007 / 21:23:02 / haja"
    "Deleted: #startGeneration:nameSpace:ofFile: / 22-11-2007 / 21:23:04 / haja"
    "Deleted: #builder / 22-11-2007 / 23:11:25 / haja"
    "Deleted: #builder: / 22-11-2007 / 23:11:25 / haja"
    "Deleted: #defaultBuilder / 22-11-2007 / 23:11:40 / haja"
    "Deleted: #visitParseTree: / 24-11-2007 / 11:57:03 / haja"
    "Created: #startGeneration:nameSpace:toFile: / 24-11-2007 / 12:28:46 / haja"
    "Deleted: #startGeneration:nameSpace:onFile: / 24-11-2007 / 12:28:48 / haja"
    "Created: #generateBasicStructAccessMethod:in: / 27-11-2007 / 11:24:24 / haja"
    "Created: #generateArrayStructAccessMethod:in: / 27-11-2007 / 11:24:55 / haja"
    "Created: #hasLocalDeclaration: / 27-11-2007 / 14:33:18 / haja"
    "Created: #isAnyStructure: / 27-11-2007 / 14:45:54 / haja"
    "Created: #isAnyUnion: / 27-11-2007 / 14:51:23 / haja"
    "Created: #isAnyEnum: / 27-11-2007 / 14:51:32 / haja"
    "Created: #generateStructAccessMethodWithDirectUnion:in: / 27-11-2007 / 15:28:08 / haja"
    "Created: #parent / 27-11-2007 / 15:41:51 / haja"
    "Created: #parent: / 27-11-2007 / 15:41:51 / haja"
    "Deleted: #enumFieldsAccessing: / 27-11-2007 / 15:50:56 / haja"
    "Deleted: #generateEnumAccessMethod:in: / 27-11-2007 / 15:51:17 / haja"
    "Deleted: #generateTypeDefAccessMethod: / 27-11-2007 / 15:51:28 / haja"
    "Deleted: #generateUnionAccessMethod:in: / 27-11-2007 / 15:51:30 / haja"
    "Deleted: #structFieldsAccessing: / 27-11-2007 / 15:51:31 / haja"
    "Deleted: #unionFieldsAccessing: / 27-11-2007 / 15:51:32 / haja"
    "Deleted: #parent: / 27-11-2007 / 15:54:45 / haja"
    "Deleted: #parent / 27-11-2007 / 15:54:45 / haja"
    "Created: #parentNode / 27-11-2007 / 15:54:49 / haja"
    "Created: #parentNode: / 27-11-2007 / 15:54:49 / haja"
    "Deleted: #generateStructAccessMethod:in: / 27-11-2007 / 15:57:14 / haja"
    "Deleted: #generateStructAccessMethodWithDirectUnion:in: / 27-11-2007 / 15:57:16 / haja"
    "Created: #generateComment:name:id: / 27-11-2007 / 16:27:02 / haja"
    "Created: #generateComment: / 27-11-2007 / 16:31:10 / haja"
    "Created: #generateCommentFor: / 27-11-2007 / 16:38:21 / haja"
    "Deleted: #generateComment: / 27-11-2007 / 16:38:46 / haja"
    "Created: #isArray: / 27-11-2007 / 16:58:39 / haja"
    "Created: #generateStructAccessMethod:in: / 27-11-2007 / 16:58:54 / haja"
    "Deleted: #generateStructAccessMethod:in: / 27-11-2007 / 17:05:24 / haja"
    "Created: #hasDirectLocalDeclaration: / 27-11-2007 / 17:30:10 / haja"
    "Deleted: #hasDirectLocalDeclaration: / 27-11-2007 / 17:31:01 / haja"
    "Created: #generateCompositeStructAccessMethod:in: / 27-11-2007 / 17:32:14 / haja"
    "Created: #generateCompositeStructAccessMethods:in: / 27-11-2007 / 17:34:16 / haja"
    "Created: #generateCompositeStructAccessMethod:in:in: / 27-11-2007 / 17:38:34 / haja"
    "Deleted: #generateCompositeStructAccessMethod:in: / 27-11-2007 / 17:38:39 / haja"
    "Created: #isArrayStructure: / 27-11-2007 / 18:24:36 / haja"
    "Created: #isArrayUnion: / 27-11-2007 / 18:25:49 / haja"
    "Created: #generateArrayCompositeStructAccessMethods:in: / 27-11-2007 / 18:26:46 / haja"
    "Created: #generateArrayCompositeStructAccessMethod:in:in: / 27-11-2007 / 18:29:38 / haja"
    "Created: #declarationString: / 05-12-2007 / 21:33:57 / haja"
    "Created: #declarationCString: / 05-12-2007 / 21:39:49 / haja"
    "Deleted: #declarationString: / 05-12-2007 / 21:39:52 / haja"
    "Deleted: #generateCType: / 06-12-2007 / 12:36:06 / haja"
    "Deleted: #generateTypeCheck:name: / 19-12-2007 / 16:06:11 / haja"
    "Deleted: #generateObjectCreation: / 19-12-2007 / 16:10:40 / haja"
    "Deleted: #generateValueExtraction:name: / 19-12-2007 / 17:15:16 / haja"
    "Deleted: #generateTypeDescription: / 20-12-2007 / 13:01:18 / haja"
    "Created: #cBuilder / 20-12-2007 / 13:03:21 / haja"
    "Created: #cBuilder: / 20-12-2007 / 13:03:21 / haja"
    "Created: #defaultCBuilder / 20-12-2007 / 13:03:21 / haja"
    "Created: #defaultStBuilder / 20-12-2007 / 13:03:21 / haja"
    "Created: #fundamentalTypes / 20-12-2007 / 13:03:21 / haja"
    "Created: #outputStream / 20-12-2007 / 13:03:22 / haja"
    "Created: #outputStream: / 20-12-2007 / 13:03:22 / haja"
    "Created: #stBuilder / 20-12-2007 / 13:03:22 / haja"
    "Created: #stBuilder: / 20-12-2007 / 13:03:22 / haja"
    "Created: #streamContents / 20-12-2007 / 13:03:22 / haja"
    "Created: #cr / 20-12-2007 / 13:03:32 / haja"
    "Created: #nextPut: / 20-12-2007 / 13:03:32 / haja"
    "Created: #nextPutString: / 20-12-2007 / 13:03:32 / haja"
    "Created: #space / 20-12-2007 / 13:03:32 / haja"
    "Created: #tab / 20-12-2007 / 13:03:32 / haja"
    "Created: #visitParseTree: / 20-12-2007 / 13:03:37 / haja"
    "Created: #generateStructOrUnionCreate: / 03-01-2008 / 17:28:36 / haja"
    "Created: #generateStructOrUnionFree: / 03-01-2008 / 17:34:29 / haja"
    "Created: #generateStructOrUnionCreateMethode: / 03-01-2008 / 19:26:14 / haja"
    "Created: #generateStructOrUnionFreeMethdoe: / 03-01-2008 / 19:26:20 / haja"
    "Created: #generateStructOrUnionFreeMethode: / 03-01-2008 / 19:26:25 / haja"
    "Deleted: #generateStructOrUnionFreeMethdoe: / 03-01-2008 / 19:26:28 / haja"
    "Created: #generateStructOrUnionFreeMethod: / 03-01-2008 / 19:26:32 / haja"
    "Deleted: #generateStructOrUnionFreeMethode: / 03-01-2008 / 19:26:35 / haja"
    "Deleted: #generateStructOrUnionFree: / 03-01-2008 / 19:26:38 / haja"
    "Deleted: #generateStructOrUnionCreate: / 03-01-2008 / 19:26:40 / haja"
    "Created: #generateStructOrUnionCreateMethod: / 03-01-2008 / 19:26:43 / haja"
    "Deleted: #generateStructOrUnionCreateMethode: / 03-01-2008 / 19:26:44 / haja"
    "Created: #generateStructOrUnionCreatePointerMethod: / 03-01-2008 / 21:03:28 / haja"
    "Deleted: #generateStructOrUnionCreatePointerMethod: / 03-01-2008 / 21:05:48 / haja"
    "Created: #generate:class:nameSpace: / 06-01-2008 / 14:30:34 / haja"
    "Created: #generateStructOrUnionCreateNULLPointerMethod: / 06-01-2008 / 16:09:47 / haja"
! !

!Generator methodsFor:'initialization'!

initialize

    super initialize.
    changeset := ChangeSet new

    "Created: / 03-07-2008 / 20:08:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!Generator class methodsFor:'documentation'!

version
    ^ '$Header: /opt/data/cvs/cvut-fel/cface/Cface__Generator.st,v 1.1 2008/02/26 18:25:56 vranyj1 Exp $'
! !