Cface__CLongNode.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 10 Jul 2008 07:31:14 +0000
changeset 5 c110eef5b9ef
parent 2 cfd2c393abfe
child 9 03c7a764d2be
permissions -rw-r--r--
- externalization of libraryName (now supports unix & win32 simultaneously) - basi support for accessing structure fields
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'cvut:fel/cface' }"
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
CModifierNode subclass:#CLongNode
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
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-C AST'
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
2
cfd2c393abfe Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    13
!CLongNode methodsFor:'accessing'!
cfd2c393abfe Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    14
5
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    15
cByteSize
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    16
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    17
    self isCLongIntNode 
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    18
        ifTrue:[^self cLongIntByteSize].
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    19
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    20
    self isCLongIntNode 
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    21
        ifTrue:[^self cLongLongIntByteSize].
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    22
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    23
    self error:'Cannot happen...I hope :-)'
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    24
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    25
    "Created: / 09-07-2008 / 19:43:11 / Jan Vrany <vranyj1@fel.cvut.cz>"
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    26
!
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    27
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    28
cLongIntByteSize
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    29
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    30
    "
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    31
        Cface::CLongNode new cLongIntByteSize       
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    32
    "
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    33
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    34
    %{
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    35
        return __MKSMALLINT(sizeof(long int));
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    36
    %}.
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    37
    ^4
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    38
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    39
    "Created: / 09-07-2008 / 19:44:39 / Jan Vrany <vranyj1@fel.cvut.cz>"
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    40
!
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    41
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    42
cLongLongIntByteSize
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    43
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    44
    "
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    45
        Cface::CLongNode new cLongLongIntByteSize         
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    46
    "
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    47
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    48
    %{
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    49
        return __MKSMALLINT(sizeof(long long int));
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    50
    %}.
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    51
    ^8
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    52
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    53
    "Created: / 09-07-2008 / 19:44:53 / Jan Vrany <vranyj1@fel.cvut.cz>"
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    54
!
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    55
2
cfd2c393abfe Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    56
ffiTypeSymbol
cfd2c393abfe Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    57
    "Superclass Cface::CModifierNode says that I am responsible to implement this method"
cfd2c393abfe Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    58
cfd2c393abfe Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    59
    ^#int32
cfd2c393abfe Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    60
cfd2c393abfe Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    61
    "Created: / 03-07-2008 / 23:02:09 / Jan Vrany <vranyj1@fel.cvut.cz>"
5
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    62
!
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    63
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    64
smalltalkxValueExtractionSelector
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    65
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    66
    self isCLongIntNode ifTrue:[^#longAt:].
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    67
    self isCLongLongIntNode ifTrue:[^#longLongAt:].
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    68
    ^type smalltalkxValueExtractionSelector
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    69
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    70
    "Created: / 09-07-2008 / 22:23:32 / Jan Vrany <vranyj1@fel.cvut.cz>"
2
cfd2c393abfe Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    71
! !
cfd2c393abfe Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    72
1
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
!CLongNode methodsFor:'printing'!
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
printOn: stream indent: indent
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    stream 
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
        nextPutAll:'long '; 
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
        cr;
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
        next: indent + 1 put: Character tab.
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    type printOn: stream indent: indent + 1.
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    "Created: / 04-03-2008 / 10:57:12 / janfrog"
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
! !
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!CLongNode methodsFor:'testing'!
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
5
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    89
isCLongIntNode
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    90
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    91
    ^type isCIntNode
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    92
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    93
    "Created: / 09-07-2008 / 19:42:06 / Jan Vrany <vranyj1@fel.cvut.cz>"
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    94
!
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    95
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    96
isCLongLongIntNode
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    97
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    98
    ^type isCLongIntNode
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    99
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   100
    "Created: / 09-07-2008 / 19:42:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   101
!
c110eef5b9ef - externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   102
1
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
isCLongNode
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    ^ true
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    "Created: / 17-02-2008 / 21:52:38 / janfrog"
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
! !
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
!CLongNode methodsFor:'visiting'!
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
acceptVisitor:aVisitor 
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
    "Double dispatch back to the visitor, passing my type encoded in
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
     the selector (visitor pattern)"
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    "stub code automatically generated - please change if required"
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    ^ aVisitor visitCLongNode:self
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    "Created: / 12-02-2008 / 22:14:55 / janfrog"
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
! !
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
!CLongNode class methodsFor:'documentation'!
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
version
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    ^ '$Header: /opt/data/cvs/cvut-fel/cface/Cface__CLongNode.st,v 1.1 2008/02/26 15:58:50 vranyj1 Exp $'
b6c0180314d1 Initial import
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
! !