summaryrefslogtreecommitdiff
path: root/basic/source/classes/sbxmod.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'basic/source/classes/sbxmod.cxx')
-rw-r--r--basic/source/classes/sbxmod.cxx44
1 files changed, 34 insertions, 10 deletions
diff --git a/basic/source/classes/sbxmod.cxx b/basic/source/classes/sbxmod.cxx
index 7f85be207f14..15774d811bde 100644
--- a/basic/source/classes/sbxmod.cxx
+++ b/basic/source/classes/sbxmod.cxx
@@ -90,6 +90,9 @@ typedef ::std::map< sal_Int16, Any, ::std::less< sal_Int16 > > OutParamMap;
::com::sun::star::uno::Any sbxToUnoValue( SbxVariable* pVar );
void unoToSbxValue( SbxVariable* pVar, const ::com::sun::star::uno::Any& aValue );
+/*const OUString CodeCompleteDataCache::GLOB_KEY = OUString("global key");
+const OUString CodeCompleteDataCache::NOT_FOUND = OUString("not found");*/
+
class DocObjectWrapper : public DocObjectWrapper_BASE
{
Reference< XAggregation > m_xAggProxy;
@@ -1777,9 +1780,11 @@ IMPL_LINK( ErrorHdlResetter, BasicErrorHdl, StarBASIC *, /*pBasic*/)
return 0;
}
-
-std::vector< CodeCompleteData > SbModule::GetCodeCompleteDataFromParse()
+//std::vector< CodeCompleteData > SbModule::GetCodeCompleteDataFromParse()
+CodeCompleteDataCache SbModule::GetCodeCompleteDataFromParse()
{
+ CodeCompleteDataCache aCache;
+
ErrorHdlResetter aErrHdl;
SbxBase::ResetError();
@@ -1788,37 +1793,56 @@ std::vector< CodeCompleteData > SbModule::GetCodeCompleteDataFromParse()
while( pParser->Parse() ) {}
SbiSymPool* pPool = pParser->pPool;
- std::vector< CodeCompleteData > aRet;
+ //std::vector< CodeCompleteData > aRet;
for( sal_uInt16 i = 0; i < pPool->GetSize(); ++i )
{
SbiSymDef* pSymDef = pPool->Get(i);
if( pSymDef->GetType() == SbxOBJECT )
{
- CodeCompleteData aCodeCompleteData;
- aCodeCompleteData.sVarName = pSymDef->GetName();
+ //CodeCompleteData aCodeCompleteData;
+ CodeCompleteVarTypes aVarTypes;
+ /*aCodeCompleteData.sVarName = pSymDef->GetName();
aCodeCompleteData.sVarParent = OUString("");
aCodeCompleteData.sVarType = pParser->aGblStrings.Find( pSymDef->GetTypeId() );
if(!aCodeCompleteData.sVarType.isEmpty())
+ {
aRet.push_back(aCodeCompleteData);
+ aVarTypes.insert(CodeCompleteVarTypes::value_type( pSymDef->GetName(), pParser->aGblStrings.Find( pSymDef->GetTypeId() ) ) );
+ aCache.InsertProcedure( aCache.GLOB_KEY, aVarTypes );
+ }*/
+ if(pParser->aGblStrings.Find( pSymDef->GetTypeId() ).isEmpty() )
+ {
+ aVarTypes.insert(CodeCompleteVarTypes::value_type( pSymDef->GetName(), pParser->aGblStrings.Find( pSymDef->GetTypeId() ) ) );
+ aCache.InsertProcedure( aCache.GLOB_KEY, aVarTypes );
+ }
}
SbiSymPool& pChildPool = pSymDef->GetPool();
for(sal_uInt16 j = 0; j < pChildPool.GetSize(); ++j )
{
- CodeCompleteData aCodeCompleteData;
+ //CodeCompleteData aCodeCompleteData;
+ CodeCompleteVarTypes aVarTypes;
+
SbiSymDef* pChildSymDef = pChildPool.Get(j);
if( pChildSymDef->GetType() == SbxOBJECT )
{
- aCodeCompleteData.sVarName = pChildSymDef->GetName();
+ /*aCodeCompleteData.sVarName = pChildSymDef->GetName();
aCodeCompleteData.sVarParent = pSymDef->GetName();
aCodeCompleteData.sVarType = pParser->aGblStrings.Find( pChildSymDef->GetTypeId() );
- if(!aCodeCompleteData.sVarType.isEmpty())
- aRet.push_back(aCodeCompleteData);
+ if(!aCodeCompleteData.sVarType.isEmpty())*/
+ if( pParser->aGblStrings.Find( pChildSymDef->GetTypeId() ).isEmpty() )
+ {
+ //aRet.push_back(aCodeCompleteData);
+ aVarTypes.insert(CodeCompleteVarTypes::value_type( pChildSymDef->GetName(), pParser->aGblStrings.Find( pChildSymDef->GetTypeId() ) ) );
+ aCache.InsertProcedure( pSymDef->GetName(), aVarTypes );
+ }
}
}
}
+ //std::cerr << aCache << std::endl;
delete pParser;
- return aRet;
+ //return aRet;
+ return aCache;
}
SbxArrayRef SbModule::GetMethods()