X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=specs%2Fstdapi.py;h=6aa4089f6d0984880f475bf57a87d75fc0d2cd5e;hb=43ac1bff7374a572d3bb0a8341ab3d167e3ac07d;hp=61e2b21b756e2f241f2d8a7b130e07f18fbce58c;hpb=2ef6d5bbcf98d92afb3c2c77608fba5d4297eaa0;p=apitrace diff --git a/specs/stdapi.py b/specs/stdapi.py index 61e2b21..6aa4089 100644 --- a/specs/stdapi.py +++ b/specs/stdapi.py @@ -350,27 +350,40 @@ class Interface(Type): yield method raise StopIteration + def iterBaseMethods(self): + if self.base is not None: + for iface, method in self.base.iterBaseMethods(): + yield iface, method + for method in self.methods: + yield self, method + raise StopIteration + class Method(Function): - def __init__(self, type, name, args): + def __init__(self, type, name, args, const=False): Function.__init__(self, type, name, args, call = '__stdcall') for index in range(len(self.args)): self.args[index].index = index + 1 + self.const = const + + def prototype(self, name=None): + s = Function.prototype(self, name) + if self.const: + s += ' const' + return s class String(Type): - def __init__(self, expr = "char *", length = None): + def __init__(self, expr = "char *", length = None, kind = 'String'): Type.__init__(self, expr) self.length = length + self.kind = kind def visit(self, visitor, *args, **kwargs): return visitor.visitString(self, *args, **kwargs) -# C string (i.e., zero terminated) -CString = String() - class Opaque(Type): '''Opaque pointer.''' @@ -708,7 +721,10 @@ ULongLong = Literal("unsigned long long", "UInt") Float = Literal("float", "Float") Double = Literal("double", "Double") SizeT = Literal("size_t", "UInt") -WString = Literal("wchar_t *", "WString") + +# C string (i.e., zero terminated) +CString = String() +WString = String("wchar_t *", kind="WString") Int8 = Literal("int8_t", "SInt") UInt8 = Literal("uint8_t", "UInt")