1 #Copyright (c) 2008 Vincent Povirk
3 #Permission is hereby granted, free of charge, to any person
4 #obtaining a copy of this software and associated documentation
5 #files (the "Software"), to deal in the Software without
6 #restriction, including without limitation the rights to use,
7 #copy, modify, merge, publish, distribute, sublicense, and/or sell
8 #copies of the Software, and to permit persons to whom the
9 #Software is furnished to do so, subject to the following
12 #The above copyright notice and this permission notice shall be
13 #included in all copies or substantial portions of the Software.
15 #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 #EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17 #OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 #NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 #HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 #WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 #FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 #OTHER DEALINGS IN THE SOFTWARE.
24 from ctypes
import GetLastError
, WinError
26 class collapsed_attr(object):
27 __fields__
= ['attr', 'subattr']
29 def __init__(self
, attr
, subattr
):
31 self
.subattr
= subattr
33 def __get__(self
, instance
, owner
):
34 return getattr(getattr(instance
or owner
, self
.attr
), self
.subattr
)
36 def __set__(self
, instance
, value
):
37 setattr(getattr(instance
, self
.attr
), self
.subattr
, value
)
39 def __delete__(self
, instance
):
40 delattr(getattr(instance
, self
.attr
), self
.subattr
)
42 class WinLiteException(Exception):
46 "CheckError() - raise a WindowsError if GetLastError() returns a non-zero value"
52 if i
== 0 and GetLastError() != 0:
57 if i
!= 0 and GetLastError() != 0:
63 class ERRFLAGS(object):
64 __fields__
= ['flags']
66 def __init__(self
, module_dict
, prefix
):
68 for name
in module_dict
:
69 if name
.startswith(prefix
):
70 self
.flags
[name
] = module_dict
[name
]
72 def __call__(self
, i
):
75 for name
in self
.flags
:
76 if self
.flags
[name
] & i
:
78 e
= WinLiteException('|'.join(flags
))
83 def get_symbols(globals, module
, names
):
85 globals[name
] = getattr(module
, name
)