diff options
Diffstat (limited to 'tools/source/rc/resmgr.cxx')
-rw-r--r-- | tools/source/rc/resmgr.cxx | 308 |
1 files changed, 177 insertions, 131 deletions
diff --git a/tools/source/rc/resmgr.cxx b/tools/source/rc/resmgr.cxx index ab8fbe585432..2d906854d035 100644 --- a/tools/source/rc/resmgr.cxx +++ b/tools/source/rc/resmgr.cxx @@ -45,6 +45,7 @@ #include <osl/mutex.hxx> #include <osl/signal.h> #include <rtl/ustrbuf.hxx> +#include <rtl/strbuf.hxx> #include <tools/urlobj.hxx> #include <rtl/instance.hxx> #include <rtl/bootstrap.hxx> @@ -97,11 +98,11 @@ class InternalResMgr friend class ResMgrContainer; ImpContent * pContent; - UINT32 nOffCorrection; - BYTE * pStringBlock; + sal_uInt32 nOffCorrection; + sal_uInt8 * pStringBlock; SvStream * pStm; - BOOL bEqual2Content; - UINT32 nEntries; + sal_Bool bEqual2Content; + sal_uInt32 nEntries; OUString aFileName; OUString aPrefix; OUString aResName; @@ -114,9 +115,9 @@ class InternalResMgr const OUString& aResName, const com::sun::star::lang::Locale& rLocale ); ~InternalResMgr(); - BOOL Create(); + sal_Bool Create(); - BOOL IsGlobalAvailable( RESOURCE_TYPE nRT, sal_uInt32 nId ) const; + sal_Bool IsGlobalAvailable( RESOURCE_TYPE nRT, sal_uInt32 nId ) const; void * LoadGlobalRes( RESOURCE_TYPE nRT, sal_uInt32 nId, void **pResHandle ); public: @@ -551,7 +552,7 @@ InternalResMgr::InternalResMgr( const OUString& rFileURL, : pContent( NULL ) , pStringBlock( NULL ) , pStm( NULL ) - , bEqual2Content( TRUE ) + , bEqual2Content( sal_True ) , nEntries( 0 ) , aFileName( rFileURL ) , aPrefix( rPrefix ) @@ -602,15 +603,15 @@ InternalResMgr::~InternalResMgr() // ----------------------------------------------------------------------- -BOOL InternalResMgr::Create() +sal_Bool InternalResMgr::Create() { ResMgrContainer::get(); - BOOL bDone = FALSE; + sal_Bool bDone = sal_False; pStm = new SvFileStream( aFileName, (STREAM_READ | STREAM_SHARE_DENYWRITE | STREAM_NOCREATE) ); if( pStm->GetError() == 0 ) { - INT32 lContLen = 0; + sal_Int32 lContLen = 0; pStm->Seek( STREAM_SEEK_TO_END ); /* @@ -624,15 +625,15 @@ BOOL InternalResMgr::Create() lContLen = ResMgr::GetLong( &lContLen ); pStm->SeekRel( -lContLen ); // allocate stored ImpContent data (12 bytes per unit) - BYTE* pContentBuf = (BYTE*)rtl_allocateMemory( lContLen ); + sal_uInt8* pContentBuf = (sal_uInt8*)rtl_allocateMemory( lContLen ); pStm->Read( pContentBuf, lContLen ); // allocate ImpContent space (sizeof(ImpContent) per unit, not necessarily 12) pContent = (ImpContent *)rtl_allocateMemory( sizeof(ImpContent)*lContLen/12 ); // Auf die Anzahl der ImpContent k�rzen - nEntries = (UINT32)lContLen / 12; - bEqual2Content = TRUE; // Die Daten der Resourcen liegen + nEntries = (sal_uInt32)lContLen / 12; + bEqual2Content = sal_True; // Die Daten der Resourcen liegen // genauso wie das Inhaltsverzeichnis - BOOL bSorted = TRUE; + sal_Bool bSorted = sal_True; if( nEntries ) { #ifdef DBG_UTIL @@ -654,10 +655,10 @@ BOOL InternalResMgr::Create() pContent[j].nTypeAndId = ResMgr::GetUInt64( pContentBuf + (12*j) ); pContent[j].nOffset = ResMgr::GetLong( pContentBuf + (12*j+8) ); if( pContent[i].nTypeAndId >= pContent[j].nTypeAndId ) - bSorted = FALSE; + bSorted = sal_False; if( (pContent[i].nTypeAndId & 0xFFFFFFFF00000000LL) == (pContent[j].nTypeAndId & 0xFFFFFFFF00000000LL) && pContent[i].nOffset >= pContent[j].nOffset ) - bEqual2Content = FALSE; + bEqual2Content = sal_False; } } rtl_freeMemory( pContentBuf ); @@ -669,7 +670,7 @@ BOOL InternalResMgr::Create() ::std::sort(pContent,pContent+nEntries,ImpContentLessCompare()); // qsort( pContent, nEntries, sizeof( ImpContent ), Compare ); - bDone = TRUE; + bDone = sal_True; } return bDone; @@ -677,7 +678,7 @@ BOOL InternalResMgr::Create() // ----------------------------------------------------------------------- -BOOL InternalResMgr::IsGlobalAvailable( RESOURCE_TYPE nRT, sal_uInt32 nId ) const +sal_Bool InternalResMgr::IsGlobalAvailable( RESOURCE_TYPE nRT, sal_uInt32 nId ) const { // Anfang der Strings suchen sal_uInt64 nValue = ((sal_uInt64(nRT) << 32) | nId); @@ -719,18 +720,18 @@ void* InternalResMgr::LoadGlobalRes( RESOURCE_TYPE nRT, sal_uInt32 nId, while( pLast < pEnd && (pLast->nTypeAndId >> 32) == RSC_STRING ) ++pLast; nOffCorrection = pFirst->nOffset; - UINT32 nSize; + sal_uInt32 nSize; --pLast; pStm->Seek( pLast->nOffset ); RSHEADER_TYPE aHdr; pStm->Read( &aHdr, sizeof( aHdr ) ); nSize = pLast->nOffset + aHdr.GetGlobOff() - nOffCorrection; - pStringBlock = (BYTE*)rtl_allocateMemory( nSize ); + pStringBlock = (sal_uInt8*)rtl_allocateMemory( nSize ); pStm->Seek( pFirst->nOffset ); pStm->Read( pStringBlock, nSize ); } *pResHandle = pStringBlock; - return (BYTE*)pStringBlock + pFind->nOffset - nOffCorrection; + return (sal_uInt8*)pStringBlock + pFind->nOffset - nOffCorrection; } // if( nRT == RSC_STRING && bEqual2Content ) else { @@ -740,7 +741,7 @@ void* InternalResMgr::LoadGlobalRes( RESOURCE_TYPE nRT, sal_uInt32 nId, pStm->Read( &aHeader, sizeof( RSHEADER_TYPE ) ); void * pRes = rtl_allocateMemory( aHeader.GetGlobOff() ); memcpy( pRes, &aHeader, sizeof( RSHEADER_TYPE ) ); - pStm->Read( (BYTE*)pRes + sizeof( RSHEADER_TYPE ), + pStm->Read( (sal_uInt8*)pRes + sizeof( RSHEADER_TYPE ), aHeader.GetGlobOff() - sizeof( RSHEADER_TYPE ) ); return pRes; } @@ -766,12 +767,12 @@ void InternalResMgr::FreeGlobalRes( void * pResHandle, void * pResource ) UniString GetTypeRes_Impl( const ResId& rTypeId ) { // Funktion verlassen, falls Resourcefehler in dieser Funktion - static int bInUse = FALSE; + static int bInUse = sal_False; UniString aTypStr( UniString::CreateFromInt32( rTypeId.GetId() ) ); if ( !bInUse ) { - bInUse = TRUE; + bInUse = sal_True; ResId aResId( sal_uInt32(RSCVERSION_ID), *rTypeId.GetResMgr() ); aResId.SetRT( RSC_VERSIONCONTROL ); @@ -786,7 +787,7 @@ UniString GetTypeRes_Impl( const ResId& rTypeId ) rTypeId.GetResMgr()->Increment( sizeof( RSHEADER_TYPE ) ); } } - bInUse = FALSE; + bInUse = sal_False; } return aTypStr; @@ -899,14 +900,14 @@ static RSHEADER_TYPE* LocalResource( const ImpRCStack* pStack, if ( pStack->pResource && pStack->pClassRes ) { pTmp = (RSHEADER_TYPE*) - ((BYTE*)pStack->pResource + pStack->pResource->GetLocalOff()); + ((sal_uInt8*)pStack->pResource + pStack->pResource->GetLocalOff()); pEnd = (RSHEADER_TYPE*) - ((BYTE*)pStack->pResource + pStack->pResource->GetGlobOff()); + ((sal_uInt8*)pStack->pResource + pStack->pResource->GetGlobOff()); while ( pTmp != pEnd ) { if ( pTmp->GetRT() == nRTType && pTmp->GetId() == nId ) return pTmp; - pTmp = (RSHEADER_TYPE*)((BYTE*)pTmp + pTmp->GetGlobOff()); + pTmp = (RSHEADER_TYPE*)((sal_uInt8*)pTmp + pTmp->GetGlobOff()); } } @@ -1073,11 +1074,11 @@ void ResMgr::TestStack( const Resource* ) #endif // ----------------------------------------------------------------------- -BOOL ResMgr::IsAvailable( const ResId& rId, const Resource* pResObj ) const +sal_Bool ResMgr::IsAvailable( const ResId& rId, const Resource* pResObj ) const { osl::Guard<osl::Mutex> aGuard( getResMgrMutex() ); - BOOL bAvailable = FALSE; + sal_Bool bAvailable = sal_False; RSHEADER_TYPE* pClassRes = rId.GetpResource(); RESOURCE_TYPE nRT = rId.GetRT2(); sal_uInt32 nId = rId.GetId(); @@ -1100,7 +1101,7 @@ BOOL ResMgr::IsAvailable( const ResId& rId, const Resource* pResObj ) const if ( pClassRes ) { if ( pClassRes->GetRT() == nRT ) - bAvailable = TRUE; + bAvailable = sal_True; } } @@ -1125,7 +1126,7 @@ void* ResMgr::GetClass() // ----------------------------------------------------------------------- -BOOL ResMgr::GetResource( const ResId& rId, const Resource* pResObj ) +sal_Bool ResMgr::GetResource( const ResId& rId, const Resource* pResObj ) { osl::Guard<osl::Mutex> aGuard( getResMgrMutex() ); @@ -1170,7 +1171,7 @@ BOOL ResMgr::GetResource( const ResId& rId, const Resource* pResObj ) pTop->Flags |= RC_NOTFOUND; pTop->pClassRes = getEmptyBuffer(); pTop->pResource = (RSHEADER_TYPE*)pTop->pClassRes; - return FALSE; + return sal_False; } } else @@ -1216,12 +1217,12 @@ BOOL ResMgr::GetResource( const ResId& rId, const Resource* pResObj ) pTop->Flags |= RC_NOTFOUND; pTop->pClassRes = getEmptyBuffer(); pTop->pResource = (RSHEADER_TYPE*)pTop->pClassRes; - return FALSE; + return sal_False; } } } - return TRUE; + return sal_True; } // ----------------------------------------------------------------------- @@ -1270,7 +1271,7 @@ void ResMgr::PopContext( const Resource* pResObj ) #ifdef DBG_UTIL if ( DbgIsResource() && !(pTop->Flags & RC_NOTFOUND) ) { - void* pRes = (BYTE*)pTop->pResource + + void* pRes = (sal_uInt8*)pTop->pResource + pTop->pResource->GetLocalOff(); if ( pTop->pClassRes != pRes ) @@ -1322,7 +1323,7 @@ RSHEADER_TYPE* ResMgr::CreateBlock( const ResId& rId ) // ------------------------------------------------------------------ -INT16 ResMgr::GetShort( void * pShort ) +sal_Int16 ResMgr::GetShort( void * pShort ) { return ((*((sal_uInt8*)pShort + 0) << 8) | (*((sal_uInt8*)pShort + 1) << 0) ); @@ -1330,7 +1331,7 @@ INT16 ResMgr::GetShort( void * pShort ) // ------------------------------------------------------------------ -INT32 ResMgr::GetLong( void * pLong ) +sal_Int32 ResMgr::GetLong( void * pLong ) { return ((*((sal_uInt8*)pLong + 0) << 24) | (*((sal_uInt8*)pLong + 1) << 16) | @@ -1353,9 +1354,10 @@ sal_uInt64 ResMgr::GetUInt64( void* pDatum ) } // ----------------------------------------------------------------------- -sal_uInt32 ResMgr::GetStringWithoutHook( UniString& rStr, const BYTE* pStr ) +sal_uInt32 ResMgr::GetStringWithoutHook( UniString& rStr, const sal_uInt8* pStr ) { - sal_uInt32 nRet = GetStringSize( pStr ); + sal_uInt32 nLen=0; + sal_uInt32 nRet = GetStringSize( pStr, nLen ); UniString aString( (sal_Char*)pStr, RTL_TEXTENCODING_UTF8, RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MAPTOPRIVATE | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_DEFAULT | @@ -1364,7 +1366,7 @@ sal_uInt32 ResMgr::GetStringWithoutHook( UniString& rStr, const BYTE* pStr ) return nRet; } -sal_uInt32 ResMgr::GetString( UniString& rStr, const BYTE* pStr ) +sal_uInt32 ResMgr::GetString( UniString& rStr, const sal_uInt8* pStr ) { UniString aString; sal_uInt32 nRet = GetStringWithoutHook( aString, pStr ); @@ -1374,11 +1376,20 @@ sal_uInt32 ResMgr::GetString( UniString& rStr, const BYTE* pStr ) return nRet; } +sal_uInt32 ResMgr::GetByteString( rtl::OString& rStr, const sal_uInt8* pStr ) +{ + sal_uInt32 nLen=0; + sal_uInt32 nRet = GetStringSize( pStr, nLen ); + rStr = rtl::OString( (const sal_Char*)pStr, nLen ); + return nRet; +} + // ------------------------------------------------------------------ -sal_uInt32 ResMgr::GetStringSize( const BYTE* pStr ) +sal_uInt32 ResMgr::GetStringSize( const sal_uInt8* pStr, sal_uInt32& nLen ) { - return GetStringSize( strlen( (const char*)pStr ) ); + nLen = static_cast< sal_uInt32 >( strlen( (const char*)pStr ) ); + return GetStringSize( nLen ); } // ----------------------------------------------------------------------- @@ -1391,9 +1402,9 @@ sal_uInt32 ResMgr::GetRemainSize() return pFallbackResMgr->GetRemainSize(); const ImpRCStack& rTop = aStack[nCurStack]; - return (sal_uInt32)((long)(BYTE *)rTop.pResource + + return (sal_uInt32)((long)(sal_uInt8 *)rTop.pResource + rTop.pResource->GetLocalOff() - - (long)(BYTE *)rTop.pClassRes); + (long)(sal_uInt8 *)rTop.pClassRes); } // ----------------------------------------------------------------------- @@ -1409,7 +1420,7 @@ void* ResMgr::Increment( sal_uInt32 nSize ) if( (rStack.Flags & RC_NOTFOUND) ) return rStack.pClassRes; - BYTE* pClassRes = (BYTE*)rStack.pClassRes + nSize; + sal_uInt8* pClassRes = (sal_uInt8*)rStack.pClassRes + nSize; rStack.pClassRes = pClassRes; @@ -1500,7 +1511,7 @@ ResMgr* ResMgr::CreateFallbackResMgr( const ResId& rId, const Resource* pResourc // //--------------------------------------------------------------------------- -const char* ResMgr::GetLang( LanguageType& nType, USHORT nPrio ) +const char* ResMgr::GetLang( LanguageType& nType, sal_uInt16 nPrio ) { if ( nType == LANGUAGE_SYSTEM || nType == LANGUAGE_DONTKNOW ) nType = MsLangId::getSystemUILanguage(); @@ -1711,29 +1722,29 @@ ResMgr* ResMgr::SearchCreateResMgr( // ----------------------------------------------------------------------- -INT16 ResMgr::ReadShort() +sal_Int16 ResMgr::ReadShort() { osl::Guard<osl::Mutex> aGuard( getResMgrMutex() ); if( pFallbackResMgr ) return pFallbackResMgr->ReadShort(); - INT16 n = GetShort( GetClass() ); - Increment( sizeof( INT16 ) ); + sal_Int16 n = GetShort( GetClass() ); + Increment( sizeof( sal_Int16 ) ); return n; } // ----------------------------------------------------------------------- -INT32 ResMgr::ReadLong() +sal_Int32 ResMgr::ReadLong() { osl::Guard<osl::Mutex> aGuard( getResMgrMutex() ); if( pFallbackResMgr ) return pFallbackResMgr->ReadLong(); - INT32 n = GetLong( GetClass() ); - Increment( sizeof( INT32 ) ); + sal_Int32 n = GetLong( GetClass() ); + Increment( sizeof( sal_Int32 ) ); return n; } @@ -1756,7 +1767,7 @@ UniString ResMgr::ReadStringWithoutHook() #endif } else - Increment( GetStringWithoutHook( aRet, (const BYTE*)GetClass() ) ); + Increment( GetStringWithoutHook( aRet, (const sal_uInt8*)GetClass() ) ); return aRet; } @@ -1769,90 +1780,125 @@ UniString ResMgr::ReadString() return aRet; } +rtl::OString ResMgr::ReadByteString() +{ + osl::Guard<osl::Mutex> aGuard( getResMgrMutex() ); + + if( pFallbackResMgr ) + return pFallbackResMgr->ReadByteString(); + + rtl::OString aRet; + + const ImpRCStack& rTop = aStack[nCurStack]; + if( (rTop.Flags & RC_NOTFOUND) ) + { + #if OSL_DEBUG_LEVEL > 0 + aRet = OString( "<resource not found>" ); + #endif + } + else + Increment( GetByteString( aRet, (const sal_uInt8*)GetClass() ) ); + + return aRet; +} + // ----------------------------------------------------------------------- -ULONG ResMgr::GetAutoHelpId() +rtl::OString ResMgr::GetAutoHelpId() { osl::Guard<osl::Mutex> aGuard( getResMgrMutex() ); if( pFallbackResMgr ) return pFallbackResMgr->GetAutoHelpId(); - DBG_ASSERT( nCurStack, "resource stack empty in Auto help id generation" ); + OSL_ENSURE( nCurStack, "resource stack empty in Auto help id generation" ); if( nCurStack < 1 || nCurStack > 2 ) - return 0; - - const ImpRCStack *pRC = StackTop( nCurStack==1 ? 0 : 1 ); - - DBG_ASSERT( pRC->pResource, "MM hat gesagt, dass der immer einen hat" ); - ULONG nGID = pRC->pResource->GetId(); - - if( !nGID || nGID > 32767 ) - return 0; - - ULONG nHID = 0; - - // GGGg gggg::gggg gggg::ggLL LLLl::llll llll - switch( pRC->pResource->GetRT() ) { // maximal 7 - case RSC_DOCKINGWINDOW: - nHID += 0x20000000L; - case RSC_WORKWIN: - nHID += 0x20000000L; - case RSC_MODELESSDIALOG: - nHID += 0x20000000L; - case RSC_FLOATINGWINDOW: - nHID += 0x20000000L; - case RSC_MODALDIALOG: - nHID += 0x20000000L; - case RSC_TABPAGE: - nHID += 0x20000000L; - - if( nCurStack == 2 ) { - pRC = StackTop(); - ULONG nLID = pRC->pResource->GetId(); - - if( !nLID || nLID > 511 ) - return 0; - - switch( pRC->pResource->GetRT() ) { // maximal 32 - case RSC_TABCONTROL: nHID |= 0x0000; break; - case RSC_RADIOBUTTON: nHID |= 0x0200; break; - case RSC_CHECKBOX: nHID |= 0x0400; break; - case RSC_TRISTATEBOX: nHID |= 0x0600; break; - case RSC_EDIT: nHID |= 0x0800; break; - case RSC_MULTILINEEDIT: nHID |= 0x0A00; break; - case RSC_MULTILISTBOX: nHID |= 0x0C00; break; - case RSC_LISTBOX: nHID |= 0x0E00; break; - case RSC_COMBOBOX: nHID |= 0x1000; break; - case RSC_PUSHBUTTON: nHID |= 0x1200; break; - case RSC_SPINFIELD: nHID |= 0x1400; break; - case RSC_PATTERNFIELD: nHID |= 0x1600; break; - case RSC_NUMERICFIELD: nHID |= 0x1800; break; - case RSC_METRICFIELD: nHID |= 0x1A00; break; - case RSC_CURRENCYFIELD: nHID |= 0x1C00; break; - case RSC_DATEFIELD: nHID |= 0x1E00; break; - case RSC_TIMEFIELD: nHID |= 0x2000; break; - case RSC_IMAGERADIOBUTTON: nHID |= 0x2200; break; - case RSC_NUMERICBOX: nHID |= 0x2400; break; - case RSC_METRICBOX: nHID |= 0x2600; break; - case RSC_CURRENCYBOX: nHID |= 0x2800; break; - case RSC_DATEBOX: nHID |= 0x2A00; break; - case RSC_TIMEBOX: nHID |= 0x2C00; break; - case RSC_IMAGEBUTTON: nHID |= 0x2E00; break; - case RSC_MENUBUTTON: nHID |= 0x3000; break; - case RSC_MOREBUTTON: nHID |= 0x3200; break; + return rtl::OString(); + + // prepare HID, start with resource prefix + rtl::OStringBuffer aHID( 32 ); + aHID.append( rtl::OUStringToOString( pImpRes->aPrefix, RTL_TEXTENCODING_UTF8 ) ); + aHID.append( '.' ); + + // append type + const ImpRCStack *pRC = StackTop(); + OSL_ENSURE( pRC, "missing resource stack level" ); + + if ( nCurStack == 1 ) + { + // auto help ids for top level windows + switch( pRC->pResource->GetRT() ) { + case RSC_DOCKINGWINDOW: aHID.append( "DockingWindow" ); break; + case RSC_WORKWIN: aHID.append( "WorkWindow" ); break; + case RSC_MODELESSDIALOG: aHID.append( "ModelessDialog" ); break; + case RSC_FLOATINGWINDOW: aHID.append( "FloatingWindow" ); break; + case RSC_MODALDIALOG: aHID.append( "ModalDialog" ); break; + case RSC_TABPAGE: aHID.append( "TabPage" ); break; + default: return rtl::OString(); + } + } + else + { + // only controls with the following parents get auto help ids + const ImpRCStack *pRC1 = StackTop(1); + switch( pRC1->pResource->GetRT() ) { + case RSC_DOCKINGWINDOW: + case RSC_WORKWIN: + case RSC_MODELESSDIALOG: + case RSC_FLOATINGWINDOW: + case RSC_MODALDIALOG: + case RSC_TABPAGE: + // intentionally no breaks! + // auto help ids for controls + switch( pRC->pResource->GetRT() ) { + case RSC_TABCONTROL: aHID.append( "TabControl" ); break; + case RSC_RADIOBUTTON: aHID.append( "RadioButton" ); break; + case RSC_CHECKBOX: aHID.append( "CheckBox" ); break; + case RSC_TRISTATEBOX: aHID.append( "TriStateBox" ); break; + case RSC_EDIT: aHID.append( "Edit" ); break; + case RSC_MULTILINEEDIT: aHID.append( "MultiLineEdit" ); break; + case RSC_MULTILISTBOX: aHID.append( "MultiListBox" ); break; + case RSC_LISTBOX: aHID.append( "ListBox" ); break; + case RSC_COMBOBOX: aHID.append( "ComboBox" ); break; + case RSC_PUSHBUTTON: aHID.append( "PushButton" ); break; + case RSC_SPINFIELD: aHID.append( "SpinField" ); break; + case RSC_PATTERNFIELD: aHID.append( "PatternField" ); break; + case RSC_NUMERICFIELD: aHID.append( "NumericField" ); break; + case RSC_METRICFIELD: aHID.append( "MetricField" ); break; + case RSC_CURRENCYFIELD: aHID.append( "CurrencyField" ); break; + case RSC_DATEFIELD: aHID.append( "DateField" ); break; + case RSC_TIMEFIELD: aHID.append( "TimeField" ); break; + case RSC_IMAGERADIOBUTTON: aHID.append( "ImageRadioButton" ); break; + case RSC_NUMERICBOX: aHID.append( "NumericBox" ); break; + case RSC_METRICBOX: aHID.append( "MetricBox" ); break; + case RSC_CURRENCYBOX: aHID.append( "CurrencyBox" ); break; + case RSC_DATEBOX: aHID.append( "DateBox" ); break; + case RSC_TIMEBOX: aHID.append( "TimeBox" ); break; + case RSC_IMAGEBUTTON: aHID.append( "ImageButton" ); break; + case RSC_MENUBUTTON: aHID.append( "MenuButton" ); break; + case RSC_MOREBUTTON: aHID.append( "MoreButton" ); break; default: - return 0; - } // of switch - nHID |= nLID; - } // of if - break; - default: - return 0; - } // of switch - nHID |= nGID << 14; + // no type, no auto HID + return rtl::OString(); + } + break; + default: + return rtl::OString(); + } + } + + // append resource id hierarchy + for( int nOff = nCurStack-1; nOff >= 0; nOff-- ) + { + aHID.append( '.' ); + pRC = StackTop( nOff ); + + OSL_ENSURE( pRC->pResource, "missing resource in resource stack level !" ); + if( pRC->pResource ) + aHID.append( sal_Int32( pRC->pResource->GetId() ) ); + } - return nHID; + return aHID.makeStringAndClear(); } // ----------------------------------------------------------------------- @@ -1979,8 +2025,8 @@ UniString SimpleResMgr::ReadString( sal_uInt32 nId ) return sReturn; } - // ULONG nLen = pResHeader->GetLocalOff() - sizeof(RSHEADER_TYPE); - ResMgr::GetString( sReturn, (const BYTE*)(pResHeader+1) ); + // sal_uIntPtr nLen = pResHeader->GetLocalOff() - sizeof(RSHEADER_TYPE); + ResMgr::GetString( sReturn, (const sal_uInt8*)(pResHeader+1) ); // not neccessary with te current implementation which holds the string table permanently, but to be sure .... // note: pFallback cannot be NULL here and is either the fallback or m_pResImpl @@ -2056,7 +2102,7 @@ sal_uInt32 SimpleResMgr::ReadBlob( sal_uInt32 nId, void** pBuffer ) // FreeBlob doesn't know that so it would probably crash .... sal_uInt32 nRemaining = pResHeader->GetLocalOff() - sizeof(RSHEADER_TYPE); - *pBuffer = (void*)(((BYTE*)pResHeader) + sizeof(RSHEADER_TYPE)); + *pBuffer = (void*)(((sal_uInt8*)pResHeader) + sizeof(RSHEADER_TYPE)); // free an eventual fallback InternalResMgr if( m_pResImpl != pFallback ) @@ -2073,7 +2119,7 @@ sal_uInt32 SimpleResMgr::ReadBlob( sal_uInt32 nId, void** pBuffer ) void SimpleResMgr::FreeBlob( void* pBuffer ) { - void* pCompleteBuffer = (void*)(((BYTE*)pBuffer) - sizeof(RSHEADER_TYPE)); + void* pCompleteBuffer = (void*)(((sal_uInt8*)pBuffer) - sizeof(RSHEADER_TYPE)); rtl_freeMemory(pCompleteBuffer); } |