Cface__TypeResolver.st
changeset 1 b6c0180314d1
child 4 fc74bd43a3eb
equal deleted inserted replaced
0:9bbbbb659d8b 1:b6c0180314d1
       
     1 "{ Package: 'cvut:fel/cface' }"
       
     2 
       
     3 "{ NameSpace: Cface }"
       
     4 
       
     5 CNodeVisitor subclass:#TypeResolver
       
     6 	instanceVariableNames:'typeMap'
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'Cface-Visitors'
       
    10 !
       
    11 
       
    12 
       
    13 !TypeResolver methodsFor:'accessing'!
       
    14 
       
    15 typeMap
       
    16     ^ typeMap
       
    17 
       
    18     "Created: / 12-02-2008 / 23:44:35 / janfrog"
       
    19 !
       
    20 
       
    21 typeMap:something
       
    22     typeMap := something.
       
    23 
       
    24     "Created: / 12-02-2008 / 23:44:35 / janfrog"
       
    25 ! !
       
    26 
       
    27 !TypeResolver methodsFor:'processing'!
       
    28 
       
    29 process: aCNode
       
    30 
       
    31     typeMap := TypeCollector new
       
    32                     process: aCNode;
       
    33                     typeMap.
       
    34     ^super process: aCNode
       
    35 
       
    36     "Created: / 12-02-2008 / 23:48:03 / janfrog"
       
    37 ! !
       
    38 
       
    39 !TypeResolver methodsFor:'visiting'!
       
    40 
       
    41 visit: aCNode
       
    42 
       
    43     super visit: aCNode.
       
    44     (aCNode respondsTo: #type) ifTrue:
       
    45         [aCNode type: aCNode type resolved]
       
    46 
       
    47     "Created: / 17-02-2008 / 17:56:42 / janfrog"
       
    48 !
       
    49 
       
    50 visitCUserDefinedTypeNode: anObject
       
    51 
       
    52     anObject type ifNil:
       
    53         [|type|
       
    54         type := (typeMap at: anObject cName).
       
    55         self visit: type.
       
    56         anObject type: type]
       
    57 
       
    58     "Created: / 12-02-2008 / 23:45:17 / janfrog"
       
    59     "Modified: / 17-02-2008 / 18:30:56 / janfrog"
       
    60 ! !
       
    61 
       
    62 !TypeResolver class methodsFor:'documentation'!
       
    63 
       
    64 version
       
    65     ^ '$Header: /opt/data/cvs/cvut-fel/cface/Cface__TypeResolver.st,v 1.1 2008/02/26 16:00:57 vranyj1 Exp $'
       
    66 ! !