47 pChunk2 = pChunk->
pNext;
48 pChunk->
pNext =
nullptr;
71 memcpy(
this, &rCopy,
sizeof(
C4IDList));
106 if (!Inside<size_t>(index + 1, 1u,
Count))
114 pQueryChunk = pQueryChunk->
pNext;
120 *ipCount = pQueryChunk->
Count[index];
122 return pQueryChunk->
id[index];
128 if (!Inside<size_t>(index + 1, 1u,
Count))
136 pQueryChunk = pQueryChunk->
pNext;
140 return pQueryChunk->
Count[index];
146 if (!Inside<size_t>(index + 1, 1u,
Count))
154 pQueryChunk = pQueryChunk->
pNext;
158 pQueryChunk->
Count[index] = iCount;
171 if (pQueryChunk->
id[cntl] == c_id)
173 int32_t iCount = pQueryChunk->
Count[cntl];
174 return iCount ? iCount : iZeroDefVal;
178 pQueryChunk = pQueryChunk->
pNext;
194 if (pQueryChunk->
id[cntl] == c_id)
196 pQueryChunk->
Count[cntl] = iCount;
201 pQueryChunk = pQueryChunk->
pNext;
214 pLast = pLast->
pNext;
217 pLast->
pNext = pQueryChunk;
220 pQueryChunk->
id[cntl] = c_id;
221 pQueryChunk->
Count[cntl] = iCount;
244 if (pQueryChunk->
id[cntl] == c_id)
250 pQueryChunk = pQueryChunk->
pNext;
266 if (pQueryChunk->
id[cntl] == c_id)
269 pQueryChunk->
Count[cntl] += IncreaseBy;
271 if (fRemoveEmpty && !pQueryChunk->
Count[cntl])
280 pQueryChunk = pQueryChunk->
pNext;
296 pLast = pLast->
pNext;
299 pLast->
pNext = pQueryChunk;
302 pQueryChunk->
id[cntl] = c_id;
303 pQueryChunk->
Count[cntl] = IncreaseBy;
325 if ((dwCategory ==
C4D_All) || ( (cDef = rDefs.
ID2Def(pQueryChunk->
id[cntl])) && (cDef->
Category & dwCategory) ) )
332 *ipCount = pQueryChunk->
Count[cntl];
334 return pQueryChunk->
id[cntl];
339 pQueryChunk = pQueryChunk->
pNext;
355 if ((dwCategory ==
C4D_All) || ( (cDef = rDefs.
ID2Def(pQueryChunk->
id[cntl])) && (cDef->
Category & dwCategory) ) )
360 return pQueryChunk->
Count[cntl];
365 pQueryChunk = pQueryChunk->
pNext;
381 if ((dwCategory ==
C4D_All) || ( (cDef = rDefs.
ID2Def(pQueryChunk->
id[cntl])) && (cDef->
Category & dwCategory) ) )
386 pQueryChunk->
Count[cntl] = iCount;
392 pQueryChunk = pQueryChunk->
pNext;
408 if ((dwCategory ==
C4D_All) || ( (cDef = rDefs.
ID2Def(pQueryChunk->
id[cntl])) && (cDef->
Category & dwCategory) ) )
414 pQueryChunk = pQueryChunk->
pNext;
425 size_t cnt = rList.
Count;
432 pQueryChunk = pQueryChunk->
pNext;
441 bool fIDsRemoved =
false;
449 if (!(pDef = rDefs.
ID2Def(pQueryChunk->
id[cntl])) || (dwCategory && !(pDef->
Category & dwCategory)))
460 pQueryChunk = pQueryChunk->
pNext;
469 bool fCounts, int32_t iAlign)
const
474 int32_t firstid = Clamp<int32_t>(iSelection - sections / 2, 0, std::max<int32_t>(idnum - sections, 0));
479 for (int32_t cnt = 0; (cnt<sections) && (c_id =
GetID(rDefs, dwCategory, firstid + cnt, &idcount)); cnt++)
482 rDefs.
Draw(c_id, cgo2, (firstid + cnt == iSelection), 0);
501 if (!Inside<size_t>(iIndex + 1, 1u,
Count))
506 size_t index = iIndex;
510 pQueryChunk = pQueryChunk->
pNext;
514 size_t cnt = --
Count - iIndex;
523 pNextChunk = pQueryChunk->
pNext;
527 pQueryChunk->
id[cntl] = pNextChunk->
id[cntl2];
528 pQueryChunk->
Count[cntl] = pNextChunk->
Count[cntl2];
530 pQueryChunk = pNextChunk;
548 while (pChunk1 && pChunk2)
558 pChunk1 = pChunk1->
pNext;
559 pChunk2 = pChunk2->
pNext;
581 int32_t iCount =
Count;
584 pComp->
Value(iCount);
601 pChunk = pChunk->
pNext;
608 if (!fNaming && iNr >=
Count)
641 else if (deserializing)
643 pChunk->
Count[iCNr] = 0;
649 if (deserializing && fNaming)
C4GraphicsResource GraphicsResource
const size_t C4IDListChunkSize
StdDefaultAdapt< T, D > mkDefaultAdapt(T &&rValue, const D &rDefault)
void Draw(C4ID id, C4Facet &cgo, bool fSelected, int32_t iColor)
bool TextOut(const char *szText, CStdFont &rFont, float fZoom, C4Surface *sfcDest, float iTx, float iTy, DWORD dwFCol=0xffffffff, BYTE byForm=ALeft, bool fDoMarkup=true)
int32_t GetSectionCount()
C4Facet TruncateSection(int32_t iAlign=C4FCT_Left)
int32_t Count[C4IDListChunkSize]
C4ID id[C4IDListChunkSize]
int32_t GetCount(size_t index) const
bool Add(C4IDList &rList)
void CompileFunc(StdCompiler *pComp, bool fValues=true)
bool SetCount(size_t index, int32_t iCount)
int32_t GetIndex(C4ID c_id) const
bool ConsolidateValids(C4DefList &rDefs, int32_t dwCategory=0)
bool SetIDCount(C4ID c_id, int32_t iCount, bool fAddNewID=false)
C4ID GetID(size_t index, int32_t *ipCount=nullptr) const
bool IncreaseIDCount(C4ID c_id, bool fAddNewID=true, int32_t IncreaseBy=1, bool fRemoveEmpty=false)
int32_t GetNumberOfIDs() const
bool operator==(const C4IDList &rhs) const
bool DeleteItem(size_t iIndex)
void Draw(C4Facet &cgo, int32_t iSelection, C4DefList &rDefs, DWORD dwCategory, bool fCounts=true, int32_t iAlign=0) const
int32_t GetIDCount(C4ID c_id, int32_t iZeroDefVal=0) const
C4IDList & operator=(const C4IDList &rCopy)
int GetLineHeight() const
virtual bool Separator(Sep eSep=SEP_SEP)
void Value(const T &rStruct)
virtual bool isDeserializer()