virtual P6R::P6ERR P6R::p6ISafeString::formatStringW ( P6R::P6WCHAR *  pBuffer,
P6R::P6SIZE  cBuffer,
P6R::P6SIZE *  pcWritten,
const P6R::P6WCHAR *  pszFormat,
const P6R::P6ARG pArgs,
P6R::P6SIZE  cArgs 
) [pure virtual]

Provides a safer, enhanced swprintf replacement.

It does not use use varargs and instead takes an array of P6ARG structs. There are helper macros available to help intitialize the P6ARG's (see P6AI_BOOL(), P6AI_CHAR(), P6AI_INT32() etc.).

The format string uses positional notation to allow I18N issues to be easily handled.

position$

Position indicates the argument position in the pArgs argument array that should be rendered. This value begins at 1 (not zero). For example:

"1$ is the first argument in the array and 2$ is the second"

Parameters:
pBuffer [out] The address of the P6WCHAR buffer in which to place the output string.
cBuffer [in] The size of pBuffer in characters.
pcWritten [out, optional] The address of a P6SIZE in which will be returned the number of characters written to pBuffer. NULL may also be passed here if this information is not needed.
pszFormat [in] A NULL terminated P6WCHAR string containing the format string to use.
pArgs [in] The address of an array of P6R::P6ARG structures that define the aruments that are to be expanded.
cArgs [in] The number of array elements in pArgs.
Returns:
SuccessP6R::eOk 
FailureP6R::eInvalidArgpBuffer or pszFormat is NULL, or cBuffer is zero
P6R::eEndOfRecordA position was specified that exceeds the number of arguments in the array.
P6R::eFormatErrorThe format string is invalid. Replacements must have the form, 'position$' OR and invalid format type (P6ARGFMT) was specified in the P6ARG array.
P6R::eTooSmallThe expanded string would not fit in the specified buffer.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines
Copyright © 2004 - 2010 P6R Inc. - All Rights Reserved.