2011-04-14 20:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/src/vm/thread.c
    * renamed hb_criticalCode() to hb_mutexEval()

  * harbour/src/rtl/cdpapi.c
    * added HB_CODEPAGE_ANNOUNCE( UTF8 ) so user can use
         REQUEST HB_CODEPAGE_UTF8
      in PRG code.

  * harbour/tests/big5_gen.prg
    ; added note about characters mapped to U+FFFD REPLACEMENT CHARACTER
      in BIG5.TXT and iconv mapping for the same characters.
This commit is contained in:
Przemyslaw Czerpak
2011-04-14 18:20:18 +00:00
parent 6e54f3860e
commit aef9468700
4 changed files with 76 additions and 20 deletions

View File

@@ -16,6 +16,19 @@
The license applies to all entries newer than 2009-04-28.
*/
2011-04-14 20:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/thread.c
* renamed hb_criticalCode() to hb_mutexEval()
* harbour/src/rtl/cdpapi.c
* added HB_CODEPAGE_ANNOUNCE( UTF8 ) so user can use
REQUEST HB_CODEPAGE_UTF8
in PRG code.
* harbour/tests/big5_gen.prg
; added note about characters mapped to U+FFFD REPLACEMENT CHARACTER
in BIG5.TXT and iconv mapping for the same characters.
2011-04-14 15:38 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/thread.c
+ added new function:

View File

@@ -128,6 +128,8 @@ static HB_CODEPAGE s_utf8_codepage =
HB_FALSE, hb_cdpUTF8_get, hb_cdpUTF8_put, hb_cdpUTF8_len,
0, 0, NULL, NULL, NULL };
HB_CODEPAGE_ANNOUNCE( UTF8 )
static HB_CODEPAGE s_en_codepage =
{ "EN", "English CP-437", HB_UNITB_437,
NULL, NULL, NULL, NULL, NULL, 0,

View File

@@ -71,8 +71,8 @@
hb_mutexNotifyAll( <pMtx> [, <xVal>] ) -> NIL
hb_mutexSubscribe( <pMtx>, [ <nTimeOut> ] [, @<xSubscribed> ] ) -> <lSubscribed>
hb_mutexSubscribeNow( <pMtx>, [ <nTimeOut> ] [, @<xSubscribed> ] ) -> <lSubscribed>
hb_mutexEval( <pMtx>, <bCode> | <@sFunc()> ) -> <xCodeResult>
** hb_mutexQueueInfo( <pMtx>, [ @<nWaitersCount> ], [ @<nQueueLength> ] ) -> .T.
hb_criticalCode( <pMtx>, <bCode> | <@sFunc()> ) -> <xCodeResult>
hb_mtVM() -> <lMultiThreadVM>
* - this function call can be ignored by the destination thread in some
@@ -2590,25 +2590,7 @@ HB_FUNC( HB_MUTEXSUBSCRIBENOW )
}
}
HB_FUNC( HB_MUTEXQUEUEINFO )
{
PHB_ITEM pItem = hb_mutexParam( 1 );
if( pItem )
{
PHB_MUTEX pMutex = hb_mutexPtr( pItem );
if( pMutex )
{
HB_STACK_TLS_PRELOAD
hb_storni( pMutex->waiters, 2 );
hb_storns( pMutex->events ? hb_arrayLen( pMutex->events ) : 0, 3 );
hb_retl( HB_TRUE );
}
}
}
HB_FUNC( HB_CRITICALCODE )
HB_FUNC( HB_MUTEXEVAL )
{
PHB_ITEM pItem = hb_mutexParam( 1 );
@@ -2631,6 +2613,24 @@ HB_FUNC( HB_CRITICALCODE )
}
}
HB_FUNC( HB_MUTEXQUEUEINFO )
{
PHB_ITEM pItem = hb_mutexParam( 1 );
if( pItem )
{
PHB_MUTEX pMutex = hb_mutexPtr( pItem );
if( pMutex )
{
HB_STACK_TLS_PRELOAD
hb_storni( pMutex->waiters, 2 );
hb_storns( pMutex->events ? hb_arrayLen( pMutex->events ) : 0, 3 );
hb_retl( HB_TRUE );
}
}
}
HB_FUNC( HB_MTVM )
{
HB_STACK_TLS_PRELOAD

View File

@@ -12,6 +12,47 @@
*
*/
/* ***************************************************************************
these characters are mapped to U+FFFD REPLACEMENT CHARACTER in BIG5.TXT:
0xA15A SPACING UNDERSCORE duplicates A1C4
0xA1C3 SPACING HEAVY OVERSCORE not in Unicode
0xA1C5 SPACING HEAVY UNDERSCORE not in Unicode
0xA1FE LT DIAG UP RIGHT TO LOW LEFT duplicates A2AC
0xA240 LT DIAG UP LEFT TO LOW RIGHT duplicates A2AD
0xA2CC HANGZHOU NUMERAL TEN conflicts with A451 mapping
0xA2CE HANGZHOU NUMERAL THIRTY conflicts with A4CA mapping
duplicated character has the following mapping in BIG5.TXT:
0xA1C4 0xFF3F # FULLWIDTH LOW LINE
0xA2AC 0x2571 # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
0xA2AD 0x2572 # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
0xA451 0x5341 # <CJK>
0xA4CA 0x5345 # <CJK>
# iconv using the following mapping for them:
0xA15A 0x2574 # BOX DRAWINGS LIGHT LEFT
0xA1C3 0xFFE3 # FULLWIDTH MACRON
0xA1C5 0x02CD # MODIFIER LETTER LOW MACRON
0xA1FE 0xFF0F # FULLWIDTH SOLIDUS
0xA240 0xFF3C # FULLWIDTH REVERSE SOLIDUS
0xA2CC 0x5341 # <CJK>
0xA2CE 0x5345 # <CJK>
# this seems to be closer mapping:
0xA15A 0xFF3F # FULLWIDTH LOW LINE
0xA1C3 0xFFE3 # FULLWIDTH MACRON
0xA1C5 0x02CD # MODIFIER LETTER LOW MACRON
0xA1FE 0x2571 # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
0xA240 0x2572 # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
0xA2CC 0x5341 # <CJK>
0xA2CE 0x5345 # <CJK>
*************************************************************************** */
proc main()
local cLine, aVal, aVal2, aValU, aValU2, hVal, aInd, ;
n, nn, nBG5, nU16, nMin, nMax, nUMin, nUMax, cResult, nBit