ReactOS 0.4.17-dev-966-gf06eace
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 EnumBackgroundCopyJobsImpl * impl_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 177 of file enum_jobs.c.

178{
181 ULONG i;
182
183 TRACE("%p, %p)\n", qmgr, enumjob);
184
185 This = malloc(sizeof(*This));
186 if (!This)
187 return E_OUTOFMEMORY;
188 This->IEnumBackgroundCopyJobs_iface.lpVtbl = &EnumBackgroundCopyJobsVtbl;
189 This->ref = 1;
190
191 /* Create array of jobs */
192 This->indexJobs = 0;
193
194 EnterCriticalSection(&qmgr->cs);
195 This->numJobs = list_count(&qmgr->jobs);
196
197 if (0 < This->numJobs)
198 {
199 This->jobs = malloc(This->numJobs * sizeof *This->jobs);
200 if (!This->jobs)
201 {
202 LeaveCriticalSection(&qmgr->cs);
203 free(This);
204 return E_OUTOFMEMORY;
205 }
206 }
207 else
208 This->jobs = NULL;
209
210 i = 0;
211 LIST_FOR_EACH_ENTRY(job, &qmgr->jobs, BackgroundCopyJobImpl, entryFromQmgr)
212 {
213 IBackgroundCopyJob4_AddRef(&job->IBackgroundCopyJob4_iface);
214 This->jobs[i++] = &job->IBackgroundCopyJob4_iface;
215 }
216 LeaveCriticalSection(&qmgr->cs);
217
218 *enumjob = &This->IEnumBackgroundCopyJobs_iface;
219 return S_OK;
220}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
static const IEnumBackgroundCopyJobsVtbl EnumBackgroundCopyJobsVtbl
Definition: enum_jobs.c:165
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:79
__WINE_SERVER_LIST_INLINE unsigned int list_count(const struct list *list)
Definition: list.h:157
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:236
#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)->(%ld)\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 146 of file enum_jobs.c.

148{
150 FIXME("(%p)->(%p): stub\n", This, ppenum);
151 return E_NOTIMPL;
152}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ EnumBackgroundCopyJobs_GetCount()

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

Definition at line 154 of file enum_jobs.c.

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

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

◆ 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:3479

◆ 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)->(%ld)\n", This, ref);
75
76 if (ref == 0) {
77 for(i = 0; i < This->numJobs; i++)
78 IBackgroundCopyJob4_Release(This->jobs[i]);
79 free(This->jobs);
80 free(This);
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 136 of file enum_jobs.c.

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

◆ EnumBackgroundCopyJobs_Skip()

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

Definition at line 120 of file enum_jobs.c.

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

◆ 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:146
static HRESULT WINAPI EnumBackgroundCopyJobs_GetCount(IEnumBackgroundCopyJobs *iface, ULONG *puCount)
Definition: enum_jobs.c:154
static HRESULT WINAPI EnumBackgroundCopyJobs_Skip(IEnumBackgroundCopyJobs *iface, ULONG celt)
Definition: enum_jobs.c:120
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:136

Definition at line 165 of file enum_jobs.c.

Referenced by enum_copy_job_create().