Version 1.03.0
-
- Posts: 8586
- Joined: May 28, 2005 3:28
- Contact:
Version 1.03.0
Thank you DKL you are my hero :-)
Do you have a air conditioner ? it's too warm here.
Joshy
Do you have a air conditioner ? it's too warm here.
Joshy
Re: Version 1.03.0
I agree with D.J.Peters, thank you DKL :)
Re: Version 1.03.0
Hi ALL!
dkl! Thank you for the new version!
Now the problems:
This type of warning appears:
output:
FbTemp.bas(3) warning 37(1): Ambigious sizeof(), referring to type alias INITCOMMONCONTROLSEX, instead of procedure INITCOMMONCONTROLSEX
output:
FbTemp.bas(63) warning 37(1): Ambigious sizeof(), referring to type alias PRINTDLG, instead of procedure PRINTDLG
FbTemp.bas(113) warning 37(1): Ambigious sizeof(), referring to type alias PAGESETUPDLG, instead of procedure PAGESETUPDLG
dkl! Thank you for the new version!
Now the problems:
This type of warning appears:
Code: Select all
...
? sizeof(INITCOMMONCONTROLSEX)
....
FbTemp.bas(3) warning 37(1): Ambigious sizeof(), referring to type alias INITCOMMONCONTROLSEX, instead of procedure INITCOMMONCONTROLSEX
Code: Select all
...
? SIZEOF(PrintDlg)
? SizeOf(PAGESETUPDLG)
...
FbTemp.bas(63) warning 37(1): Ambigious sizeof(), referring to type alias PRINTDLG, instead of procedure PRINTDLG
FbTemp.bas(113) warning 37(1): Ambigious sizeof(), referring to type alias PAGESETUPDLG, instead of procedure PAGESETUPDLG
Re: Version 1.03.0
I too thank you for this latest release.
Good effort during the heat wave here!
Good effort during the heat wave here!
Re: Version 1.03.0
@VANYA
Have you seen this '[added]' in the changelog:
http://www.freebasic.net/forum/viewtopi ... 09#p208609
(in topic: http://www.freebasic.net/forum/viewtopi ... =3&t=23624)
Have you seen this '[added]' in the changelog:
and the previous dkl's post:- len/sizeof/typeof will now warn if the given identifier is ambigious (i.e. if it could refer to both a type or a procedure/variable symbol), because currently the type will be preferred, which is typically unexpected, at least for len() on strings.
http://www.freebasic.net/forum/viewtopi ... 09#p208609
(in topic: http://www.freebasic.net/forum/viewtopi ... =3&t=23624)
-
- Posts: 2958
- Joined: Jun 02, 2015 16:24
Re: Version 1.03.0
Hi,
Thanks to developers for the work done.
Thanks to developers for the work done.
Re: Version 1.03.0
No, not seen.fxm wrote:@VANYA
Have you seen this '[added]' in the changelog:and the previous dkl's post:- len/sizeof/typeof will now warn if the given identifier is ambigious (i.e. if it could refer to both a type or a procedure/variable symbol), because currently the type will be preferred, which is typically unexpected, at least for len() on strings.
http://www.freebasic.net/forum/viewtopi ... 09#p208609
(in topic: http://www.freebasic.net/forum/viewtopi ... =3&t=23624)
I understand this behavior to my created types. But now WinApi types will always give such notice. And it's not very nice.
Re: Version 1.03.0
Well, in those cases (type + procedure) the warning shouldn't be shown, because sizeof() can't be used on procedures anyways. So these are false-positives, that should be easy to fix though.
Re: Version 1.03.0
The heat wave hasn't reached here yet.D.J.Peters wrote:Thank you DKL you are my hero :-)
Do you have a air conditioner ? it's too warm here.
Joshy
But, in the very slim chance that it might, I popped down to Lidl's today and plugged it in to Version 1.03.0 thanks to dkl.
Code: Select all
Dim as string zz = _
"C4278241280BM498,197M+24,2M+17,15M+12,47M+0,61M+-3,78"_
&"M+0,63M+3,77M+44,36M+43,13M+58,-3M+69,-3"_
&"M+25,7M+7,53M+2,9M+-509,-4M+18,-66M+24,-5"_
&"M+67,-5M+73,-22M+6,-77M+-1,-134M+-2,-96M+4,-38"_
&"M+20,-8"_
&"BM+6,205P4287401100,4278241280"_
&"BM+-37,149M+97,0"_
&"BM+-41,65"_
&"P4282598211,4278241280"
Dim as string zz2 = _
"C1BM501,250M500,250M+-49,-100"_
&"M+99,0M+-50,99M+100,-50M+-1,100M+-98,-51M+48,98"_
&"M+-98,3M+49,-100M+-98,49M+-3,-100M+102,50"_
&"BM+-10,-67"_
&"P4294904576,1"_
&"BM+-62,67P4294904576,1"_
&"BM+133,-3P4294904576,1"_
&"BM+-63,61P4294904576,1"
Dim as string zz3 = _
"C4294967295BM498,149M+1,50M+-2,47M+2,201"_
&"BM+152,-198"_
&""_
&"BM+49,1M+-200,1M+-201,-2"_
&"BM+4,-77M+36,-75"_
&"M+63,-46M+93,-4M+101,-1M+65,60M+33,94M+5,51"_
&"M+-8,58M+-36,63M+-78,64M+-77,11M+-112,-34M+-77,-50"_
&"M+-16,-91M+8,-100"_
&"BM+20,-37M+5,238"_
&"BM+31,-292M+2,315"_
&""_
&"BM+37,-339M+2,358"_
&"BM+31,-366M+3,379"_
&"BM+36,-379M+5,390"_
&""_
&"BM+52,-394M+6,395"_
&"BM+30,-392M+10,382"_
&"BM+30,-374M+3,352"_
&""_
&"BM+34,-320M+1,297"_
&"BM+44,-204M+-6,148"_
&"BM+-323,-243M+284,1"_
&""_
&"BM+-316,37M+0,0M+343,1"_
&"BM+-360,41M+379,9"_
&""_
&"BM+-386,27M+394,-1"_
&"BM+-396,45M+401,-2"_
&"BM+-400,52M+397,1"_
&""_
&"BM+-388,42M+357,16"_
&"BM+-321,31M+289,3"_
&"BM+-215,34M+175,0"_
&""
Screen 20,32
dim as integer a
do
a+=1
screenlock
cls
draw "Ta" &0
Draw zz
draw "Ta" &a
draw zz2
draw "Ta" &0
draw zz3
screenunlock
sleep 1,1
loop until len(inkey)
Sleep
I was running this on the GIT version 1.03.0 -- OK
When I run on the official version 1.03.0 it flashes red (paint overspill).
I wonder why?
i've had a look:
Doesn't flash when using 11/9/2014 libfbgfx.a, but flashes when using 1/7/2015 libfbgfx.a
Anyways, 1/7/2015 libfbgfx.a seems sound (I have tested some similar code).
So I have edited the above code.
-
- Site Admin
- Posts: 6323
- Joined: Jul 05, 2005 17:32
- Location: Manchester, Lancs
Re: Version 1.03.0
I did some work on Draw not long ago. I changed the way lines are drawn at arbitrary angles, so that they are drawn like normal Lines - a lot faster and potentially smoother.
I haven't run your code, but if it relies on pixel precision then it might just be that there are tiny gaps because lines end in slightly different places, rather than due to a new bug.
Oh, I also fixed the positioning of Paint commands - before, there was a good chance of them being a pixel out, particularly if you were using whole numbers. I can't remember if that was at the same time though..
I haven't run your code, but if it relies on pixel precision then it might just be that there are tiny gaps because lines end in slightly different places, rather than due to a new bug.
Oh, I also fixed the positioning of Paint commands - before, there was a good chance of them being a pixel out, particularly if you were using whole numbers. I can't remember if that was at the same time though..
Re: Version 1.03.0
Thanks counting_pine
I think it was due to a pixel out.
I use my own little thingy for drawing shapes, I drew some more and painted them, just being careful where the lines ended.
They were just fine.
Thank again.
I think it was due to a pixel out.
I use my own little thingy for drawing shapes, I drew some more and painted them, just being careful where the lines ended.
They were just fine.
Thank again.
-
- Site Admin
- Posts: 6323
- Joined: Jul 05, 2005 17:32
- Location: Manchester, Lancs
Re: Version 1.03.0
Regarding the sizeof(ambiguous_name) warnings, I think we need a way (if we don't already) of indicating that the type name is truly the desired choice.
There are some kludgy ways like prepending Const, or maybe typeof(*cast(ambiguous_name ptr,0)), but obviously they aren't ideal.
The simplest idea I can think of is to have a keyword parameter first, maybe Type for types or Var for expressions (if 'typeof((expr))' doesn't feel too much like a cheat).
So, for example, 'sizeof(type, T)'.
One catch, internally, is we'd just have to be careful to make sure it is really 'Type ,' and not something like 'Type<T>(...)'.
There are some kludgy ways like prepending Const, or maybe typeof(*cast(ambiguous_name ptr,0)), but obviously they aren't ideal.
The simplest idea I can think of is to have a keyword parameter first, maybe Type for types or Var for expressions (if 'typeof((expr))' doesn't feel too much like a cheat).
So, for example, 'sizeof(type, T)'.
One catch, internally, is we'd just have to be careful to make sure it is really 'Type ,' and not something like 'Type<T>(...)'.
-
- Posts: 862
- Joined: May 05, 2015 5:35
- Location: Germany
Re: Version 1.03.0
Great work!
Till now the new version works here with absolutely no problems!
Regards
grinddstone
Till now the new version works here with absolutely no problems!
Regards
grinddstone
Re: Version 1.03.0
Hi All
Great to see FB moving ahead, many thanks to the developers.
Using the Dos version my app compiled without problems.
Compiling the same app with Win32 shows that "load_font" is missing from "liballegro.dll.a"
liballeg.a is not included with the Dos version.
Replacing it with my older version solves the problem.
However my older version is about 62k larger.
Is this a simple oversight ? or have a lot of the functions been eliminated or do they cause clashes with other libraries ?
Regards
Great to see FB moving ahead, many thanks to the developers.
Using the Dos version my app compiled without problems.
Compiling the same app with Win32 shows that "load_font" is missing from "liballegro.dll.a"
liballeg.a is not included with the Dos version.
Replacing it with my older version solves the problem.
However my older version is about 62k larger.
Is this a simple oversight ? or have a lot of the functions been eliminated or do they cause clashes with other libraries ?
Regards
-
- Posts: 507
- Joined: Jan 13, 2009 19:23
Re: Version 1.03.0
Good work ,thank you for that too
once again a suggestion; FB supports the virtual classes since version 0.91 I believe
and always one dodges the declarations referencing virtual classes in the headers there.
Here is simple the first two files to extend Win/guiddef.bi and Win/Unknownbase.bi
the small made modifications are easy to include/understand.
These two headers wided, one can extend the other headers according to the needs, but the first two are necessary
guidef.bi
operator are quite usefull
Unknownbase.bi
once again a suggestion; FB supports the virtual classes since version 0.91 I believe
and always one dodges the declarations referencing virtual classes in the headers there.
Here is simple the first two files to extend Win/guiddef.bi and Win/Unknownbase.bi
the small made modifications are easy to include/understand.
These two headers wided, one can extend the other headers according to the needs, but the first two are necessary
guidef.bi
Code: Select all
'' FreeBASIC binding for mingw-w64-v4.0.1
#pragma once
#include once "_mingw.bi"
#define GUID_DEFINED
type _GUID
Data1 as ulong
Data2 as ushort
Data3 as ushort
Data4(0 to 7) as ubyte
end type
type GUID as _GUID
#Ifdef DEFINE_GUID
#undef DEFINE_GUID
#EndIf
#Define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN Name As Const GUID : Dim Name As Const GUID= ( l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } )
#Define DEFINE_OLEGUID(name, l, w1, w2) DEFINE_GUID (name, l, w1, w2, &hc0, 0, 0, 0, 0, 0, 0, &h46)
#define _GUIDDEF_H_
#define __LPGUID_DEFINED__
type LPGUID as GUID ptr
#define __LPCGUID_DEFINED__
type LPCGUID as const GUID ptr
#define __IID_DEFINED__
type IID as GUID
type LPIID as IID ptr
#define IID_NULL GUID_NULL
#define CLSID_DEFINED
type CLSID as GUID
type LPCLSID as CLSID ptr
#define CLSID_NULL GUID_NULL
type FMTID as GUID
type LPFMTID as FMTID ptr
#define FMTID_NULL GUID_NULL
#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)
#define _REFGUID_DEFINED
type REFGUID as const GUID const ptr
#define _REFIID_DEFINED
type REFIID as const IID const ptr
#define _REFCLSID_DEFINED
type REFCLSID as const IID const ptr
#define _REFFMTID_DEFINED
type REFFMTID as const IID const ptr
#define _SYS_GUID_OPERATORS_
#define InlineIsEqualGUID(rguid1, rguid2) (((((@(rguid1)->Data1)[0] = (@(rguid2)->Data1)[0]) andalso ((@(rguid1)->Data1)[1] = (@(rguid2)->Data1)[1])) andalso ((@(rguid1)->Data1)[2] = (@(rguid2)->Data1)[2])) andalso ((@(rguid1)->Data1)[3] = (@(rguid2)->Data1)[3]))
#define IsEqualGUID(rguid1, rguid2) (memcmp(rguid1, rguid2, sizeof(GUID)) = 0)
#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
Private Operator = OverLoad( ByRef guid1 As GUID , ByRef guid2 As GUID) As BOOL
return IsEqualGUID(@guid1,@guid2)
End Operator
Private Operator = OverLoad( ByVal guid1 As GUID ptr , ByRef guid2 As GUID) As BOOL
return IsEqualGUID(guid1,@guid2)
End Operator
Private Operator = OverLoad( ByRef guid1 As GUID , ByRef guid2 As GUID Ptr) As BOOL
return IsEqualGUID(@guid1,guid2)
End Operator
Private Operator <> OverLoad( ByRef guid1 As GUID , ByRef guid2 As GUID) As BOOL
return Not(IsEqualGUID(@guid1,@guid2))
End Operator
Private Operator <> OverLoad( ByVal guid1 As GUID ptr , ByRef guid2 As GUID) As BOOL
return Not(IsEqualGUID(guid1,@guid2))
End Operator
Private Operator <> OverLoad( ByRef guid1 As GUID , ByRef guid2 As GUID Ptr) As BOOL
return Not(IsEqualGUID(@guid1,guid2))
End Operator
#define _SYS_GUID_OPERATOR_EQ_
Unknownbase.bi
Code: Select all
'' FreeBASIC binding for mingw-w64-v4.0.1
#pragma once
extern "Windows"
#define __unknwnbase_h__
#define __IUnknown_FWD_DEFINED__
#define __AsyncIUnknown_FWD_DEFINED__
#define __IClassFactory_FWD_DEFINED__
#define __IUnknown_INTERFACE_DEFINED__
type IUnknown as IUnknown_
type LPUNKNOWN as IUnknown ptr
extern IID_IUnknown as const GUID
#Ifndef _FB_COM_VTBL_
type IUnknown_ extends object
Declare abstract Function QueryInterface( byval riid as const IID const ptr, byval ppvObject as any ptr ptr) as HRESULT
Declare abstract Function AddRef() as ULONG
Declare abstract Function Release() as ULONG
end Type
#Else
type IUnknownVtbl
QueryInterface as function(byval This as IUnknown ptr, byval riid as const IID const ptr, byval ppvObject as any ptr ptr) as HRESULT
AddRef as function(byval This as IUnknown ptr) as ULONG
Release as function(byval This as IUnknown ptr) as ULONG
end type
type IUnknown_
lpVtbl as IUnknownVtbl ptr
end type
#define IUnknown_QueryInterface(This, riid, ppvObject) (This)->lpVtbl->QueryInterface(This, riid, ppvObject)
#define IUnknown_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUnknown_Release(This) (This)->lpVtbl->Release(This)
#EndIf
declare function IUnknown_QueryInterface_Proxy(byval This as IUnknown ptr, byval riid as const IID const ptr, byval ppvObject as any ptr ptr) as HRESULT
declare sub IUnknown_QueryInterface_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
declare function IUnknown_AddRef_Proxy(byval This as IUnknown ptr) as ULONG
declare sub IUnknown_AddRef_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
declare function IUnknown_Release_Proxy(byval This as IUnknown ptr) as ULONG
declare sub IUnknown_Release_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
#define __AsyncIUnknown_INTERFACE_DEFINED__
extern IID_AsyncIUnknown as const GUID
type AsyncIUnknown as AsyncIUnknown_
#Ifndef _FB_COM_VTBL_
type AsyncIUnknown_ extends Iunknown
Declare abstract Function Begin_QueryInterface(ByVal riid as const IID const ptr) as HRESULT
Declare abstract Function Finish_QueryInterface(ByVal ppvObject as any ptr ptr) as HRESULT
Declare abstract Function Begin_AddRef() as HRESULT
Declare abstract Function Finish_AddRef() as ULONG
Declare abstract Function Begin_Release() as HRESULT
Declare abstract Function Finish_Release() as ULONG
End Type
#Else
type AsyncIUnknownVtbl
QueryInterface as function(byval This as AsyncIUnknown ptr, byval riid as const IID const ptr, byval ppvObject as any ptr ptr) as HRESULT
AddRef as function(byval This as AsyncIUnknown ptr) as ULONG
Release as function(byval This as AsyncIUnknown ptr) as ULONG
Begin_QueryInterface as function(byval This as AsyncIUnknown ptr, byval riid as const IID const ptr) as HRESULT
Finish_QueryInterface as function(byval This as AsyncIUnknown ptr, byval ppvObject as any ptr ptr) as HRESULT
Begin_AddRef as function(byval This as AsyncIUnknown ptr) as HRESULT
Finish_AddRef as function(byval This as AsyncIUnknown ptr) as ULONG
Begin_Release as function(byval This as AsyncIUnknown ptr) as HRESULT
Finish_Release as function(byval This as AsyncIUnknown ptr) as ULONG
end type
type AsyncIUnknown_
lpVtbl as AsyncIUnknownVtbl ptr
end type
#define AsyncIUnknown_QueryInterface(This, riid, ppvObject) (This)->lpVtbl->QueryInterface(This, riid, ppvObject)
#define AsyncIUnknown_AddRef(This) (This)->lpVtbl->AddRef(This)
#define AsyncIUnknown_Release(This) (This)->lpVtbl->Release(This)
#define AsyncIUnknown_Begin_QueryInterface(This, riid) (This)->lpVtbl->Begin_QueryInterface(This, riid)
#define AsyncIUnknown_Finish_QueryInterface(This, ppvObject) (This)->lpVtbl->Finish_QueryInterface(This, ppvObject)
#define AsyncIUnknown_Begin_AddRef(This) (This)->lpVtbl->Begin_AddRef(This)
#define AsyncIUnknown_Finish_AddRef(This) (This)->lpVtbl->Finish_AddRef(This)
#define AsyncIUnknown_Begin_Release(This) (This)->lpVtbl->Begin_Release(This)
#define AsyncIUnknown_Finish_Release(This) (This)->lpVtbl->Finish_Release(This)
#EndIf
declare function AsyncIUnknown_Begin_QueryInterface_Proxy(byval This as AsyncIUnknown ptr, byval riid as const IID const ptr) as HRESULT
declare sub AsyncIUnknown_Begin_QueryInterface_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
declare function AsyncIUnknown_Finish_QueryInterface_Proxy(byval This as AsyncIUnknown ptr, byval ppvObject as any ptr ptr) as HRESULT
declare sub AsyncIUnknown_Finish_QueryInterface_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
declare function AsyncIUnknown_Begin_AddRef_Proxy(byval This as AsyncIUnknown ptr) as HRESULT
declare sub AsyncIUnknown_Begin_AddRef_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
declare function AsyncIUnknown_Finish_AddRef_Proxy(byval This as AsyncIUnknown ptr) as ULONG
declare sub AsyncIUnknown_Finish_AddRef_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
declare function AsyncIUnknown_Begin_Release_Proxy(byval This as AsyncIUnknown ptr) as HRESULT
declare sub AsyncIUnknown_Begin_Release_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
declare function AsyncIUnknown_Finish_Release_Proxy(byval This as AsyncIUnknown ptr) as ULONG
declare sub AsyncIUnknown_Finish_Release_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
#define __IClassFactory_INTERFACE_DEFINED__
type IClassFactory as IClassFactory_
type LPCLASSFACTORY as IClassFactory ptr
extern IID_IClassFactory as const GUID
#Ifndef _FB_COM_VTBL_
type IClassFactory_ extends Iunknown
Declare abstract Function CreateInstance(ByVal pUnkOuter as IUnknown ptr, byval riid as const IID const ptr, byval ppvObject as any ptr ptr) as HRESULT
Declare abstract Function LockServer(ByVal fLock as WINBOOL) as HRESULT
end Type
#Else
type IClassFactoryVtbl
QueryInterface as function(byval This as IClassFactory ptr, byval riid as const IID const ptr, byval ppvObject as any ptr ptr) as HRESULT
AddRef as function(byval This as IClassFactory ptr) as ULONG
Release as function(byval This as IClassFactory ptr) as ULONG
CreateInstance as function(byval This as IClassFactory ptr, byval pUnkOuter as IUnknown ptr, byval riid as const IID const ptr, byval ppvObject as any ptr ptr) as HRESULT
LockServer as function(byval This as IClassFactory ptr, byval fLock as WINBOOL) as HRESULT
end type
type IClassFactory_
lpVtbl as IClassFactoryVtbl ptr
end type
#define IClassFactory_QueryInterface(This, riid, ppvObject) (This)->lpVtbl->QueryInterface(This, riid, ppvObject)
#define IClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IClassFactory_Release(This) (This)->lpVtbl->Release(This)
#define IClassFactory_CreateInstance(This, pUnkOuter, riid, ppvObject) (This)->lpVtbl->CreateInstance(This, pUnkOuter, riid, ppvObject)
#define IClassFactory_LockServer(This, fLock) (This)->lpVtbl->LockServer(This, fLock)
#EndIf
declare function IClassFactory_RemoteCreateInstance_Proxy(byval This as IClassFactory ptr, byval riid as const IID const ptr, byval ppvObject as IUnknown ptr ptr) as HRESULT
declare sub IClassFactory_RemoteCreateInstance_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
declare function IClassFactory_RemoteLockServer_Proxy(byval This as IClassFactory ptr, byval fLock as WINBOOL) as HRESULT
declare sub IClassFactory_RemoteLockServer_Stub(byval This as IRpcStubBuffer ptr, byval pRpcChannelBuffer as IRpcChannelBuffer ptr, byval pRpcMessage as PRPC_MESSAGE, byval pdwStubPhase as DWORD ptr)
declare function IClassFactory_CreateInstance_Proxy(byval This as IClassFactory ptr, byval pUnkOuter as IUnknown ptr, byval riid as const IID const ptr, byval ppvObject as any ptr ptr) as HRESULT
declare function IClassFactory_CreateInstance_Stub(byval This as IClassFactory ptr, byval riid as const IID const ptr, byval ppvObject as IUnknown ptr ptr) as HRESULT
declare function IClassFactory_LockServer_Proxy(byval This as IClassFactory ptr, byval fLock as WINBOOL) as HRESULT
declare function IClassFactory_LockServer_Stub(byval This as IClassFactory ptr, byval fLock as WINBOOL) as HRESULT
end extern