ExternalLibraryFunction.st
changeset 24074 69ee642ca7dd
parent 24065 3e8a516887d8
child 24075 0bf758e73c5f
--- a/ExternalLibraryFunction.st	Sat Apr 13 17:58:21 2019 +0200
+++ b/ExternalLibraryFunction.st	Sat Apr 13 17:59:14 2019 +0200
@@ -1384,7 +1384,7 @@
 	    self primitiveFailed.
 	].
 
-	"/ and it must be a kind of ExternalStructure !!
+	"/ and it must be a kind of ExternalStructure !
 	(aReceiverOrNil isKindOf:ExternalStructure) ifFalse:[
 	    self primitiveFailed.
 	].
@@ -2149,7 +2149,27 @@
 			} else if (fieldTypeSymbol == @symbol(int)) {
 			    fieldTypes[fi] = TYPE_SINT;
 			} else {
-			    __FAIL__(@symbol(UnsupportedFieldType))
+			    if (__isArray(fieldTypeSymbol)) {
+				int numFields2 = __arraySize(fieldTypeSymbol);
+				int fi2;
+
+				for (fi2=0; fi2<numFields2; fi2++) {
+				    OBJ fieldTypeSymbol2 = __arrayVal(fieldTypeSymbol)[fi2];
+
+				    if (fieldTypeSymbol2 == @symbol(float)) {
+					fieldTypes[fi++] = TYPE_FLOAT;
+				    } else if (fieldTypeSymbol2 == @symbol(double)) {
+					fieldTypes[fi++] = TYPE_DOUBLE;
+				    } else if (fieldTypeSymbol == @symbol(int)) {
+					fieldTypes[fi++] = TYPE_SINT;
+				    } else {
+					__FAIL__(@symbol(UnsupportedFieldType2))
+				    }
+				}
+				fi--;
+			    } else {
+				__FAIL__(@symbol(UnsupportedFieldType))
+			    }
 			}
 		    }
 		    fieldTypes[fi] = NULL;
@@ -3074,8 +3094,8 @@
     "Created: / 01-08-2006 / 13:56:23 / cg"
     "Modified: / 15-05-2017 / 19:48:52 / mawalch"
     "Modified: / 01-08-2017 / 14:03:52 / cg"
-    "Modified: / 01-03-2019 / 15:40:14 / Claus Gittinger"
     "Modified: / 04-04-2019 / 14:10:32 / Stefan Vogel"
+    "Modified: / 13-04-2019 / 17:55:45 / Claus Gittinger"
 !
 
 tryAgainWithAsyncSafeArguments:argumentsOrNil forInstance:aReceiverOrNil