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.
 
 
 
 
 
 

49 lines
1.8 KiB

/****************************Module*Header***********************************\
* Module Name: INPUT.H
*
* Module Descripton:
*
* Warnings:
*
* Created:
*
* Author:
\****************************************************************************/
// the string must hold, at a minimun, enough digits for a quadword binary number (ie 64)
#define MAX_STRLEN 64 // Seems to be the magic value for calc...
#define C_NUM_MAX_DIGITS MAX_STRLEN
#define C_EXP_MAX_DIGITS 4
typedef struct
{
BOOL fEmpty; // TRUE if the number has no digits yet
BOOL fNeg; // TRUE if number is negative
INT cchVal; // number of characters in number (including dec. pnt)
TCHAR szVal[MAX_STRLEN+1]; //
} CALCNUMSEC, *PCALCNUMSEC;
#if C_NUM_MAX_DIGITS > MAX_STRLEN || C_EXP_MAX_DIGITS > MAX_STRLEN
# pragma error(CALCNUMSEC.szVal is too small)
#endif
typedef struct
{
BOOL fExp; // TRUE if number has exponent
INT iDecPt; // index to decimal point of number portion. -1 if no dec pnt
CALCNUMSEC cnsNum; // base number
CALCNUMSEC cnsExp; // exponent if it exists
} CALCINPUTOBJ, *PCALCINPUTOBJ;
#define CIO_bDecimalPt(pcio) ((pcio)->iDecPt != -1)
void CIO_vClear(PCALCINPUTOBJ pcio);
BOOL CIO_bAddDigit(PCALCINPUTOBJ pcio, int iValue);
void CIO_vToggleSign(PCALCINPUTOBJ pcio);
BOOL CIO_bAddDecimalPt(PCALCINPUTOBJ pcio);
BOOL CIO_bExponent(PCALCINPUTOBJ pcio);
BOOL CIO_bBackspace(PCALCINPUTOBJ pcio);
void CIO_vUpdateDecimalSymbol(PCALCINPUTOBJ pcio, TCHAR chLastDP);
void CIO_vConvertToString(LPTSTR *ppszOut, int* pcchszOut, PCALCINPUTOBJ pcio, int nRadix);
void CIO_vConvertToNumObj(PHNUMOBJ phnoNum, PCALCINPUTOBJ pcio);