Cface__TypeResolver.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 06 Jul 2015 08:03:53 +0100
changeset 38 7654e5bd9818
parent 33 f87d54770abe
child 40 7d1e77b6115e
permissions -rw-r--r--
During type resolution, do not REPLACE the type with it's resolved type. Rather link it, i.e., set UDT's type to resolved type. Let the mappings to handle the rest if necessary.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32
d7464405cbda Package renamed from cvut:fel/cface to jv:cface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
     1
"{ Package: 'jv:cface' }"
1
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Cface }"
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
CNodeVisitor subclass:#TypeResolver
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'typeMap'
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'Cface-Visitors'
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!TypeResolver methodsFor:'accessing'!
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
typeMap
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    ^ typeMap
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    "Created: / 12-02-2008 / 23:44:35 / janfrog"
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
!
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
typeMap:something
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
    typeMap := something.
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    "Created: / 12-02-2008 / 23:44:35 / janfrog"
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
! !
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
!TypeResolver methodsFor:'processing'!
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
process: aCNode
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
    typeMap := TypeCollector new
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
                    process: aCNode;
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
                    typeMap.
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
    ^super process: aCNode
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    "Created: / 12-02-2008 / 23:48:03 / janfrog"
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
! !
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
!TypeResolver methodsFor:'visiting'!
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
24
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    41
visitCTypedefNode: anObject
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    42
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    43
    anObject type isCUserDefinedTypeNode ifTrue:[
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    44
        | realType |
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    45
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    46
        realType := typeMap at: anObject type cName ifAbsent:[nil].
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    47
        realType notNil ifTrue:[
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    48
            self visit: realType.
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    49
            anObject type: realType.
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    50
        ].
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    51
    ]
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    52
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    53
    "Created: / 05-09-2012 / 11:37:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    54
!
e7afa531abcf Some fixes for libgit2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    55
1
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
visitCUserDefinedTypeNode: anObject
5
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    57
    "/thisContext isRecursive ifTrue:[^self].
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    58
38
7654e5bd9818 During type resolution, do not REPLACE the type with it's resolved type.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    59
    anObject type isNil ifTrue:[
7654e5bd9818 During type resolution, do not REPLACE the type with it's resolved type.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    60
        |type|
5
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    61
38
7654e5bd9818 During type resolution, do not REPLACE the type with it's resolved type.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    62
        type := (typeMap at: anObject cName ifAbsent:[CPointerNode new type: CVoidNode new]).
7654e5bd9818 During type resolution, do not REPLACE the type with it's resolved type.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    63
        self visit: type.
7654e5bd9818 During type resolution, do not REPLACE the type with it's resolved type.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    64
        anObject type: type
7654e5bd9818 During type resolution, do not REPLACE the type with it's resolved type.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    65
    ]
1
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    "Created: / 12-02-2008 / 23:45:17 / janfrog"
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    "Modified: / 17-02-2008 / 18:30:56 / janfrog"
5
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    69
    "Modified: / 09-07-2008 / 20:53:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
38
7654e5bd9818 During type resolution, do not REPLACE the type with it's resolved type.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    70
    "Modified: / 06-07-2015 / 08:01:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
! !
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
!TypeResolver class methodsFor:'documentation'!
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
version
19
1297bf936bfb Some fixes for modern GCC XML
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    76
    ^ '$Id$'
14
1f730d82496e Added version_SVN methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    77
!
1f730d82496e Added version_SVN methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    78
33
f87d54770abe Minor fixes for recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    79
version_HG
f87d54770abe Minor fixes for recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    80
f87d54770abe Minor fixes for recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    81
    ^ '$Changeset: <not expanded> $'
f87d54770abe Minor fixes for recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    82
!
f87d54770abe Minor fixes for recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    83
14
1f730d82496e Added version_SVN methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    84
version_SVN
1f730d82496e Added version_SVN methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    85
    ^ '$Id$'
1
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
! !
33
f87d54770abe Minor fixes for recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    87