1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 // Basic.h : Declaration of the CBasic 20 21 #ifndef __BASIC_H_ 22 #define __BASIC_H_ 23 24 #include "resource.h" 25 #import "AxTestComponents.tlb" no_namespace no_implementation raw_interfaces_only named_guids 26 27 28 // CBasic 29 class ATL_NO_VTABLE CBasic : 30 public CComObjectRootEx<CComSingleThreadModel>, 31 public CComCoClass<CBasic, &CLSID_Basic>, 32 public IDispatchImpl<IBasic, &IID_IBasic, &LIBID_AXTESTCOMPONENTSLib> 33 { 34 public: 35 CBasic(); 36 ~CBasic(); 37 38 DECLARE_REGISTRY_RESOURCEID(IDR_BASIC) 39 40 DECLARE_PROTECT_FINAL_CONSTRUCT() 41 42 BEGIN_COM_MAP(CBasic) 43 COM_INTERFACE_ENTRY(IBasic) 44 COM_INTERFACE_ENTRY(IDispatch) 45 END_COM_MAP() 46 47 // IBasic 48 public: 49 STDMETHOD(outMore)(/*[out]*/long* val1, /*[out]*/long* val2); 50 STDMETHOD(inMulDimArrayByte2)(LPSAFEARRAY val); 51 STDMETHOD(inMulDimArrayByte)(LPSAFEARRAY val); 52 STDMETHOD(inMulDimArrayVariant2)(LPSAFEARRAY val); 53 STDMETHOD(inMulDimArrayLong2)(LPSAFEARRAY val); 54 STDMETHOD(inMulDimArrayVariant)(LPSAFEARRAY val); 55 STDMETHOD(inMulDimArrayLong)( LPSAFEARRAY val); 56 STDMETHOD(inoutSequenceObject)(LPSAFEARRAY* val); 57 STDMETHOD(inoutSequenceDouble)(LPSAFEARRAY * val); 58 STDMETHOD(inoutSequenceFloat)(LPSAFEARRAY * val); 59 STDMETHOD(inoutSequenceString)(LPSAFEARRAY* val); 60 STDMETHOD(inoutSequenceLong)(LPSAFEARRAY * val); 61 STDMETHOD(inoutSequenceShort)(LPSAFEARRAY * val); 62 STDMETHOD(inoutSequenceByte)(LPSAFEARRAY * val); 63 STDMETHOD(outSequenceObject)(/*[out]*/ LPSAFEARRAY* val); 64 STDMETHOD(outSequenceDouble)(/*[out]*/ LPSAFEARRAY* val); 65 STDMETHOD(outSequenceFloat)(/*[out]*/ LPSAFEARRAY* val); 66 STDMETHOD(outSequenceString)(/*[out]*/ LPSAFEARRAY* val); 67 STDMETHOD(outSequenceLong)(/*[out]*/ LPSAFEARRAY* val); 68 STDMETHOD(outSequenceShort)(/*[out]*/ LPSAFEARRAY* val); 69 STDMETHOD(outSequenceByte)(/*[out]*/ LPSAFEARRAY* val); 70 STDMETHOD(inSequenceObject)(LPSAFEARRAY ar); 71 STDMETHOD(inSequenceDouble)(LPSAFEARRAY ar); 72 STDMETHOD(inSequenceFloat)(LPSAFEARRAY ar); 73 STDMETHOD(inSequenceString)(LPSAFEARRAY ar); 74 STDMETHOD(inSequenceShort)(LPSAFEARRAY ar); 75 STDMETHOD(inSequenceByte)(LPSAFEARRAY ar); 76 STDMETHOD(inSequenceLong)(LPSAFEARRAY ar); 77 STDMETHOD(mixed1)( 78 /* [out][in] */ unsigned char *aChar, 79 /* [out][in] */ float *aFloat, 80 /* [out][in] */ VARIANT *aVar); 81 STDMETHOD(get_prpObject)(/*[out, retval]*/ IDispatch* *pVal); 82 STDMETHOD(put_prpObject)(/*[in]*/ IDispatch* newVal); 83 STDMETHOD(get_prpArray)(/*[out, retval]*/ LPSAFEARRAY *pVal); 84 STDMETHOD(put_prpArray)(/*[in]*/ LPSAFEARRAY newVal); 85 STDMETHOD(get_prpVariant)(/*[out, retval]*/ VARIANT *pVal); 86 STDMETHOD(put_prpVariant)(/*[in]*/ VARIANT newVal); 87 STDMETHOD(get_prpDouble)(/*[out, retval]*/ double *pVal); 88 STDMETHOD(put_prpDouble)(/*[in]*/ double newVal); 89 STDMETHOD(get_prpFloat)(/*[out, retval]*/ float *pVal); 90 STDMETHOD(put_prpFloat)(/*[in]*/ float newVal); 91 STDMETHOD(get_prpString)(/*[out, retval]*/ BSTR *pVal); 92 STDMETHOD(put_prpString)(/*[in]*/ BSTR newVal); 93 STDMETHOD(get_prpLong)(/*[out, retval]*/ long *pVal); 94 STDMETHOD(put_prpLong)(/*[in]*/ long newVal); 95 STDMETHOD(get_prpShort)(/*[out, retval]*/ short *pVal); 96 STDMETHOD(put_prpShort)(/*[in]*/ short newVal); 97 STDMETHOD(get_prpByte)(/*[out, retval]*/ unsigned char *pVal); 98 STDMETHOD(put_prpByte)(/*[in]*/ unsigned char newVal); 99 STDMETHOD(get_prpBool)(/*[out, retval]*/ VARIANT_BOOL *pVal); 100 STDMETHOD(put_prpBool)(/*[in]*/ VARIANT_BOOL newVal); 101 102 STDMETHOD(outObject)(/*[out]*/ IDispatch* *val); 103 STDMETHOD(outArray)(/*[out]*/ LPSAFEARRAY * val); 104 STDMETHOD(outVariant)(/*[out]*/ VARIANT* val); 105 STDMETHOD(outDouble)(/*[out]*/ double* val); 106 STDMETHOD(outFloat)(/*[out]*/ float* val); 107 STDMETHOD(outString)(/*[out]*/ BSTR* val); 108 STDMETHOD(outLong)(/*[out]*/ long* val); 109 STDMETHOD(outShort)(/*[out]*/ short* val); 110 STDMETHOD(outByte)(/*[out]*/ unsigned char* val); 111 STDMETHOD(outBool)(/*[out]*/ VARIANT_BOOL* val); 112 113 STDMETHOD(inoutObject)(/*[in,out]*/ IDispatch* *val); 114 STDMETHOD(inoutArray)(/*[in,out]*/ LPSAFEARRAY * val); 115 STDMETHOD(inoutVariant)(/*[in,out]*/ VARIANT * val); 116 STDMETHOD(inoutDouble)(/*[in,out]*/ double * val); 117 STDMETHOD(inoutFloat)(/*[in,out]*/ float * val); 118 STDMETHOD(inoutString)(/*[in, out]*/ BSTR* val); 119 STDMETHOD(inoutLong)(/*[in,out]*/ long * val); 120 STDMETHOD(inoutShort)(/*[in,out]*/ short* val); 121 STDMETHOD(inoutByte)(/*[in,out]*/ unsigned char* val); 122 STDMETHOD(inoutBool)(/*[in,out]*/ VARIANT_BOOL* val); 123 124 125 STDMETHOD(inObject)(/*[in]*/ IDispatch* val); 126 STDMETHOD(inArray)(/*[in]*/ LPSAFEARRAY val); 127 STDMETHOD(inVariant)(/*[in]*/ VARIANT val); 128 STDMETHOD(inDouble)(/*[in]*/ double val); 129 STDMETHOD(inFloat)(/*[in]*/ float val); 130 STDMETHOD(inString)(/*[in]*/ BSTR val); 131 STDMETHOD(inLong)(/*[in]*/ long val); 132 STDMETHOD(inShort)(/*[in]*/ short val); 133 STDMETHOD(inByte)(/*[in]*/ unsigned char val); 134 STDMETHOD(inBool)(/*[in]*/ VARIANT_BOOL val); 135 136 137 STDMETHOD(optional1)(/*[in]*/ long val1, /*[in, optional]*/ VARIANT* val2); 138 STDMETHOD(optional2)(/*[out]*/ long* val1,/*[out, optional]*/ VARIANT* val2); 139 STDMETHOD(optional3)(/*[in, optional]*/ VARIANT* val1,/*[in, optional]*/ VARIANT* val2); 140 STDMETHOD(optional4)(/*[in, out, optional]*/ VARIANT* val1,/*[in, out, optional]*/ VARIANT* val2); 141 STDMETHOD(optional5)(/*[out, optional]*/ VARIANT* val1,/*[out, optional]*/ VARIANT* val2); 142 143 144 STDMETHOD(defaultvalue1)(/*[in, defaultvalue(10)]*/ long val1, 145 /*[in, defaultvalue(3.14)]*/ double* val2, 146 /*[in, defaultvalue(100)]*/ VARIANT* val4); 147 148 STDMETHOD(defaultvalue2)(/*[in, out, defaultvalue(10)]*/ long* val1, 149 /*[in, out, defaultvalue(3.14)]*/ double* val2, 150 /*[in, out, defaultvalue(100)]*/ VARIANT* val4); 151 152 STDMETHOD(varargfunc1)(/*[in]*/ long val1,/*[in]*/ LPSAFEARRAY val2); 153 154 STDMETHOD(varargfunc2)(/*[out]*/ long* val1, /*[out]*/ SAFEARRAY ** val2); 155 156 157 // members for property implementations 158 unsigned char m_cPrpByte; 159 short m_nPrpShort; 160 long m_lPrpLong; 161 float m_fPrpFloat; 162 double m_dPrpDouble; 163 CComPtr<IDispatch> m_PrpObject; 164 CComPtr<IUnknown> m_prpUnknown; 165 166 CComBSTR m_bstrPrpString; 167 CComVariant m_PropVariant; 168 LPSAFEARRAY m_PrpArray; 169 protected: 170 VARIANT_BOOL m_bool; 171 unsigned char m_byte; 172 short m_short; 173 long m_long; 174 long m_long2; 175 float m_float; 176 double m_double; 177 CComVariant m_var1; 178 CComVariant m_var2; 179 CComVariant m_var3; 180 CComVariant m_var4; 181 CComBSTR m_bstr; 182 CY m_cy; 183 DATE m_date; 184 DECIMAL m_decimal; 185 SCODE m_scode; 186 SAFEARRAY * m_safearray; 187 CComPtr<IDispatch> m_obj; 188 CComPtr<IUnknown> m_unknown; 189 190 SAFEARRAY * m_arByte; 191 SAFEARRAY * m_arShort; 192 SAFEARRAY * m_arLong; 193 SAFEARRAY * m_arString; 194 SAFEARRAY * m_arVariant; 195 SAFEARRAY * m_arFloat; 196 SAFEARRAY * m_arDouble; 197 SAFEARRAY * m_arObject; 198 SAFEARRAY * m_arByteDim2; 199 200 static void printArray(LPSAFEARRAY val, BSTR message, VARTYPE type); 201 static void printMulArray(LPSAFEARRAY val, VARTYPE type); 202 203 204 public: 205 STDMETHOD(inSequenceByteDim2)(LPSAFEARRAY val); 206 STDMETHOD(inCurrency)(CY val); 207 STDMETHOD(outCurrency)(CY* val); 208 STDMETHOD(inoutCurrency)(CY* val); 209 STDMETHOD(inDate)(DATE val); 210 STDMETHOD(outDate)(DATE* val); 211 STDMETHOD(inoutDate)(DATE* val); 212 STDMETHOD(get_prpCurrency)(CY* pVal); 213 STDMETHOD(put_prpCurrency)(CY newVal); 214 STDMETHOD(get_prpDate)(DATE* pVal); 215 STDMETHOD(put_prpDate)(DATE newVal); 216 STDMETHOD(inDecimal)(DECIMAL val); 217 STDMETHOD(outDecimal)(DECIMAL* val); 218 STDMETHOD(inoutDecimal)(DECIMAL* val); 219 STDMETHOD(get_prpDecimal)(DECIMAL* pVal); 220 STDMETHOD(put_prpDecimal)(DECIMAL newVal); 221 STDMETHOD(inSCode)(SCODE val); 222 STDMETHOD(outScode)(SCODE* val); 223 STDMETHOD(inoutSCode)(SCODE* val); 224 STDMETHOD(get_prpSCode)(SCODE* pVal); 225 STDMETHOD(put_prpSCode)(SCODE newVal); 226 STDMETHOD(inrefLong)(LONG* val); 227 STDMETHOD(inrefVariant)(VARIANT* val); 228 STDMETHOD(inrefDecimal)(DECIMAL* val); 229 STDMETHOD(get_prpRefLong)(long* pVal); 230 STDMETHOD(putref_prpRefLong)(long* newVal); 231 STDMETHOD(get_prprefVariant)(VARIANT* pVal); 232 STDMETHOD(putref_prprefVariant)(VARIANT* newVal); 233 STDMETHOD(get_prprefDecimal)(DECIMAL* pVal); 234 STDMETHOD(putref_prprefDecimal)(DECIMAL* newVal); 235 STDMETHOD(optional6)(VARIANT* val1, VARIANT* val2, VARIANT* val3, VARIANT* val4); 236 STDMETHOD(optional7)(VARIANT* val1, VARIANT* val2, VARIANT* val3, VARIANT* val4); 237 238 STDMETHOD(get_prpMultiArg1)(VARIANT* val1, VARIANT* val2, VARIANT* pVal); 239 //STDMETHOD(get_prpMultiArg1)(VARIANT* val1, VARIANT* pVal); 240 STDMETHOD(put_prpMultiArg1)(VARIANT* val1, VARIANT* val2, VARIANT* newVal); 241 //STDMETHOD(put_prpMultiArg1)(VARIANT* val1, VARIANT* newVal); 242 STDMETHOD(get_prpMultiArg2)(VARIANT val1, VARIANT* pVal); 243 STDMETHOD(put_prpMultiArg2)(VARIANT val1, VARIANT newVal); 244 STDMETHOD(prpMultiArg2GetValues)(VARIANT* val1, VARIANT* valProperty); 245 STDMETHOD(get_prpMultiArg3)(LONG* val1, LONG* pVal); 246 STDMETHOD(put_prpMultiArg3)(LONG* val1, LONG newVal); 247 248 // IFoo Methods 249 public: 250 STDMETHOD(inUnknown)(IUnknown* val); 251 STDMETHOD(outUnknown)(IUnknown** val); 252 STDMETHOD(inoutUnknown)(IUnknown** val); 253 STDMETHOD(get_prpUnknown)(IUnknown** pVal); 254 STDMETHOD(put_prpUnknown)(IUnknown* newVal); 255 }; 256 257 #endif //__BASIC_H_ 258 259 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 260