2002-10-25 14:30 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
This commit is contained in:
@@ -8,6 +8,18 @@
|
||||
2002-12-01 23:12 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
||||
*/
|
||||
|
||||
2002-10-25 14:30 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
|
||||
* source/rtl/cdpapi.c
|
||||
* source/codepage/cdpru866.c
|
||||
* source/codepage/cdprukoi.c
|
||||
* source/codepage/cdpruwin.c
|
||||
* source/vm/hvm.c
|
||||
* Memory for codepage tables is allocated dynamically now - this is needed
|
||||
to provide a possibility of loading codepages from external file while
|
||||
run-time.
|
||||
* Possibility to have the same weight for some characters ( usually accented
|
||||
and appropriate unaccented ) is implemented.
|
||||
|
||||
2002-10-25 11:38 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
|
||||
* source/rdd/dbfntx/dbfntx1.c
|
||||
! Few fixes, related to codepages support
|
||||
|
||||
@@ -58,13 +58,9 @@
|
||||
#include "hbapi.h"
|
||||
#include "hbapicdp.h"
|
||||
|
||||
static BYTE s_chars[256];
|
||||
static BYTE s_upper[256];
|
||||
static BYTE s_lower[256];
|
||||
|
||||
static HB_CODEPAGE s_codepage = { "RU866",32,
|
||||
"€<EFBFBD>‚ƒ„…†‡ˆ‰Š‹Œ<EFBFBD>Ž<EFBFBD><EFBFBD>‘’“”•–—˜™š›œ<EFBFBD>žŸ"," ¡¢£¤¥¦§¨©ª«¬®¯àáâãäåæçèéêëìíîï",
|
||||
0,s_chars,s_upper,s_lower };
|
||||
0,NULL,NULL,NULL };
|
||||
|
||||
HB_CODEPAGE_ANNOUNCE( RU866 );
|
||||
|
||||
|
||||
@@ -58,13 +58,9 @@
|
||||
#include "hbapi.h"
|
||||
#include "hbapicdp.h"
|
||||
|
||||
static BYTE s_chars[256];
|
||||
static BYTE s_upper[256];
|
||||
static BYTE s_lower[256];
|
||||
|
||||
static HB_CODEPAGE s_codepage = { "RUKOI8",32,
|
||||
"áâ÷çäåöúéêëìíîïðòóôõæèãþûýÿùøüàñ","ÁÂ×ÇÄÅÖÚÉÊËÌÍÎÏÐÒÓÔÕÆÈÃÞÛÝßÙØÜÀÑ",
|
||||
0,s_chars,s_upper,s_lower };
|
||||
0,NULL,NULL,NULL };
|
||||
|
||||
HB_CODEPAGE_ANNOUNCE( RUKOI8 );
|
||||
|
||||
|
||||
@@ -58,13 +58,9 @@
|
||||
#include "hbapi.h"
|
||||
#include "hbapicdp.h"
|
||||
|
||||
static BYTE s_chars[256];
|
||||
static BYTE s_upper[256];
|
||||
static BYTE s_lower[256];
|
||||
|
||||
static HB_CODEPAGE s_codepage = { "RU1251",32,
|
||||
"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞß","àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ",
|
||||
0,s_chars,s_upper,s_lower };
|
||||
0,NULL,NULL,NULL };
|
||||
|
||||
HB_CODEPAGE_ANNOUNCE( RU1251 );
|
||||
|
||||
|
||||
@@ -90,32 +90,51 @@ BOOL hb_cdpRegister( PHB_CODEPAGE cdpage )
|
||||
if( !s_cdpList[ iPos ] )
|
||||
{
|
||||
int i, iu, il, iumax = 0, ilmax = 0;
|
||||
char *ptrUpper = cdpage->CharsUpper;
|
||||
char *ptrLower = cdpage->CharsLower;
|
||||
char *ptr;
|
||||
|
||||
s_cdpList[ iPos ] = cdpage;
|
||||
|
||||
cdpage->lSort = FALSE;
|
||||
if( cdpage->nChars )
|
||||
{
|
||||
cdpage->s_chars = (BYTE*) hb_xgrab(256);
|
||||
cdpage->s_upper = (BYTE*) hb_xgrab(256);
|
||||
cdpage->s_lower = (BYTE*) hb_xgrab(256);
|
||||
for( i=0; i<256; i++ )
|
||||
{
|
||||
cdpage->s_chars[i] = 0;
|
||||
cdpage->s_upper[i] = toupper( (BYTE) i&255 );
|
||||
cdpage->s_lower[i] = tolower( (BYTE) i&255 );
|
||||
}
|
||||
for( i=0; i<cdpage->nChars; i++ )
|
||||
for( i=1; *ptrUpper; i++,ptrUpper++,ptrLower++ )
|
||||
{
|
||||
iu = (((int)cdpage->CharsUpper[i])&255);
|
||||
cdpage->s_chars[ iu ] = i+1;
|
||||
il = (((int)cdpage->CharsLower[i])&255);
|
||||
cdpage->s_chars[ il ] = i+1+cdpage->nChars;
|
||||
if( *ptrUpper == '=' )
|
||||
{
|
||||
for( ptr=ptrUpper+1; *ptr; ptr++ )
|
||||
*(ptr-1) = *ptr;
|
||||
*(ptr-1) = '\0';
|
||||
for( ptr=ptrLower+1; *ptr; ptr++ )
|
||||
*(ptr-1) = *ptr;
|
||||
*(ptr-1) = '\0';
|
||||
i--;
|
||||
}
|
||||
else if( *ptrUpper == '.' )
|
||||
{
|
||||
}
|
||||
iu = (((int)*ptrUpper)&255);
|
||||
cdpage->s_chars[ iu ] = i;
|
||||
il = (((int)*ptrLower)&255);
|
||||
cdpage->s_chars[ il ] = i+cdpage->nChars;
|
||||
if( iu < iumax || il < ilmax )
|
||||
cdpage->lSort = TRUE;
|
||||
iumax = iu; ilmax = il;
|
||||
|
||||
iu = ((int)(cdpage->CharsLower[i]))&255;
|
||||
cdpage->s_upper[iu] = cdpage->CharsUpper[i];
|
||||
il = ((int)(cdpage->CharsUpper[i]))&255;
|
||||
cdpage->s_lower[il] = cdpage->CharsLower[i];
|
||||
iu = ((int)(*ptrLower))&255;
|
||||
cdpage->s_upper[iu] = *ptrUpper;
|
||||
il = ((int)(*ptrUpper))&255;
|
||||
cdpage->s_lower[il] = *ptrLower;
|
||||
}
|
||||
}
|
||||
// printf( "\n%s %d",s_cdpage->id,s_cdpage->lSort );
|
||||
@@ -215,6 +234,22 @@ int hb_cdpcmp( char* szFirst, char* szSecond, int iLen, PHB_CODEPAGE cdpage )
|
||||
return iRet;
|
||||
}
|
||||
|
||||
void hb_cdpReleaseAll( void )
|
||||
{
|
||||
int iPos = 0;
|
||||
|
||||
while( iPos < HB_CDP_MAX_ && s_cdpList[iPos] )
|
||||
{
|
||||
if( s_cdpList[ iPos ]->s_chars )
|
||||
hb_xfree( s_cdpList[ iPos ]->s_chars );
|
||||
if( s_cdpList[ iPos ]->s_upper )
|
||||
hb_xfree( s_cdpList[ iPos ]->s_upper );
|
||||
if( s_cdpList[ iPos ]->s_lower )
|
||||
hb_xfree( s_cdpList[ iPos ]->s_lower );
|
||||
iPos ++;
|
||||
}
|
||||
}
|
||||
|
||||
HB_FUNC( HB_SETCODEPAGE )
|
||||
{
|
||||
hb_retc( s_cdpage->id );
|
||||
|
||||
@@ -195,6 +195,7 @@ static void hb_vmReleaseLocalSymbols( void ); /* releases the memory of the
|
||||
|
||||
extern void * hb_mthRequested( void ); /* profiler from classes.c */
|
||||
extern void hb_mthAddTime( void *, ULONG ); /* profiler from classes.c */
|
||||
extern void hb_cdpReleaseAll( void );
|
||||
|
||||
BOOL hb_bProfiler = FALSE; /* profiler status is off */
|
||||
BOOL hb_bTracePrgCalls = FALSE; /* prg tracing is off */
|
||||
@@ -391,6 +392,7 @@ void HB_EXPORT hb_vmQuit( void )
|
||||
hb_dynsymRelease(); /* releases the dynamic symbol table */
|
||||
hb_conRelease(); /* releases Console */
|
||||
hb_setRelease(); /* releases Sets */
|
||||
hb_cdpReleaseAll(); /* releases codepages */
|
||||
|
||||
/* release all remaining items */
|
||||
hb_stackRemove( 0 );
|
||||
|
||||
Reference in New Issue
Block a user