Container.h
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:6k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. /*
  2. Cross Platform Core Code.
  3. Copyright(R) 2001-2002 Balang Software.
  4. All rights reserved.
  5. Using:
  6. class CStockInfoArray;
  7. class CStockContainer;
  8. class CDomain;
  9. class CDomainContainer;
  10. */
  11. #if !defined( __STKLIB_CONTAINER_H__ )
  12. #define __STKLIB_CONTAINER_H__
  13. #define ID_STOCKCNTN_AVERAGE (-1)
  14. #define ID_STOCKCNTN_WEIGHTAVERAGE (-2)
  15. typedef struct variant_savevalue_t {
  16. UINT nVariantID;
  17. double Value;
  18. BOOL bNoValue;
  19. }VARIANT_SAVEVALUE;
  20. // 使用下句,将视包含Container.h的exe应用程序输出函数,其他相似语句类似
  21. // template class __declspec(dllexport) CSPArray<CStockInfo, CStockInfo &>;
  22. typedef CSPArray<CStockInfo, CStockInfo &> CStockInfoArray;
  23. class CStrategy;
  24. #include "../Src/SPLock.h"
  25. /***
  26. 股票信息数组类。
  27. 有一个股票信息数组的全局对象AfxGetStockContainer()保存所有股票的信息
  28. */
  29. class STKLIB_API CStockContainer : public CStockInfoArray
  30. {
  31. public:
  32. CStockContainer();
  33. virtual ~CStockContainer();
  34. BOOL Lock();
  35. BOOL UnLock();
  36. static int SortFunction(const void *s1,const void *s2);
  37. static int StockInfoCompareFunc( const void *s1,const void *s2, CStockContainer * pContainer, int nSortVariantID );
  38. // for access CStockInfoArray
  39. virtual int Add( CStockInfo &newElement );
  40. virtual void SetSize(int nNewSize, int nGrowBy = -1) { CStockInfoArray::SetSize(nNewSize,nGrowBy); }
  41. // attributes
  42. enum StockTypes {
  43. typeNone = 0x00,
  44. typeMin = 0x01,
  45. typeIndex = 0x01,
  46. typeStrategy = 0x02,
  47. typeGroup = 0x03,
  48. typeDomain = 0x04,
  49. typeAll = 0x05,
  50. typeA = 0x06,
  51. typeBond = 0x07,
  52. typeFund = 0x08,
  53. typeClassShaa = 0x09,
  54. typeClassShab = 0x0A,
  55. typeClassSzna = 0x0B,
  56. typeClassSznb = 0x0C,
  57. typeClassShabond= 0x0D,
  58. typeClassSznbond= 0x0E,
  59. typeRight = 0x0F,
  60. typeMax = 0x0F
  61. };
  62. // operations
  63. BOOL GetCurrentType( int *pType, CSPString * pDomain, DWORD *pdwDate );
  64. BOOL GetPioneerTechDate( DWORD * pdwDate );
  65. BOOL GetLatestTechDate( DWORD * pdwDate );
  66. BOOL GetTechDateArray( CSPDWordArray & dwArray );
  67. BOOL RetrieveFromStatic( int nType, LPCTSTR lpszDomain, CStrategy * pStrategy, DWORD dwDate );
  68. BOOL ReRetrieveFromStatic( CStrategy * pStrategy, BOOL bUpToDate = FALSE );
  69. BOOL RetrieveSpecify( CSPStringArray & astr );
  70. BOOL GetStockInfo( const char * szCode, CStockInfo * pInfo, int * pid = NULL );
  71. BOOL SetCurrentStock( int nStockIndex );
  72. BOOL SetCurrentStock( const char * szCode );
  73. BOOL GetCurrentStock( CStockInfo * pInfo );
  74. BOOL GetPrevStock( CStockInfo * pInfo );
  75. BOOL GetNextStock( CStockInfo * pInfo );
  76. CStockInfo & GetStockInfoByID( int nID );
  77. CStockInfo & GetStockInfoByIDSort( int nID );
  78. CStockInfo & GetAverage( );
  79. CStockInfo & GetWeightAverage( );
  80. BOOL Load( CStDatabase * pDB, PROGRESS_CALLBACK fnCallback = NULL, void *cookie = NULL, int nProgStart = 0, int nProgEnd = STKLIB_MAX_PROGRESS );
  81. void OnDataChanged( );
  82. BOOL ReloadBase( CStDatabase * pDB );
  83. BOOL SetMap( );
  84. BOOL SetAverage( PROGRESS_CALLBACK fnCallback = NULL, void *cookie = NULL, int nProgStart = 0, int nProgEnd = STKLIB_MAX_PROGRESS );
  85. BOOL Clear( );
  86. void CopyData( CStockContainer & src );
  87. static CStockContainer * m_pSortContainer;
  88. UINT m_nSortVariantID;
  89. BOOL m_bSortAscend;
  90. BOOL Sort( int nSortVariantID, BOOL bAscend );
  91. void SetSortID( CSPDWordArray & auidsort );
  92. BOOL GetMultiSortIDArray( CSPDWordArray & adwSortID, LONG lStockType, UINT nSLH, BOOL bAsc, int nCount );
  93. BOOL GetVariantSaveValue( double *pValue, UINT nVariantID, CStockInfo &info, BOOL *pNoValue );
  94. void SetVariantSaveValue( double Value, UINT nVariantID, CStockInfo &info, BOOL bNoValue );
  95. void ClearVariantSaveValue( );
  96. protected:
  97. int m_nType;
  98. DWORD m_dwDate;
  99. CSPString m_strDomain;
  100. int m_nCurrentStock;
  101. CSPString m_strCurrentStockCode; // 当m_nCurrentStock==-1时,即当前股票不在Container数组之内,则记录其StockCode
  102. CStockInfo m_infoAverage;
  103. CStockInfo m_infoWeightAverage;
  104. CStockInfo m_infoNull;
  105. CSPMapStringToPtr m_map;
  106. CSPPtrArray m_aptrSaveValueArray;
  107. CSPDWordArray m_auidSort;
  108. CSPMutex m_mutex;
  109. };
  110. /***
  111. 板块类,包含板块名称、板块中的股票代码
  112. */
  113. class STKLIB_API CDomain : public CSPStringArray
  114. {
  115. public:
  116. CDomain( );
  117. CDomain( const CDomain &src );
  118. virtual ~CDomain( );
  119. CSPString m_strName;
  120. BOOL AddStock( LPCTSTR lpszStockCode );
  121. BOOL AddStockSort( LPCTSTR lpszStockCode );
  122. BOOL RemoveStock( LPCTSTR lpszStockCode );
  123. CDomain & operator = ( const CDomain &src );
  124. int AddFxjDomain( LPCTSTR lpszFile );
  125. };
  126. //template class __declspec(dllexport) CSPArray<CDomain, CDomain &>;
  127. typedef CSPArray<CDomain, CDomain &> CDomainArray;
  128. /***
  129. 板块数组类
  130. */
  131. class STKLIB_API CDomainContainer : public CDomainArray
  132. {
  133. public:
  134. CDomainContainer( );
  135. CDomainContainer( CDomainContainer & src );
  136. virtual ~CDomainContainer( );
  137. CDomainContainer & operator = ( CDomainContainer & src );
  138. int AddDomain( LPCTSTR lpszDomainName );
  139. int AddDomain( CDomain & newdomain );
  140. int AddDomainReplace( CDomain & newdomain );
  141. int AddDomainReplace( CDomainContainer & newdomains );
  142. int RemoveDomain( LPCTSTR lpszDomainName );
  143. BOOL AddDomainStock( LPCTSTR lpszDomainName, LPCTSTR lpszStockCode );
  144. BOOL AddDomainStock( LPCTSTR lpszDomainName, CSPStringArray & astr );
  145. BOOL RemoveDomainStock( LPCTSTR lpszDomainName, LPCTSTR lpszStockCode );
  146. BOOL RemoveDomainStockAll( LPCTSTR lpszDomainName );
  147. BOOL GetDomainStocks( LPCTSTR lpszDomain, CSPStringArray &astr );
  148. BOOL GetDomains( CSPStringArray & astr );
  149. BOOL GetAllDomainInfo( CStockContainer * pContainer, DWORD dwDate );
  150. BOOL Load( LPCTSTR lpszFileName );
  151. BOOL Store( LPCTSTR lpszFileName );
  152. protected:
  153. };
  154. #endif // __STKLIB_CONTAINER_H__