Cface__TypeResolver.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 30 May 2012 19:55:53 +0000
changeset 19 1297bf936bfb
parent 14 1f730d82496e
child 24 e7afa531abcf
permissions -rw-r--r--
Some fixes for modern GCC XML

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

"{ NameSpace: Cface }"

CNodeVisitor subclass:#TypeResolver
	instanceVariableNames:'typeMap'
	classVariableNames:''
	poolDictionaries:''
	category:'Cface-Visitors'
!


!TypeResolver methodsFor:'accessing'!

typeMap
    ^ typeMap

    "Created: / 12-02-2008 / 23:44:35 / janfrog"
!

typeMap:something
    typeMap := something.

    "Created: / 12-02-2008 / 23:44:35 / janfrog"
! !

!TypeResolver methodsFor:'processing'!

process: aCNode

    typeMap := TypeCollector new
                    process: aCNode;
                    typeMap.
    ^super process: aCNode

    "Created: / 12-02-2008 / 23:48:03 / janfrog"
! !

!TypeResolver methodsFor:'visiting'!

visit: aCNode

    super visit: aCNode.
    (aCNode respondsTo: #type) ifTrue:
        [aCNode type: aCNode type resolved]

    "Created: / 17-02-2008 / 17:56:42 / janfrog"
!

visitCUserDefinedTypeNode: anObject

    "/thisContext isRecursive ifTrue:[^self].


    anObject type 
        ifNil:
            [|type|
            type := (typeMap at: anObject cName ifAbsent:[CPointerNode new type: CVoidNode new]).
            self visit: type.
            anObject type: type]

    "Created: / 12-02-2008 / 23:45:17 / janfrog"
    "Modified: / 17-02-2008 / 18:30:56 / janfrog"
    "Modified: / 09-07-2008 / 20:53:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!TypeResolver class methodsFor:'documentation'!

version
    ^ '$Id$'
!

version_SVN
    ^ '$Id$'
! !