Win32Handle.st
author Claus Gittinger <cg@exept.de>
Fri, 17 Dec 1999 12:35:57 +0100
changeset 5120 13143fbcbdf8
parent 4764 25777afc9f85
permissions -rw-r--r--
introduced __threadErrno (for native threads)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4764
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
OSFileHandle subclass:#Win32Handle
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
	instanceVariableNames:''
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
	classVariableNames:''
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	poolDictionaries:''
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	category:'OS-Windows'
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
!
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!Win32Handle primitiveDefinitions!
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
%{
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
/*
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
 * sigh - must undef those (from stc.h-definitions);
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
 * they are also defined in windows.h
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
 */
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
# undef INT
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
# undef Array
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
# undef Number
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
# undef Method
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
# undef Point
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
# undef Rectangle
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
# undef Block
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
# undef String
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
# undef Message
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
# undef Object
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
# undef Context
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
# undef Time
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
# undef Date
5120
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    28
# undef Set
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    29
# undef Signal
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    30
# undef Delay
4764
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
# include <windows.h>
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
/*
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 * sigh - must redef those as st/x defs;
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
 */
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
# ifdef __DEF_Array
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
#  define Array __DEF_Array
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
# endif
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
# ifdef __DEF_Number
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
#  define Number __DEF_Number
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
# endif
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
# ifdef __DEF_Method
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
#  define Method __DEF_Method
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
# endif
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
# ifdef __DEF_Point
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
#  define Point __DEF_Point
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
# endif
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
# ifdef __DEF_Block
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
#  define Block __DEF_Block
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
# endif
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
# ifdef __DEF_String
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
#  define String __DEF_String
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
# endif
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
# ifdef __DEF_Message
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
#  define Message __DEF_Message
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
# endif
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
# ifdef __DEF_Object
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
#  define Object __DEF_Object
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
# endif
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
# ifdef __DEF_Context
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
#  define Context __DEF_Context
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
# endif
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
# ifdef __DEF_Date
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
#  define Date __DEF_Date
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
# endif
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
# ifdef __DEF_Time
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
#  define Time __DEF_Time
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
# endif
5120
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    70
# ifdef __DEF_Set
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    71
#  define Set __DEF_Set
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    72
# endif
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    73
# ifdef __DEF_Signal
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    74
#  define Signal __DEF_Signal
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    75
# endif
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    76
# ifdef __DEF_Delay
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    77
#  define Delay __DEF_Delay
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    78
# endif
4764
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
# define INT int
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
%}
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
! !
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
!Win32Handle methodsFor:'finalization'!
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
disposed
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    "a file handle was garbage collected - close the underlying file"
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
%{
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    HANDLE h = (HANDLE)(__externalAddressVal(self));
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    if (h) {
5120
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    95
	__externalAddressVal(self) = (HANDLE)0;
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
    96
	CloseHandle(h);
4764
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    }
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
%}
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
! !
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
!Win32Handle methodsFor:'release'!
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
close
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    "close the handle"
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
%{
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    HANDLE h = (HANDLE)(__externalAddressVal(self));
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    if (h) {
5120
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
   112
	__externalAddressVal(self) = (HANDLE)0;
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
   113
	CloseHandle(h);
4764
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    }
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
%}.
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    Lobby unregister:self
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
! !
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
!Win32Handle class methodsFor:'documentation'!
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
version
5120
13143fbcbdf8 introduced __threadErrno (for native threads)
Claus Gittinger <cg@exept.de>
parents: 4764
diff changeset
   124
    ^ '$Header: /cvs/stx/stx/libbasic/Win32Handle.st,v 1.2 1999-12-17 11:35:56 cg Exp $'
4764
25777afc9f85 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
! !