DXDXA_MFC.cpp
资源名称:VQ-DHMM.rar [点击查看]
上传用户:avbj512
上传日期:2013-09-18
资源大小:6239k
文件大小:4k
源码类别:
DSP编程
开发平台:
Visual C++
- // DXDXA_MFC.cpp:
- // Implementation of the DXDXA_MFC Module.
- // That is Data Structure & API of Dynamic X Dimension X Array.
- //
- // Created 2001/08, By DongMing, MDSR.
- //
- //////////////////////////////////////////////////////////////////////
- #include "stdafx.h"
- #include "DXDXA_MFC.h"
- //////////////////////////////////////////////////////////////////////
- // API functions
- //////////////////////////////////////////////////////////////////////
- // 函数名称:d2dda_New
- // 函数功能:为二维-动态-double-数组申请空间
- // 函数性质:API
- // 输入参数:
- // nDim1,维数 1
- // nDim2,维数 2
- // 输出参数:
- // 无
- // 返回值:
- // 成功时候返回一个DYNA_2DIM_DOUBLE_ARRAY指针;失败返回NULL
- // 备注:返回的DYNA_2DIM_DOUBLE_ARRAY类型的变量 d2dda,可以如访问普通数组
- // 一样来访问,d2dda[Index1][Index2]
- DYNA_2DIM_DOUBLE_ARRAY d2dda_New(int nDim1, int nDim2)
- {
- DYNA_2DIM_DOUBLE_ARRAY Result;
- int i;
- Result = new PDOUBLE[nDim1];
- if (Result == NULL) return NULL;
- memset(Result, 0, sizeof(PDOUBLE) * nDim1);
- for (i = 0; i < nDim1; i++)
- {
- Result[i] = new double[nDim2];
- if (Result[i] == NULL)
- {
- d2dda_Free(Result, nDim1, nDim2);
- return NULL;
- }
- }
- return Result;
- }
- //////////////////////////////////////////////////////////////////////
- // 函数名称:d2dda_Free
- // 函数功能:为二维-动态-double-数组释放空间
- // 函数性质:API
- // 输入参数:
- // d2dda,数组指针
- // nDim1,维数 1
- // nDim2,维数 2
- // 输出参数:
- // 无
- // 返回值:
- // 无
- // 备注:与d2dda_New搭配使用
- void d2dda_Free(DYNA_2DIM_DOUBLE_ARRAY d2dda, int nDim1, int nDim2)
- {
- int i;
- if (d2dda == NULL) return;
- for (i = 0; i < nDim1; i++)
- {
- if (d2dda[i] != NULL) delete[] d2dda[i];
- }
- delete[] d2dda;
- }
- DYNA_3DIM_DOUBLE_ARRAY d3dda_New(int nDim1, int nDim2, int nDim3)
- {
- DYNA_3DIM_DOUBLE_ARRAY Result;
- int i;
- Result = new DYNA_2DIM_DOUBLE_ARRAY[nDim1];
- if (Result == NULL) return NULL;
- memset(Result, 0, sizeof(DYNA_2DIM_DOUBLE_ARRAY) * nDim1);
- for (i = 0; i < nDim1; i++)
- {
- Result[i] = d2dda_New(nDim2, nDim3);
- if (Result[i] == NULL)
- {
- d3dda_Free(Result, nDim1, nDim2, nDim3);
- return NULL;
- }
- }
- return Result;
- }
- void d3dda_Free(DYNA_3DIM_DOUBLE_ARRAY d3dda, int nDim1, int nDim2, int nDim3)
- {
- int i;
- if (d3dda == NULL) return;
- for (i = 0; i < nDim1; i++)
- {
- if (d3dda[i] != NULL) d2dda_Free(d3dda[i], nDim2, nDim3);
- }
- delete[] d3dda;
- }
- //////////////////////////////////////////////////////////////////////
- // 函数名称:d2dna_New
- // 函数功能:为二维-动态-int-数组申请空间
- // 函数性质:API
- // 输入参数:
- // nDim1,维数 1
- // nDim2,维数 2
- // 输出参数:
- // 无
- // 返回值:
- // 成功时候返回一个DYNA_2DIM_INT_ARRAY指针;失败返回NULL
- // 备注:返回的DYNA_2DIM_INT_ARRAY类型的变量 d2dna,可以如访问普通数组
- // 一样来访问,d2dna[Index1][Index2]
- DYNA_2DIM_INT_ARRAY d2dna_New(int nDim1, int nDim2)
- {
- DYNA_2DIM_INT_ARRAY Result;
- int i;
- Result = new PINT[nDim1];
- if (Result == NULL) return NULL;
- memset(Result, 0, sizeof(PINT) * nDim1);
- for (i = 0; i < nDim1; i++)
- {
- Result[i] = new int[nDim2];
- if (Result[i] == NULL)
- {
- d2dna_Free(Result, nDim1, nDim2);
- return NULL;
- }
- }
- return Result;
- }
- //////////////////////////////////////////////////////////////////////
- // 函数名称:d2dna_Free
- // 函数功能:为二维-动态-int-数组释放空间
- // 函数性质:API
- // 输入参数:
- // d2dna,数组指针
- // nDim1,维数 1
- // nDim2,维数 2
- // 输出参数:
- // 无
- // 返回值:
- // 无
- // 备注:与d2dna_New搭配使用
- void d2dna_Free(DYNA_2DIM_INT_ARRAY d2dna, int nDim1, int nDim2)
- {
- int i;
- if (d2dna == NULL) return;
- for (i = 0; i < nDim1; i++)
- {
- if (d2dna[i] != NULL) delete[] d2dna[i];
- }
- delete[] d2dna;
- }
- DYNA_3DIM_INT_ARRAY d3dna_New(int nDim1, int nDim2, int nDim3)
- {
- DYNA_3DIM_INT_ARRAY Result;
- int i;
- Result = new DYNA_2DIM_INT_ARRAY[nDim1];
- if (Result == NULL) return NULL;
- memset(Result, 0, sizeof(DYNA_2DIM_INT_ARRAY) * nDim1);
- for (i = 0; i < nDim1; i++)
- {
- Result[i] = d2dna_New(nDim2, nDim3);
- if (Result[i] == NULL)
- {
- d3dna_Free(Result, nDim1, nDim2, nDim3);
- return NULL;
- }
- }
- return Result;
- }
- void d3dna_Free(DYNA_3DIM_INT_ARRAY d3dna, int nDim1, int nDim2, int nDim3)
- {
- int i;
- if (d3dna == NULL) return;
- for (i = 0; i < nDim1; i++)
- {
- if (d3dna[i] != NULL) d2dna_Free(d3dna[i], nDim2, nDim3);
- }
- delete[] d3dna;
- }