Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

131 lines
2.6 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: K K S T L . C P P
//
// Contents:
//
// Notes:
//
// Author: kumarp
//
//----------------------------------------------------------------------------
#include "pch.h"
#pragma hdrstop
#include "kkstl.h"
void FormatTString(IN OUT tstring& str, IN PCWSTR pszFormat, va_list arglist)
{
const c_dwMaxFormatBufferLen = 511;
//since there is no way to determine the size of the string
//after applying the format, we must assume some arbitrary size
static WCHAR pszTemp[c_dwMaxFormatBufferLen+1];
_vsnwprintf(pszTemp, c_dwMaxFormatBufferLen, pszFormat, arglist);
str = pszTemp;
}
void FormatTString(IN OUT tstring& str, IN PCWSTR pszFormat, ...)
{
va_list arglist;
va_start (arglist, pszFormat);
FormatTString(str, pszFormat, arglist);
va_end(arglist);
}
BOOL FIsInStringList(IN const TStringList& sl, IN tstring& str,
OUT TStringListIter* pos)
{
return FIsInStringList(sl, str.c_str(), pos);
}
BOOL FIsInStringList(IN const TStringList& sl, IN PCWSTR psz,
OUT TStringListIter* pos)
{
TStringListIter i=sl.begin();
while (i != sl.end())
{
if (!_wcsicmp((*i)->c_str(), psz))
{
if (pos != NULL)
*pos = i;
return TRUE;
}
++i;
}
return FALSE;
}
tstring* GetNthItem(IN TStringList& sl, IN DWORD dwIndex)
{
TStringListIter sli=sl.begin();
DWORD i;
for (i=0; i<dwIndex; ++i, ++sli)
;
return *sli;
}
void EraseAndDeleteAll(IN TPtrList& ppl)
{
EraseAndDeleteAll(&ppl);
}
void EraseAndDeleteAll(IN TPtrList* ppl)
{
TPtrListIter i=ppl->begin();
while (i != ppl->end())
{
delete *i++;
}
ppl->erase(ppl->begin(), ppl->end());
}
void EraseAndDeleteAll(IN TStringList& ppl)
{
EraseAndDeleteAll(&ppl);
}
void EraseAndDeleteAll(IN TStringList* ppl)
{
TStringListIter i=ppl->begin();
while (i != ppl->end())
{
delete *i++;
}
ppl->erase(ppl->begin(), ppl->end());
}
void GetDataFromByteArray(IN const TByteArray& ba, OUT BYTE*& pb)
{
DWORD dwSize = ba.size();
if (dwSize == 0)
{
pb = NULL;
return;
}
if (pb == NULL)
{
pb = new BYTE[dwSize];
}
if(pb) {
for (DWORD i=0; i < dwSize; i++)
{
pb[i] = ba[i];
}
}
}