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.

142 lines
5.5 KiB

  1. // TestITN_J.h : Declaration of the CTestITN_J
  2. #ifndef __TESTITN_J_H_
  3. #define __TESTITN_J_H_
  4. #include "resource.h" // main symbols
  5. #include <wchar.h> // for swprintf()
  6. #define MAX_LOCALE_DATA 5
  7. #define MAX_DATE_FORMAT 30
  8. // Flags for number display
  9. typedef enum DISPLAYFLAGS
  10. {
  11. DF_UNFORMATTED = (1L << 0),// No formatting
  12. DF_ORDINAL = (1L << 1),// Ordinal number
  13. DF_WHOLENUMBER = (1L << 2),// Should be displayed without decimal
  14. DF_FIXEDWIDTH = (1L << 3),// Requiring a certain width
  15. DF_LEADINGZERO = (1L << 4),// Presence of leading 0 of the number is between 0 and 1
  16. DF_NOTHOUSANDSGROUP = (1L << 5) // Do not do any thousands grouping (commas)
  17. } DISPLAYFLAGS;
  18. /////////////////////////////////////////////////////////////////////////////
  19. // CTestITN_J
  20. class ATL_NO_VTABLE CTestITN_J :
  21. public CComObjectRootEx<CComMultiThreadModel>,
  22. public CComCoClass<CTestITN_J, &CLSID_TestITN_J>,
  23. public ISpCFGInterpreter
  24. {
  25. public:
  26. CTestITN_J() : m_pSite( NULL )
  27. {
  28. }
  29. DECLARE_REGISTRY_RESOURCEID(IDR_TESTITN_J)
  30. DECLARE_PROTECT_FINAL_CONSTRUCT()
  31. BEGIN_COM_MAP(CTestITN_J)
  32. COM_INTERFACE_ENTRY(ISpCFGInterpreter)
  33. END_COM_MAP()
  34. private:
  35. HRESULT InterpretNumber( const SPPHRASEPROPERTY *pProperties,
  36. const bool fCardinal,
  37. DOUBLE *pdblVal,
  38. WCHAR *pszVal,
  39. UINT cSize);
  40. HRESULT InterpretDigitNumber( const SPPHRASEPROPERTY *pProperties,
  41. DOUBLE *pdblVal,
  42. WCHAR *pszVal,
  43. UINT cSize);
  44. HRESULT InterpretFPNumber( const SPPHRASEPROPERTY *pProperties,
  45. DOUBLE *pdblVal,
  46. WCHAR *pszVal,
  47. UINT cSize);
  48. HRESULT InterpretFraction( const SPPHRASEPROPERTY *pProperties,
  49. DOUBLE *pdblVal,
  50. WCHAR *pszVal,
  51. UINT cSize);
  52. HRESULT InterpretDate( const SPPHRASEPROPERTY *pProperties,
  53. DOUBLE *pdblVal,
  54. WCHAR *pszVal,
  55. UINT cSize);
  56. HRESULT InterpretTime( const SPPHRASEPROPERTY *pProperties,
  57. DOUBLE *pdblVal,
  58. WCHAR *pszVal,
  59. UINT cSize);
  60. HRESULT InterpretDegrees( const SPPHRASEPROPERTY *pProperties,
  61. DOUBLE *pdblVal,
  62. WCHAR *pszVal,
  63. UINT cSize);
  64. HRESULT InterpretMeasurement( const SPPHRASEPROPERTY *pProperties,
  65. DOUBLE *pdblVal,
  66. WCHAR *pszVal,
  67. UINT cSize);
  68. HRESULT InterpretCurrency( const SPPHRASEPROPERTY *pProperties,
  69. DOUBLE *pdblVal,
  70. WCHAR *pszVal,
  71. UINT cSize);
  72. HRESULT AddPropertyAndReplacement( const WCHAR *szBuff,
  73. const DOUBLE dblValue,
  74. const ULONG ulMinPos,
  75. const ULONG ulMaxPos,
  76. const ULONG ulFirstElement,
  77. const ULONG ulCountOfElements );
  78. //ISpCFGInterpreterSite *pSite );
  79. HRESULT MakeDisplayNumber( DOUBLE dblNum,
  80. DWORD dwDisplayFlags,
  81. UINT uiFixedWidth,
  82. UINT uiDecimalPlaces,
  83. WCHAR *pwszNum,
  84. UINT cSize,
  85. BOOL bForced );
  86. int MakeDigitStrig( const SPPHRASEPROPERTY *pProperties,
  87. WCHAR *pwszDigitString,
  88. UINT cSize );
  89. void GetNumberFormatDefaults();
  90. private:
  91. // Data members
  92. NUMBERFMT m_nmfmtDefault;
  93. TCHAR m_pszDecimalSep[ MAX_LOCALE_DATA];
  94. TCHAR m_pszThousandSep[MAX_LOCALE_DATA];
  95. TCHAR m_pszLongDateFormat[ MAX_DATE_FORMAT ];
  96. ISpCFGInterpreterSite *m_pSite;
  97. // ISpCFGInterptreter
  98. public:
  99. STDMETHODIMP InitGrammar(const WCHAR * pszGrammarName, const void ** pvGrammarData);
  100. STDMETHODIMP Interpret(ISpPhraseBuilder * pInterpretRule, const ULONG ulFirstElement, const ULONG ulCountOfElements, ISpCFGInterpreterSite * pSite);
  101. public:
  102. CComPtr<ISpPhraseBuilder> m_cpPhrase; // Decalred as a member to prevent repeated construct/destroy
  103. };
  104. // Helper functions
  105. ULONG ComputeNum9999(const SPPHRASEPROPERTY *pProperties );
  106. void HandleDigitsAfterDecimal( WCHAR *pwszFormattedNum,
  107. UINT cSizeOfFormattedNum,
  108. const WCHAR *pwszRightOfDecimal );
  109. void FindDefaultNumberFormat( NUMBERFMT *pnfmt );
  110. void GetMinAndMaxPos( const SPPHRASEPROPERTY *pProperties, ULONG *pulMinPos, ULONG *pulMaxPos );
  111. int GetMonthName( int iMonth, WCHAR *pwszMonth, int cSize, bool fAbbrev );
  112. int GetDayOfWeekName( int iDayOfWeek, WCHAR *pwszDayOfWeek, int cSize, bool fAbbrev );
  113. int FormatDate( const SYSTEMTIME &stDate, TCHAR *pszFormat, WCHAR *pwszDate, int cSize, const WCHAR *pwszEmperor );
  114. #endif //__TESTITN_H_