DXDXA_MFC.cpp
上传用户:avbj512
上传日期:2013-09-18
资源大小:6239k
文件大小:4k
源码类别:

DSP编程

开发平台:

Visual C++

  1. // DXDXA_MFC.cpp:
  2. // Implementation of the DXDXA_MFC Module.
  3. // That is Data Structure & API of Dynamic X Dimension X Array.
  4. //
  5. // Created 2001/08, By DongMing, MDSR.
  6. //
  7. //////////////////////////////////////////////////////////////////////
  8. #include "stdafx.h"
  9. #include "DXDXA_MFC.h"
  10. //////////////////////////////////////////////////////////////////////
  11. // API functions
  12. //////////////////////////////////////////////////////////////////////
  13. // 函数名称:d2dda_New
  14. // 函数功能:为二维-动态-double-数组申请空间
  15. // 函数性质:API
  16. // 输入参数:
  17. // nDim1,维数 1
  18. // nDim2,维数 2
  19. // 输出参数:
  20. // 无
  21. // 返回值:
  22. // 成功时候返回一个DYNA_2DIM_DOUBLE_ARRAY指针;失败返回NULL
  23. // 备注:返回的DYNA_2DIM_DOUBLE_ARRAY类型的变量 d2dda,可以如访问普通数组
  24. // 一样来访问,d2dda[Index1][Index2]
  25. DYNA_2DIM_DOUBLE_ARRAY d2dda_New(int nDim1, int nDim2)
  26. {
  27. DYNA_2DIM_DOUBLE_ARRAY Result;
  28. int i;
  29. Result = new PDOUBLE[nDim1];
  30. if (Result == NULL) return NULL;
  31. memset(Result, 0, sizeof(PDOUBLE) * nDim1);
  32. for (i = 0; i < nDim1; i++)
  33. {
  34. Result[i] = new double[nDim2];
  35. if (Result[i] == NULL)
  36. {
  37. d2dda_Free(Result, nDim1, nDim2);
  38. return NULL;
  39. }
  40. }
  41. return Result;
  42. }
  43. //////////////////////////////////////////////////////////////////////
  44. // 函数名称:d2dda_Free
  45. // 函数功能:为二维-动态-double-数组释放空间
  46. // 函数性质:API
  47. // 输入参数:
  48. // d2dda,数组指针
  49. // nDim1,维数 1
  50. // nDim2,维数 2
  51. // 输出参数:
  52. // 无
  53. // 返回值:
  54. // 无
  55. // 备注:与d2dda_New搭配使用
  56. void d2dda_Free(DYNA_2DIM_DOUBLE_ARRAY d2dda, int nDim1, int nDim2)
  57. {
  58. int i;
  59. if (d2dda == NULL) return;
  60. for (i = 0; i < nDim1; i++)
  61. {
  62. if (d2dda[i] != NULL) delete[] d2dda[i];
  63. }
  64. delete[] d2dda;
  65. }
  66. DYNA_3DIM_DOUBLE_ARRAY d3dda_New(int nDim1, int nDim2, int nDim3)
  67. {
  68. DYNA_3DIM_DOUBLE_ARRAY Result;
  69. int i;
  70. Result = new DYNA_2DIM_DOUBLE_ARRAY[nDim1];
  71. if (Result == NULL) return NULL;
  72. memset(Result, 0, sizeof(DYNA_2DIM_DOUBLE_ARRAY) * nDim1);
  73. for (i = 0; i < nDim1; i++)
  74. {
  75. Result[i] = d2dda_New(nDim2, nDim3);
  76. if (Result[i] == NULL)
  77. {
  78. d3dda_Free(Result, nDim1, nDim2, nDim3);
  79. return NULL;
  80. }
  81. }
  82. return Result;
  83. }
  84. void d3dda_Free(DYNA_3DIM_DOUBLE_ARRAY d3dda, int nDim1, int nDim2, int nDim3)
  85. {
  86. int i;
  87. if (d3dda == NULL) return;
  88. for (i = 0; i < nDim1; i++)
  89. {
  90. if (d3dda[i] != NULL) d2dda_Free(d3dda[i], nDim2, nDim3);
  91. }
  92. delete[] d3dda;
  93. }
  94. //////////////////////////////////////////////////////////////////////
  95. // 函数名称:d2dna_New
  96. // 函数功能:为二维-动态-int-数组申请空间
  97. // 函数性质:API
  98. // 输入参数:
  99. // nDim1,维数 1
  100. // nDim2,维数 2
  101. // 输出参数:
  102. // 无
  103. // 返回值:
  104. // 成功时候返回一个DYNA_2DIM_INT_ARRAY指针;失败返回NULL
  105. // 备注:返回的DYNA_2DIM_INT_ARRAY类型的变量 d2dna,可以如访问普通数组
  106. // 一样来访问,d2dna[Index1][Index2]
  107. DYNA_2DIM_INT_ARRAY d2dna_New(int nDim1, int nDim2)
  108. {
  109. DYNA_2DIM_INT_ARRAY Result;
  110. int i;
  111. Result = new PINT[nDim1];
  112. if (Result == NULL) return NULL;
  113. memset(Result, 0, sizeof(PINT) * nDim1);
  114. for (i = 0; i < nDim1; i++)
  115. {
  116. Result[i] = new int[nDim2];
  117. if (Result[i] == NULL)
  118. {
  119. d2dna_Free(Result, nDim1, nDim2);
  120. return NULL;
  121. }
  122. }
  123. return Result;
  124. }
  125. //////////////////////////////////////////////////////////////////////
  126. // 函数名称:d2dna_Free
  127. // 函数功能:为二维-动态-int-数组释放空间
  128. // 函数性质:API
  129. // 输入参数:
  130. // d2dna,数组指针
  131. // nDim1,维数 1
  132. // nDim2,维数 2
  133. // 输出参数:
  134. // 无
  135. // 返回值:
  136. // 无
  137. // 备注:与d2dna_New搭配使用
  138. void d2dna_Free(DYNA_2DIM_INT_ARRAY d2dna, int nDim1, int nDim2)
  139. {
  140. int i;
  141. if (d2dna == NULL) return;
  142. for (i = 0; i < nDim1; i++)
  143. {
  144. if (d2dna[i] != NULL) delete[] d2dna[i];
  145. }
  146. delete[] d2dna;
  147. }
  148. DYNA_3DIM_INT_ARRAY d3dna_New(int nDim1, int nDim2, int nDim3)
  149. {
  150. DYNA_3DIM_INT_ARRAY Result;
  151. int i;
  152. Result = new DYNA_2DIM_INT_ARRAY[nDim1];
  153. if (Result == NULL) return NULL;
  154. memset(Result, 0, sizeof(DYNA_2DIM_INT_ARRAY) * nDim1);
  155. for (i = 0; i < nDim1; i++)
  156. {
  157. Result[i] = d2dna_New(nDim2, nDim3);
  158. if (Result[i] == NULL)
  159. {
  160. d3dna_Free(Result, nDim1, nDim2, nDim3);
  161. return NULL;
  162. }
  163. }
  164. return Result;
  165. }
  166. void d3dna_Free(DYNA_3DIM_INT_ARRAY d3dna, int nDim1, int nDim2, int nDim3)
  167. {
  168. int i;
  169. if (d3dna == NULL) return;
  170. for (i = 0; i < nDim1; i++)
  171. {
  172. if (d3dna[i] != NULL) d2dna_Free(d3dna[i], nDim2, nDim3);
  173. }
  174. delete[] d3dna;
  175. }