I really like your IDE KetiO, but one thing I'd like to see in a future version is support for COM, preferably with coinvoke syntax. The way I envision it is adding another trigger, coinvoke, and then depending on the type of the first parameter, auto-complete the interface and allow a listbox with possible functions, and then work with a list similar to the curent ApiCall one... At least, this is how I envision it. Ofcourse if it is too hard to get the type of the pInterface or one doesn't exist, autocomplete of the Interface isn't really necessary, but when you type the "Interface." it's nice to have a list of possible functions, and then a list of params ;)
What I'm asking for is just support for this, not a list of interfaces/functions/etc... because I know there are many... I can write my own and then post them and such, but atm the best I can do is just add the interface as a struct (autocomplete of function..), but no params alas. Anywhays, if you're too buysy atm, I understand :)
Posted on 2003-07-17 15:19:43 by FearHQ
Hi FearHQ

Sounds like a good idea. I guess most of the work fall on you to create the file needed.

KetilO
Posted on 2003-07-18 07:10:55 by KetilO
What's needed though is some sort of standard for the format of the files. Since it is your program - any ideas? I could give the files concerning DirectX 8.1 some work when I get the includes fixed up! Anywhays, it would be really sweet if at least the format/support was established so people could whip up their own COM files when needed.. I guess the coinvoke format (official MASM32 standard?) should be implemented where

coinvoke pInterface, Interface, Function, Args

is the format (but I guess you new that ;) )
Posted on 2003-07-18 15:00:44 by FearHQ
I have devised a system for the files. I still haven't finished creating all of them (50% done for DX8.1), but so far the com-related DX files look like this

Interface:ParentInterface
(tab)Method,Arg1,Arg2
(tab)Method,Arg1,Arg2,Arg3
(enter)

Does this seem right to you KetiO? I would need a little help creating a suitable plugin though... Still, I'll give it a shot
Posted on 2003-07-20 16:56:40 by FearHQ
Hi FearHQ

The file format looks OK.
As for the addin I'm not shure as most of the code to handle popup listbox and tooltip already exist in RadASM.

KetilO
Posted on 2003-07-21 02:17:06 by KetilO
Hey KetilO

I checked out the RadAsm.inc and the addin template and it seems there's no problem with the listbox and tooltip since I can have hLB and hTlt... However, I'd like to know if the listbox has a sort style or do I have to sort myself? And how am I supposed to know what the user typed? (trigger etc..) I'll give it a rest for today, but I'll get working on it tomorow
Posted on 2003-07-21 02:59:55 by FearHQ
Hi FearHQ

The listbox is not sorted.
You will have to hook into the edit mdichild's WM_NOTIFY. It will give you the info you need to get and analyse current line.

KetilO
Posted on 2003-07-21 06:22:26 by KetilO
coinvoke is not necessarily the standard. I use Japheth's convention:

Early Binding:

invoke vf( pInterface, Interface, method ), arg1, arg2, arg3

Late Binding:

invoke dm( pInterface, Interface, method ), RetType, RetVal, arg1, arg2, arg3


I agree COM should be included if it can, but it would be a challenge to find a universal "trigger". As well, you would need a dialog settings box to tell RadASM which typlib's are to be used for a project. The typeLibs should be registered in your registry, so this is not a big problem findings them. Radasm would then compile a list of interfaces, their methods, properties, and argument definitions.

You may however, be able to design a back door approach. Japheth has produced a very impressive COM tool called COMView. It will generate included for MASM from a type lib. You might be able, and more likely, to get this working by 'pre parsing' the include for its structures and its equates.....

Anywho, i would be happy to help you on this. Its a great idea!

:NaN:
Posted on 2003-07-21 23:33:54 by NaN
NaN: Thanks for pointing out the different conventions. Atm, I'm familiar with coinvoke and rather like it (alot actually)... But yes, support for different conventions could also be added. I didn't think of scanning the includes for the actual definitions, as they normally don't contain a list of parameter names, at least not with coinvoke (and names are very important!)

Atm, I have devised a simple solution: a single file with all the interface def's in the arbitrary format presented. However, now taht I think of it, it could be alot more efficient and customiseable if there was another folder called "Interfaces" in the Masm32 folder containing the names of the includes that have the interfaces we wish to auto-complete. As a matter of fact, I'm thinking of a revised format allowing a HIGHLY customiseable format.

TRIGGER=trigger
FORMAT=$P, $I, $M, $A
ARGS=$1, $2

and then the interface format. So coinvoke would look exactly like the above with TRIGGER=coinvoke and invoke vf
TRIGGER=invoke vf
FORMAT=($P, $I, $M), $A
ARGS=$1, $2

..Looks feasable. I need to do my research though! Adding header constants/structures in the same file looks like a possibility too. Research, research research! Well, first I'd like to see the simplest method work, then we see ;) Learn to crawl before you walk... I'd be honoured to have you help my project :) Do you have any IM client?
Posted on 2003-07-22 01:14:22 by FearHQ
How is this coming along?


Thanks,
_Shawn
Posted on 2003-08-08 16:22:58 by _Shawn
Update: currently I'm cramming like a mofo for a deferred cal exam, so I won't be doing much in the meantime. But I managed to come up with a theoretical parser and I will be using NaN's objects, will base myself on his linked list and my own bastardized string class suiting my needs ;) KetilO's also been extremely helpful with the info I need to get up and started. For the next 20 days though, I will not move an inch. And no, I haven't dropped/forgotten :)
Posted on 2003-08-09 04:31:49 by FearHQ
I forgot about this, sorry to come back to it late...

I think yo miss understood me. Alot of the usefull COM classes have typelibs for OLE use. (This is not Ernie' coinvoke definitions). Typelibs are easily accessed from the registry and when done, will provide your program with information on every interface, class, structure and enumeration in the component. This is how VB seems "smart" and can autocomplete for com interface calls. WHen you tell VB what typelibs your want, it builds a cash for autocomplete from the info it gathers from the typelib inteface.

Hope this helps... correct me if im talking apples to your oranges tho ;)
:NaN:
Posted on 2003-08-11 20:43:54 by NaN
NaN: I don't know much VB, but I have heard about typelibs... Although not all COM interfaces have them ;) I know there was someone else on the masm32 board working on the typelib aspect not so long ago. Although if you encounter any information that might be usefull to me, it will never hurt to relay it one way or another :)
Posted on 2003-08-11 21:49:03 by FearHQ