[BACK]Return to patch-cuneiform_src_Kern_rbal_src_statsearchbl_cpp CVS log [TXT][DIR] Up to [local] / ports / graphics / cuneiform / patches

Annotation of ports/graphics/cuneiform/patches/patch-cuneiform_src_Kern_rbal_src_statsearchbl_cpp, Revision 1.1

1.1     ! yason       1: $OpenBSD$
        !             2: --- cuneiform_src/Kern/rbal/src/statsearchbl.cpp.orig  Sat Jul  3 17:55:39 2010
        !             3: +++ cuneiform_src/Kern/rbal/src/statsearchbl.cpp       Wed Jul  7 13:28:21 2010
        !             4: @@ -56,27 +56,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O
        !             5:
        !             6:  // StatSearchBL.cpp : implementation file
        !             7:  //
        !             8: +#include <malloc.h>
        !             9:  #include <memory.h>
        !            10:  /*#include <windows.h>
        !            11:  #include <Winbase.h>*/
        !            12: -#include <string.h>
        !            13:  #include <stdlib.h>
        !            14: +#include <string.h>
        !            15:
        !            16: -#if defined(__APPLE__) && defined(__MACH__)
        !            17: -#include <malloc/malloc.h>
        !            18: -#define malloc_usable_size(a) malloc_size(a)
        !            19: -
        !            20: -#elif defined(__FreeBSD__)
        !            21: -#include <malloc_np.h>
        !            22: -
        !            23: -#elif defined(WIN32)
        !            24: -#include <malloc.h>
        !            25: -#define malloc_usable_size(a) _msize(a)
        !            26: -
        !            27: -#else
        !            28: -#include <malloc.h>
        !            29: -#endif
        !            30: -
        !            31:  //#include "puma.h"
        !            32:  #include "dpuma.h"
        !            33:  #include "statsearchbl.h"
        !            34: @@ -94,15 +80,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O
        !            35:
        !            36:  int16_t minrow;
        !            37:
        !            38: -void stat_def_b3_b4(CSTR_line line, CSTR_attr *p_attr,
        !            39: -                         int16_t *p_Y2Arr, int16_t *p_FreqY2Arr, int16_t *Ns3, int16_t *Ns4)
        !            40: +void stat_def_b3_b4(CSTR_line line, CSTR_attr *p_attr, int16_t sz_Y2Arr, int16_t *p_Y2Arr,
        !            41: +                    int16_t sz_FreqY2Arr, int16_t *p_FreqY2Arr, int16_t *Ns3, int16_t *Ns4)
        !            42:  {
        !            43:        if(line == 0 || p_attr == NULL || p_Y2Arr == NULL || p_FreqY2Arr == NULL) return;
        !            44:
        !            45:        ROW_STRUCT row_str;
        !            46:
        !            47: -      int16_t sz_FreqY2Arr = malloc_usable_size(p_FreqY2Arr) / sizeof(int16_t);
        !            48: -      int16_t     sz_Y2Arr = malloc_usable_size(p_Y2Arr) / sizeof(int16_t);
        !            49:  //    if(p_attr->number == 39) DebugBreak();// && p_attr->language == 0
        !            50:
        !            51:        //главный максимум
        !            52: @@ -113,7 +97,7 @@ void stat_def_b3_b4(CSTR_line line, CSTR_attr *p_attr,
        !            53:        row_str.ValGM   = p_FreqY2Arr[max_FreqY2Arr];
        !            54:
        !            55:        //правый максимум (относительно главного максимума)
        !            56: -      int16_t right_diff = stat_Right_diff_from_max(p_FreqY2Arr, max_FreqY2Arr);
        !            57: +      int16_t right_diff = stat_Right_diff_from_max(sz_FreqY2Arr, p_FreqY2Arr, max_FreqY2Arr);
        !            58:
        !            59:        right_diff = MAX(3, right_diff);
        !            60:
        !            61: @@ -1232,15 +1216,16 @@ Bool stat_interp_bsl_by_b4(CSTR_line line, int16_t ln_
        !            62:        return TRUE;
        !            63:  }
        !            64:
        !            65: -void stat_def_b1_b2(CSTR_line line, CSTR_attr *p_attr, int16_t *p_Y1Arr,
        !            66: -                         int16_t *p_Y2Arr, int16_t *p_FreqY1Arr, int16_t *Ns1, int16_t *Ns2)
        !            67: +void stat_def_b1_b2(CSTR_line line, CSTR_attr *p_attr,
        !            68: +                         int16_t sz_Y1Arr, int16_t *p_Y1Arr,
        !            69: +                         int16_t sz_Y2Arr, int16_t *p_Y2Arr,
        !            70: +                         int16_t sz_FreqY1Arr, int16_t *p_FreqY1Arr,
        !            71: +                         int16_t *Ns1, int16_t *Ns2)
        !            72:  {
        !            73:        if(line == 0 || p_attr == NULL || p_Y1Arr == NULL ||p_Y2Arr == NULL || p_FreqY1Arr == NULL) return;
        !            74:
        !            75:        ROW_STRUCT row_str;
        !            76:
        !            77: -      int16_t sz_FreqY1Arr = malloc_usable_size(p_FreqY1Arr) / sizeof(int16_t);
        !            78: -      int16_t     sz_Y1Arr = malloc_usable_size(p_Y1Arr) / sizeof(int16_t);
        !            79:        int16_t    min_Y1Arr = p_Y1Arr[stat_index_GlobMin(p_Y1Arr, sz_Y1Arr)];
        !            80:
        !            81:  //    if(p_attr->number == 161) DebugBreak(); // && p_attr->language == 0
        !            82: @@ -1303,7 +1288,7 @@ void stat_def_b1_b2(CSTR_line line, CSTR_attr *p_attr,
        !            83:        }
        !            84:
        !            85:        //правый максимум
        !            86: -      int16_t right_diff = stat_Right_diff_from_max(p_FreqY1Arr, max_FreqY1Arr);
        !            87: +      int16_t right_diff = stat_Right_diff_from_max(sz_FreqY1Arr, p_FreqY1Arr, max_FreqY1Arr);
        !            88:        right_diff = MAX(right_diff, 3);
        !            89:
        !            90:        int16_t rightMax_FreqY1Arr = stat_index_RightLocMax(p_FreqY1Arr, sz_FreqY1Arr, max_FreqY1Arr + right_diff);
        !            91: @@ -1420,13 +1405,10 @@ int16_t stat_LineLength(CSTR_line line)
        !            92:        return i;
        !            93:  }
        !            94:
        !            95: -void stat_FormArrays(CSTR_line line, int16_t row, int16_t *p_Y1Array, int16_t *p_Y2Array)
        !            96: +void stat_FormArrays(CSTR_line line, int16_t row, int16_t sz_Y1Array, int16_t *p_Y1Array,
        !            97: +                     int16_t sz_Y2Array, int16_t *p_Y2Array)
        !            98:  {
        !            99:        if(p_Y1Array == NULL || p_Y2Array == NULL) return;
        !           100: -
        !           101: -      int16_t  sz_Y1Array = malloc_usable_size(p_Y1Array) / sizeof(int16_t);
        !           102: -      int16_t  sz_Y2Array = malloc_usable_size(p_Y2Array) / sizeof(int16_t);
        !           103: -
        !           104:        if(sz_Y1Array == 0 || sz_Y2Array == 0) return;
        !           105:
        !           106:        CSTR_attr line_attr;
        !           107: @@ -1485,28 +1467,24 @@ void stat_FormArrays(CSTR_line line, int16_t row, int1
        !           108:  void StatSearchBL(CSTR_line line, CSTR_attr *p_attr,
        !           109:                                  int16_t *Ns1, int16_t *Ns2, int16_t *Ns3, int16_t *Ns4)
        !           110:  {
        !           111: -      int16_t  n = stat_LineLength(line);  //malloc_usable_size(pY1Array) / sizeof(int16_t) - размерность pY1Array и pY2Array
        !           112: -      int16_t *pY1Array = (int16_t *) malloc(sizeof(int16_t) * n);
        !           113: -      int16_t *pY2Array = (int16_t *) malloc(sizeof(int16_t) * n);
        !           114: +      int16_t  n = stat_LineLength(line);
        !           115: +      int16_t *pY1Array = (int16_t *)calloc(n, sizeof(int16_t));
        !           116: +      int16_t *pY2Array = (int16_t *)calloc(n, sizeof(int16_t));
        !           117:
        !           118:        if(pY2Array == NULL || pY1Array == NULL)
        !           119:        {
        !           120: -              p_attr = (CSTR_attr *) NULL;
        !           121: +              free(pY1Array);
        !           122: +              free(pY2Array);
        !           123:                return;
        !           124:        }
        !           125:
        !           126:  //    DebugBreak();
        !           127: -      stat_FormArrays(line, p_attr->row, pY1Array, pY2Array);
        !           128: +      stat_FormArrays(line, p_attr->row, n, pY1Array, n, pY2Array);
        !           129:
        !           130: -      if(pY1Array == NULL || pY2Array == NULL)
        !           131: -      {
        !           132: -              p_attr = (CSTR_attr *) NULL;
        !           133: -              return;
        !           134: -      }
        !           135: -
        !           136:        //значения гистограммы
        !           137: -      int16_t *pFrequencyY1Array =    stat_gistoGramma(pY1Array, n);
        !           138: -      int16_t *pFrequencyY2Array =    stat_gistoGramma(pY2Array, n);
        !           139: +      int16_t nfreq1 = n, nfreq2 = n;
        !           140: +      int16_t *pFrequencyY1Array =    stat_gistoGramma(pY1Array, &nfreq1);
        !           141: +      int16_t *pFrequencyY2Array =    stat_gistoGramma(pY2Array, &nfreq2);
        !           142:
        !           143:        if(pFrequencyY1Array != NULL && pFrequencyY2Array != NULL)
        !           144:        {
        !           145: @@ -1517,29 +1495,31 @@ void StatSearchBL(CSTR_line line, CSTR_attr *p_attr,
        !           146:                        if(line == 0 || p_attr->number == 0 || p_attr->number > CSTR_GetMaxNumber())
        !           147:                        {
        !           148:                                p_attr = (CSTR_attr *) NULL;
        !           149: -                              return;
        !           150: +                              goto cleanup;
        !           151:                        }
        !           152:
        !           153:                        //собственно поиск БЛ
        !           154: -                      stat_def_b3_b4(line, p_attr, pY2Array, pFrequencyY2Array, Ns3, Ns4);
        !           155: -                      stat_def_b1_b2(line, p_attr, pY1Array,
        !           156: -                              pY2Array, pFrequencyY1Array, Ns1, Ns2);
        !           157: +                      stat_def_b3_b4(line, p_attr, n, pY2Array, nfreq2, pFrequencyY2Array,
        !           158: +                              Ns3, Ns4);
        !           159: +                      stat_def_b1_b2(line, p_attr, n, pY1Array, n, pY2Array,
        !           160: +                              nfreq1, pFrequencyY1Array, Ns1, Ns2);
        !           161:                        stat_def_imaginary_bl(p_attr, Ns1, Ns2, Ns4);
        !           162:                }
        !           163:                else
        !           164:                {
        !           165:                        p_attr = (CSTR_attr *) NULL;
        !           166: -                      return;
        !           167: +                      goto cleanup;
        !           168:                }
        !           169:
        !           170:                free(pFrequencyY1Array);
        !           171: -              free(pY1Array);
        !           172: -
        !           173:                free(pFrequencyY2Array);
        !           174: -              free(pY2Array);
        !           175:        }
        !           176:        else
        !           177:                p_attr = (CSTR_attr *) NULL;
        !           178: +
        !           179: +cleanup:
        !           180: +      free(pY1Array);
        !           181: +      free(pY2Array);
        !           182:  }
        !           183:
        !           184:  int16_t stat_Hypothesis(int32_t line_number, int16_t diff_b3_bsl)
        !           185: @@ -1550,7 +1530,8 @@ int16_t stat_Hypothesis(int32_t line_number, int16_t d
        !           186:        {
        !           187:                int32_t line_start = MAX(1, line_number - LNCNST);
        !           188:
        !           189: -              CSTR_attr *pCSTR_attrArray = (CSTR_attr *)malloc((line_number - line_start) * sizeof(CSTR_attr));
        !           190: +              CSTR_attr *pCSTR_attrArray = (CSTR_attr *)calloc(line_number - line_start,
        !           191: +                  sizeof(CSTR_attr));
        !           192:
        !           193:                if(pCSTR_attrArray != NULL)
        !           194:                {
        !           195: @@ -1586,10 +1567,8 @@ Bool stat_FormCSTR_attrArray(int32_t line_start, int32
        !           196:  {
        !           197:        if(line_stop > CSTR_GetMaxNumber() || pCSTR_attrArray == NULL) return FALSE;
        !           198:
        !           199: -      int16_t sz = malloc_usable_size(pCSTR_attrArray) / sizeof(CSTR_attr);
        !           200: -      if(sz < line_stop - line_start) return FALSE;
        !           201: -
        !           202: -      for(int32_t l = 0; l < line_stop - line_start; l++)
        !           203: +      int16_t sz = line_stop - line_start;
        !           204: +      for(int32_t l = 0; l < sz; l++)
        !           205:        {
        !           206:                CSTR_attr m_attr;
        !           207:
        !           208: @@ -1675,8 +1654,7 @@ int16_t stat_Mode_diff_b2_b1(int32_t line_number, int1
        !           209:
        !           210:                if(pCSTR_attrArray != NULL)
        !           211:                {
        !           212: -                      int16_t *p_diff = (int16_t *)malloc((line_number - line_start) * sizeof(int16_t));
        !           213: -
        !           214: +                      int16_t *p_diff = (int16_t *)calloc(line_number - line_start, sizeof(int16_t));
        !           215:                        if(p_diff != NULL)
        !           216:                        {
        !           217:                                Bool bRet = stat_FormCSTR_attrArray(line_start, line_number, pCSTR_attrArray);
        !           218: @@ -1701,10 +1679,10 @@ int16_t stat_Mode_diff_b2_b1(int32_t line_number, int1
        !           219:                                        if(jCount !=0)
        !           220:                                        {
        !           221:                                                p_diff = (int16_t *) realloc(p_diff, jCount * sizeof(int16_t));
        !           222: -                                              int16_t *pFrequencyArray = stat_gistoGramma(p_diff, jCount);
        !           223: +                                              int16_t szFrequencyArray = jCount;
        !           224: +                                              int16_t *pFrequencyArray = stat_gistoGramma(p_diff, &szFrequencyArray);
        !           225:                                                if(pFrequencyArray != NULL)
        !           226:                                                {
        !           227: -                                                      int16_t szFrequencyArray = malloc_usable_size(pFrequencyArray) / sizeof(int16_t);
        !           228:                                                        int16_t          minArray = p_diff[stat_index_GlobMin(p_diff,jCount)];
        !           229:                                                        int16_t maxFrequencyArray = stat_index_GlobMax(pFrequencyArray,szFrequencyArray, G);
        !           230:                                                        if(szFrequencyArray != 0) free(pFrequencyArray);
        !           231: @@ -1758,9 +1736,8 @@ int16_t stat_Left_diff_from_max(int16_t *p_FrequencyAr
        !           232:        return jret;
        !           233:  }
        !           234:
        !           235: -int16_t stat_Right_diff_from_max(int16_t *p_FrequencyArray, int16_t max_FrequencyArray)
        !           236: +int16_t stat_Right_diff_from_max(int16_t sz, int16_t *p_FrequencyArray, int16_t max_FrequencyArray)
        !           237:  {
        !           238: -      int16_t sz = malloc_usable_size(p_FrequencyArray) / sizeof(int16_t);
        !           239:        int16_t jret = sz - max_FrequencyArray + 1;
        !           240:        int16_t derivative = 0;
        !           241:        int16_t i;
        !           242: @@ -1804,7 +1781,7 @@ int16_t stat_Mode_diff_b3_b4(int32_t line_number, int1
        !           243:
        !           244:                if(pCSTR_attrArray != NULL)
        !           245:                {
        !           246: -                      int16_t *p_diff = (int16_t *)malloc((line_number - line_start) * sizeof(int16_t));
        !           247: +                      int16_t *p_diff = (int16_t *)calloc(line_number - line_start, sizeof(int16_t));
        !           248:
        !           249:                        if(p_diff != NULL)
        !           250:                        {
        !           251: @@ -1830,10 +1807,10 @@ int16_t stat_Mode_diff_b3_b4(int32_t line_number, int1
        !           252:                                        if(jCount !=0)
        !           253:                                        {
        !           254:                                                p_diff = (int16_t *) realloc(p_diff, jCount * sizeof(int16_t));
        !           255: -                                              int16_t  *pFrequencyArray = stat_gistoGramma(p_diff, jCount);
        !           256: +                                              int16_t szFrequencyArray = jCount;
        !           257: +                                              int16_t *pFrequencyArray = stat_gistoGramma(p_diff, &szFrequencyArray);
        !           258:                                                if(pFrequencyArray != NULL)
        !           259:                                                {
        !           260: -                                                      int16_t  szFrequencyArray = malloc_usable_size(pFrequencyArray) / sizeof(int16_t);
        !           261:                                                        int16_t          minArray = p_diff[stat_index_GlobMin(p_diff,jCount)];
        !           262:                                                        int16_t maxFrequencyArray = stat_index_GlobMax(pFrequencyArray,szFrequencyArray, G);
        !           263:                                                        if(szFrequencyArray != 0) free(pFrequencyArray);
        !           264: @@ -1868,7 +1845,7 @@ int16_t stat_Mode_diff_b2_b3(int32_t line_number, int1
        !           265:
        !           266:                if(pCSTR_attrArray != NULL)
        !           267:                {
        !           268: -                      int16_t *p_diff = (int16_t *)malloc((line_number - line_start) * sizeof(int16_t));
        !           269: +                      int16_t *p_diff = (int16_t *)calloc(line_number - line_start, sizeof(int16_t));
        !           270:
        !           271:                        if(p_diff != NULL)
        !           272:                        {
        !           273: @@ -1899,10 +1876,10 @@ int16_t stat_Mode_diff_b2_b3(int32_t line_number, int1
        !           274:                                        if(jCount !=0)
        !           275:                                        {
        !           276:                                                p_diff = (int16_t *) realloc(p_diff, jCount * sizeof(int16_t));
        !           277: -                                              int16_t  *pFrequencyArray = stat_gistoGramma(p_diff, jCount);
        !           278: +                                              int16_t szFrequencyArray = jCount;
        !           279: +                                              int16_t *pFrequencyArray = stat_gistoGramma(p_diff, &szFrequencyArray);
        !           280:                                                if(pFrequencyArray != NULL)
        !           281:                                                {
        !           282: -                                                      int16_t  szFrequencyArray = malloc_usable_size(pFrequencyArray) / sizeof(int16_t);
        !           283:                                                        int16_t          minArray = p_diff[stat_index_GlobMin(p_diff,jCount)];
        !           284:                                                        int16_t maxFrequencyArray = stat_index_GlobMax(pFrequencyArray,szFrequencyArray, G);
        !           285:                                                        if(szFrequencyArray != 0) free(pFrequencyArray);

CVSweb