Marcel Taeumel uploaded a new version of FFI-Tests to project FFI:
http://source.squeak.org/FFI/FFI-Tests-mt.22.mcz ==================== Summary ==================== Name: FFI-Tests-mt.22 Author: mt Time: 3 May 2021, 4:54:41.730479 pm UUID: a156622d-6212-3c45-9f7a-7c8017118210 Ancestors: FFI-Tests-mt.21 Big refactoring of FFI tests: - Adds message categories for FFITestLibrary - Replicates all tests in FFIPluginTests to also test invocation through library and construction as ExternalLibraryFunction. See FFIPluginConstrutedTests and FFIPluginLibraryTests. - Extracts tests about structures (and unions etc.) that do not need the test-plugin to ExternalStructureTests - In field definitions, replace all uses of "short/long/longlong" with "int16_t/int32_t/int64_t" for improved readability - Fixes the definitions that actually rely on c_long because they use "long" in the "sqFFITestFuncs.c" - Compiles instance-side methods in FFITestLibrary as needed, see FFIPluginLibraryTests >> #invoke:withArguments:. Note that, for simplicity, the new design of the FFIPluginTests hierarchy requires the class-side methods in FFITestLibrary to match the C function names. Arguments can be attached with "with:". See all implementors of #invoke:withArguments: to learn more. If you want to improve readability over those C names, use either method comments or the actual test selector. See #testUnsignedIntegerRange as an example. =============== Diff against FFI-Tests-mt.21 =============== Item was added: + TestCase subclass: #ExternalStructureTests + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'FFI-Tests'! Item was added: + ----- Method: ExternalStructureTests>>test01AccessingUnion (in category 'tests') ----- + test01AccessingUnion + + | ufi | + ufi := FFITestUfi new. + ufi i1: 2. + self assert: 2 equals: ufi i1. + ufi f1: 1.0. + self assert: 1.0 equals: ufi f1. + self assert: 1.0 asIEEE32BitWord equals: ufi i1. + ufi i1: 2.0 asIEEE32BitWord. + self assert: 2.0 equals: ufi f1.! Item was added: + ----- Method: ExternalStructureTests>>test02AccessingStructure (in category 'tests') ----- + test02AccessingStructure + + | pt | + pt := FFITestPoint2 new. + pt x: 10; y: 20. + self assert: 10 equals: pt x. + self assert: 20 equals: pt y.! Item was added: + ----- Method: ExternalStructureTests>>test03AccessingExternalData (in category 'tests') ----- + test03AccessingExternalData + + | somePoints firstPoint | + somePoints := FFITestPoint2 allocate: 5. + self assert: 5 equals: somePoints size. + firstPoint := somePoints at: 1. + self assert: 0@0 equals: firstPoint asPoint. + firstPoint setX: 2 setY: 3. + self assert: 2@3 equals: firstPoint asPoint.! Item was added: + ----- Method: ExternalTypeTests>>testAtomicTypeNameByType (in category 'tests') ----- + testAtomicTypeNameByType + + AtomicTypeNames do: [:symbol | | typeName | + typeName := symbol. + self + assert: typeName + equals: (ExternalType typeNamed: typeName) typeName; + assert: typeName + equals: (AtomicTypes at: typeName) typeName. + typeName := (AtomicTypes at: symbol) asPointerType typeName. + self + assert: typeName + equals: (ExternalType typeNamed: typeName) typeName].! Item was added: + FFIPluginTests subclass: #FFIPluginConstructedTests + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'FFI-Tests'! Item was added: + ----- Method: FFIPluginConstructedTests class>>shouldInheritSelectors (in category 'testing') ----- + shouldInheritSelectors + ^ true! Item was added: + ----- Method: FFIPluginConstructedTests>>expectedFailures (in category 'failures') ----- + expectedFailures + "We can actually call that one function with 20 arguments. :-)" + + ^ super expectedFailures copyWithout: #testMixedDoublesAndLongsSum! Item was added: + ----- Method: FFIPluginConstructedTests>>invoke:withArguments: (in category 'support') ----- + invoke: functionName withArguments: someObjects + "Use primitive 117 to invoke the call, not 120." + + | prototype externalFunction | + prototype := (FFITestLibrary class >> (self lookupSelector: functionName numArgs: someObjects size)) externalLibraryFunction. + externalFunction := ExternalLibraryFunction + name: functionName module: prototype module + callType: prototype flags returnType: prototype argTypes first + argumentTypes: prototype argTypes allButFirst. + ^ externalFunction invokeWithArguments: someObjects! Item was added: + FFIPluginTests subclass: #FFIPluginLibraryTests + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'FFI-Tests'! Item was added: + ----- Method: FFIPluginLibraryTests class>>shouldInheritSelectors (in category 'testing') ----- + shouldInheritSelectors + ^ true! Item was added: + ----- Method: FFIPluginLibraryTests>>invoke:withArguments: (in category 'support') ----- + invoke: functionName withArguments: someObjects + "Use an instance of the library. Compile class-side methods to instance-side methods as needed." + + | selector library | + selector := self lookupSelector: functionName numArgs: someObjects size. + library := FFITestLibrary new. + + (library respondsTo: selector) ifFalse: [ | signature source prototype | + "1) Build method signature." + signature := String streamContents: [:s | | index | + index := 0. selector do: [:char | s nextPut: char. + char = $: ifTrue: [ index := index + 1. + s space; nextPutAll: 'arg'; nextPutAll: index asString; space]]]. + "2) Construct method source." + prototype := library class class compiledMethodAt: selector. + source := '{1}\ {2}\ <generated>\ {3}\ ^ self externalCallFailed' withCRs + format: { + signature. + '"This method was automatically generated. See {1}>>{2}"' + format: {prototype methodClass. prototype selector}. + prototype externalLibraryFunction copy + setModule: nil; printString }. + "3) Compile instance-side FFI call in library." + library class compile: source classified: '*autogenerated - primitives']. + + ^ library perform: selector withArguments: someObjects! Item was changed: TestCase subclass: #FFIPluginTests + instanceVariableNames: 'heapObject' - instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'FFI-Tests'! !FFIPluginTests commentStamp: '<historical>' prior: 0! SUnitized tests for the FFI (mostly the plugin side)! Item was added: + ----- Method: FFIPluginTests>>expectedFailures (in category 'failures') ----- + expectedFailures + + ^ #( + testIntAliasCallReturnIntAlias "return-type coercing failed" + testIntCallReturnIntAlias "return-type coercing failed" + testMixedDoublesAndLongsSum "more than 15 method args needed" + testSumStructSslf4 "some overflow issue, maybe expected")! Item was added: + ----- Method: FFIPluginTests>>invoke: (in category 'support') ----- + invoke: selector + + ^ self invoke: selector withArguments: #()! Item was added: + ----- Method: FFIPluginTests>>invoke:with: (in category 'support') ----- + invoke: selector with: arg1 + + ^ self invoke: selector withArguments: {arg1}! Item was added: + ----- Method: FFIPluginTests>>invoke:with:with: (in category 'support') ----- + invoke: selector with: arg1 with: arg2 + + ^ self invoke: selector withArguments: {arg1. arg2}! Item was added: + ----- Method: FFIPluginTests>>invoke:with:with:with: (in category 'support') ----- + invoke: selector with: arg1 with: arg2 with: arg3 + + ^ self invoke: selector withArguments: {arg1. arg2. arg3}! Item was added: + ----- Method: FFIPluginTests>>invoke:with:with:with:with: (in category 'support') ----- + invoke: selector with: arg1 with: arg2 with: arg3 with: arg4 + + ^ self invoke: selector withArguments: {arg1. arg2. arg3. arg4}! Item was added: + ----- Method: FFIPluginTests>>invoke:with:with:with:with:with: (in category 'support') ----- + invoke: selector with: arg1 with: arg2 with: arg3 with: arg4 with: arg5 + + ^ self invoke: selector withArguments: {arg1. arg2. arg3. arg4. arg5}! Item was added: + ----- Method: FFIPluginTests>>invoke:withArguments: (in category 'support') ----- + invoke: functionName withArguments: someObjects + + ^ FFITestLibrary + perform: (self lookupSelector: functionName numArgs: someObjects size) + withArguments: someObjects! Item was added: + ----- Method: FFIPluginTests>>lookupSelector:numArgs: (in category 'support') ----- + lookupSelector: functionName numArgs: numArgs + + ^ Symbol lookup: ( + numArgs > 0 + ifFalse: [functionName] + ifTrue: [ + functionName, ':' + , (Array new: (numArgs min: 15) - 1 withAll: 'with:') join])! Item was added: + ----- Method: FFIPluginTests>>tearDown (in category 'running') ----- + tearDown + + heapObject ifNotNil: [heapObject free].! Item was added: + ----- Method: FFIPluginTests>>test4IntSum (in category 'tests - atomics') ----- + test4IntSum + + | result n interval | + n := 4. + interval := 1 - n * n to: n * n by: 2 * n + 1. + result := self invoke: 'ffiTest4IntSum' withArguments: interval asArray. + self assert: interval sum equals: result! Item was changed: + ----- Method: FFIPluginTests>>test8IntSum (in category 'tests - atomics') ----- - ----- Method: FFIPluginTests>>test8IntSum (in category 'tests') ----- test8IntSum + + | result n interval | + n := 8. - "Test using generic FFI spec" - | result meth n interval | - meth := ExternalLibraryFunction - name:'ffiTest8IntSum' module: FFITestLibrary moduleName - callType: 0 returnType: ExternalType long - argumentTypes: (Array new: (n := 8) withAll: ExternalType long). interval := 1 - n * n to: n * n by: 2 * n + 1. + result := self invoke: 'ffiTest8IntSum' withArguments: interval asArray. - result := meth invokeWithArguments: interval asArray. self assert: interval sum equals: result! Item was changed: + ----- Method: FFIPluginTests>>test8LongLongSum (in category 'tests - atomics') ----- - ----- Method: FFIPluginTests>>test8LongLongSum (in category 'tests') ----- test8LongLongSum + + | result n interval | + n := 8. - "Test using generic FFI spec" - | result meth n interval | - meth := ExternalLibraryFunction - name:'ffiTest8LongLongSum' module: FFITestLibrary moduleName - callType: 0 returnType: ExternalType signedLongLong - argumentTypes: (Array new: (n := 8) withAll: ExternalType signedLongLong). interval := 1 - n * n << 32 + (1 - n * n) to: n * n - n << 32 + (3 * n * n) by: 2 * n << 32 + (3 * n). + result := self invoke: 'ffiTest8LongLongSum' withArguments: interval asArray. - result := meth invokeWithArguments: interval asArray. self assert: interval sum equals: result! Item was added: + ----- Method: FFIPluginTests>>test8LongSum (in category 'tests - atomics') ----- + test8LongSum + + | result n interval | + n := 8. + interval := 1 - n * n to: n * n by: 2 * n + 1. + result := self invoke: 'ffiTest8longSum' withArguments: interval asArray. + self assert: interval sum equals: result! Item was removed: - ----- Method: FFIPluginTests>>testAccessingUnion (in category 'tests - union') ----- - testAccessingUnion - | ufi | - ufi := FFITestUfi new. - ufi i1: 2. - self assert: 2 equals: ufi i1. - ufi f1: 1.0. - self assert: 1.0 equals: ufi f1. - self assert: 1.0 asIEEE32BitWord equals: ufi i1. - ufi i1: 2.0 asIEEE32BitWord. - self assert: 2.0 equals: ufi f1.! Item was added: + ----- Method: FFIPluginTests>>testBoolsToInts (in category 'tests - other') ----- + testBoolsToInts + + | result | + result := FFITestLibrary ffiTestBool: true with: false with: true with: false. + self assert: result. + result := FFITestLibrary ffiTestBool: -1 with: 1 with: 0 with: 0. + self deny: result. + result := FFITestLibrary ffiTestBool: false with: false with: true with: true. + self deny: result.! Item was added: + ----- Method: FFIPluginTests>>testChars (in category 'tests - atomics') ----- + testChars + + | result | + result := self invoke: 'ffiTestChars' with: $A with: 65 with: 65.0 with: true. + self assert: result isCharacter. + self assert: result asciiValue = 130.! Item was removed: - ----- Method: FFIPluginTests>>testConstructedCharCall (in category 'tests') ----- - testConstructedCharCall - "Test using generic FFI spec" - | result meth | - meth := ExternalLibraryFunction - name:'ffiTestChars' module: FFITestLibrary moduleName - callType: ExternalFunction callTypeCDecl returnType: ExternalType char - argumentTypes: (Array new: 4 withAll: ExternalType char). - result := meth invokeWith: $A with: 65 with: 65.0 with: true. - self assert: result isCharacter. - self assert: 130 equals: result asciiValue! Item was removed: - ----- Method: FFIPluginTests>>testConstructedDoubleCall (in category 'tests') ----- - testConstructedDoubleCall - "Test using generic FFI spec" - | result meth | - meth := ExternalLibraryFunction - name:'ffiTestDoubles' module: FFITestLibrary moduleName - callType: ExternalFunction callTypeCDecl returnType: ExternalType double - argumentTypes: (Array new: 2 withAll: ExternalType double). - result := meth invokeWithArguments: (Array with: 41 with: true). - self assert: 42.0 equals: result! Item was removed: - ----- Method: FFIPluginTests>>testConstructedFloatCall (in category 'tests') ----- - testConstructedFloatCall - "Test using generic FFI spec" - | result meth | - meth := ExternalLibraryFunction - name:'ffiTestFloats' module: FFITestLibrary moduleName - callType: ExternalFunction callTypeCDecl returnType: ExternalType float - argumentTypes: (Array new: 2 withAll: ExternalType float). - result := meth invokeWith: $A with: 65.0. - self assert: 130.0 equals: result! Item was removed: - ----- Method: FFIPluginTests>>testConstructedIntCall (in category 'tests') ----- - testConstructedIntCall - "Test using generic FFI spec" - | result meth | - meth := ExternalLibraryFunction - name:'ffiTestInts' module: FFITestLibrary moduleName - callType: ExternalFunction callTypeCDecl returnType: ExternalType signedLong - argumentTypes: (Array new: 4 withAll: ExternalType signedLong). - result := meth invokeWith: $A with: 65 with: 65.0 with: true. - self assert: 130 equals: result! Item was removed: - ----- Method: FFIPluginTests>>testConstructedPrintString (in category 'tests') ----- - testConstructedPrintString - "Test using generic FFI spec" - | result meth | - meth := ExternalLibraryFunction - name:'ffiPrintString' module: FFITestLibrary moduleName - callType: ExternalFunction callTypeCDecl returnType: ExternalType string - argumentTypes: (Array with: ExternalType string). - result := meth invokeWith:'Hello World!!'. - self assert: 'Hello World!!' equals: result! Item was removed: - ----- Method: FFIPluginTests>>testConstructedShortCall (in category 'tests') ----- - testConstructedShortCall - "Test using generic FFI spec" - | result meth | - meth := ExternalLibraryFunction - name:'ffiTestShorts' module: FFITestLibrary moduleName - callType: ExternalFunction callTypeCDecl returnType: ExternalType short - argumentTypes: (Array new: 4 withAll: ExternalType short). - result := meth invokeWithArguments: (Array with: $A with: 65 with: 65.0 with: true). - self assert: 130 equals: result! Item was added: + ----- Method: FFIPluginTests>>testDoubles (in category 'tests - atomics') ----- + testDoubles + + | result | + result := self invoke: 'ffiTestDoubles' with: $A with: 65.0. + self assert: 130.0 equals: result. + result := self invoke: 'ffiTestDoubles' with: 41 with: true. + self assert: 42.0 equals: result.! Item was added: + ----- Method: FFIPluginTests>>testDoubles14 (in category 'tests - atomics') ----- + testDoubles14 + + | result n args | + n := 14. + args := (123.456789 to: 3.210987 * 13 + 123.456789 by: 3.210987) asArray first: n. + result := self invoke: 'ffiTestDoubles14' withArguments: args. + self assert: args sum equals: result! Item was added: + ----- Method: FFIPluginTests>>testDoubles9 (in category 'tests - atomics') ----- + testDoubles9 + + | result | + result := self invoke: 'ffiTestDoubles9' withArguments: #(1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0). + self assert: 45.0 equals: result! Item was added: + ----- Method: FFIPluginTests>>testFloats (in category 'tests - atomics') ----- + testFloats + + | result | + result :=self invoke: 'ffiTestFloats' with: $A with: 65.0. + self assert: 130.0 equals: result.! Item was added: + ----- Method: FFIPluginTests>>testFloats13 (in category 'tests - atomics') ----- + testFloats13 + + | result n args | + n := 13. + args := (123.456 to: 3.21 * 13 + 123.456 by: 3.21) asArray first: n. + result := self invoke: 'ffiTestFloats13' withArguments: args. + self assert: (result between: args sum - 0.0005 and: args sum + 0.0005)! Item was removed: - ----- Method: FFIPluginTests>>testFloats13Sum (in category 'tests') ----- - testFloats13Sum - "Test using generic FFI spec" - | result meth n args | - meth := ExternalLibraryFunction - name:'ffiTestFloats13' module: FFITestLibrary moduleName - callType: 0 returnType: ExternalType float - argumentTypes: (Array new: (n := 13) withAll: ExternalType float). - args := (123.456 to: 3.21 * 13 + 123.456 by: 3.21) asArray first: 13. - result := meth invokeWithArguments: args. - self assert: (result between: args sum - 0.0005 and: args sum + 0.0005)! Item was added: + ----- Method: FFIPluginTests>>testFloats14 (in category 'tests - atomics') ----- + testFloats14 + + | result n args | + n := 14. + args := (123.456 to: 3.21 * 13 + 123.456 by: 3.21) asArray first: n. + result := self invoke: 'ffiTestFloats14' withArguments: args. + self assert: (result between: args sum - 0.0005 and: args sum + 0.0005)! Item was added: + ----- Method: FFIPluginTests>>testFloats7 (in category 'tests - atomics') ----- + testFloats7 + + | result n args | + n := 7. + args := (123.456 to: 3.21 * 13 + 123.456 by: 3.21) asArray first: n. + result := self invoke: 'ffiTestFloats7' withArguments: args. + self assert: (result between: args sum - 0.0005 and: args sum + 0.0005)! Item was removed: - ----- Method: FFIPluginTests>>testGenericBoolCall (in category 'tests') ----- - testGenericBoolCall - "Test using generic FFI spec" - | result | - result := FFITestLibrary ffiTestBool: true with: false with: true with: false. - self assert: result.! Item was removed: - ----- Method: FFIPluginTests>>testGenericBoolCall2 (in category 'tests') ----- - testGenericBoolCall2 - "Test using generic FFI spec" - | result | - result := FFITestLibrary ffiTestBool: false with: false with: true with: true. - self deny: result.! Item was removed: - ----- Method: FFIPluginTests>>testGenericBoolCall3 (in category 'tests') ----- - testGenericBoolCall3 - "Test using generic FFI spec" - | result | - result := FFITestLibrary ffiTestBool: -1 with: 1 with: 0 with: 0. - self deny: result.! Item was removed: - ----- Method: FFIPluginTests>>testGenericCharCall (in category 'tests') ----- - testGenericCharCall - "Test using generic FFI spec" - | result | - result := FFITestLibrary ffiTestChar: $A with: 65 with: 65.0 with: true. - self assert: result isCharacter. - self assert: result asciiValue = 130.! Item was removed: - ----- Method: FFIPluginTests>>testGenericDoubleCall (in category 'tests') ----- - testGenericDoubleCall - "Test using generic FFI spec" - | result | - result := FFITestLibrary ffiTestDoubles: $A with: 65.0. - self assert: result = 130.0! Item was removed: - ----- Method: FFIPluginTests>>testGenericDoubleCall2 (in category 'tests') ----- - testGenericDoubleCall2 - "Test using generic FFI spec" - | result | - result := FFITestLibrary ffiTestDoubles9: 1.0 d: 2.0 d: 3.0 d: 4.0 d: 5.0 d: 6.0 d: 7.0 d: 8.0 d: 9.0. - self assert: result = 45.0! Item was removed: - ----- Method: FFIPluginTests>>testGenericFloatCall (in category 'tests') ----- - testGenericFloatCall - "Test using generic FFI spec" - | result | - result := FFITestLibrary ffiTestFloats: $A with: 65.0. - self assert: result = 130.0! Item was removed: - ----- Method: FFIPluginTests>>testGenericIntCall (in category 'tests') ----- - testGenericIntCall - "Test using generic FFI spec" - | result | - self flag: #ffiLongVsInt. - result := FFITestLibrary ffiTestInt: $A with: 65 with: 65.0 with: true. - self assert: result = 130.! Item was removed: - ----- Method: FFIPluginTests>>testGenericLongCall (in category 'tests') ----- - testGenericLongCall - "Test using generic FFI spec" - | result | - self flag: #ffiLongVsInt. - result := FFITestLibrary ffiTestLong: $A with: 65 with: 65.0 with: true. - self assert: result = 130.! Item was removed: - ----- Method: FFIPluginTests>>testGenericMixedDoublesIntAndStruct (in category 'tests') ----- - testGenericMixedDoublesIntAndStruct - "Test using generic FFI spec" - | result i struct | - i := 42. - struct := FFITestPoint4 new. - struct x: 1. struct y: 2. struct z: 3. struct w: 4. - result := FFITestLibrary ffiTestMixedDoublesIntAndStruct: 1.0 d: 2.0 d: 3.0 d: 4.0 d: 5.0 d: 6.0 d: 7.0 d: 8.0 d: 9.0 i: 42 s: struct. - self assert: (result closeTo: 45.0 + 42 + 10) ! Item was removed: - ----- Method: FFIPluginTests>>testGenericMixedFloatsAndDouble (in category 'tests') ----- - testGenericMixedFloatsAndDouble - "Test using generic FFI spec" - | result | - result := FFITestLibrary ffiTestMixedFloatsAndDouble: 1.2 with: 3.4 with: 5.6 with: 7.8. - self assert: (result closeTo: 1.2 + 3.4 + 5.6 + 7.8) ! Item was removed: - ----- Method: FFIPluginTests>>testGenericPrintString (in category 'tests') ----- - testGenericPrintString - "Test using generic FFI spec" - | result | - result := FFITestLibrary ffiPrintString:'Hello World!!'. - self assert: result = 'Hello World!!'.! Item was removed: - ----- Method: FFIPluginTests>>testGenericShortCall (in category 'tests') ----- - testGenericShortCall - "Test using generic FFI spec" - | result | - result := FFITestLibrary ffiTestShort: $A with: 65 with: 65.0 with: true. - self assert: result = 130.! Item was changed: ----- Method: FFIPluginTests>>testIntAliasCallReturnIntAlias (in category 'tests - type alias') ----- testIntAliasCallReturnIntAlias | result | result := FFITestLibrary + ffiTestIntAlias4IntAliasSum: (FFITestIntAlias fromHandle: 1) - ffiTestIntAlias4IntSum: (FFITestIntAlias fromHandle: 1) with: (FFITestIntAlias fromHandle: 2) with: (FFITestIntAlias fromHandle: 3) with: (FFITestIntAlias fromHandle: 4). self assert: (result isKindOf: FFITestIntAlias); assert: 10 equals: result value.! Item was added: + ----- Method: FFIPluginTests>>testInts (in category 'tests - atomics') ----- + testInts + + | result | + result := self invoke: 'ffiTestInts' with: $A with: 65 with: 65.0 with: true. + self assert: $A asInteger + 65 equals: result. + ! Item was added: + ----- Method: FFIPluginTests>>testInts8 (in category 'tests - other') ----- + testInts8 + + | result n interval | + n := 8. + interval := 1 - n * n to: n * n by: 2 * n + 1. + result := self invoke: 'ffiTestInts8' withArguments: interval asArray. + self assert: 42 equals: result! Item was removed: - ----- Method: FFIPluginTests>>testLibraryCharCall (in category 'tests - library') ----- - testLibraryCharCall - "Test using call from ExternalLibrary" - | result | - result := FFITestLibrary new ffiTestChar: $A with: 65 with: 65.0 with: true. - self assert: result isCharacter. - self assert: result asciiValue = 130.! Item was removed: - ----- Method: FFIPluginTests>>testLibraryDoubleCall (in category 'tests - library') ----- - testLibraryDoubleCall - "Test using call from ExternalLibrary" - | result | - result := FFITestLibrary new ffiTestDoubles: $A with: 65.0. - self assert: result = 130.0! Item was removed: - ----- Method: FFIPluginTests>>testLibraryFloatCall (in category 'tests - library') ----- - testLibraryFloatCall - "Test using call from ExternalLibrary" - | result | - result := FFITestLibrary new ffiTestFloats: $A with: 65.0. - self assert: result = 130.0! Item was removed: - ----- Method: FFIPluginTests>>testLibraryIntCall (in category 'tests - library') ----- - testLibraryIntCall - "Test using call from ExternalLibrary" - | result | - result := FFITestLibrary new ffiTestInt: $A with: 65 with: 65.0 with: true. - self assert: result = 130.! Item was removed: - ----- Method: FFIPluginTests>>testLibraryPrintString (in category 'tests - library') ----- - testLibraryPrintString - "Test using call from ExternalLibrary" - | result | - result := FFITestLibrary new ffiPrintString:'Hello World!!'. - self assert: result = 'Hello World!!'.! Item was added: + ----- Method: FFIPluginTests>>testLongLong (in category 'tests - atomics') ----- + testLongLong + "Test passing and returning longlongs" + | long1 long2 long3 | + long1 := 16r123456789012. + long2 := (-1 << 31). + long3 := self invoke: 'ffiTestLongLong' with: long1 with: long2. + self assert: (long1 + long2) equals: long3.! Item was added: + ----- Method: FFIPluginTests>>testLongLong8 (in category 'tests - atomics') ----- + testLongLong8 + + | long1 long2 bytes result | + bytes := (1 to: 8) asArray. + long1 := 16r123456789012. + long2 := (-1 << 31). + result := self invoke: 'ffiTestLongLong8' withArguments: bytes, { long1 . long2 }. + self assert: (bytes sum + long1 + long2) equals: result.! Item was added: + ----- Method: FFIPluginTests>>testLongLong8a1 (in category 'tests - atomics') ----- + testLongLong8a1 + + | long1 long2 bytes result | + bytes := (1 to: 9) asArray. + long1 := 16r123456789012. + long2 := (-1 << 31). + result := self invoke: 'ffiTestLongLong8a1' withArguments: bytes, { long1 . long2 }. + self assert: (bytes sum + long1 + long2) equals: result.! Item was added: + ----- Method: FFIPluginTests>>testLongLong8a2 (in category 'tests - atomics') ----- + testLongLong8a2 + + | long1 long2 bytes result | + bytes := (1 to: 10) asArray. + long1 := 16r123456789012. + long2 := (-1 << 31). + result := self invoke: 'ffiTestLongLong8a2' withArguments: bytes, { long1 . long2 }. + self assert: (bytes sum + long1 + long2) equals: result.! Item was changed: + ----- Method: FFIPluginTests>>testLongLongA1 (in category 'tests - atomics') ----- - ----- Method: FFIPluginTests>>testLongLongA1 (in category 'tests') ----- testLongLongA1 "Test passing a char and two longlongs." + + | byte long1 long2 result | - | byte long1 long2 long3 | byte := 42. long1 := 16r123456789012. long2 := (-1 << 31). + result := self invoke: 'ffiTestLongLonga1' with: byte with: long1 with: long2. + self assert: (byte + long1 + long2) equals: result.! - long3 := FFITestLibrary ffiTestLongLongA1: byte with: long1 with: long2. - self assert: long3 = (byte + long1 + long2)! Item was added: + ----- Method: FFIPluginTests>>testLongLongA2 (in category 'tests - atomics') ----- + testLongLongA2 + + | byte1 byte2 long1 long2 result | + byte1 := 3. + byte2 := 4. + long1 := 16r123456789012. + long2 := (-1 << 31). + result := self invoke: 'ffiTestLongLonga2' with: byte1 with: byte2 with: long1 with: long2. + self assert: (byte1 + byte2 + long1 + long2) equals: result.! Item was changed: + ----- Method: FFIPluginTests>>testLongLongA3 (in category 'tests - atomics') ----- - ----- Method: FFIPluginTests>>testLongLongA3 (in category 'tests') ----- testLongLongA3 "Test passing a char, a longlong, and another char." + | byte1 long1 byte2 result | - | byte1 long1 byte2 long2 | byte1 := 3. long1 := 16r123456789012. byte2 := 4. + result := self invoke: 'ffiTestLongLonga3' with: byte1 with: long1 with: byte2. + self assert: (byte1 + long1 + byte2) equals: result.! - long2 := FFITestLibrary ffiTestLongLongA3: byte1 with: long1 with: byte2. - self assert: long2 = (byte1 + long1 + byte2)! Item was removed: - ----- Method: FFIPluginTests>>testLongLongs (in category 'tests') ----- - testLongLongs - "Test passing and returning longlongs" - | long1 long2 long3 | - long1 := 16r123456789012. - long2 := (-1 << 31). - long3 := FFITestLibrary ffiTestLongLong: long1 with: long2. - self assert: long3 = (long1 + long2)! Item was added: + ----- Method: FFIPluginTests>>testLongLongs8 (in category 'tests - other') ----- + testLongLongs8 + + | result n interval | + n := 8. + interval := 1 - n * n << 32 + (1 - n * n) to: n * n - n << 32 + (3 * n * n) by: 2 * n << 32 + (3 * n). + result := self invoke: 'ffiTestLongLongs8' withArguments: interval asArray. + self assert: 42 equals: result! Item was changed: + ----- Method: FFIPluginTests>>testMixedDoublesAndLongsSum (in category 'tests - atomics') ----- - ----- Method: FFIPluginTests>>testMixedDoublesAndLongsSum (in category 'tests') ----- testMixedDoublesAndLongsSum + + | result n args | + n := 20. - "Test using generic FFI spec" - | result meth n args | - meth := ExternalLibraryFunction - name:'ffiTestMixedDoublesAndLongs' module: FFITestLibrary moduleName - callType: 0 returnType: ExternalType double - argumentTypes: ((1 to: (n := 20)) collect:[:i| i odd ifTrue: [ExternalType double] ifFalse: [ExternalType c_long]]). args := (1 to: n) collect: [:i| i odd ifTrue: [(i // 2) odd ifTrue: [123.456 * (10 raisedTo: i)] ifFalse: [-654.321 * (10 raisedTo: i)]] ifFalse: [(i // 2) odd ifTrue: [54321 * i] ifFalse: [-54321 * i]]]. + result := self invoke: 'ffiTestMixedDoublesAndLongs' withArguments: args asArray. - result := meth invokeWithArguments: args asArray. self assert: args sum equals: result! Item was added: + ----- Method: FFIPluginTests>>testMixedDoublesIntAndStruct (in category 'tests - atomics') ----- + testMixedDoublesIntAndStruct + + | result i struct | + i := 42. + struct := FFITestPoint4 new. + struct x: 1. struct y: 2. struct z: 3. struct w: 4. + result := self + invoke: 'ffiTestMixedDoublesIntAndStruct' + withArguments: { 1.0 . 2.0 . 3.0 . 4.0 . 5.0 . 6.0 . 7.0 . 8.0 . 9.0 . 42 . struct }. + self assert: (result closeTo: 45.0 + 42 + 10).! Item was added: + ----- Method: FFIPluginTests>>testMixedFloatsAndDouble (in category 'tests - atomics') ----- + testMixedFloatsAndDouble + + | result | + result := self invoke: 'ffiTestMixedFloatsAndDouble' with: 1.2 with: 3.4 with: 5.6 with: 7.8. + self assert: (result closeTo: 1.2 + 3.4 + 5.6 + 7.8) ! Item was changed: ----- Method: FFIPluginTests>>testMixedIntAndStruct (in category 'tests - structure') ----- testMixedIntAndStruct "Test passing an integer and two structures." | i1 pt1 pt2 result | i1 := 42. pt1 := FFITestPoint2 new. pt1 x: 3. pt1 y: 4. pt2 := FFITestPoint2 new. pt2 x: 5. pt2 y: 6. + result := self invoke: 'ffiTestMixedIntAndStruct' with: i1 with: pt1 with: pt2. + self assert: 60 equals: result.! - result := FFITestLibrary ffiTestMixedIntAndStruct: i1 with: pt1 with: pt2. - self assert: result = 60.! Item was changed: ----- Method: FFIPluginTests>>testMixedIntAndStruct2 (in category 'tests - structure') ----- testMixedIntAndStruct2 "Test passing an integer and two structures." | i1 pt1 result | i1 := 42. pt1 := FFITestPoint4 new. pt1 x: 3. pt1 y: 4. pt1 z: 5. pt1 w: 6. + result := self invoke: 'ffiTestMixedIntAndStruct2' with: i1 with: pt1. + self assert: 60 equals: result.! - result := FFITestLibrary ffiTestMixedIntAndStruct2: i1 with: pt1. - self assert: result = 60.! Item was changed: ----- Method: FFIPluginTests>>testMixedIntAndStruct3 (in category 'tests - structure') ----- testMixedIntAndStruct3 "Test passing an integer and a small structure." | i1 pt1 result | i1 := 42. pt1 := FFISmallStruct1 new. pt1 x: 3. pt1 y: 4. + result := self invoke: 'ffiTestMixedIntAndStruct3' with: i1 with: pt1. + self assert: 49 equals: result.! - result := FFITestLibrary ffiTestMixedIntAndStruct3: i1 with: pt1. - self assert: result = 49! Item was changed: ----- Method: FFIPluginTests>>testPoint2 (in category 'tests - structure') ----- testPoint2 "Test passing and returning up of structures >32bit and <= 64 bit" | pt1 pt2 pt3 | pt1 := FFITestPoint2 new. pt1 x: 1. pt1 y: 2. pt2 := FFITestPoint2 new. pt2 x: 3. pt2 y: 4. + pt3 := self invoke: 'ffiTestStruct64' with: pt1 with: pt2. - pt3 := FFITestLibrary ffiTestPoint2: pt1 with: pt2. self assert: pt3 x = 4. self assert: pt3 y = 6.! Item was changed: ----- Method: FFIPluginTests>>testPoint4 (in category 'tests - structure') ----- testPoint4 "Test passing and returning up of structures > 64 bit" | pt1 pt2 pt3 | pt1 := FFITestPoint4 new. pt1 x: 1. pt1 y: 2. pt1 z: 3. pt1 w: 4. pt2 := FFITestPoint4 new. pt2 x: 5. pt2 y: 6. pt2 z: 7. pt2 w: 8. + pt3 := self invoke: 'ffiTestStructBig' with: pt1 with: pt2. - pt3 := FFITestLibrary ffiTestPoint4: pt1 with: pt2. self assert: pt3 x = 6. self assert: pt3 y = 8. self assert: pt3 z = 10. self assert: pt3 w = 12.! Item was added: + ----- Method: FFIPluginTests>>testPoint4Bigger (in category 'tests - structure') ----- + testPoint4Bigger + "Test passing and returning up of structures > 64 bit" + | pt1 pt2 pt3 | + pt1 := FFITestPoint4 new. + pt1 x: 1. pt1 y: 2. pt1 z: 3. pt1 w: 4. + pt2 := FFITestPoint4 new. + pt2 x: 5. pt2 y: 6. pt2 z: 7. pt2 w: 8. + pt3 := self invoke: 'ffiTestStructBigger' with: pt1 with: pt2. + self assert: pt3 x equals: pt1 x. + self assert: pt3 y equals: pt1 y. + self assert: pt3 z equals: pt1 z. + self assert: pt3 w equals: pt1 w. + self assert: pt3 r equals: pt2 x. + self assert: pt3 s equals: pt2 y. + self assert: pt3 t equals: pt2 z. + self assert: pt3 u equals: pt2 w. + ! Item was changed: ----- Method: FFIPluginTests>>testPointers (in category 'tests - structure') ----- testPointers "Test passing and returning of pointers to structs" | pt1 pt2 pt3 | pt1 := FFITestPoint4 new. pt1 x: 1. pt1 y: 2. pt1 z: 3. pt1 w: 4. pt2 := FFITestPoint4 new. pt2 x: 5. pt2 y: 6. pt2 z: 7. pt2 w: 8. + pt3 := heapObject := self invoke: 'ffiTestPointers' with: pt1 with: pt2. - pt3 := FFITestLibrary ffiTestPointers: pt1 with: pt2. self assert: pt3 x = 6. self assert: pt3 y = 8. self assert: pt3 z = 10. self assert: pt3 w = 12.! Item was added: + ----- Method: FFIPluginTests>>testPrintString (in category 'tests - other') ----- + testPrintString + + | result | + result := self invoke: 'ffiPrintString' with: 'Hello World!!'. + self assert: result = 'Hello World!!'.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructPassingUnionUfdUdSi2 (in category 'tests - union') ----- testReturnStructPassingUnionUfdUdSi2 "Test returning struct made from 2 unions" | ufd udSi2 sUfdUdSi2 | + ufd := self invoke: 'ffiTestInitUfd_d' with: Float pi. + udSi2 := self invoke: 'ffiTestInitUdSi2_ii' with: 1 with: 2. + sUfdUdSi2 := self invoke: 'ffiTestInitSUfdUdSi2' with: ufd with: udSi2. - ufd := FFITestLibrary ffiTestInitUfdWithDouble: Float pi. - udSi2 := FFITestLibrary ffiTestInitUdSi2WithInt: 1 int: 2. - sUfdUdSi2 := FFITestLibrary ffiTestInitSUfd: ufd udSi2: udSi2. self assert: Float pi equals: sUfdUdSi2 ufd1 d1. self assert: 1 equals: sUfdUdSi2 udSii2 sii1 i1. self assert: 2 equals: sUfdUdSi2 udSii2 sii1 i2.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructPassingUnionUfdUfi (in category 'tests - union') ----- testReturnStructPassingUnionUfdUfi "Test returning struct made from 2 unions" | ufd ufi sUfdUfi | + ufd := self invoke: 'ffiTestInitUfd_d' with: Float pi. + ufi := self invoke: 'ffiTestInitUfi_i' with: 1. + sUfdUfi := self invoke: 'ffiTestInitSUfdUfi' with: ufd with: ufi. - ufd := FFITestLibrary ffiTestInitUfdWithDouble: Float pi. - ufi := FFITestLibrary ffiTestInitUfiWithInt: 1. - sUfdUfi := FFITestLibrary ffiTestInitSUfd: ufd ufi: ufi. self assert: Float pi equals: sUfdUfi ufd1 d1. self assert: 1 equals: sUfdUfi ufi2 i1.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSSdi5 (in category 'tests - structure') ----- testReturnStructSSdi5 "Test returning struct with five struct double int (64 + 32 bits)" | ssdi5 | + ssdi5 := self invoke: 'ffiTestReturnSSdi5'. - ssdi5 := FFITestLibrary ffiTestReturnSSdi5. self assert: ssdi5 sdi1 d1 = 1.0. self assert: ssdi5 sdi2 d1 = 2.0. self assert: ssdi5 sdi3 d1 = 3.0. self assert: ssdi5 sdi4 d1 = 4.0. self assert: ssdi5 sdi5 d1 = 5.0. self assert: ssdi5 sdi1 i2 = 1. self assert: ssdi5 sdi2 i2 = 2. self assert: ssdi5 sdi3 i2 = 3. self assert: ssdi5 sdi4 i2 = 4. self assert: ssdi5 sdi5 i2 = 5.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSd2 (in category 'tests - structure') ----- testReturnStructSd2 "Test returning struct with two double" | sd2 | + sd2 := self invoke: 'ffiTestReturnSd2'. - sd2 := FFITestLibrary ffiTestReturnSd2. self assert: sd2 d1 = 1.0. self assert: sd2 d2 = 2.0.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSdi (in category 'tests - structure') ----- testReturnStructSdi "Test returning struct double int (64 + 32 bits)" | sdi | + sdi := self invoke: 'ffiTestReturnSdi'. - sdi := FFITestLibrary ffiTestReturnSdi. self assert: sdi d1 = 1.0. self assert: sdi i2 = 2.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSf2 (in category 'tests - structure') ----- testReturnStructSf2 "Test returning struct with two float" | sf2 | + sf2 := self invoke: 'ffiTestReturnSf2'. - sf2 := FFITestLibrary ffiTestReturnSf2. self assert: sf2 f1 = 1.0. self assert: sf2 f2 = 2.0.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSf2d (in category 'tests - structure') ----- testReturnStructSf2d "Test returning struct with two float one double" | sf2d | + sf2d := self invoke: 'ffiTestReturnSf2d'. - sf2d := FFITestLibrary ffiTestReturnSf2d. self assert: sf2d f1 = 1.0. self assert: sf2d f2 = 2.0. self assert: sf2d d3 = 3.0.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSf4 (in category 'tests - structure') ----- testReturnStructSf4 "Test returning struct with four float" | sf4 | + sf4 := self invoke: 'ffiTestReturnSf4'. - sf4 := FFITestLibrary ffiTestReturnSf4. self assert: sf4 f1 = 1.0. self assert: sf4 f2 = 2.0. self assert: sf4 f3 = 3.0. self assert: sf4 f4 = 4.0.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSfdf (in category 'tests - structure') ----- testReturnStructSfdf "Test returning struct with float double float" | sfdf | + sfdf := self invoke: 'ffiTestReturnSfdf'. - sfdf := FFITestLibrary ffiTestReturnSfdf. self assert: sfdf f1 = 1.0. self assert: sfdf d2 = 2.0. self assert: sfdf f3 = 3.0.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSfi (in category 'tests - structure') ----- testReturnStructSfi "Test returning struct with float int (32 + 32 bits)" | sfi | + sfi := self invoke: 'ffiTestReturnSfi'. - sfi := FFITestLibrary ffiTestReturnSfi. self assert: sfi f1 = 1.0. self assert: sfi i2 = 2.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSi2 (in category 'tests - structure') ----- testReturnStructSi2 "Test returning struct with two int (32 bits)" | si2 | + si2 := self invoke: 'ffiTestReturnSi2'. - si2 := FFITestLibrary ffiTestReturnSi2. self assert: si2 i1 = 1. self assert: si2 i2 = 2.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSl2 (in category 'tests - structure') ----- testReturnStructSl2 "Test returning struct with two long long int (64 bits)" | sl2 | + sl2 := self invoke: 'ffiTestReturnSl2'. - sl2 := FFITestLibrary ffiTestReturnSl2. self assert: sl2 l1 = 1. self assert: sl2 l2 = 2.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSs2 (in category 'tests - structure') ----- testReturnStructSs2 "Test returning struct with two short int (16 bits)" | ss2 | + ss2 := self invoke: 'ffiTestReturnSs2'. - ss2 := FFITestLibrary ffiTestReturnSs2. self assert: ss2 s1 = 1. self assert: ss2 s2 = 2.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSs2i (in category 'tests - structure') ----- testReturnStructSs2i "Test returning struct with two short int (16 bits) one int (32 bits)" | ss2i | + ss2i := self invoke: 'ffiTestReturnSs2i'. - ss2i := FFITestLibrary ffiTestReturnSs2i. self assert: ss2i s1 = 1. self assert: ss2i s2 = 2. self assert: ss2i i3 = 3.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSs4 (in category 'tests - structure') ----- testReturnStructSs4 "Test returning struct with four short int (16 bits)" | ss4 | + ss4 := self invoke: 'ffiTestReturnSs4'. - ss4 := FFITestLibrary ffiTestReturnSs4. self assert: ss4 s1 = 1. self assert: ss4 s2 = 2. self assert: ss4 s3 = 3. self assert: ss4 s4 = 4.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSsSsf (in category 'tests - structure') ----- testReturnStructSsSsf "Test returning struct with short and sub structure short-float" | ssSsf | + ssSsf := self invoke: 'ffiTestReturnSsSsf'. - ssSsf := FFITestLibrary ffiTestReturnSsSsf. self assert: ssSsf s1 = 1. self assert: ssSsf ssf2 s1 = 2. self assert: ssSsf ssf2 f2 = 3.0.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSsSsi (in category 'tests - structure') ----- testReturnStructSsSsi "Test returning struct with short and sub structure short-int" | ssSsi | + ssSsi := self invoke: 'ffiTestReturnSsSsi'. - ssSsi := FFITestLibrary ffiTestReturnSsSsi. self assert: ssSsi s1 = 1. self assert: ssSsi ssi2 s1 = 2. self assert: ssSsi ssi2 i2 = 3.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSsf (in category 'tests - structure') ----- testReturnStructSsf "Test returning struct with short float (16 + 32 bits)" | ssf | + ssf := self invoke: 'ffiTestReturnSsf'. - ssf := FFITestLibrary ffiTestReturnSsf. self assert: ssf s1 = 1. self assert: ssf f2 = 2.0.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSsi (in category 'tests - structure') ----- testReturnStructSsi "Test returning struct with short int (16 + 32 bits)" | ssi | + ssi := self invoke: 'ffiTestReturnSsi'. - ssi := FFITestLibrary ffiTestReturnSsi. self assert: ssi s1 = 1. self assert: ssi i2 = 2.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSsis (in category 'tests - structure') ----- testReturnStructSsis "Test returning struct with short int short (16 + 32 + 16 bits)" | ssis | + ssis := self invoke: 'ffiTestReturnSsis'. - ssis := FFITestLibrary ffiTestReturnSsis. self assert: ssis s1 = 1. self assert: ssis i2 = 2. self assert: ssis s3 = 3.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSslf (in category 'tests - structure') ----- testReturnStructSslf "Test returning struct with short longlong float (16 + 64 + 32 bits)" | sslf | + sslf := self invoke: 'ffiTestReturnSslf'. - sslf := FFITestLibrary ffiTestReturnSslf. self assert: sslf s1 = 1. self assert: sslf l2 = 2. self assert: sslf f3 = 3.0.! Item was changed: ----- Method: FFIPluginTests>>testReturnStructSsls (in category 'tests - structure') ----- testReturnStructSsls "Test returning struct with short longlong short (16 + 64 + 16 bits)" | ssls | + ssls := self invoke: 'ffiTestReturnSsls'. - ssls := FFITestLibrary ffiTestReturnSsls. self assert: ssls s1 = 1. self assert: ssls l2 = 2. self assert: ssls s3 = 3.! Item was changed: ----- Method: FFIPluginTests>>testReturnUnionUdSi2 (in category 'tests - union') ----- testReturnUnionUdSi2 "Test returning union with double or 2 int (64 or 64 bits)" | udSi2 | + udSi2 := self invoke: 'ffiTestInitUdSi2_d' with: Float pi. - udSi2 := FFITestLibrary ffiTestInitUdSi2WithDouble: Float pi. self assert: Float pi equals: udSi2 d1. self assert: (Float pi basicAt: 1) equals: udSi2 sii1 i2. "Assume Little Endianness" self assert: (Float pi basicAt: 2) equals: udSi2 sii1 i1. + udSi2 := self invoke: 'ffiTestInitUdSi2_ii' with: 1 with: 2. - udSi2 := FFITestLibrary ffiTestInitUdSi2WithInt: 1 int: 2. self assert: 1 equals: udSi2 sii1 i1. self assert: 2 equals: udSi2 sii1 i2.! Item was changed: ----- Method: FFIPluginTests>>testReturnUnionUfd (in category 'tests - union') ----- testReturnUnionUfd "Test returning union with float or double (32 or 64 bits)" | ufd | + ufd := self invoke: 'ffiTestInitUfd_f' with: 1.0. - ufd := FFITestLibrary ffiTestInitUfdWithFloat: 1.0. self assert: 1.0 equals: ufd f1. + ufd := self invoke: 'ffiTestInitUfd_d' with: 2.0. - ufd := FFITestLibrary ffiTestInitUfdWithDouble: 2.0. self assert: 2 equals: ufd d1.! Item was changed: ----- Method: FFIPluginTests>>testReturnUnionUfi (in category 'tests - union') ----- testReturnUnionUfi "Test returning union with float or int (32 or 32 bits)" | ufi | + ufi := self invoke: 'ffiTestInitUfi_f' with: 1.0. - ufi := FFITestLibrary ffiTestInitUfiWithFloat: 1.0. self assert: 1.0 equals: ufi f1. self assert: 1.0 asIEEE32BitWord equals: ufi i1. + ufi := self invoke: 'ffiTestInitUfi_i' with: 2. - ufi := FFITestLibrary ffiTestInitUfiWithInt: 2. self assert: 2 equals: ufi i1.! Item was added: + ----- Method: FFIPluginTests>>testShorts (in category 'tests - atomics') ----- + testShorts + + | result | + result := self invoke: 'ffiTestShorts' with: $A with: 65 with: 65.0 with: true. + self assert: 130 equals: result.! Item was changed: ----- Method: FFIPluginTests>>testSmallStructureReturn (in category 'tests - structure') ----- testSmallStructureReturn "Test returning small structures (<4 bytes) which are returned in a register on some platforms." | pt1 | + pt1 := self invoke: 'ffiTestSmallStructReturn'. - pt1 := FFITestLibrary ffiTestSmallStructReturn. self assert: pt1 x = 3. self assert: pt1 y = 4.! Item was changed: ----- Method: FFIPluginTests>>testSumStructSSdi5 (in category 'tests - structure') ----- testSumStructSSdi5 "Test passing a structure larger than 8 eighbytes" | sdi1 sdi2 sdi3 sdi4 sdi5 ssdi5 sum | sdi1 := FFITestSdi new. sdi1 d1: 0.5; i2: 16r12345678. sdi2 := FFITestSdi new. sdi2 d1: 0.25; i2: 16r01234567. sdi3 := FFITestSdi new. sdi3 d1: 0.125; i2: 3. sdi4 := FFITestSdi new. sdi4 d1: 2.0; i2: 1. sdi5 := FFITestSdi new. sdi5 d1: 4.0; i2: 2. ssdi5 := FFITestSSdi5 new. ssdi5 sdi1: sdi1; sdi2: sdi2; sdi3: sdi3; sdi4: sdi4; sdi5: sdi5. + sum := self invoke: 'ffiTestSumSSdi5' with: ssdi5. - sum := FFITestLibrary ffiTestSumStructSdi5: ssdi5. self assert: 0.5 + 16r12345678 + 0.25 + 16r01234567 + 0.125 + 3 + 2.0 + 1 + 4.0 + 2 equals: sum! Item was added: + ----- Method: FFIPluginTests>>testSumStructSUfdUdsi2 (in category 'tests - structure') ----- + testSumStructSUfdUdsi2 + "Sum up the double parts of two unions in a struct. We have to malloc because we cannot (yet?) share parts of byte arrays between structures." + + | sUfdUdsi2 sum | + sUfdUdsi2 := heapObject := FFITestSUfdUdSi2 externalNew. + sUfdUdsi2 ufd1 d1: 123.456. + sUfdUdsi2 udSii2 d1: 456.123. + sum := self invoke: 'ffiTestSumSUfdUdSi2_d' with: sUfdUdsi2. + self assert: 123.456 + 456.123 equals: sum.! Item was added: + ----- Method: FFIPluginTests>>testSumStructSUfdUfi (in category 'tests - structure') ----- + testSumStructSUfdUfi + "Sum up the float parts of two unions in a struct. We have to malloc because we cannot (yet?) share parts of byte arrays between structures." + + | sUfdUdsi2 result expected | + sUfdUdsi2 := heapObject := FFITestSUfdUfi externalNew. + sUfdUdsi2 ufd1 f1: 123.456. + sUfdUdsi2 ufi2 f1: 456.123. + result := self invoke: 'ffiTestSumSUfdUfi_f' with: sUfdUdsi2. + expected := 123.456 + 456.123. + self assert: (result between: expected - 0.0005 and: expected + 0.0005).! Item was changed: ----- Method: FFIPluginTests>>testSumStructSdi (in category 'tests - structure') ----- testSumStructSdi "Test passing structure double int" | sdi sum | sdi := FFITestSdi new. sdi d1: 0.5; i2: 16r12345678. + sum := self invoke: 'ffiTestSumSdi' with: sdi. - sum := FFITestLibrary ffiTestSumSdi: sdi. self assert: 0.5 + 16r12345678 equals: sum! Item was changed: ----- Method: FFIPluginTests>>testSumStructSdi2 (in category 'tests - structure') ----- testSumStructSdi2 "Test passing 2 structure double int" | sdi1 sdi2 sum | sdi1 := FFITestSdi new. sdi1 d1: 0.5; i2: 16r12345678. sdi2 := FFITestSdi new. sdi2 d1: 0.25; i2: 16r01234567. + sum := self invoke: 'ffiTestSumSdi_2' with: sdi1 with: sdi2. - sum := FFITestLibrary ffiTestSumSdi: sdi1 sdi: sdi2. self assert: 0.5 + 16r12345678 + 0.25 + 16r01234567 equals: sum! Item was changed: ----- Method: FFIPluginTests>>testSumStructSdi4 (in category 'tests - structure') ----- testSumStructSdi4 "Test passing 4 structure double int" | sdi1 sdi2 sdi3 sdi4 sum | sdi1 := FFITestSdi new. sdi1 d1: 0.5; i2: 16r12345678. sdi2 := FFITestSdi new. sdi2 d1: 0.25; i2: 16r01234567. sdi3 := FFITestSdi new. sdi3 d1: 0.125; i2: 3. sdi4 := FFITestSdi new. sdi4 d1: 2.0; i2: 1. + sum := self invoke: 'ffiTestSumSdi_4' with: sdi1 with: sdi2 with: sdi3 with: sdi4. - sum := FFITestLibrary ffiTestSumSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4. self assert: 0.5 + 16r12345678 + 0.25 + 16r01234567 + 0.125 + 3 + 2.0 + 1 equals: sum! Item was changed: ----- Method: FFIPluginTests>>testSumStructSfd (in category 'tests - structure') ----- testSumStructSfd "Test passing structure float double" | sfd sum | sfd := FFITestSfd new. sfd f1: 0.5; d2: 305419896.0. + sum := self invoke: 'ffiTestSumSfd' with: sfd. - sum := FFITestLibrary ffiTestSumSfd: sfd. self assert: 0.5 + 305419896.0 equals: sum! Item was changed: ----- Method: FFIPluginTests>>testSumStructSfd2 (in category 'tests - structure') ----- testSumStructSfd2 "Test passing 2 structure float double " | sfd1 sfd2 sum | sfd1 := FFITestSfd new. sfd1 f1: 0.5; d2: 305419896.0. sfd2 := FFITestSfd new. sfd2 f1: 0.25; d2: 19088743.0. + sum := self invoke: 'ffiTestSumSfd_2' with: sfd1 with: sfd2. - sum := FFITestLibrary ffiTestSumSfd: sfd1 sfd: sfd2. self assert: 0.5 + 305419896.0 + 0.25 + 19088743.0 equals: sum! Item was changed: ----- Method: FFIPluginTests>>testSumStructSfd4 (in category 'tests - structure') ----- testSumStructSfd4 "Test passing 4 structure float double" | sfd1 sfd2 sfd3 sfd4 sum | sfd1 := FFITestSfd new. sfd1 f1: 0.5; d2: 305419896.0. sfd2 := FFITestSfd new. sfd2 f1: 0.25; d2: 19088743.0. sfd3 := FFITestSfd new. sfd3 f1: 0.125; d2: 3. sfd4 := FFITestSfd new. sfd4 f1: 2.0; d2: 1. + sum := self invoke: 'ffiTestSumSfd_4' with: sfd1 with: sfd2 with: sfd3 with: sfd4. - sum := FFITestLibrary ffiTestSumSfd: sfd1 sfd: sfd2 sfd: sfd3 sfd: sfd4. self assert: 0.5 + 305419896.0 + 0.25 + 19088743.0 + 0.125 + 3.0 + 2.0 + 1.0 equals: sum! Item was changed: ----- Method: FFIPluginTests>>testSumStructSslf (in category 'tests - structure') ----- testSumStructSslf "Test passing structure short long float" | sslf sum | sslf := FFITestSslf new. sslf s1: -32768; l2: 16r1234560000; f3: 65536.0. + sum := self invoke: 'ffiTestSumSslf' with: sslf. - sum := FFITestLibrary ffiTestSumSslf: sslf. self assert: -32768 + 16r1234560000 + 65536.0 equals: sum! Item was added: + ----- Method: FFIPluginTests>>testSumStructSslf2 (in category 'tests - structure') ----- + testSumStructSslf2 + "Test passing structure short long float" + | sslf1 sslf2 sum | + sslf1 := FFITestSslf new. + sslf1 s1: -32768; l2: 16r123456789012; f3: 65536.0. + sslf2 := FFITestSslf new. + sslf2 s1: 32767; l2: (-1 << 31); f3: -65536.0. + sum := self invoke: 'ffiTestSumSslf_2' with: sslf1 with: sslf2. + self + assert: sslf1 s1 + sslf1 l2 + sslf1 f3 + sslf2 s1 + sslf2 l2 + sslf2 f3 + equals: sum! Item was added: + ----- Method: FFIPluginTests>>testSumStructSslf4 (in category 'tests - structure') ----- + testSumStructSslf4 + "Test passing structure short long float" + | sslf1 sslf2 sslf3 sslf4 sum | + sslf1 := FFITestSslf new. + sslf1 s1: -32768; l2: 16r123456789012; f3: 65536.0. + sslf2 := FFITestSslf new. + sslf2 s1: 32767; l2: (-1 << 31); f3: -65536.0. + sslf3 := FFITestSslf new. + sslf3 s1: 1; l2: 16r123456789012; f3: 123.456. + sslf4 := FFITestSslf new. + sslf4 s1: 2; l2: (-1 << 31); f3: 456.123. + sum := self invoke: 'ffiTestSumSslf_2' with: sslf1 with: sslf2. + self + assert: sslf1 s1 + sslf1 l2 + sslf1 f3 + sslf2 s1 + sslf2 l2 + sslf2 f3 + + sslf3 s1 + sslf3 l2 + sslf3 f3 + sslf4 s1 + sslf4 l2 + sslf4 f3 + equals: sum! Item was changed: ----- Method: FFIPluginTests>>testSumdWithStructSdi4 (in category 'tests - structure') ----- testSumdWithStructSdi4 "Test passing 4 structure double int" | sdi1 sdi2 sdi3 sdi4 sum | sdi1 := FFITestSdi new. sdi1 d1: 0.5; i2: 16r12345678. sdi2 := FFITestSdi new. sdi2 d1: 0.25; i2: 16r01234567. sdi3 := FFITestSdi new. sdi3 d1: 0.125; i2: 3. sdi4 := FFITestSdi new. sdi4 d1: 2.0; i2: 1. + sum := self invoke: 'ffiTestSumdWithSdi_4' with: 5.0 with: sdi1 with: sdi2 with: sdi3 with: sdi4. - sum := FFITestLibrary ffiTestSumd: 5.0 withSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4. self assert: 5.0 + 0.5 + 16r12345678 + 0.25 + 16r01234567 + 0.125 + 3 + 2.0 + 1 equals: sum! Item was changed: ----- Method: FFIPluginTests>>testSumdiWithStructSdi4 (in category 'tests - structure') ----- testSumdiWithStructSdi4 "Test passing 4 structure double int" | sdi1 sdi2 sdi3 sdi4 sum | sdi1 := FFITestSdi new. sdi1 d1: 0.5; i2: 16r12345678. sdi2 := FFITestSdi new. sdi2 d1: 0.25; i2: 16r01234567. sdi3 := FFITestSdi new. sdi3 d1: 0.125; i2: 3. sdi4 := FFITestSdi new. sdi4 d1: 2.0; i2: 1. + sum := self invoke: 'ffiTestSumdiWithSdi_4' withArguments: { 5.0 . 6 . sdi1 . sdi2 . sdi3 . sdi4 }. - sum := FFITestLibrary ffiTestSumd: 5.0 i: 6 withSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4. self assert: 5.0 + 6 + 0.5 + 16r12345678 + 0.25 + 16r01234567 + 0.125 + 3 + 2.0 + 1 equals: sum! Item was changed: ----- Method: FFIPluginTests>>testSumfWithStructSfd4 (in category 'tests - structure') ----- testSumfWithStructSfd4 "Test passing 4 structure float double" | sfd1 sfd2 sfd3 sfd4 sum | sfd1 := FFITestSfd new. sfd1 f1: 0.5; d2: 305419896.0. sfd2 := FFITestSfd new. sfd2 f1: 0.25; d2: 19088743.0. sfd3 := FFITestSfd new. sfd3 f1: 0.125; d2: 3. sfd4 := FFITestSfd new. sfd4 f1: 2.0; d2: 1. + sum := self invoke: 'ffiTestSumfWithSfd_4' with: 5.0 with: sfd1 with: sfd2 with: sfd3 with: sfd4. - sum := FFITestLibrary ffiTestSumf: 5.0 withSfd: sfd1 sfd: sfd2 sfd: sfd3 sfd: sfd4. self assert: 5.0 + 0.5 + 305419896.0 + 0.25 + 19088743.0 + 0.125 + 3.0 + 2.0 + 1.0 equals: sum! Item was changed: ----- Method: FFIPluginTests>>testSumiWithStructSdi4 (in category 'tests - structure') ----- testSumiWithStructSdi4 "Test passing 4 structure double int" | sdi1 sdi2 sdi3 sdi4 sum | sdi1 := FFITestSdi new. sdi1 d1: 0.5; i2: 16r12345678. sdi2 := FFITestSdi new. sdi2 d1: 0.25; i2: 16r01234567. sdi3 := FFITestSdi new. sdi3 d1: 0.125; i2: 3. sdi4 := FFITestSdi new. sdi4 d1: 2.0; i2: 1. + sum := self invoke: 'ffiTestSumiWithSdi_4' with: 5 with: sdi1 with: sdi2 with: sdi3 with: sdi4. - sum := FFITestLibrary ffiTestSumi: 5 withSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4. self assert: 5 + 0.5 + 16r12345678 + 0.25 + 16r01234567 + 0.125 + 3 + 2.0 + 1 equals: sum! Item was removed: - ----- Method: FFIPluginTests>>testUintRange (in category 'tests') ----- - testUintRange - "Simple test for making sure the FFI can call certain numbers in the uint range." - | result | - self flag: #ffiLongVsInt. - self shouldnt:[result := FFITestLibrary ffiTestUint: 3894967296 "1<<32-4e8 " with: 3894967296 with: 3103854339 with: 3103854339] raise: Error. - self should: result = -8e8.! Item was removed: - ----- Method: FFIPluginTests>>testUlongRange (in category 'tests') ----- - testUlongRange - "Simple test for making sure the FFI can call certain numbers in the ulong range. - Note: since primitive is using unsigned int under the hood, avoid an integer overflow by choosing appropriate unsigned values. - Note: only first two parameters are added" - | result | - self flag: #ffiLongVsInt. - self shouldnt:[result := FFITestLibrary ffiTestUlong: 3894967296 "1<<32-4e8 " with: 3894967296 with: 3103854339 with: 3103854339] raise: Error. - self should: result = -8e8.! Item was added: + ----- Method: FFIPluginTests>>testUnsignedIntegerRange (in category 'tests - other') ----- + testUnsignedIntegerRange + "Simple test for making sure the FFI can call certain numbers in the uint range. Note that only the first two parameters are summed up." + + | result arg1 arg2 arg3 arg4 | + arg1 := arg2 := 3894967296 "1<<32-4e8". + arg3 := arg4 := 3103854339. + result := FFITestLibrary ffiTestUint: arg1 with: arg2 with: arg3 with: arg4. + self assert: -8e8 "due to overflow" equals: result.! Item was changed: ----- Method: FFITestBiggerStruct class>>fields (in category 'field definition') ----- fields "FFITestBiggerStruct defineFields" ^#( + (x 'int64_t') + (y 'int64_t') + (z 'int64_t') + (w 'int64_t') + (r 'int64_t') + (s 'int64_t') + (t 'int64_t') + (u 'int64_t'))! - (x 'longlong') - (y 'longlong') - (z 'longlong') - (w 'longlong') - (r 'longlong') - (s 'longlong') - (t 'longlong') - (u 'longlong'))! Item was changed: + ----- Method: FFITestLibrary class>>ffiPrintString: (in category 'other') ----- - ----- Method: FFITestLibrary class>>ffiPrintString: (in category 'primitives') ----- ffiPrintString: aString + " + FFITestLibrary ffiPrintString: 'Hello' + " - "FFITestLibrary ffiPrintString: 'Hello'" <cdecl: char* 'ffiPrintString' (char *) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTest4IntAliasSum:with:with:with: (in category 'primitives - type alias') ----- - ffiTest4IntAliasSum: c1 with: c2 with: c3 with: c4 - "FFITestLibrary ffiTest4IntSum: 1 with: 2 with: 3 with: 4" - <cdecl: int 'ffiTest4IntSum' (FFITestIntAlias FFITestIntAlias FFITestIntAlias FFITestIntAlias) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTest4IntSum:with:with:with: (in category 'atomic - int32_t') ----- - ----- Method: FFITestLibrary class>>ffiTest4IntSum:with:with:with: (in category 'primitives - long vs. int') ----- ffiTest4IntSum: c1 with: c2 with: c3 with: c4 "FFITestLibrary ffiTest4IntSum: 1 with: 2 with: 3 with: 4" + <cdecl: int32_t 'ffiTest4IntSum' (int32_t int32_t int32_t int32_t) module:'SqueakFFIPrims'> - <cdecl: int 'ffiTest4IntSum' (int int int int) module:'SqueakFFIPrims'> - self flag: #ffiLongVsInt. ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTest4LongSum:with:with:with: (in category 'primitives - long vs. int') ----- - ffiTest4LongSum: c1 with: c2 with: c3 with: c4 - "FFITestLibrary ffiTest4LongSum: 1 with: 2 with: 3 with: 4" - <cdecl: long 'ffiTest4IntSum' (long long long long) module:'SqueakFFIPrims'> - self flag: #ffiLongVsInt. - ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTest8IntSum:with:with:with:with:with:with:with: (in category 'atomic - int32_t') ----- - ----- Method: FFITestLibrary class>>ffiTest8IntSum:with:with:with:with:with:with:with: (in category 'primitives - long vs. int') ----- ffiTest8IntSum: c1 with: c2 with: c3 with: c4 with: c5 with: c6 with: c7 with: c8 "FFITestLibrary ffiTest8IntSum: 1 with: 2 with: 3 with: 4 with: 5 with: 6 with: 7 with: 8" + <cdecl: int32_t 'ffiTest8IntSum' (int32_t int32_t int32_t int32_t int32_t int32_t int32_t int32_t) module:'SqueakFFIPrims'> - <cdecl: int 'ffiTest8IntSum' (int int int int int int int int) module:'SqueakFFIPrims'> - self flag: #ffiLongVsInt. ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTest8LongLongSum:with:with:with:with:with:with:with: (in category 'atomic - int64_t') ----- + ffiTest8LongLongSum: long1 with: long2 with: long3 with: long4 with: long5 with: long6 with: long7 with: long8 + + <cdecl: longlong 'ffiTest8LongLongSum' (longlong longlong longlong longlong longlong longlong longlong longlong) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTest8LongSum:with:with:with:with:with:with:with: (in category 'primitives - long vs. int') ----- - ffiTest8LongSum: c1 with: c2 with: c3 with: c4 with: c5 with: c6 with: c7 with: c8 - "FFITestLibrary ffiTest8LongSum: 1 with: 2 with: 3 with: 4 with: 5 with: 6 with: 7 with: 8" - <cdecl: long 'ffiTest8IntSum' (long long long long long long long long) module:'SqueakFFIPrims'> - self flag: #ffiLongVsInt. - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTest8longSum:with:with:with:with:with:with:with: (in category 'atomic - c_long') ----- + ffiTest8longSum: c1 with: c2 with: c3 with: c4 with: c5 with: c6 with: c7 with: c8 + "FFITestLibrary ffiTest8LongSum: 1 with: 2 with: 3 with: 4 with: 5 with: 6 with: 7 with: 8" + <cdecl: c_long 'ffiTest8longSum' (c_long c_long c_long c_long c_long c_long c_long c_long) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestBool:with:with:with: (in category 'atomic - bool') ----- - ----- Method: FFITestLibrary class>>ffiTestBool:with:with:with: (in category 'primitives') ----- ffiTestBool: b1 with: b2 with: b3 with: b4 "FFITestLibrary ffiTestBool: true with: false with: true with: false" <cdecl: bool 'ffiTestInts' (bool bool bool bool) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestChar:with:with:with: (in category 'primitives') ----- - ffiTestChar: c1 with: c2 with: c3 with: c4 - "FFITestLibrary ffiTestChar: $A with: 65 with: 65.0 with: true" - <cdecl: char 'ffiTestChars' (char char char char) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestChars:with:with:with: (in category 'atomic - char') ----- + ffiTestChars: c1 with: c2 with: c3 with: c4 + "Answers c1 + c2 as Character. + FFITestLibrary ffiTestChars: $A with: 32 with: 0 with: 0 + " + <cdecl: char 'ffiTestChars' (char char char char) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestDoubles14:with:with:with:with:with:with:with:with:with:with:with:with:with: (in category 'atomic - floats') ----- + ffiTestDoubles14: f1 with: f2 with: f3 with: f4 with: f5 with: f6 with: f7 with: f8 with: f9 with: f10 with: f11 with: f12 with: f13 with: f14 + + <cdecl: double 'ffiTestDoubles14' (double double double double double double double double double double double double double double) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestDoubles9:d:d:d:d:d:d:d:d: (in category 'primitives') ----- - ffiTestDoubles9: f1 d: f2 d: f3 d: f4 d: f5 d: f6 d: f7 d: f8 d: f9 - "FFITestLibrary ffiTestDoubles9: 1.0 d: 2.0 d: 3.0 d: 4.0 d: 5.0 d: 6.0 d: 7.0 d: 8.0 d: 9.0" - <cdecl: double 'ffiTestDoubles9' (double double double double double double double double double) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestDoubles9:with:with:with:with:with:with:with:with: (in category 'atomic - floats') ----- + ffiTestDoubles9: f1 with: f2 with: f3 with: f4 with: f5 with: f6 with: f7 with: f8 with: f9 + "FFITestLibrary ffiTestDoubles9: 1.0 with: 2.0 with: 3.0 with: 4.0 with: 5.0 with: 6.0 with: 7.0 with: 8.0 with: 9.0" + <cdecl: double 'ffiTestDoubles9' (double double double double double double double double double) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestDoubles:with: (in category 'atomic - floats') ----- - ----- Method: FFITestLibrary class>>ffiTestDoubles:with: (in category 'primitives') ----- ffiTestDoubles: f1 with: f2 "FFITestLibrary ffiTestDoubles: $A with: 65.0" <cdecl: double 'ffiTestDoubles' (double double) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestFloats13:with:with:with:with:with:with:with:with:with:with:with:with: (in category 'atomic - floats') ----- + ffiTestFloats13: f1 with: f2 with: f3 with: f4 with: f5 with: f6 with: f7 with: f8 with: f9 with: f10 with: f11 with: f12 with: f13 + + <cdecl: float 'ffiTestFloats13' (float float float float float float float float float float float float float) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestFloats14:with:with:with:with:with:with:with:with:with:with:with:with:with: (in category 'atomic - floats') ----- + ffiTestFloats14: f1 with: f2 with: f3 with: f4 with: f5 with: f6 with: f7 with: f8 with: f9 with: f10 with: f11 with: f12 with: f13 with: f14 + + <cdecl: float 'ffiTestFloats14' (float float float float float float float float float float float float float float) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestFloats7:with:with:with:with:with:with: (in category 'atomic - floats') ----- + ffiTestFloats7: f1 with: f2 with: f3 with: f4 with: f5 with: f6 with: f7 + + <cdecl: float 'ffiTestFloats7' (float float float float float float float) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestFloats:with: (in category 'atomic - floats') ----- - ----- Method: FFITestLibrary class>>ffiTestFloats:with: (in category 'primitives') ----- ffiTestFloats: f1 with: f2 "FFITestLibrary ffiTestFloats: $A with: 65.0" <cdecl: float 'ffiTestFloats' (float float) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestInitSUfd:udSi2: (in category 'primitives') ----- - ffiTestInitSUfd: ufd udSi2: udSi2 - "FFITestLibrary FFITestInitSUfd: ... udSi2: .." - <cdecl: FFITestSUfdUdSi2 'ffiTestInitSUfdUdSi2' (FFITestUfd FFITestUdSi2) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestInitSUfd:ufi: (in category 'primitives') ----- - ffiTestInitSUfd: ufd ufi: ufi - "FFITestLibrary ffiTestInitSUfd: ... ufi: .." - <cdecl: FFITestSUfdUfi 'ffiTestInitSUfdUfi' (FFITestUfd FFITestUfi) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInitSUfdUdSi2:with: (in category 'structure - init') ----- + ffiTestInitSUfdUdSi2: ufd with: udSi2 + "FFITestLibrary ffiTestInitSUfdUdSi2: ... with: .." + <cdecl: FFITestSUfdUdSi2 'ffiTestInitSUfdUdSi2' (FFITestUfd FFITestUdSi2) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInitSUfdUfi:with: (in category 'structure - init') ----- + ffiTestInitSUfdUfi: ufd with: ufi + "FFITestLibrary ffiTestInitSUfdUfi: ... with: .." + <cdecl: FFITestSUfdUfi 'ffiTestInitSUfdUfi' (FFITestUfd FFITestUfi) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestInitUdSi2WithDouble: (in category 'primitives') ----- - ffiTestInitUdSi2WithDouble: d - "FFITestLibrary ffiTestInitUdSi2WithDouble: 1.0" - <cdecl: FFITestUdSi2 'ffiTestInitUdSi2_d' (double) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestInitUdSi2WithInt:int: (in category 'primitives') ----- - ffiTestInitUdSi2WithInt: i1 int: i2 - "FFITestLibrary ffiTestInitUdSi2WithInt: 1 int: 2" - <cdecl: FFITestUdSi2 'ffiTestInitUdSi2_ii' (long long) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInitUdSi2_d: (in category 'structure - init') ----- + ffiTestInitUdSi2_d: d + "FFITestLibrary ffiTestInitUdSi2_d: 1.0" + <cdecl: FFITestUdSi2 'ffiTestInitUdSi2_d' (double) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInitUdSi2_ii:with: (in category 'structure - init') ----- + ffiTestInitUdSi2_ii: i1 with: i2 + "FFITestLibrary ffiTestInitUdSi2_ii: 1 with: 2" + <cdecl: FFITestUdSi2 'ffiTestInitUdSi2_ii' (int32_t int32_t) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestInitUfdWithDouble: (in category 'primitives') ----- - ffiTestInitUfdWithDouble: d - "FFITestLibrary ffiTestInitUfdWithDouble: 1.0" - <cdecl: FFITestUfd 'ffiTestInitUfd_d' (double) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestInitUfdWithFloat: (in category 'primitives') ----- - ffiTestInitUfdWithFloat: f - "FFITestLibrary ffiTestInitUfdWithFloat: 1.0" - <cdecl: FFITestUfd 'ffiTestInitUfd_f' (float) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInitUfd_d: (in category 'structure - init') ----- + ffiTestInitUfd_d: d + "FFITestLibrary ffiTestInitUfd_d: 1.0" + <cdecl: FFITestUfd 'ffiTestInitUfd_d' (double) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInitUfd_f: (in category 'structure - init') ----- + ffiTestInitUfd_f: f + "FFITestLibrary ffiTestInitUfd_f: 1.0" + <cdecl: FFITestUfd 'ffiTestInitUfd_f' (float) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestInitUfiWithFloat: (in category 'primitives') ----- - ffiTestInitUfiWithFloat: f - "FFITestLibrary ffiTestInitUfiWithFloat: 1.0" - <cdecl: FFITestUfi 'ffiTestInitUfi_f' (float) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestInitUfiWithInt: (in category 'primitives') ----- - ffiTestInitUfiWithInt: i - "FFITestLibrary ffiTestInitUfiWithInt: 2" - <cdecl: FFITestUfi 'ffiTestInitUfi_i' (long) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInitUfi_f: (in category 'structure - init') ----- + ffiTestInitUfi_f: f + "FFITestLibrary ffiTestInitUfi_f: 1.0" + <cdecl: FFITestUfi 'ffiTestInitUfi_f' (float) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInitUfi_i: (in category 'structure - init') ----- + ffiTestInitUfi_i: i + "FFITestLibrary ffiTestInitUfi_i: 2" + <cdecl: FFITestUfi 'ffiTestInitUfi_i' (long) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInt4IntAliasSum:with:with:with: (in category 'type alias') ----- + ffiTestInt4IntAliasSum: c1 with: c2 with: c3 with: c4 + "FFITestLibrary ffiTest4IntSum: 1 with: 2 with: 3 with: 4" + <cdecl: int 'ffiTest4IntSum' (FFITestIntAlias FFITestIntAlias FFITestIntAlias FFITestIntAlias) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestInt:with:with:with: (in category 'primitives - long vs. int') ----- - ffiTestInt: c1 with: c2 with: c3 with: c4 - "FFITestLibrary ffiTestInt: $A with: 65 with: 65.0 with: true" - <cdecl: int 'ffiTestInts' (int int int int) module:'SqueakFFIPrims'> - self flag: #ffiLongVsInt. - ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestIntAlias4IntAliasSum:with:with:with: (in category 'type alias') ----- - ----- Method: FFITestLibrary class>>ffiTestIntAlias4IntAliasSum:with:with:with: (in category 'primitives - type alias') ----- ffiTestIntAlias4IntAliasSum: c1 with: c2 with: c3 with: c4 "FFITestLibrary ffiTest4IntSum: 1 with: 2 with: 3 with: 4" + <cdecl: FFITestIntAlias 'ffiTest4IntSum' (FFITestIntAlias FFITestIntAlias FFITestIntAlias FFITestIntAlias) module:'SqueakFFIPrims'> - <cdecl: int 'ffiTest4IntSum' (FFITestIntAlias FFITestIntAlias FFITestIntAlias FFITestIntAlias) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestIntAlias4IntSum:with:with:with: (in category 'type alias') ----- - ----- Method: FFITestLibrary class>>ffiTestIntAlias4IntSum:with:with:with: (in category 'primitives - type alias') ----- ffiTestIntAlias4IntSum: c1 with: c2 with: c3 with: c4 "FFITestLibrary ffiTest4IntSum: 1 with: 2 with: 3 with: 4" <cdecl: FFITestIntAlias 'ffiTest4IntSum' (int int int int) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInts8:with:with:with:with:with:with:with: (in category 'atomic - int32_t') ----- + ffiTestInts8: c1 with: c2 with: c3 with: c4 with: c5 with: c6 with: c7 with: c8 + "Always answers 42." + <cdecl: int32_t 'ffiTestInts8' (int32_t int32_t int32_t int32_t int32_t int32_t int32_t int32_t) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestInts:with:with:with: (in category 'atomic - int32_t') ----- + ffiTestInts: c1 with: c2 with: c3 with: c4 + "Adds c1 + c2" + <cdecl: int32_t 'ffiTestInts' (int32_t int32_t int32_t int32_t) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestLong:with:with:with: (in category 'primitives - long vs. int') ----- - ffiTestLong: c1 with: c2 with: c3 with: c4 - "FFITestLibrary ffiTestLong: $A with: 65 with: 65.0 with: true" - <cdecl: long 'ffiTestInts' (long long long long) module:'SqueakFFIPrims'> - self flag: #ffiLongVsInt. - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestLongLong8:with:with:with:with:with:with:with:with:with: (in category 'atomic - int64_t') ----- + ffiTestLongLong8: char1 with: char2 with: char3 with: char4 with: char5 with: char6 with: char7 with: char8 with: long1 with: long2 + + <cdecl: longlong 'ffiTestLongLong8' (char char char char char char char char longlong longlong) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestLongLong8a1:with:with:with:with:with:with:with:with:with:with: (in category 'atomic - int64_t') ----- + ffiTestLongLong8a1: char1 with: char2 with: char3 with: char4 with: char5 with: char6 with: char7 with: char8 with: char9 with: long1 with: long2 + + <cdecl: longlong 'ffiTestLongLong8a1' (char char char char char char char char char longlong longlong) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestLongLong8a2:with:with:with:with:with:with:with:with:with:with:with: (in category 'atomic - int64_t') ----- + ffiTestLongLong8a2: char1 with: char2 with: char3 with: char4 with: char5 with: char6 with: char7 with: char8 with: char9 with: char10 with: long1 with: long2 + + <cdecl: longlong 'ffiTestLongLong8a2' (char char char char char char char char char char longlong longlong) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestLongLong:with: (in category 'atomic - int64_t') ----- - ----- Method: FFITestLibrary class>>ffiTestLongLong:with: (in category 'primitives') ----- ffiTestLongLong: long1 with: long2 "FFITestLibrary ffiTestLongLong: 3 with: 4" <cdecl: longlong 'ffiTestLongLong' (longlong longlong) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestLongLongA1:with:with: (in category 'primitives') ----- - ffiTestLongLongA1: byte with: long1 with: long2 - "FFITestLibrary ffiTestLongLongA1: 3 with: 4 with: 5" - <cdecl: longlong 'ffiTestLongLonga1' (char longlong longlong) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestLongLongA3:with:with: (in category 'primitives') ----- - ffiTestLongLongA3: byte1 with: long1 with: byte2 - "FFITestLibrary ffiTestLongLongA3: 3 with: 4 with: 5" - <cdecl: longlong 'ffiTestLongLonga3' (char longlong char) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestLongLonga1:with:with: (in category 'atomic - int64_t') ----- + ffiTestLongLonga1: byte with: long1 with: long2 + "FFITestLibrary ffiTestLongLongA1: 3 with: 4 with: 5" + <cdecl: longlong 'ffiTestLongLonga1' (char longlong longlong) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestLongLonga2:with:with:with: (in category 'atomic - int64_t') ----- + ffiTestLongLonga2: byte1 with: byte2 with: long1 with: long2 + + <cdecl: longlong 'ffiTestLongLonga2' (char char longlong longlong) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestLongLonga3:with:with: (in category 'atomic - int64_t') ----- + ffiTestLongLonga3: byte1 with: long1 with: byte2 + "FFITestLibrary ffiTestLongLonga3: 3 with: 4 with: 5" + <cdecl: longlong 'ffiTestLongLonga3' (char longlong char) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestLongLongs8:with:with:with:with:with:with:with: (in category 'atomic - int64_t') ----- + ffiTestLongLongs8: long1 with: long2 with: long3 with: long4 with: long5 with: long6 with: long7 with: long8 + "Always answers 42." + <cdecl: longlong 'ffiTestLongLongs8' (longlong longlong longlong longlong longlong longlong longlong longlong) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestMixedDoublesAndLongs:with:with:with:with:with:with:with:with:with:with:with:with:with:with: (in category 'atomic') ----- + ffiTestMixedDoublesAndLongs: arg1 with: arg2 with: arg3 with: arg4 with: arg5 with: arg6 with: arg7 with: arg8 with: arg9 with: arg10 with: arg11 with: arg12 with: arg13 with: arg14 with: arg15 "with: arg16 with: arg17 with: arg18 with: arg19 with: arg20" + + <cdecl: double 'ffiTestMixedDoublesAndLongs' (double c_long double c_long double c_long double c_long double c_long double c_long double c_long double c_long double c_long double c_long) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestMixedDoublesIntAndStruct:d:d:d:d:d:d:d:d:i:s: (in category 'primitives') ----- - ffiTestMixedDoublesIntAndStruct: f1 d: f2 d: f3 d: f4 d: f5 d: f6 d: f7 d: f8 d: f9 i: i1 s: s1 - "FFITestLibrary ffiTestMixedDoublesIntAndStruct: 1.0 d: 2.0 d: 3.0 d: 4.0 d: 5.0 d: 6.0 d: 7.0 d: 8.0 d: 9.0 i: 42 - s: (FFITestPoint4 new x: 3; y: 4; z: 5; w:6)" - <cdecl: double 'ffiTestMixedDoublesIntAndStruct' (double double double double double double double double double long FFITestPoint4) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestMixedDoublesIntAndStruct:with:with:with:with:with:with:with:with:with:with: (in category 'structure') ----- + ffiTestMixedDoublesIntAndStruct: f1 with: f2 with: f3 with: f4 with: f5 with: f6 with: f7 with: f8 with: f9 with: i1 with: s1 + " + FFITestLibrary ffiTestMixedDoublesIntAndStruct: 1.0 + with: 2.0 with: 3.0 with: 4.0 with: 5.0 + with: 6.0 with: 7.0 with: 8.0 with: 9.0 with: 42 + with: (FFITestPoint4 new x: 3; y: 4; z: 5; w:6) + " + <cdecl: double 'ffiTestMixedDoublesIntAndStruct' (double double double double double double double double double long FFITestPoint4) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestMixedFloatsAndDouble:with:with:with: (in category 'atomic') ----- - ----- Method: FFITestLibrary class>>ffiTestMixedFloatsAndDouble:with:with:with: (in category 'primitives') ----- ffiTestMixedFloatsAndDouble: f1 with: d1 with: f2 with: f3 "FFITestLibrary ffiTestMixedFloatsAndDouble: 1.2 with: 3.4 with: 5.6 with: 7.8" <cdecl: double 'ffiTestMixedFloatsAndDouble' (float double float float) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestMixedIntAndStruct2:with: (in category 'structure') ----- - ----- Method: FFITestLibrary class>>ffiTestMixedIntAndStruct2:with: (in category 'primitives') ----- ffiTestMixedIntAndStruct2: i with: pt4 "FFITestLibrary ffiTestMixedIntAndStruct2: 2 with: (FFITestPoint4 new x: 3; y: 4; z: 5; w:6)" + <cdecl: int32_t 'ffiTestMixedIntAndStruct2' (int32_t FFITestPoint4) module:'SqueakFFIPrims'> - <cdecl: long 'ffiTestMixedIntAndStruct2' (long FFITestPoint4) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestMixedIntAndStruct3:with: (in category 'structure') ----- - ----- Method: FFITestLibrary class>>ffiTestMixedIntAndStruct3:with: (in category 'primitives') ----- ffiTestMixedIntAndStruct3: i with: anFFISmallStruct1 "FFITestLibrary ffiTestMixedIntAndStruct3: 2 with: (FFISmallStruct1 new x: 3; y: 4)" + <cdecl: int32_t 'ffiTestMixedIntAndStruct3' (int32_t FFISmallStruct1) module:'SqueakFFIPrims'> - <cdecl: long 'ffiTestMixedIntAndStruct3' (long FFISmallStruct1) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestMixedIntAndStruct:with:with: (in category 'structure') ----- - ----- Method: FFITestLibrary class>>ffiTestMixedIntAndStruct:with:with: (in category 'primitives') ----- ffiTestMixedIntAndStruct: i with: pt1 with: pt2 "FFITestLibrary ffiTestMixedIntAndStruct: 2 with: (FFITestPoint2 new x: 3; y: 4) with: (FFITestPoint2 new x: 5; y: 6)" + <cdecl: int32_t 'ffiTestMixedIntAndStruct' (int32_t FFITestPoint2 FFITestPoint2) module:'SqueakFFIPrims'> - <cdecl: long 'ffiTestMixedIntAndStruct' (long FFITestPoint2 FFITestPoint2) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestPoint2:with: (in category 'primitives') ----- - ffiTestPoint2: pt1 with: pt2 - <cdecl: FFITestPoint2 'ffiTestStruct64' (FFITestPoint2 FFITestPoint2) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestPoint4:with: (in category 'primitives') ----- - ffiTestPoint4: pt1 with: pt2 - <cdecl: FFITestPoint4 'ffiTestStructBig' (FFITestPoint4 FFITestPoint4) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestPointers:with: (in category 'structure - points') ----- - ----- Method: FFITestLibrary class>>ffiTestPointers:with: (in category 'primitives') ----- ffiTestPointers: pt1 with: pt2 + "Allocates the result. Needs to be free'd after calling." <cdecl: FFITestPoint4* 'ffiTestPointers' (FFITestPoint4* FFITestPoint4*) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSSdi5 (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSSdi5 (in category 'primitives') ----- ffiTestReturnSSdi5 "FFITestLibrary ffiTestReturnSSdi5" <cdecl: FFITestSSdi5 'ffiTestReturnSSdi5' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSd2 (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSd2 (in category 'primitives') ----- ffiTestReturnSd2 "FFITestLibrary ffiTestReturnSd2" <cdecl: FFITestSd2 'ffiTestReturnSd2' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSdi (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSdi (in category 'primitives') ----- ffiTestReturnSdi "FFITestLibrary ffiTestReturnSdi" <cdecl: FFITestSdi 'ffiTestReturnSdi' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSf2 (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSf2 (in category 'primitives') ----- ffiTestReturnSf2 "FFITestLibrary ffiTestReturnSf2" <cdecl: FFITestSf2 'ffiTestReturnSf2' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSf2d (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSf2d (in category 'primitives') ----- ffiTestReturnSf2d "FFITestLibrary ffiTestReturnSf2d" <cdecl: FFITestSf2d 'ffiTestReturnSf2d' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSf4 (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSf4 (in category 'primitives') ----- ffiTestReturnSf4 "FFITestLibrary ffiTestReturnSf4" <cdecl: FFITestSf4 'ffiTestReturnSf4' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSfd (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSfd (in category 'primitives') ----- ffiTestReturnSfd "FFITestLibrary ffiTestReturnSfd" <cdecl: FFITestSfd 'ffiTestReturnSfd' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSfdf (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSfdf (in category 'primitives') ----- ffiTestReturnSfdf "FFITestLibrary ffiTestReturnSfdf" <cdecl: FFITestSfdf 'ffiTestReturnSfdf' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSfi (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSfi (in category 'primitives') ----- ffiTestReturnSfi "FFITestLibrary ffiTestReturnSfi" <cdecl: FFITestSfi 'ffiTestReturnSfi' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSi2 (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSi2 (in category 'primitives') ----- ffiTestReturnSi2 "FFITestLibrary ffiTestReturnSi2" <cdecl: FFITestSi2 'ffiTestReturnSi2' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSl2 (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSl2 (in category 'primitives') ----- ffiTestReturnSl2 "FFITestLibrary ffiTestReturnSl2" <cdecl: FFITestSl2 'ffiTestReturnSl2' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSs2 (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSs2 (in category 'primitives') ----- ffiTestReturnSs2 "FFITestLibrary ffiTestReturnSs2" <cdecl: FFITestSs2 'ffiTestReturnSs2' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSs2i (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSs2i (in category 'primitives') ----- ffiTestReturnSs2i "FFITestLibrary ffiTestReturnSs2i" <cdecl: FFITestSs2i 'ffiTestReturnSs2i' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSs4 (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSs4 (in category 'primitives') ----- ffiTestReturnSs4 "FFITestLibrary ffiTestReturnSs4" <cdecl: FFITestSs4 'ffiTestReturnSs4' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSsSsf (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSsSsf (in category 'primitives') ----- ffiTestReturnSsSsf "FFITestLibrary ffiTestReturnSsSsf" <cdecl: FFITestSsSsf 'ffiTestReturnSsSsf' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSsSsi (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSsSsi (in category 'primitives') ----- ffiTestReturnSsSsi "FFITestLibrary ffiTestReturnSsSsi" <cdecl: FFITestSsSsi 'ffiTestReturnSsSsi' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSsf (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSsf (in category 'primitives') ----- ffiTestReturnSsf "FFITestLibrary ffiTestReturnSsf" <cdecl: FFITestSsf 'ffiTestReturnSsf' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSsi (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSsi (in category 'primitives') ----- ffiTestReturnSsi "FFITestLibrary ffiTestReturnSsi" <cdecl: FFITestSsi 'ffiTestReturnSsi' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSsis (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSsis (in category 'primitives') ----- ffiTestReturnSsis "FFITestLibrary ffiTestReturnSsis" <cdecl: FFITestSsis 'ffiTestReturnSsis' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSslf (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSslf (in category 'primitives') ----- ffiTestReturnSslf "FFITestLibrary ffiTestReturnSslf" <cdecl: FFITestSslf 'ffiTestReturnSslf' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestReturnSsls (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestReturnSsls (in category 'primitives') ----- ffiTestReturnSsls "FFITestLibrary ffiTestReturnSsls" <cdecl: FFITestSsls 'ffiTestReturnSsls' () module:'SqueakFFIPrims'> ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestShort:with:with:with: (in category 'primitives') ----- - ffiTestShort: c1 with: c2 with: c3 with: c4 - "FFITestLibrary ffiTestShort: $A with: 65 with: 65.0 with:1" - <cdecl: short 'ffiTestShorts' (short short short short) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestShorts:with:with:with: (in category 'atomic - int16_t') ----- + ffiTestShorts: c1 with: c2 with: c3 with: c4 + "Answers c1 + c2. + FFITestLibrary ffiTestShorts: 1 with: 2 with: 3 with: 4" + <cdecl: short 'ffiTestShorts' (short short short short) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestSmallStructReturn (in category 'structure - return') ----- - ----- Method: FFITestLibrary class>>ffiTestSmallStructReturn (in category 'primitives') ----- ffiTestSmallStructReturn "FFITestLibrary ffiTestSmallStructReturn" <cdecl: FFISmallStruct1 'ffiTestSmallStructReturn' (void) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestStruct64:with: (in category 'structure - points') ----- + ffiTestStruct64: pt1 with: pt2 + "pt1 + pt2" + <cdecl: FFITestPoint2 'ffiTestStruct64' (FFITestPoint2 FFITestPoint2) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestStructBig:with: (in category 'structure - points') ----- + ffiTestStructBig: pt1 with: pt2 + "pt1 + pt2" + <cdecl: FFITestPoint4 'ffiTestStructBig' (FFITestPoint4 FFITestPoint4) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestStructBigger:with: (in category 'structure - points') ----- + ffiTestStructBigger: pt1 with: pt2 + "Copies the values of pt1 to x, y, z, w and pt2 to r, s, t, u in the resulting struct." + <cdecl: FFITestBiggerStruct 'ffiTestStructBigger' (FFITestPoint4 FFITestPoint4) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumOfDoubleFromSUfdUdsi2: (in category 'primitives') ----- - ffiTestSumOfDoubleFromSUfdUdsi2: sUfdUfi - "FFITestLibrary ffiTestSumOfFloatFromSUfdUdSi2: (FFITestLibrary ...)" - <cdecl: double 'ffiTestSumSUfdUdSi2_d' (FFITestSUfdUdSi2) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumOfFloatFromSUfdUfi: (in category 'primitives') ----- - ffiTestSumOfFloatFromSUfdUfi: sUfdUfi - "FFITestLibrary ffiTestSumOfFloatFromSUfdUfi: (FFITestLibrary ...)" - <cdecl: double 'ffiTestSumSUfdUfi_f' (FFITestSUfdUfi) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumSSdi5: (in category 'structure - sums') ----- + ffiTestSumSSdi5: structSdi5 + " + FFITestLibrary ffiTestSumSSdi5: FFITestLibrary ffiTestReturnSSdi5 + " + <cdecl: double 'ffiTestSumSSdi5' (FFITestSSdi5) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumSUfdUdSi2_d: (in category 'structure - sums') ----- + ffiTestSumSUfdUdSi2_d: sUfdUfi + " + FFITestLibrary ffiTestSumOfFloatFromSUfdUdSi2: (FFITestLibrary ...) + " + <cdecl: double 'ffiTestSumSUfdUdSi2_d' (FFITestSUfdUdSi2) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumSUfdUfi_f: (in category 'structure - sums') ----- + ffiTestSumSUfdUfi_f: sUfdUfi + " + FFITestLibrary ffiTestSumSUfdUfi_f: (FFITestLibrary ...) + " + <cdecl: double 'ffiTestSumSUfdUfi_f' (FFITestSUfdUfi) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestSumSdi: (in category 'structure - sums') ----- - ----- Method: FFITestLibrary class>>ffiTestSumSdi: (in category 'primitives') ----- ffiTestSumSdi: sdi + " + FFITestLibrary ffiTestSumSdi: FFITestLibrary ffiTestReturnSdi + " - "FFITestLibrary ffiTestSumSdi: FFITestLibrary ffiTestReturnSdi" <cdecl: double 'ffiTestSumSdi' (FFITestSdi) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumSdi:sdi: (in category 'primitives') ----- - ffiTestSumSdi: sdi1 sdi: sdi2 - "FFITestLibrary ffiTestSumSdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi" - <cdecl: double 'ffiTestSumSdi_2' (FFITestSdi FFITestSdi) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumSdi:sdi:sdi:sdi: (in category 'primitives') ----- - ffiTestSumSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4 - "FFITestLibrary ffiTestSumSdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi" - <cdecl: double 'ffiTestSumSdi_4' (FFITestSdi FFITestSdi FFITestSdi FFITestSdi) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumSdi_2:with: (in category 'structure - sums') ----- + ffiTestSumSdi_2: sdi1 with: sdi2 + " + FFITestLibrary + ffiTestSumSdi_2: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + " + <cdecl: double 'ffiTestSumSdi_2' (FFITestSdi FFITestSdi) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumSdi_4:with:with:with: (in category 'structure - sums') ----- + ffiTestSumSdi_4: sdi1 with: sdi2 with: sdi3 with: sdi4 + " + FFITestLibrary + ffiTestSumSdi_4: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + " + <cdecl: double 'ffiTestSumSdi_4' (FFITestSdi FFITestSdi FFITestSdi FFITestSdi) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestSumSfd: (in category 'structure - sums') ----- - ----- Method: FFITestLibrary class>>ffiTestSumSfd: (in category 'primitives') ----- ffiTestSumSfd: sfd + " + FFITestLibrary ffiTestSumSfd: FFITestLibrary ffiTestReturnSfd + " - "FFITestLibrary ffiTestSumSfd: FFITestLibrary ffiTestReturnSfd" <cdecl: double 'ffiTestSumSfd' (FFITestSfd) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumSfd:sfd: (in category 'primitives') ----- - ffiTestSumSfd: sfd1 sfd: sfd2 - "FFITestLibrary ffiTestSumSfd: FFITestLibrary ffiTestReturnSfd sfd: FFITestLibrary ffiTestReturnSfd" - <cdecl: double 'ffiTestSumSfd_2' (FFITestSfd FFITestSfd) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumSfd:sfd:sfd:sfd: (in category 'primitives') ----- - ffiTestSumSfd: sfd1 sfd: sfd2 sfd: sfd3 sfd: sfd4 - "FFITestLibrary ffiTestSumSfd: FFITestLibrary ffiTestReturnSfd sfd: FFITestLibrary ffiTestReturnSfd sfd: FFITestLibrary ffiTestReturnSfd sfd: FFITestLibrary ffiTestReturnSfd" - <cdecl: double 'ffiTestSumSfd_4' (FFITestSfd FFITestSfd FFITestSfd FFITestSfd) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumSfd_2:with: (in category 'structure - sums') ----- + ffiTestSumSfd_2: sfd1 with: sfd2 + " + FFITestLibrary + ffiTestSumSfd_2: FFITestLibrary ffiTestReturnSfd + with: FFITestLibrary ffiTestReturnSfd + " + <cdecl: double 'ffiTestSumSfd_2' (FFITestSfd FFITestSfd) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumSfd_4:with:with:with: (in category 'structure - sums') ----- + ffiTestSumSfd_4: sfd1 with: sfd2 with: sfd3 with: sfd4 + " + FFITestLibrary + ffiTestSumSfd_4: FFITestLibrary ffiTestReturnSfd + with: FFITestLibrary ffiTestReturnSfd + with: FFITestLibrary ffiTestReturnSfd + with: FFITestLibrary ffiTestReturnSfd + " + <cdecl: double 'ffiTestSumSfd_4' (FFITestSfd FFITestSfd FFITestSfd FFITestSfd) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestSumSslf: (in category 'structure - sums') ----- - ----- Method: FFITestLibrary class>>ffiTestSumSslf: (in category 'primitives') ----- ffiTestSumSslf: sslf + " + FFITestLibrary ffiTestSumSslf: FFITestLibrary ffiTestReturnSslf + " - "FFITestLibrary ffiTestSumSslf: FFITestLibrary ffiTestReturnSslf" <cdecl: double 'ffiTestSumSslf' (FFITestSslf) module:'SqueakFFIPrims'> ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumSslf:sslf: (in category 'primitives') ----- - ffiTestSumSslf: sslf1 sslf: sslf2 - "FFITestLibrary ffiTestSumSslf: FFITestLibrary ffiTestReturnSslf sslf: FFITestLibrary ffiTestReturnSslf" - <cdecl: double 'ffiTestSumSslf_2' (FFITestSslf FFITestSslf) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumSslf:sslf:sslf:sslf: (in category 'primitives') ----- - ffiTestSumSslf: sslf1 sslf: sslf2 sslf: sslf3 sslf: sslf4 - "FFITestLibrary ffiTestSumSslf: FFITestLibrary ffiTestReturnSslf sslf: FFITestLibrary ffiTestReturnSslf sslf: FFITestLibrary ffiTestReturnSslf sslf: FFITestLibrary ffiTestReturnSslf" - <cdecl: double 'ffiTestSumSslf_4' (FFITestSslf FFITestSslf FFITestSslf FFITestSslf) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumSslf_2:with: (in category 'structure - sums') ----- + ffiTestSumSslf_2: sslf1 with: sslf2 + " + FFITestLibrary + ffiTestSumSslf_2: FFITestLibrary ffiTestReturnSslf + with: FFITestLibrary ffiTestReturnSslf + " + <cdecl: double 'ffiTestSumSslf_2' (FFITestSslf FFITestSslf) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumSslf_4:with:with:with: (in category 'structure - sums') ----- + ffiTestSumSslf_4: sslf1 with: sslf2 with: sslf3 with: sslf4 + " + FFITestLibrary + ffiTestSumSslf_4: FFITestLibrary ffiTestReturnSslf + with: FFITestLibrary ffiTestReturnSslf + with: FFITestLibrary ffiTestReturnSslf + with: FFITestLibrary ffiTestReturnSslf + " + <cdecl: double 'ffiTestSumSslf_4' (FFITestSslf FFITestSslf FFITestSslf FFITestSslf) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumStructSdi5: (in category 'primitives') ----- - ffiTestSumStructSdi5: structSdi5 - "FFITestLibrary ffiTestSumStructSdi5: FFITestLibrary ffiTestReturnSSdi5" - <cdecl: double 'ffiTestSumSSdi5' (FFITestSSdi5) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumd:i:withSdi:sdi:sdi:sdi: (in category 'primitives') ----- - ffiTestSumd: aDouble i: anInt withSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4 - "FFITestLibrary ffiTestSumd: 4.0 i: 3 withSdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi" - <cdecl: double 'ffiTestSumdiWithSdi_4' (double long FFITestSdi FFITestSdi FFITestSdi FFITestSdi) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumd:withSdi:sdi:sdi:sdi: (in category 'primitives') ----- - ffiTestSumd: aDouble withSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4 - "FFITestLibrary ffiTestSumd: 4.0 withSdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi" - <cdecl: double 'ffiTestSumdWithSdi_4' (double FFITestSdi FFITestSdi FFITestSdi FFITestSdi) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumdWithSdi_4:with:with:with:with: (in category 'structure - sums') ----- + ffiTestSumdWithSdi_4: aDouble with: sdi1 with: sdi2 with: sdi3 with: sdi4 + " + FFITestLibrary + ffiTestSumdWithSdi_4: 4.0 + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + " + <cdecl: double 'ffiTestSumdWithSdi_4' (double FFITestSdi FFITestSdi FFITestSdi FFITestSdi) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumdiWithSdi_4:with:with:with:with:with: (in category 'structure - sums') ----- + ffiTestSumdiWithSdi_4: aDouble with: anInt with: sdi1 with: sdi2 with: sdi3 with: sdi4 + " + FFITestLibrary + ffiTestSumdiWithSdi_4: 4.0 + with: 3 + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + " + <cdecl: double 'ffiTestSumdiWithSdi_4' (double long FFITestSdi FFITestSdi FFITestSdi FFITestSdi) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumf:withSfd:sfd:sfd:sfd: (in category 'primitives') ----- - ffiTestSumf: aFloat withSfd: sfd1 sfd: sfd2 sfd: sfd3 sfd: sfd4 - "FFITestLibrary ffiTestSumf: 0.5 withSfd: FFITestLibrary ffiTestReturnSfd sfd: FFITestLibrary ffiTestReturnSfd sfd: FFITestLibrary ffiTestReturnSfd sfd: FFITestLibrary ffiTestReturnSfd" - <cdecl: double 'ffiTestSumfWithSfd_4' (float FFITestSfd FFITestSfd FFITestSfd FFITestSfd) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumfWithSfd_4:with:with:with:with: (in category 'structure - sums') ----- + ffiTestSumfWithSfd_4: aFloat with: sfd1 with: sfd2 with: sfd3 with: sfd4 + " + FFITestLibrary + ffiTestSumf: 0.5 + with: FFITestLibrary ffiTestReturnSfd + with: FFITestLibrary ffiTestReturnSfd + with: FFITestLibrary ffiTestReturnSfd + with: FFITestLibrary ffiTestReturnSfd + " + <cdecl: double 'ffiTestSumfWithSfd_4' (float FFITestSfd FFITestSfd FFITestSfd FFITestSfd) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestSumi:withSdi:sdi:sdi:sdi: (in category 'primitives') ----- - ffiTestSumi: anInt withSdi: sdi1 sdi: sdi2 sdi: sdi3 sdi: sdi4 - "FFITestLibrary ffiTestSumi: 3 withSdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi sdi: FFITestLibrary ffiTestReturnSdi" - <cdecl: double 'ffiTestSumiWithSdi_4' (long FFITestSdi FFITestSdi FFITestSdi FFITestSdi) module:'SqueakFFIPrims'> - ^self externalCallFailed! Item was added: + ----- Method: FFITestLibrary class>>ffiTestSumiWithSdi_4:with:with:with:with: (in category 'structure - sums') ----- + ffiTestSumiWithSdi_4: anInt with: sdi1 with: sdi2 with: sdi3 with: sdi4 + " + FFITestLibrary + ffiTestSumiWithSdi_4: 3 + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + with: FFITestLibrary ffiTestReturnSdi + " + <cdecl: double 'ffiTestSumiWithSdi_4' (int32_t FFITestSdi FFITestSdi FFITestSdi FFITestSdi) module:'SqueakFFIPrims'> + ^self externalCallFailed! Item was changed: + ----- Method: FFITestLibrary class>>ffiTestUint:with:with:with: (in category 'atomic - uint32_t') ----- - ----- Method: FFITestLibrary class>>ffiTestUint:with:with:with: (in category 'primitives - long vs. int') ----- ffiTestUint: c1 with: c2 with: c3 with: c4 + "Answers c1 + c2. Repurpose ffiTestInts to check uint32_t range." + <cdecl: int32_t 'ffiTestInts' (uint32_t uint32_t uint32_t uint32_t) module:'SqueakFFIPrims'> - "FFITestLibrary ffiTestUint: 3103854339 with: 3103854339 with: 3103854339 with: 3103854339" - <cdecl: int 'ffiTestInts' (uint uint uint uint) module:'SqueakFFIPrims'> - self flag: #ffiLongVsInt. ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary class>>ffiTestUlong:with:with:with: (in category 'primitives - long vs. int') ----- - ffiTestUlong: c1 with: c2 with: c3 with: c4 - "FFITestLibrary ffiTestUlong: 3103854339 with: 3103854339 with: 3103854339 with: 3103854339" - <cdecl: long 'ffiTestInts' (ulong ulong ulong ulong) module:'SqueakFFIPrims'> - self flag: #ffiLongVsInt. - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary>>ffiPrintString: (in category 'primitives') ----- - ffiPrintString: aString - "FFITestLibrary new ffiPrintString: 'Hello'" - <cdecl: char* 'ffiPrintString' (char *)> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary>>ffiTestChar:with:with:with: (in category 'primitives') ----- - ffiTestChar: c1 with: c2 with: c3 with: c4 - "FFITestLibrary new ffiTestChar: $A with: 65 with: 65.0 with: true" - <cdecl: char 'ffiTestChars' (char char char char)> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary>>ffiTestDoubles:with: (in category 'primitives') ----- - ffiTestDoubles: f1 with: f2 - "FFITestLibrary new ffiTestDoubles: $A with: 65.0" - <cdecl: double 'ffiTestDoubles' (double double)> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary>>ffiTestFloats:with: (in category 'primitives') ----- - ffiTestFloats: f1 with: f2 - "FFITestLibrary new ffiTestFloats: $A with: 65.0" - <cdecl: float 'ffiTestFloats' (float float)> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary>>ffiTestInt:with:with:with: (in category 'primitives') ----- - ffiTestInt: c1 with: c2 with: c3 with: c4 - "FFITestLibrary new ffiTestInt: $A with: 65 with: 65.0 with: $A" - <cdecl: long 'ffiTestInts' (long long long long)> - ^self externalCallFailed! Item was removed: - ----- Method: FFITestLibrary>>ffiTestShort:with:with:with: (in category 'primitives') ----- - ffiTestShort: c1 with: c2 with: c3 with: c4 - "FFITestLibrary new ffiTestShort: $A with: 65 with: 65.0 with: $A" - <cdecl: short 'ffiTestShorts' (short short short short)> - ^self externalCallFailed! Item was changed: ----- Method: FFITestMisalignedCompoundStruct class>>fields (in category 'field definition') ----- fields "FFITestMisalignedCompoundStruct defineFields" ^#( + (s1 'int16_t') "short" - (s1 #short) (s2 'FFITestMisalignedStruct') )! Item was changed: ----- Method: FFITestMisalignedStruct class>>fields (in category 'field definition') ----- fields "FFITestMisalignedStruct defineFields" ^#( + (s1 'int16_t') "short" + (i1 'int32_t') - (s1 #short) - (i1 #long) )! Item was changed: ----- Method: FFITestPoint2 class>>fields (in category 'field definition') ----- fields "FFITestPoint2 defineFields" ^#( + (x 'int32_t') + (y 'int32_t') - (x 'long') - (y 'long') )! Item was added: + ----- Method: FFITestPoint2>>asPoint (in category 'converting') ----- + asPoint + + ^ self x @ self y! Item was added: + ----- Method: FFITestPoint2>>setX:setY: (in category 'initialization') ----- + setX: xValue setY: yValue. + + self x: xValue. + self y: yValue.! Item was changed: ----- Method: FFITestPoint4 class>>fields (in category 'field definition') ----- fields "FFITestPoint4 defineFields" ^#( + (x 'int32_t') + (y 'int32_t') + (z 'int32_t') + (w 'int32_t') - (x 'long') - (y 'long') - (z 'long') - (w 'long') )! Item was changed: ----- Method: FFITestSdi class>>fields (in category 'field definition') ----- fields "FFITestSdi defineFields" ^#( (d1 'double') + (i2 'int32_t') - (i2 'long') )! Item was changed: ----- Method: FFITestSfi class>>fields (in category 'field definition') ----- fields "FFITestSfi defineFields" ^#( (f1 'float') + (i2 'int32_t') - (i2 'long') )! Item was changed: ----- Method: FFITestSi2 class>>fields (in category 'field definition') ----- fields "FFITestSi2 defineFields" ^#( + (i1 'int32_t') + (i2 'int32_t') - (i1 'long') - (i2 'long') )! Item was changed: ----- Method: FFITestSl2 class>>fields (in category 'field definition') ----- fields "FFITestSl2 defineFields" ^#( + (l1 'int64_t') "longlong" + (l2 'int64_t') "longlong" - (l1 'longlong') - (l2 'longlong') )! Item was changed: ----- Method: FFITestSs2 class>>fields (in category 'field definition') ----- fields "FFITestSs2 defineFields" ^#( + (s1 'int16_t') "short" + (s2 'int16_t') "short" - (s1 'short') - (s2 'short') )! Item was changed: ----- Method: FFITestSs2i class>>fields (in category 'field definition') ----- fields "FFITestSs2i defineFields" ^#( + (s1 'int16_t') "short" + (s2 'int16_t') "short" + (i3 'int32_t') - (s1 'short') - (s2 'short') - (i3 'long') )! Item was changed: ----- Method: FFITestSs4 class>>fields (in category 'field definition') ----- fields "FFITestSs4 defineFields" ^#( + (s1 'int16_t') "short" + (s2 'int16_t') "short" + (s3 'int16_t') "short" + (s4 'int16_t') "short" - (s1 'short') - (s2 'short') - (s3 'short') - (s4 'short') )! Item was changed: ----- Method: FFITestSsSsf class>>fields (in category 'field definition') ----- fields "FFITestSsSsf defineFields" ^#( + (s1 'int16_t') "short" - (s1 'short') (ssf2 'FFITestSsf') )! Item was changed: ----- Method: FFITestSsSsi class>>fields (in category 'field definition') ----- fields "FFITestSsSsi defineFields" ^#( + (s1 'int16_t') "short" + (ssi2 FFITestSsi) - (s1 'short') - (ssi2 'FFITestSsi') )! Item was changed: ----- Method: FFITestSsf class>>fields (in category 'field definition') ----- fields "FFITestSsf defineFields" ^#( + (s1 'int16_t') "short" - (s1 'short') (f2 'float') )! Item was changed: ----- Method: FFITestSsi class>>fields (in category 'field definition') ----- fields "FFITestSsi defineFields" ^#( + (s1 'int16_t') "short" + (i2 'int32_t') - (s1 'short') - (i2 'long') )! Item was changed: ----- Method: FFITestSsis class>>fields (in category 'field definition') ----- fields "FFITestSsis defineFields" ^#( + (s1 'int16_t') "short" + (i2 'int32_t') + (s3 'int16_t') "short" - (s1 'short') - (i2 'long') - (s3 'short') )! Item was changed: ----- Method: FFITestSslf class>>fields (in category 'field definition') ----- fields "FFITestSslf defineFields" ^#( + (s1 'int16_t') "short" + (l2 'int64_t') "longlong" - (s1 'short') - (l2 'longlong') (f3 'float') )! Item was changed: ----- Method: FFITestSsls class>>fields (in category 'field definition') ----- fields "FFITestSsls defineFields" ^#( + (s1 'int16_t') "short" + (l2 'int64_t') "longlong" + (s3 'int16_t') "short" - (s1 'short') - (l2 'longlong') - (s3 'short') )! Item was changed: ----- Method: FFITestUfi class>>fields (in category 'field definition') ----- fields "FFITestUfi defineFields" ^#( (f1 'float') + (i1 'int32_t') - (i1 'long') )! Item was changed: ----- Method: FFITypeNameTests>>testAtomicChar (in category 'tests') ----- testAtomicChar self flag: #ffiLongVsInt; + assert: (self argTypesAt: #ffiTestChars:with:with:with:) - assert: (self argTypesAt: #ffiTestChar:with:with:with:) equals: (Array new: 5 withAll: ExternalType char).! Item was changed: ----- Method: FFITypeNameTests>>testAtomicInt (in category 'tests') ----- testAtomicInt self flag: #ffiLongVsInt; + assert: (self argTypesAt: #ffiTestInts:with:with:with:) - assert: (self argTypesAt: #ffiTestInt:with:with:with:) equals: (Array new: 5 withAll: ExternalType int).! Item was changed: ----- Method: FFITypeNameTests>>testAtomicLong (in category 'tests') ----- testAtomicLong self flag: #ffiLongVsInt; + assert: (self argTypesAt: #ffiTestInts:with:with:with:) - assert: (self argTypesAt: #ffiTestLong:with:with:with:) equals: (Array new: 5 withAll: ExternalType long).! Item was changed: ----- Method: FFITypeNameTests>>testAtomicUlong (in category 'tests') ----- testAtomicUlong self flag: #ffiLongVsInt; + assert: (self argTypesAt: #ffiTestUint:with:with:with:) allButFirst - assert: (self argTypesAt: #ffiTestUlong:with:with:with:) allButFirst equals: (Array new: 4 withAll: ExternalType ulong).! Item was changed: ----- Method: FFITypeNameTests>>testStruct (in category 'tests') ----- testStruct self + assert: (self argTypesAt: #ffiTestStruct64:with:) - assert: (self argTypesAt: #ffiTestPoint2:with:) equals: (Array new: 3 withAll: FFITestPoint2 externalType).! |
Free forum by Nabble | Edit this page |