ReactOS 0.4.15-dev-8138-g1e75ea8
enum_jobs.c File Reference
#include "qmgr.h"
#include "wine/debug.h"
Include dependency graph for enum_jobs.c:

Go to the source code of this file.

Classes

struct  EnumBackgroundCopyJobsImpl
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (qmgr)
 
static EnumBackgroundCopyJobsImplimpl_from_IEnumBackgroundCopyJobs (IEnumBackgroundCopyJobs *iface)
 
static HRESULT WINAPI EnumBackgroundCopyJobs_QueryInterface (IEnumBackgroundCopyJobs *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI EnumBackgroundCopyJobs_AddRef (IEnumBackgroundCopyJobs *iface)
 
static ULONG WINAPI EnumBackgroundCopyJobs_Release (IEnumBackgroundCopyJobs *iface)
 
static HRESULT WINAPI EnumBackgroundCopyJobs_Next (IEnumBackgroundCopyJobs *iface, ULONG celt, IBackgroundCopyJob **rgelt, ULONG *pceltFetched)
 
static HRESULT WINAPI EnumBackgroundCopyJobs_Skip (IEnumBackgroundCopyJobs *iface, ULONG celt)
 
static HRESULT WINAPI EnumBackgroundCopyJobs_Reset (IEnumBackgroundCopyJobs *iface)
 
static HRESULT WINAPI EnumBackgroundCopyJobs_Clone (IEnumBackgroundCopyJobs *iface, IEnumBackgroundCopyJobs **ppenum)
 
static HRESULT WINAPI EnumBackgroundCopyJobs_GetCount (IEnumBackgroundCopyJobs *iface, ULONG *puCount)
 
HRESULT enum_copy_job_create (BackgroundCopyManagerImpl *qmgr, IEnumBackgroundCopyJobs **enumjob)
 

Variables

static const IEnumBackgroundCopyJobsVtbl EnumBackgroundCopyJobsVtbl
 

Function Documentation

◆ enum_copy_job_create()

HRESULT enum_copy_job_create ( BackgroundCopyManagerImpl qmgr,
IEnumBackgroundCopyJobs **  enumjob 
)

Definition at line 179 of file enum_jobs.c.

180{
183 ULONG i;
184
185 TRACE("%p, %p)\n", qmgr, enumjob);
186
187 This = HeapAlloc(GetProcessHeap(), 0, sizeof *This);
188 if (!This)
189 return E_OUTOFMEMORY;
190 This->IEnumBackgroundCopyJobs_iface.lpVtbl = &EnumBackgroundCopyJobsVtbl;
191 This->ref = 1;
192
193 /* Create array of jobs */
194 This->indexJobs = 0;
195
196 EnterCriticalSection(&qmgr->cs);
197 This->numJobs = list_count(&qmgr->jobs);
198
199 if (0 < This->numJobs)
200 {
201 This->jobs = HeapAlloc(GetProcessHeap(), 0,
202 This->numJobs * sizeof *This->jobs);
203 if (!This->jobs)
204 {
205 LeaveCriticalSection(&qmgr->cs);
207 return E_OUTOFMEMORY;
208 }
209 }
210 else
211 This->jobs = NULL;
212
213 i = 0;
214 LIST_FOR_EACH_ENTRY(job, &qmgr->jobs, BackgroundCopyJobImpl, entryFromQmgr)
215 {
216 IBackgroundCopyJob3_AddRef(&job->IBackgroundCopyJob3_iface);
217 This->jobs[i++] = &job->IBackgroundCopyJob3_iface;
218 }
219 LeaveCriticalSection(&qmgr->cs);
220
221 *enumjob = &This->IEnumBackgroundCopyJobs_iface;
222 return S_OK;
223}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define NULL
Definition: types.h:112
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
static const IEnumBackgroundCopyJobsVtbl EnumBackgroundCopyJobsVtbl
Definition: enum_jobs.c:167
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define S_OK
Definition: intsafe.h:52
static HANDLE job
Definition: process.c:77
__WINE_SERVER_LIST_INLINE unsigned int list_count(const struct list *list)
Definition: list.h:155
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
#define TRACE(s)
Definition: solgame.cpp:4
struct list jobs
Definition: qmgr.h:91
CRITICAL_SECTION cs
Definition: qmgr.h:89
uint32_t ULONG
Definition: typedefs.h:59
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by BackgroundCopyManager_EnumJobs().

◆ EnumBackgroundCopyJobs_AddRef()

static ULONG WINAPI EnumBackgroundCopyJobs_AddRef ( IEnumBackgroundCopyJobs iface)
static

Definition at line 58 of file enum_jobs.c.

59{
62
63 TRACE("(%p)->(%d)\n", This, ref);
64
65 return ref;
66}
#define InterlockedIncrement
Definition: armddk.h:53
static EnumBackgroundCopyJobsImpl * impl_from_IEnumBackgroundCopyJobs(IEnumBackgroundCopyJobs *iface)
Definition: enum_jobs.c:35
Definition: send.c:48

◆ EnumBackgroundCopyJobs_Clone()

static HRESULT WINAPI EnumBackgroundCopyJobs_Clone ( IEnumBackgroundCopyJobs iface,
IEnumBackgroundCopyJobs **  ppenum 
)
static

Definition at line 148 of file enum_jobs.c.

150{
152 FIXME("(%p)->(%p): stub\n", This, ppenum);
153 return E_NOTIMPL;
154}
#define FIXME(fmt,...)
Definition: debug.h:114
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ EnumBackgroundCopyJobs_GetCount()

static HRESULT WINAPI EnumBackgroundCopyJobs_GetCount ( IEnumBackgroundCopyJobs iface,
ULONG puCount 
)
static

Definition at line 156 of file enum_jobs.c.

158{
160
161 TRACE("(%p)->(%p)\n", This, puCount);
162
163 *puCount = This->numJobs;
164 return S_OK;
165}

◆ EnumBackgroundCopyJobs_Next()

static HRESULT WINAPI EnumBackgroundCopyJobs_Next ( IEnumBackgroundCopyJobs iface,
ULONG  celt,
IBackgroundCopyJob **  rgelt,
ULONG pceltFetched 
)
static

Definition at line 86 of file enum_jobs.c.

88{
90 ULONG fetched;
91 ULONG i;
93
94 TRACE("(%p)->(%d %p %p)\n", This, celt, rgelt, pceltFetched);
95
96 fetched = min(celt, This->numJobs - This->indexJobs);
97 if (pceltFetched)
98 *pceltFetched = fetched;
99 else
100 {
101 /* We need to initialize this array if the caller doesn't request
102 the length because length_is will default to celt. */
103 for (i = 0; i < celt; ++i)
104 rgelt[i] = NULL;
105
106 /* pceltFetched can only be NULL if celt is 1 */
107 if (celt != 1)
108 return E_INVALIDARG;
109 }
110
111 /* Fill in the array of objects */
112 for (i = 0; i < fetched; ++i)
113 {
114 job = This->jobs[This->indexJobs++];
115 IBackgroundCopyJob3_AddRef(job);
116 rgelt[i] = (IBackgroundCopyJob *)job;
117 }
118
119 return fetched == celt ? S_OK : S_FALSE;
120}
#define E_INVALIDARG
Definition: ddrawi.h:101
#define min(a, b)
Definition: monoChain.cc:55
#define S_FALSE
Definition: winerror.h:2357

◆ EnumBackgroundCopyJobs_QueryInterface()

static HRESULT WINAPI EnumBackgroundCopyJobs_QueryInterface ( IEnumBackgroundCopyJobs iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 40 of file enum_jobs.c.

42{
44
45 TRACE("(%p)->(%s, %p)\n", This, debugstr_guid(riid), ppv);
46
47 if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IEnumBackgroundCopyJobs))
48 {
49 *ppv = iface;
50 IEnumBackgroundCopyJobs_AddRef(iface);
51 return S_OK;
52 }
53
54 *ppv = NULL;
55 return E_NOINTERFACE;
56}
const GUID IID_IUnknown
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ EnumBackgroundCopyJobs_Release()

static ULONG WINAPI EnumBackgroundCopyJobs_Release ( IEnumBackgroundCopyJobs iface)
static

Definition at line 68 of file enum_jobs.c.

69{
72 ULONG i;
73
74 TRACE("(%p)->(%d)\n", This, ref);
75
76 if (ref == 0) {
77 for(i = 0; i < This->numJobs; i++)
78 IBackgroundCopyJob3_Release(This->jobs[i]);
79 HeapFree(GetProcessHeap(), 0, This->jobs);
81 }
82
83 return ref;
84}
#define InterlockedDecrement
Definition: armddk.h:52

◆ EnumBackgroundCopyJobs_Reset()

static HRESULT WINAPI EnumBackgroundCopyJobs_Reset ( IEnumBackgroundCopyJobs iface)
static

Definition at line 138 of file enum_jobs.c.

139{
141
142 TRACE("(%p)\n", This);
143
144 This->indexJobs = 0;
145 return S_OK;
146}

◆ EnumBackgroundCopyJobs_Skip()

static HRESULT WINAPI EnumBackgroundCopyJobs_Skip ( IEnumBackgroundCopyJobs iface,
ULONG  celt 
)
static

Definition at line 122 of file enum_jobs.c.

123{
125
126 TRACE("(%p)->(%d)\n", This, celt);
127
128 if (This->numJobs - This->indexJobs < celt)
129 {
130 This->indexJobs = This->numJobs;
131 return S_FALSE;
132 }
133
134 This->indexJobs += celt;
135 return S_OK;
136}

◆ impl_from_IEnumBackgroundCopyJobs()

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( qmgr  )

Variable Documentation

◆ EnumBackgroundCopyJobsVtbl

const IEnumBackgroundCopyJobsVtbl EnumBackgroundCopyJobsVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI EnumBackgroundCopyJobs_Clone(IEnumBackgroundCopyJobs *iface, IEnumBackgroundCopyJobs **ppenum)
Definition: enum_jobs.c:148
static HRESULT WINAPI EnumBackgroundCopyJobs_GetCount(IEnumBackgroundCopyJobs *iface, ULONG *puCount)
Definition: enum_jobs.c:156
static HRESULT WINAPI EnumBackgroundCopyJobs_Skip(IEnumBackgroundCopyJobs *iface, ULONG celt)
Definition: enum_jobs.c:122
static ULONG WINAPI EnumBackgroundCopyJobs_Release(IEnumBackgroundCopyJobs *iface)
Definition: enum_jobs.c:68
static HRESULT WINAPI EnumBackgroundCopyJobs_Next(IEnumBackgroundCopyJobs *iface, ULONG celt, IBackgroundCopyJob **rgelt, ULONG *pceltFetched)
Definition: enum_jobs.c:86
static HRESULT WINAPI EnumBackgroundCopyJobs_QueryInterface(IEnumBackgroundCopyJobs *iface, REFIID riid, void **ppv)
Definition: enum_jobs.c:40
static ULONG WINAPI EnumBackgroundCopyJobs_AddRef(IEnumBackgroundCopyJobs *iface)
Definition: enum_jobs.c:58
static HRESULT WINAPI EnumBackgroundCopyJobs_Reset(IEnumBackgroundCopyJobs *iface)
Definition: enum_jobs.c:138

Definition at line 167 of file enum_jobs.c.

Referenced by enum_copy_job_create().