windows-nt/Source/XPSP1/NT/net/config/inc/kkstl.h

100 lines
2.4 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: K K S T L . H
//
// Contents:
//
// Notes:
//
// Author: kumarp
//
//----------------------------------------------------------------------------
#pragma once
#include "ncstring.h"
typedef list<PVOID> TPtrList;
typedef TPtrList::iterator TPtrListIter;
typedef list<tstring*> TStringList;
typedef TStringList::iterator TStringListIter;
typedef vector<BYTE> TByteArray;
typedef vector<tstring*> TStringArray;
// ----------------------------------------------------------------------
void FormatTString(IN OUT tstring& str, IN PCWSTR pszFormat, ...);
inline void AddAtEndOfStringList(IN TStringList& sl,
IN PCWSTR pszString)
{
sl.push_back(new tstring(pszString));
}
inline void AddAtEndOfStringList(IN TStringList& sl,
IN const tstring* pstr)
{
sl.push_back(new tstring(*pstr));
}
inline void AddAtEndOfStringList(IN TStringList& sl,
IN const tstring& pstr)
{
sl.push_back(new tstring(pstr));
}
inline void AddAtBeginningOfStringList(IN TStringList& sl,
IN const tstring& pstr)
{
sl.push_front(new tstring(pstr));
}
BOOL FIsInStringList(IN const TStringList& sl, IN tstring& str,
OUT TStringListIter* pos=NULL);
BOOL FIsInStringList(IN const TStringList& sl, IN PCWSTR psz,
OUT TStringListIter* pos=NULL);
tstring* GetNthItem(IN TStringList& sl, IN DWORD dwIndex);
// ----------------------------------------------------------------------
inline TPtrListIter AddAtEndOfPtrList(IN TPtrList& pl, IN PVOID pv)
{
return pl.insert(pl.end(), pv);
}
inline TPtrListIter GetIterAtBack(IN const TPtrList* ppl)
{
TPtrListIter pliRet = ppl->end();
pliRet--;
return pliRet;
}
inline void EraseAll(IN TPtrList* ppl)
{
ppl->erase(ppl->begin(), ppl->end());
}
void EraseAndDeleteAll(IN TPtrList* ppl);
void EraseAndDeleteAll(IN TPtrList& ppl);
inline void EraseAll(IN TStringList* ppl)
{
ppl->erase(ppl->begin(), ppl->end());
}
void EraseAndDeleteAll(IN TStringList* ppl);
void EraseAndDeleteAll(IN TStringList& ppl);
// ----------------------------------------------------------------------
void GetDataFromByteArray(IN const TByteArray& ba, OUT BYTE*& pb);