ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

aclmulti.h
Go to the documentation of this file.
00001 /*
00002  *  Multisource AutoComplete list
00003  *
00004  *  Copyright 2007  Mikolaj Zalewski
00005  *  Copyright 2009  Andrew Hill
00006  *
00007  * This library is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public
00009  * License as published by the Free Software Foundation; either
00010  * version 2.1 of the License, or (at your option) any later version.
00011  *
00012  * This library is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  * Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public
00018  * License along with this library; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00020  */
00021 
00022 #pragma once
00023 
00024 class CACLMulti :
00025     public CComCoClass<CACLMulti, &CLSID_ACLMulti>,
00026     public CComObjectRootEx<CComMultiThreadModelNoCS>,
00027     public IEnumString,
00028     public IACList,
00029     public IObjMgr
00030 {
00031 private:
00032     struct ACLMultiSublist
00033     {
00034         IUnknown                            *punk;
00035         IEnumString                         *pEnum;
00036         IACList                             *pACL;
00037     };
00038 
00039     INT                                     fObjectCount;
00040     INT                                     fCurrentObject;
00041     struct ACLMultiSublist                  *fObjects;
00042 public:
00043     CACLMulti();
00044     ~CACLMulti();
00045 
00046     // *** IEnumString methods ***
00047     virtual HRESULT STDMETHODCALLTYPE Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched);
00048     virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt);
00049     virtual HRESULT STDMETHODCALLTYPE Reset();
00050     virtual HRESULT STDMETHODCALLTYPE Clone(IEnumString **ppenum);
00051 
00052     // *** IACList methods ***
00053     virtual HRESULT STDMETHODCALLTYPE Expand(LPCOLESTR pszExpand);
00054 
00055     // *** IObjMgr methods ***
00056     virtual HRESULT STDMETHODCALLTYPE Append(IUnknown *punk);
00057     virtual HRESULT STDMETHODCALLTYPE Remove(IUnknown *punk);
00058 
00059 private:
00060     void release_obj(struct ACLMultiSublist *obj);
00061 
00062 public:
00063 
00064 DECLARE_REGISTRY_RESOURCEID(IDR_ACLMULTI)
00065 DECLARE_NOT_AGGREGATABLE(CACLMulti)
00066 
00067 DECLARE_PROTECT_FINAL_CONSTRUCT()
00068 
00069 BEGIN_COM_MAP(CACLMulti)
00070     COM_INTERFACE_ENTRY_IID(IID_IEnumString, IEnumString)
00071     COM_INTERFACE_ENTRY_IID(IID_IACList, IACList)
00072     COM_INTERFACE_ENTRY_IID(IID_IObjMgr, IObjMgr)
00073 END_COM_MAP()
00074 };

Generated on Sat May 26 2012 04:21:24 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.