Added mappings for LLVM C and LLVM C Extensions
These are used to generate C callouts for jv:llvm_s project.
--- a/Cface__CArgumentNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CArgumentNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -76,3 +76,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CArrayNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CArrayNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -83,3 +83,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CDefinitionFileNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CDefinitionFileNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -93,3 +93,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CDefinitionNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CDefinitionNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -88,3 +88,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CDefinitionScanner.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CDefinitionScanner.st Wed Aug 12 07:32:13 2015 +0100
@@ -3265,3 +3265,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CDerivedTypeNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CDerivedTypeNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -169,3 +169,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CEnumNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CEnumNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -138,3 +138,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CEnumValueNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CEnumValueNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -86,3 +86,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CFunctionTypeNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CFunctionTypeNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -90,3 +90,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CLongNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CLongNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -95,6 +95,11 @@
!CLongNode class methodsFor:'documentation'!
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+!
+
version_SVN
^ '$Id$'
! !
--- a/Cface__CNoNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CNoNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -32,3 +32,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CStructFieldNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CStructFieldNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -119,3 +119,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CStructNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CStructNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -84,3 +84,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CStructuredNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CStructuredNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -110,3 +110,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__CUnionNode.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__CUnionNode.st Wed Aug 12 07:32:13 2015 +0100
@@ -93,3 +93,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__GTKMapping.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__GTKMapping.st Wed Aug 12 07:32:13 2015 +0100
@@ -54,3 +54,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__Generator.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__Generator.st Wed Aug 12 07:32:13 2015 +0100
@@ -271,3 +271,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__GeneratorCommand.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__GeneratorCommand.st Wed Aug 12 07:32:13 2015 +0100
@@ -204,3 +204,4 @@
version_SVN
^ '$Id$'
! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Cface__LLVM_C.st Wed Aug 12 07:32:13 2015 +0100
@@ -0,0 +1,173 @@
+"{ Package: 'jv:cface' }"
+
+"{ NameSpace: Cface }"
+
+TypeMapping subclass:#LLVM_C
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Cface-Mappings'
+!
+
+!LLVM_C class methodsFor:'documentation'!
+
+documentation
+"
+ Mappings for LLVM C API. Used to generate C callouts
+ for jv:llvm_s project.
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+ https://bitbucket.org/janvrany/jv-llvm-s/
+
+"
+! !
+
+!LLVM_C class methodsFor:'generating'!
+
+generate
+ |llvmcDir llvmcDef|
+
+ llvmcDir := (Smalltalk getPackageDirectoryForPackage: 'jv:cface') / 'resources'/'examples'/'llvm-c'.
+ llvmcDef := llvmcDir / 'llvm-c.def'.
+
+ ^Cface::Platform theInstance generatorCommand
+ definitions: llvmcDef asFilename;
+ mappings: self new;
+ process
+
+ "Created: / 06-07-2015 / 06:53:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-08-2015 / 06:54:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVM_C methodsFor:'accessing'!
+
+smalltalkPackage
+
+ ^#'jv:llvm_s'
+
+ "Created: / 03-07-2008 / 21:14:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Modified: / 12-08-2015 / 06:56:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smalltalkSelectorForFunction: cFunction
+
+ ^String streamContents:
+ [:s|
+ | nm |
+
+ nm := cFunction cName.
+ (nm startsWith:'LLVM') ifTrue:[
+ nm := nm copyFrom: 5.
+ ] ifFalse:[
+ nm := nm copy.
+ ].
+ s nextPutAll:nm.
+ cFunction arguments notEmptyOrNil ifTrue:
+ [s nextPut:$:].
+ cFunction arguments size > 1 ifTrue:
+ [(cFunction arguments copyFrom:2) do:
+ [:argument|
+ s
+ nextPutAll: '_:']]]
+
+ "Created: / 17-02-2008 / 22:16:03 / janfrog"
+ "Modified: / 18-02-2008 / 14:58:43 / janfrog"
+ "Modified: / 04-07-2008 / 15:33:31 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Modified: / 01-07-2015 / 10:57:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVM_C methodsFor:'filtering'!
+
+shouldIgnoreStruct: cStructNode
+ ^ (cStructNode cName startsWith: 'LLVMOpaque') or:[ super shouldIgnoreStruct: cStructNode ]
+
+ "Created: / 06-07-2015 / 07:00:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 06-07-2015 / 23:12:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVM_C methodsFor:'mapping - categories'!
+
+smalltalkCategoryForDerivedType:cType
+ | className class |
+
+ className := cType smalltalkName asSymbol.
+ (className notNil and:[(class := Smalltalk at: className) notNil]) ifTrue:[
+ ^class category
+ ].
+ ^'LLVM-Core'
+
+ "Created: / 05-09-2012 / 11:15:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 30-06-2015 / 13:53:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smalltalkCategoryForEnum:cType
+ | className class |
+
+ className := cType smalltalkName asSymbol.
+ (className notNil and:[(class := Smalltalk at: className) notNil]) ifTrue:[
+ ^class category
+ ].
+ ^'LLVM-Core-Constants'
+
+ "Created: / 07-07-2015 / 18:21:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVM_C methodsFor:'mapping - class names'!
+
+smalltalkClassNameForDerivedType: type
+ "Answers class which should contain function call"
+
+ | baseName |
+
+ baseName := super smalltalkClassNameForDerivedType:type.
+ (baseName endsWith: 'Ref') ifTrue:[
+ baseName := baseName copyTo: baseName size - 3
+ ].
+ ^baseName
+
+ "Created: / 30-06-2015 / 13:55:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 01-07-2015 / 09:32:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 01-07-2015 / 16:23:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smalltalkClassNameForFunction:cFunction
+"/ | cFunctionName firstArgType returnType |
+"/
+"/ cFunctionName := cFunction cName.
+"/ cFunctionName = 'LLVMCreateMemoryBufferWithContentsOfFile' ifTrue:[
+"/ ^'LLVMMemoryBuffer'
+"/ ].
+"/ cFunctionName = 'LLVMInitializeMCJITCompilerOptions' ifTrue:[
+"/ ^'LLVMMCJITCompilerOptions'
+"/ ].
+"/
+"/
+"/ cFunction arguments notEmpty ifTrue:[
+"/ firstArgType := cFunction arguments first type.
+"/ (firstArgType resolved isCPointerNode and:[ firstArgType resolved type resolved isCStructNode ])
+"/ ifTrue:[ ^ self smalltalkClassNameForDerivedType: firstArgType ].
+"/ ].
+"/ returnType := cFunction return.
+"/ (returnType resolved isCPointerNode and:[ returnType resolved type resolved isCStructNode ])
+"/ ifTrue:[ ^ self smalltalkClassNameForDerivedType: returnType].
+
+ ^ #LLVM
+
+ "Created: / 01-07-2015 / 06:12:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 01-07-2015 / 09:50:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVM_C class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Cface__LLVM_C_EXT.st Wed Aug 12 07:32:13 2015 +0100
@@ -0,0 +1,109 @@
+"{ Package: 'jv:cface' }"
+
+"{ NameSpace: Cface }"
+
+LLVM_C subclass:#LLVM_C_EXT
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Cface-Mappings'
+!
+
+!LLVM_C_EXT class methodsFor:'documentation'!
+
+documentation
+"
+ Mappings for LLVM C Extensions API. Used to generate C callouts
+ for jv:llvm_s project.
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+ https://bitbucket.org/janvrany/jv-llvm-s/llvm_c_ext
+
+"
+! !
+
+!LLVM_C_EXT class methodsFor:'generating'!
+
+generate
+ | llvmcextDir llvmcextDef |
+
+ llvmcextDir := (Smalltalk getPackageDirectoryForPackage: 'jv:cface') / 'resources'/'examples'/'llvm-c-ext'.
+ llvmcextDef := llvmcextDir / 'llvm-c-ext.def'.
+
+ ^Cface::Platform theInstance generatorCommand
+ definitions: llvmcextDef asFilename;
+ mappings: self new;
+ process
+
+ "Created: / 06-07-2015 / 06:53:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 12-08-2015 / 06:56:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVM_C_EXT methodsFor:'accessing'!
+
+definitions:definitionFile
+ super definitions:definitionFile.
+
+ "/ A hack to set Smalltalk classname for LLVMContextRef as it is not
+ "/ typedefd in headers
+ definitionFile definitions do:[:each |
+ ((each isKindOf: CTypedefNode) and:[ each cName = 'LLVMContextRef' ]) ifTrue:[
+ each smalltalkName: #LLVMContext
+ ].
+ ].
+
+ "Created: / 12-08-2015 / 07:24:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVM_C_EXT methodsFor:'mapping - class names'!
+
+smalltalkClassNameForDerivedType: type
+ "Answers class which should contain function call"
+
+ | baseName |
+
+ baseName := super smalltalkClassNameForDerivedType:type.
+ (baseName endsWith: 'Ref') ifTrue:[
+ baseName := baseName copyTo: baseName size - 3
+ ].
+ ^baseName
+
+ "Created: / 30-06-2015 / 13:55:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 01-07-2015 / 09:32:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 01-07-2015 / 16:23:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smalltalkClassNameForFunction:cFunction
+"/ | cFunctionName firstArgType returnType |
+"/
+"/ cFunctionName := cFunction cName.
+"/ cFunctionName = 'LLVMCreateMemoryBufferWithContentsOfFile' ifTrue:[
+"/ ^'LLVMMemoryBuffer'
+"/ ].
+"/ cFunctionName = 'LLVMInitializeMCJITCompilerOptions' ifTrue:[
+"/ ^'LLVMMCJITCompilerOptions'
+"/ ].
+"/
+"/
+"/ cFunction arguments notEmpty ifTrue:[
+"/ firstArgType := cFunction arguments first type.
+"/ (firstArgType resolved isCPointerNode and:[ firstArgType resolved type resolved isCStructNode ])
+"/ ifTrue:[ ^ self smalltalkClassNameForDerivedType: firstArgType ].
+"/ ].
+"/ returnType := cFunction return.
+"/ (returnType resolved isCPointerNode and:[ returnType resolved type resolved isCStructNode ])
+"/ ifTrue:[ ^ self smalltalkClassNameForDerivedType: returnType].
+
+ ^ #LLVMCEXT
+
+ "Created: / 01-07-2015 / 06:12:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-08-2015 / 06:57:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/Cface__Libgit2Mapping.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__Libgit2Mapping.st Wed Aug 12 07:32:13 2015 +0100
@@ -170,4 +170,5 @@
^ '$Id:: $'
! !
+
Libgit2Mapping initialize!
--- a/Cface__Platform.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__Platform.st Wed Aug 12 07:32:13 2015 +0100
@@ -117,3 +117,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__SVNMapping.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__SVNMapping.st Wed Aug 12 07:32:13 2015 +0100
@@ -91,3 +91,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__SmalltalkX.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__SmalltalkX.st Wed Aug 12 07:32:13 2015 +0100
@@ -27,3 +27,4 @@
version_SVN
^ '$Id$'
! !
+
--- a/Cface__TypeMapping.st Wed Aug 12 07:49:03 2015 +0100
+++ b/Cface__TypeMapping.st Wed Aug 12 07:32:13 2015 +0100
@@ -18,23 +18,22 @@
"Created: / 22-02-2009 / 22:16:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
-definitions:something
- definitions := something.
+definitions:definitionFile
+ definitions := definitionFile.
"Created: / 22-02-2009 / 22:16:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
smalltalkNamespace
-
- ^nil
+ ^ smalltalkNamespace
"Created: / 17-02-2008 / 20:51:05 / janfrog"
"Modified: / 10-07-2008 / 20:34:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
- "Modified: / 07-09-2012 / 15:15:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-08-2015 / 07:23:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-smalltalkNamespace:something
- smalltalkNamespace := something.
+smalltalkNamespace:aSymbol
+ smalltalkNamespace := aSymbol.
"Created: / 10-07-2008 / 20:23:36 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
@@ -45,8 +44,8 @@
"Created: / 03-07-2008 / 21:12:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
-smalltalkPackage:package
- smalltalkPackage := package.
+smalltalkPackage:aSymbol
+ smalltalkPackage := aSymbol.
"Created: / 03-07-2008 / 21:12:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
--- a/Make.proto Wed Aug 12 07:49:03 2015 +0100
+++ b/Make.proto Wed Aug 12 07:32:13 2015 +0100
@@ -161,6 +161,7 @@
$(OUTDIR)Cface__CairoMapping.$(O) Cface__CairoMapping.$(H): Cface__CairoMapping.st $(INCLUDE_TOP)/jv/cface/Cface__TypeMapping.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cface__GTKMapping.$(O) Cface__GTKMapping.$(H): Cface__GTKMapping.st $(INCLUDE_TOP)/jv/cface/Cface__TypeMapping.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cface__Generator.$(O) Cface__Generator.$(H): Cface__Generator.st $(INCLUDE_TOP)/jv/cface/Cface__CNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Cface__LLVM_C.$(O) Cface__LLVM_C.$(H): Cface__LLVM_C.st $(INCLUDE_TOP)/jv/cface/Cface__TypeMapping.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cface__Libgit2Mapping.$(O) Cface__Libgit2Mapping.$(H): Cface__Libgit2Mapping.st $(INCLUDE_TOP)/jv/cface/Cface__TypeMapping.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cface__SVNMapping.$(O) Cface__SVNMapping.$(H): Cface__SVNMapping.st $(INCLUDE_TOP)/jv/cface/Cface__TypeMapping.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cface__SmalltalkX.$(O) Cface__SmalltalkX.$(H): Cface__SmalltalkX.st $(INCLUDE_TOP)/jv/cface/Cface__Platform.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -177,6 +178,7 @@
$(OUTDIR)Cface__CStructFieldNode.$(O) Cface__CStructFieldNode.$(H): Cface__CStructFieldNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cface__CTypeNode.$(O) Cface__CTypeNode.$(H): Cface__CTypeNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cface__CUnsignedNode.$(O) Cface__CUnsignedNode.$(H): Cface__CUnsignedNode.st $(INCLUDE_TOP)/jv/cface/Cface__CModifierNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Cface__LLVM_C_EXT.$(O) Cface__LLVM_C_EXT.$(H): Cface__LLVM_C_EXT.st $(INCLUDE_TOP)/jv/cface/Cface__LLVM_C.$(H) $(INCLUDE_TOP)/jv/cface/Cface__TypeMapping.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cface__SmalltalkXGenerator.$(O) Cface__SmalltalkXGenerator.$(H): Cface__SmalltalkXGenerator.st $(INCLUDE_TOP)/jv/cface/Cface__CNodeVisitor.$(H) $(INCLUDE_TOP)/jv/cface/Cface__Generator.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cface__CArrayNode.$(O) Cface__CArrayNode.$(H): Cface__CArrayNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cface__CBuiltinNode.$(O) Cface__CBuiltinNode.$(H): Cface__CBuiltinNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec Wed Aug 12 07:49:03 2015 +0100
+++ b/Make.spec Wed Aug 12 07:32:13 2015 +0100
@@ -65,6 +65,7 @@
Cface::CairoMapping \
Cface::GTKMapping \
Cface::Generator \
+ Cface::LLVM_C \
Cface::Libgit2Mapping \
Cface::SVNMapping \
Cface::SmalltalkX \
@@ -81,6 +82,7 @@
Cface::CStructFieldNode \
Cface::CTypeNode \
Cface::CUnsignedNode \
+ Cface::LLVM_C_EXT \
Cface::SmalltalkXGenerator \
Cface::CArrayNode \
Cface::CBuiltinNode \
@@ -118,6 +120,7 @@
$(OUTDIR_SLASH)Cface__CairoMapping.$(O) \
$(OUTDIR_SLASH)Cface__GTKMapping.$(O) \
$(OUTDIR_SLASH)Cface__Generator.$(O) \
+ $(OUTDIR_SLASH)Cface__LLVM_C.$(O) \
$(OUTDIR_SLASH)Cface__Libgit2Mapping.$(O) \
$(OUTDIR_SLASH)Cface__SVNMapping.$(O) \
$(OUTDIR_SLASH)Cface__SmalltalkX.$(O) \
@@ -134,6 +137,7 @@
$(OUTDIR_SLASH)Cface__CStructFieldNode.$(O) \
$(OUTDIR_SLASH)Cface__CTypeNode.$(O) \
$(OUTDIR_SLASH)Cface__CUnsignedNode.$(O) \
+ $(OUTDIR_SLASH)Cface__LLVM_C_EXT.$(O) \
$(OUTDIR_SLASH)Cface__SmalltalkXGenerator.$(O) \
$(OUTDIR_SLASH)Cface__CArrayNode.$(O) \
$(OUTDIR_SLASH)Cface__CBuiltinNode.$(O) \
--- a/abbrev.stc Wed Aug 12 07:49:03 2015 +0100
+++ b/abbrev.stc Wed Aug 12 07:32:13 2015 +0100
@@ -15,6 +15,7 @@
Cface::CairoMapping Cface__CairoMapping jv:cface 'Cface-Mappings' 0
Cface::GTKMapping Cface__GTKMapping jv:cface 'Cface-Mappings' 0
Cface::Generator Cface__Generator jv:cface 'Cface-Generators' 0
+Cface::LLVM_C Cface__LLVM_C jv:cface 'Cface-Mappings' 0
Cface::Libgit2Mapping Cface__Libgit2Mapping jv:cface 'Cface-Mappings' 0
Cface::SVNMapping Cface__SVNMapping jv:cface 'Cface-Mappings' 0
Cface::SmalltalkX Cface__SmalltalkX jv:cface 'Cface-Platforms' 0
@@ -31,12 +32,12 @@
Cface::CStructFieldNode Cface__CStructFieldNode jv:cface 'Cface-C AST' 0
Cface::CTypeNode Cface__CTypeNode jv:cface 'Cface-C AST' 0
Cface::CUnsignedNode Cface__CUnsignedNode jv:cface 'Cface-C AST' 0
+Cface::LLVM_C_EXT Cface__LLVM_C_EXT jv:cface 'Cface-Mappings' 0
Cface::SmalltalkXGenerator Cface__SmalltalkXGenerator jv:cface 'Cface-Generators' 0
Cface::CArrayNode Cface__CArrayNode jv:cface 'Cface-C AST' 0
Cface::CBuiltinNode Cface__CBuiltinNode jv:cface 'Cface-C AST' 0
Cface::CDerivedTypeNode Cface__CDerivedTypeNode jv:cface 'Cface-C AST' 0
Cface::CPointerNode Cface__CPointerNode jv:cface 'Cface-C AST' 0
-Cface::CTypedefNode Cface__CTypedefNode jv:cface 'Cface-C AST' 0
Cface::CUnresolvedTypeNode Cface__CUnresolvedTypeNode jv:cface 'Cface-C AST' 0
Cface::CCharNode Cface__CCharNode jv:cface 'Cface-C AST' 0
Cface::CDoubleNode Cface__CDoubleNode jv:cface 'Cface-C AST' 0
@@ -45,6 +46,7 @@
Cface::CFunctionTypeNode Cface__CFunctionTypeNode jv:cface 'Cface-C AST' 0
Cface::CIntNode Cface__CIntNode jv:cface 'Cface-C AST' 0
Cface::CStructuredNode Cface__CStructuredNode jv:cface 'Cface-C AST' 0
+Cface::CTypedefNode Cface__CTypedefNode jv:cface 'Cface-C AST' 0
Cface::CVoidNode Cface__CVoidNode jv:cface 'Cface-C AST' 0
Cface::CWCharNode Cface__CWCharNode jv:cface 'Cface-C AST' 0
Cface::CStructNode Cface__CStructNode jv:cface 'Cface-C AST' 0
--- a/bc.mak Wed Aug 12 07:49:03 2015 +0100
+++ b/bc.mak Wed Aug 12 07:32:13 2015 +0100
@@ -86,6 +86,7 @@
$(OUTDIR)Cface__CairoMapping.$(O) Cface__CairoMapping.$(H): Cface__CairoMapping.st $(INCLUDE_TOP)\jv\cface\Cface__TypeMapping.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cface__GTKMapping.$(O) Cface__GTKMapping.$(H): Cface__GTKMapping.st $(INCLUDE_TOP)\jv\cface\Cface__TypeMapping.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cface__Generator.$(O) Cface__Generator.$(H): Cface__Generator.st $(INCLUDE_TOP)\jv\cface\Cface__CNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Cface__LLVM_C.$(O) Cface__LLVM_C.$(H): Cface__LLVM_C.st $(INCLUDE_TOP)\jv\cface\Cface__TypeMapping.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cface__Libgit2Mapping.$(O) Cface__Libgit2Mapping.$(H): Cface__Libgit2Mapping.st $(INCLUDE_TOP)\jv\cface\Cface__TypeMapping.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cface__SVNMapping.$(O) Cface__SVNMapping.$(H): Cface__SVNMapping.st $(INCLUDE_TOP)\jv\cface\Cface__TypeMapping.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cface__SmalltalkX.$(O) Cface__SmalltalkX.$(H): Cface__SmalltalkX.st $(INCLUDE_TOP)\jv\cface\Cface__Platform.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -102,6 +103,7 @@
$(OUTDIR)Cface__CStructFieldNode.$(O) Cface__CStructFieldNode.$(H): Cface__CStructFieldNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cface__CTypeNode.$(O) Cface__CTypeNode.$(H): Cface__CTypeNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cface__CUnsignedNode.$(O) Cface__CUnsignedNode.$(H): Cface__CUnsignedNode.st $(INCLUDE_TOP)\jv\cface\Cface__CModifierNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Cface__LLVM_C_EXT.$(O) Cface__LLVM_C_EXT.$(H): Cface__LLVM_C_EXT.st $(INCLUDE_TOP)\jv\cface\Cface__LLVM_C.$(H) $(INCLUDE_TOP)\jv\cface\Cface__TypeMapping.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cface__SmalltalkXGenerator.$(O) Cface__SmalltalkXGenerator.$(H): Cface__SmalltalkXGenerator.st $(INCLUDE_TOP)\jv\cface\Cface__CNodeVisitor.$(H) $(INCLUDE_TOP)\jv\cface\Cface__Generator.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cface__CArrayNode.$(O) Cface__CArrayNode.$(H): Cface__CArrayNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cface__CBuiltinNode.$(O) Cface__CBuiltinNode.$(H): Cface__CBuiltinNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/jv_cface.st Wed Aug 12 07:49:03 2015 +0100
+++ b/jv_cface.st Wed Aug 12 07:32:13 2015 +0100
@@ -44,7 +44,10 @@
referencedPreRequisites
"list packages which are a prerequisite, because they contain
classes which are referenced by my classes.
- We do not need these packages as a prerequisite for loading or compiling.
+ We do not need these packages as a prerequisite for compiling or loading,
+ however, a class from it may be referenced during execution and having it
+ unloaded then may lead to a runtime doesNotUnderstand error, unless the caller
+ includes explicit checks for the package being present.
This method is generated automatically,
by searching all classes (and their packages) which are referenced by my classes."
@@ -70,55 +73,60 @@
Each entry in the list may be: a single class-name (symbol),
or an array-literal consisting of class name and attributes.
Attributes are: #autoload or #<os> where os is one of win32, unix,..."
-
- ^ "<className> or (<className> attributes...) in load order" #( #'Cface::CDefinitionParser'
- #'Cface::CDefinitionScanner'
- #'Cface::CNode'
- #'Cface::CNodeVisitor'
- #'Cface::GeneratorCommand'
- #'Cface::Platform'
- #'Cface::TypeMapping'
- #'jv_cface'
- #'Cface::CDefinitionNode'
- #'Cface::CModifierNode'
- #'Cface::CNoNode'
- #'Cface::CairoMapping'
- #'Cface::GTKMapping'
- #'Cface::Generator'
- #'Cface::Libgit2Mapping'
- #'Cface::SVNMapping'
- #'Cface::SmalltalkX'
- #'Cface::TypeCollector'
- #'Cface::TypeMapper'
- #'Cface::TypeResolver'
- #'Cface::CArgumentNode'
- #'Cface::CConstNode'
- #'Cface::CDefinitionFileNode'
- #'Cface::CEnumValueNode'
- #'Cface::CFunctionNode'
- #'Cface::CLongNode'
- #'Cface::CShortNode'
- #'Cface::CStructFieldNode'
- #'Cface::CTypeNode'
- #'Cface::CUnsignedNode'
- #'Cface::SmalltalkXGenerator'
- #'Cface::CArrayNode'
- #'Cface::CBuiltinNode'
- #'Cface::CDerivedTypeNode'
- #'Cface::CPointerNode'
- #'Cface::CTypedefNode'
- #'Cface::CUnresolvedTypeNode'
- #'Cface::CCharNode'
- #'Cface::CDoubleNode'
- #'Cface::CEnumNode'
- #'Cface::CFloatNode'
- #'Cface::CFunctionTypeNode'
- #'Cface::CIntNode'
- #'Cface::CStructuredNode'
- #'Cface::CVoidNode'
- #'Cface::CWCharNode'
- #'Cface::CStructNode'
- #'Cface::CUnionNode' )
+
+ ^ #(
+ "<className> or (<className> attributes...) in load order"
+ #'Cface::CDefinitionParser'
+ #'Cface::CDefinitionScanner'
+ #'Cface::CNode'
+ #'Cface::CNodeVisitor'
+ #'Cface::GeneratorCommand'
+ #'Cface::Platform'
+ #'Cface::TypeMapping'
+ #'jv_cface'
+ #'Cface::CDefinitionNode'
+ #'Cface::CModifierNode'
+ #'Cface::CNoNode'
+ #'Cface::CairoMapping'
+ #'Cface::GTKMapping'
+ #'Cface::Generator'
+ #'Cface::LLVM_C'
+ #'Cface::Libgit2Mapping'
+ #'Cface::SVNMapping'
+ #'Cface::SmalltalkX'
+ #'Cface::TypeCollector'
+ #'Cface::TypeMapper'
+ #'Cface::TypeResolver'
+ #'Cface::CArgumentNode'
+ #'Cface::CConstNode'
+ #'Cface::CDefinitionFileNode'
+ #'Cface::CEnumValueNode'
+ #'Cface::CFunctionNode'
+ #'Cface::CLongNode'
+ #'Cface::CShortNode'
+ #'Cface::CStructFieldNode'
+ #'Cface::CTypeNode'
+ #'Cface::CUnsignedNode'
+ #'Cface::LLVM_C_EXT'
+ #'Cface::SmalltalkXGenerator'
+ #'Cface::CArrayNode'
+ #'Cface::CBuiltinNode'
+ #'Cface::CDerivedTypeNode'
+ #'Cface::CPointerNode'
+ #'Cface::CUnresolvedTypeNode'
+ #'Cface::CCharNode'
+ #'Cface::CDoubleNode'
+ #'Cface::CEnumNode'
+ #'Cface::CFloatNode'
+ #'Cface::CFunctionTypeNode'
+ #'Cface::CIntNode'
+ #'Cface::CStructuredNode'
+ #'Cface::CTypedefNode'
+ #'Cface::CVoidNode'
+ #'Cface::CWCharNode'
+ #'Cface::CStructNode'
+ #'Cface::CUnionNode'
+ )
!
extensionMethodNames
--- a/libInit.cc Wed Aug 12 07:49:03 2015 +0100
+++ b/libInit.cc Wed Aug 12 07:32:13 2015 +0100
@@ -41,6 +41,7 @@
_Cface__CairoMapping_Init(pass,__pRT__,snd);
_Cface__GTKMapping_Init(pass,__pRT__,snd);
_Cface__Generator_Init(pass,__pRT__,snd);
+_Cface__LLVM_137C_Init(pass,__pRT__,snd);
_Cface__Libgit2Mapping_Init(pass,__pRT__,snd);
_Cface__SVNMapping_Init(pass,__pRT__,snd);
_Cface__SmalltalkX_Init(pass,__pRT__,snd);
@@ -57,6 +58,7 @@
_Cface__CStructFieldNode_Init(pass,__pRT__,snd);
_Cface__CTypeNode_Init(pass,__pRT__,snd);
_Cface__CUnsignedNode_Init(pass,__pRT__,snd);
+_Cface__LLVM_137C_137EXT_Init(pass,__pRT__,snd);
_Cface__SmalltalkXGenerator_Init(pass,__pRT__,snd);
_Cface__CArrayNode_Init(pass,__pRT__,snd);
_Cface__CBuiltinNode_Init(pass,__pRT__,snd);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/resources/examples/llvm-c-ext/Makefile Wed Aug 12 07:32:13 2015 +0100
@@ -0,0 +1,44 @@
+CC=gccxml
+CFLAGS=-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
+XSLTPROC=xsltproc
+XML2DEF_XSL=../../styles/gccxml2def.xsl
+
+
+
+
+INCLUDE_DIR=../../../../llvm_s/llvm_c_ext/include
+INCLUDES=-I$(shell llvm-config-3.8 --includedir) -I$(INCLUDE_DIR)
+HEADERS=CoreExt.h Intrinsics.h DIBuilder.h
+DEFFILES=$(HEADERS:%.h=%.h.def)
+DEFFILE=llvm-c-ext.def
+XMLFILES=$(HEADERS:%.h=%.h.xml)
+
+XSL_PARAMS=--stringparam c-header-file $(INCLUDE_DIR)/llvm-c-ext/$(<:%.h.xml=%.h)
+
+XSLTPROC_FLAGS=$(XSL_PARAMS)
+
+default: all
+
+all: $(DEFFILE)
+
+xml: $(XMLFILES)
+
+
+$(DEFFILE): $(DEFFILES)
+ cat $(DEFFILES) > $(DEFFILE)
+# sed -i -e 's/^(struct-foreign LLVM/(struct LLVM/g' $(DEFFILE)
+# sed -i -e 's/^(typedef-foreign LLVM/(typedef LLVM/g' $(DEFFILE)
+# sed -i -e 's/^(enum-foreign LLVM/(enum LLVM/g' $(DEFFILE)
+
+
+%.h.def:%.h.xml
+ $(XSLTPROC) $(XSLTPROC_FLAGS) -o $@ $(XML2DEF_XSL) $<
+
+%.h.xml: $(INCLUDE_DIR)/llvm-c-ext/%.h
+ $(CC) -m64 $(CFLAGS) $(INCLUDES) $< -fxml=$@
+
+clean:
+ rm -rf *.h.def *.h.xml
+
+distclean: clean
+ rm -rf $(DEFFILE)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/resources/examples/llvm-c/Makefile Wed Aug 12 07:32:13 2015 +0100
@@ -0,0 +1,43 @@
+CC=gccxml
+CFLAGS=-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
+XSLTPROC=xsltproc
+XML2DEF_XSL=../../styles/gccxml2def.xsl
+
+
+
+
+INCLUDE_DIR=$(shell llvm-config-3.8 --includedir)
+HEADERS=Core.h ExecutionEngine.h Target.h Analysis.h BitWriter.h
+DEFFILES=$(HEADERS:%.h=%.h.def)
+DEFFILE=llvm-c.def
+XMLFILES=$(HEADERS:%.h=%.h.xml)
+
+XSL_PARAMS=--stringparam c-header-file $(INCLUDE_DIR)/llvm-c/$(<:%.h.xml=%.h)
+
+XSLTPROC_FLAGS=$(XSL_PARAMS)
+
+default: all
+
+all: $(DEFFILE)
+
+xml: $(XMLFILES)
+
+
+$(DEFFILE): $(DEFFILES)
+ cat $(DEFFILES) > $(DEFFILE)
+# sed -i -e 's/^(struct-foreign LLVM/(struct LLVM/g' $(DEFFILE)
+# sed -i -e 's/^(typedef-foreign LLVM/(typedef LLVM/g' $(DEFFILE)
+# sed -i -e 's/^(enum-foreign LLVM/(enum LLVM/g' $(DEFFILE)
+
+
+%.h.def:%.h.xml
+ $(XSLTPROC) $(XSLTPROC_FLAGS) -o $@ $(XML2DEF_XSL) $<
+
+%.h.xml: $(INCLUDE_DIR)/llvm-c/%.h
+ $(CC) -m64 $(CFLAGS) -I$(INCLUDE_DIR) $< -fxml=$@
+
+clean:
+ rm -rf *.h.def *.h.xml
+
+distclean: clean
+ rm -rf $(DEFFILE)