001    /*
002     * To change this template, choose Tools | Templates
003     * and open the template in the editor.
004     */
005    
006    package org.bridj.cpp.com;
007    
008    import org.bridj.FlagSet;
009    import org.bridj.IntValuedEnum;
010    import org.bridj.ValuedEnum;
011    import org.bridj.Pointer;
012    import org.bridj.StructObject;
013    import org.bridj.ann.Field;
014    import org.bridj.ann.Virtual;
015    import java.util.Collections;
016    import java.util.Iterator;
017    
018    /**
019     *
020     * @author Olivier
021     */
022    @IID("00020400-0000-0000-C000-000000000046")
023    public class IDispatch extends IUnknown {
024            public static class DISPPARAMS extends StructObject {
025                    @Field(0)
026                    public native Pointer<VARIANT> rgvarg();
027                    @Field(1)
028                    public native Pointer<Integer> rgdispidNamedArgs();
029                    @Field(2)
030                    public native int cArgs();
031            @Field(3)
032                    public native int cNamedArgs();
033            }
034            
035            
036            public static class EXCEPINFO extends StructObject {
037                    @Field(0)
038                    public native short wCode();
039                    @Field(1)
040                    public native short wReserved();
041                    @Field(2)
042                    public native Pointer<Character> bstrSource();
043                    @Field(3)
044                    public native Pointer<Character> bstrDescription();
045                    @Field(4)
046                    public native Pointer<Character> bstrHelpFile();
047                    @Field(5)
048                    public native int dwHelpContext();
049                    @Field(6)
050                    public native Pointer<?> pvReserved();
051                    @Field(7)
052                    public native Pointer<?> pfnDeferredFillIn();//HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);
053                    @Field(8)
054                    public native int scode();
055            }
056            @Virtual(0)
057            public native int GetTypeInfoCount(Pointer<Integer> pctinfo);
058    
059            @Virtual(1)
060            public native int GetTypeInfo(int iTInfo, int lcid, Pointer<Pointer<ITypeInfo>> ppTInfo);
061    
062            @Virtual(2) 
063            public native int GetIDsOfNames(
064                    Pointer riid,//REFIID riid,
065                    Pointer<Pointer<Character>> rgszNames,
066                    int cNames,
067                    int lcid, //LCID lcid,
068                    Pointer<Integer> rgDispId); //DISPID *rgDispId);
069    
070            @Virtual(3)
071            public native int Invoke(
072                    int dispIdMember,
073                    Pointer<Byte> riid,
074                    int lcid,
075                    short wFlags,
076                    Pointer<DISPPARAMS> pDispParams,
077                    Pointer<VARIANT> pVarResult,
078                    Pointer<EXCEPINFO> pExcepInfo,
079                    Pointer<Integer> puArgErr
080            );
081    }