Cface__TypeResolver.st
changeset 1 b6c0180314d1
child 4 fc74bd43a3eb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Cface__TypeResolver.st	Tue May 27 18:55:24 2008 +0000
@@ -0,0 +1,66 @@
+"{ 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
+
+    anObject type ifNil:
+        [|type|
+        type := (typeMap at: anObject cName).
+        self visit: type.
+        anObject type: type]
+
+    "Created: / 12-02-2008 / 23:45:17 / janfrog"
+    "Modified: / 17-02-2008 / 18:30:56 / janfrog"
+! !
+
+!TypeResolver class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /opt/data/cvs/cvut-fel/cface/Cface__TypeResolver.st,v 1.1 2008/02/26 16:00:57 vranyj1 Exp $'
+! !