textrendering/texthandling/stext/Txtparse.cpp
branchRCL_3
changeset 55 336bee5c2d35
parent 54 748ec5531811
equal deleted inserted replaced
54:748ec5531811 55:336bee5c2d35
    17 
    17 
    18 
    18 
    19 #include "TXTRICH.H"
    19 #include "TXTRICH.H"
    20 #include "TXTSTD.H"
    20 #include "TXTSTD.H"
    21 #include "ParseLst.h"
    21 #include "ParseLst.h"
    22 #include "OstTraceDefinitions.h"
       
    23 #ifdef OST_TRACE_COMPILER_IN_USE
       
    24 #include "TxtparseTraces.h"
       
    25 #endif
       
    26 
       
    27 
    22 
    28 
    23 
    29 // Install and activate a particular parser, app provides instance
    24 // Install and activate a particular parser, app provides instance
    30 EXPORT_C void CRichText::ActivateParserL(MParser* aParser)
    25 EXPORT_C void CRichText::ActivateParserL(MParser* aParser)
    31 	{
    26 	{
    41 
    36 
    42 // Deactivate and deinstall a particular parser, identified by ptr to instance
    37 // Deactivate and deinstall a particular parser, identified by ptr to instance
    43 EXPORT_C void CRichText::DeactivateParser(MParser* aParser)
    38 EXPORT_C void CRichText::DeactivateParser(MParser* aParser)
    44 	{
    39 	{
    45 	CParserList* activeParserList = (CParserList*)Dll::Tls();
    40 	CParserList* activeParserList = (CParserList*)Dll::Tls();
    46 	if (!activeParserList)
       
    47 	    {
       
    48 	    OstTrace0( TRACE_DUMP, CRICHTEXT_DEACTIVATEPARSER, "EParserListNotInitialized" );
       
    49 	    }
       
    50 	__ASSERT_DEBUG(activeParserList, Panic(EParserListNotInitialized));
    41 	__ASSERT_DEBUG(activeParserList, Panic(EParserListNotInitialized));
    51 	activeParserList->DeactivateParser(aParser);
    42 	activeParserList->DeactivateParser(aParser);
    52 	if ((activeParserList->iRefCount == 0) && (activeParserList->iNumberInList == 0))
    43 	if ((activeParserList->iRefCount == 0) && (activeParserList->iNumberInList == 0))
    53 		{
    44 		{
    54 		Dll::FreeTls();
    45 		Dll::FreeTls();
    87 
    78 
    88 
    79 
    89 // Create ParserLst instance and retain ownership of it but pass address to EText TLS
    80 // Create ParserLst instance and retain ownership of it but pass address to EText TLS
    90 void CRichText::CreateParserETextTLSL()
    81 void CRichText::CreateParserETextTLSL()
    91 	{
    82 	{
    92 	if (Dll::Tls() != NULL)
       
    93 	    {
       
    94 	    OstTrace0( TRACE_DUMP, CRICHTEXT_CREATEPARSERETEXTTLSL, "EParserListAlreadyExists" );
       
    95 	    }
       
    96 	__ASSERT_DEBUG(Dll::Tls() == NULL, Panic(EParserListAlreadyExists));
    83 	__ASSERT_DEBUG(Dll::Tls() == NULL, Panic(EParserListAlreadyExists));
    97 	CParserList* activeParserList = new (ELeave) CParserList;
    84 	CParserList* activeParserList = new (ELeave) CParserList;
    98 	CleanupStack::PushL(activeParserList);
    85 	CleanupStack::PushL(activeParserList);
    99 	TInt err = Dll::SetTls(activeParserList);
    86 	TInt err = Dll::SetTls(activeParserList);
   100 	User::LeaveIfError(err);
    87 	User::LeaveIfError(err);
   118 	}
   105 	}
   119 
   106 
   120 	
   107 	
   121 EXPORT_C TBool CRichText::ParseText(TInt& aStartOfTags, TInt& aLength, TBool aForceScanAllText)
   108 EXPORT_C TBool CRichText::ParseText(TInt& aStartOfTags, TInt& aLength, TBool aForceScanAllText)
   122 	{
   109 	{
   123 	if (!iIndex.IsPtr())
       
   124 	    {
       
   125 	    OstTrace0( TRACE_DUMP, CRICHTEXT_PARSETEXT, "EParserListTextIndexNotInitialized" );
       
   126 	    }
       
   127 	__ASSERT_ALWAYS(iIndex.IsPtr(),Panic(EParserListTextIndexNotInitialized));
   110 	__ASSERT_ALWAYS(iIndex.IsPtr(),Panic(EParserListTextIndexNotInitialized));
   128 	TBool foundSomething = EFalse;
   111 	TBool foundSomething = EFalse;
   129 	if (iParserData->iActiveParserList && iParserData->iEditObserver)
   112 	if (iParserData->iActiveParserList && iParserData->iEditObserver)
   130 		{
   113 		{
   131 		if (aForceScanAllText)
   114 		if (aForceScanAllText)
   148 	TCharFormatX format;
   131 	TCharFormatX format;
   149 	TCharFormatXMask varies;
   132 	TCharFormatXMask varies;
   150 	TBool success = EFalse;
   133 	TBool success = EFalse;
   151 	TBuf<1> buf;
   134 	TBuf<1> buf;
   152 
   135 
   153 	if (!iParserData->iActiveParserList)
       
   154 	    {
       
   155 	    OstTrace0( TRACE_DUMP, CRICHTEXT_DOCURSOROVERTAG, "EParserListNotInitialized" );
       
   156 	    }
       
   157 	__ASSERT_DEBUG(iParserData->iActiveParserList, Panic(EParserListNotInitialized));
   136 	__ASSERT_DEBUG(iParserData->iActiveParserList, Panic(EParserListNotInitialized));
   158 	if (!iParserData->iEditObserver)
       
   159 	    {
       
   160 	    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXT_DOCURSOROVERTAG, "EParserListNotActive" );
       
   161 	    }
       
   162 	__ASSERT_DEBUG(iParserData->iEditObserver, Panic(EParserListNotActive));
   137 	__ASSERT_DEBUG(iParserData->iEditObserver, Panic(EParserListNotActive));
   163 	GetExtendedCharFormat(format, varies, aPos, 1);
   138 	GetExtendedCharFormat(format, varies, aPos, 1);
   164 	Extract(buf, aPos, 1);
   139 	Extract(buf, aPos, 1);
   165 	if ((format.iParserTag) && (buf[0] != 0x2029))
   140 	if ((format.iParserTag) && (buf[0] != 0x2029))
   166 		{
   141 		{