From eeebf6c7514768e65d3e8c6d32aa7b633dba5fc0 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Thu, 17 Sep 2009 14:01:41 -0500 Subject: [PATCH] fix loading issues in windows vocabs --- basis/windows/dinput/constants/constants.factor | 9 +++++++-- basis/windows/types/types.factor | 4 +++- basis/windows/winsock/winsock.factor | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/basis/windows/dinput/constants/constants.factor b/basis/windows/dinput/constants/constants.factor index b67b5fa08f..270c2fa3dd 100755 --- a/basis/windows/dinput/constants/constants.factor +++ b/basis/windows/dinput/constants/constants.factor @@ -2,7 +2,7 @@ USING: windows.dinput windows.kernel32 windows.ole32 windows.com windows.com.syntax alien alien.c-types alien.syntax kernel system namespaces combinators sequences fry math accessors macros words quotations libc continuations generalizations splitting locals assocs init -specialized-arrays memoize classes.struct ; +specialized-arrays memoize classes.struct strings arrays ; SPECIALIZED-ARRAY: DIOBJECTDATAFORMAT IN: windows.dinput.constants @@ -22,12 +22,17 @@ SYMBOLS: MEMO: c-type* ( name -- c-type ) c-type ; MEMO: heap-size* ( c-type -- n ) heap-size ; +GENERIC: array-base-type ( c-type -- c-type' ) +M: object array-base-type ; +M: string array-base-type "[" split1 drop ; +M: array array-base-type first ; + : (field-spec-of) ( field struct -- field-spec ) c-type* fields>> [ name>> = ] with find nip ; : (offsetof) ( field struct -- offset ) [ (field-spec-of) offset>> ] [ drop 0 ] if* ; : (sizeof) ( field struct -- size ) - [ (field-spec-of) type>> "[" split1 drop heap-size* ] [ drop 1 ] if* ; + [ (field-spec-of) type>> array-base-type heap-size* ] [ drop 1 ] if* ; : (flag) ( thing -- integer ) { diff --git a/basis/windows/types/types.factor b/basis/windows/types/types.factor index c882ba2e7f..544abb69a8 100755 --- a/basis/windows/types/types.factor +++ b/basis/windows/types/types.factor @@ -3,6 +3,7 @@ USING: alien alien.c-types alien.syntax namespaces kernel words sequences math math.bitwise math.vectors colors io.encodings.utf16n classes.struct accessors ; +FROM: alien.c-types => float short ; IN: windows.types TYPEDEF: char CHAR @@ -69,7 +70,8 @@ TYPEDEF: ulonglong ULARGE_INTEGER TYPEDEF: LARGE_INTEGER* PLARGE_INTEGER TYPEDEF: ULARGE_INTEGER* PULARGE_INTEGER -<< { "char*" utf16n } "wchar_t*" typedef >> +SYMBOL: wchar_t* +<< { char* utf16n } \ wchar_t* typedef >> TYPEDEF: wchar_t* LPCSTR TYPEDEF: wchar_t* LPWSTR diff --git a/basis/windows/winsock/winsock.factor b/basis/windows/winsock/winsock.factor index 87b8970b02..e29eb3e090 100755 --- a/basis/windows/winsock/winsock.factor +++ b/basis/windows/winsock/winsock.factor @@ -4,6 +4,7 @@ USING: alien alien.c-types alien.strings alien.syntax arrays byte-arrays kernel literals math sequences windows.types windows.kernel32 windows.errors math.bitwise io.encodings.utf16n classes.struct windows.com.syntax init ; +FROM: alien.c-types => short ; IN: windows.winsock TYPEDEF: void* SOCKET -- 2.34.1