summaryrefslogtreecommitdiff
path: root/idl/source/prj/database.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'idl/source/prj/database.cxx')
-rw-r--r--idl/source/prj/database.cxx834
1 files changed, 0 insertions, 834 deletions
diff --git a/idl/source/prj/database.cxx b/idl/source/prj/database.cxx
deleted file mode 100644
index b7cdc1a59d..0000000000
--- a/idl/source/prj/database.cxx
+++ /dev/null
@@ -1,834 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_idl.hxx"
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <tools/fsys.hxx>
-#include <tools/debug.hxx>
-#include <database.hxx>
-#include <globals.hxx>
-#include <rtl/strbuf.hxx>
-
-SvIdlDataBase::SvIdlDataBase( const SvCommand& rCmd )
- : bExport( sal_False )
- , nUniqueId( 0 )
- , nVerbosity( rCmd.nVerbosity )
- , bIsModified( sal_False )
- , aPersStream( *IDLAPP->pClassMgr, NULL )
- , pIdTable( NULL )
-{
-}
-
-SvIdlDataBase::~SvIdlDataBase()
-{
- for ( size_t i = 0, n = aIdFileList.size(); i < n; ++i )
- delete aIdFileList[ i ];
- aIdFileList.clear();
-
- delete pIdTable;
-}
-
-#define ADD_TYPE( Name, OdlName, ParserChar, CName, BasName, BasPost ) \
- aTypeList.Append( new SvMetaType( SvHash_##Name()->GetName(), \
- BasName, OdlName, ParserChar, CName, BasName, BasPost ) );
-
-SvMetaTypeMemberList & SvIdlDataBase::GetTypeList()
-{
- if( aTypeList.Count() == 0 )
- { // fill initially
- aTypeList.Append( new SvMetaTypeString() );
- aTypeList.Append( new SvMetaTypevoid() );
-
- // MI: IDispatch::Invoke can not unsigned
- ADD_TYPE( UINT16, "long", 'h', "unsigned short", "Long", "&" );
- ADD_TYPE( INT16, "short", 'h', "short", "Integer", "%" );
- ADD_TYPE( UINT32, "long", 'l', "unsigned long", "Long", "&" );
- ADD_TYPE( INT32, "long", 'l', "long", "Long", "&" );
- ADD_TYPE( int, "int", 'i', "int", "Integer", "%" );
- ADD_TYPE( BOOL, "boolean", 'b', "unsigned char", "Boolean", "" );
- ADD_TYPE( char, "char", 'c', "char", "Integer", "%" );
- ADD_TYPE( BYTE, "char", 'c', "unsigned char", "Integer", "%" );
- ADD_TYPE( float, "float", 'f', "float", "Single", "!" );
- ADD_TYPE( double, "double", 'F', "double", "Double", "#" );
- ADD_TYPE( SbxObject, "VARIANT", 'o', "C_Object", "Object", "" );
-
- // Attention! When adding types all binary data bases get incompatible
-
- }
- return aTypeList;
-}
-
-SvMetaModule * SvIdlDataBase::GetModule( const ByteString & rName )
-{
- for( sal_uLong n = 0; n < aModuleList.Count(); n++ )
- if( aModuleList.GetObject( n )->GetName() == rName )
- return aModuleList.GetObject( n );
- return NULL;
-}
-
-#define DATABASE_SIGNATURE (sal_uInt32)0x13B799F2
-#define DATABASE_VER 0x0006
-sal_Bool SvIdlDataBase::IsBinaryFormat( SvStream & rStm )
-{
- sal_uInt32 nSig = 0;
- sal_uLong nPos = rStm.Tell();
- rStm >> nSig;
- rStm.Seek( nPos );
-
- return nSig == DATABASE_SIGNATURE;
-}
-
-void SvIdlDataBase::Load( SvStream & rStm )
-{
- DBG_ASSERT( aTypeList.Count() == 0, "type list already initialized" );
- SvPersistStream aPStm( *IDLAPP->pClassMgr, &rStm );
-
- sal_uInt16 nVersion = 0;
- sal_uInt32 nSig = 0;
-
- aPStm >> nSig;
- aPStm >> nVersion;
- if( nSig != DATABASE_SIGNATURE )
- {
- aPStm.SetError( SVSTREAM_FILEFORMAT_ERROR );
- return;
- }
- if( nVersion != DATABASE_VER )
- {
- aPStm.SetError( SVSTREAM_WRONGVERSION );
- return;
- }
- aPStm >> aClassList;
- aPStm >> aTypeList;
- aPStm >> aAttrList;
- aPStm >> aModuleList;
- aPStm >> nUniqueId;
-
- if( aPStm.IsEof() )
- aPStm.SetError( SVSTREAM_GENERALERROR );
-}
-
-void SvIdlDataBase::Save( SvStream & rStm, sal_uInt32 nFlags )
-{
- SvPersistStream aPStm( *IDLAPP->pClassMgr, &rStm );
- aPStm.SetContextFlags( nFlags );
-
- aPStm << (sal_uInt32)DATABASE_SIGNATURE;
- aPStm << (sal_uInt16)DATABASE_VER;
-
- sal_Bool bOnlyStreamedObjs = sal_False;
- if( nFlags & IDL_WRITE_CALLING )
- bOnlyStreamedObjs = sal_True;
-
- if( bOnlyStreamedObjs )
- {
- SvMetaClassMemberList aList;
- for( sal_uLong n = 0; n < GetModuleList().Count(); n++ )
- {
- SvMetaModule * pModule = GetModuleList().GetObject( n );
- if( !pModule->IsImported() )
- aList.Append( pModule->GetClassList() );
- }
- aPStm << aList;
- }
- else
- aPStm << aClassList;
-
- aTypeList.WriteObjects( aPStm, bOnlyStreamedObjs );
- aAttrList.WriteObjects( aPStm, bOnlyStreamedObjs );
- aModuleList.WriteObjects( aPStm, bOnlyStreamedObjs );
- aPStm << nUniqueId;
-}
-
-void SvIdlDataBase::SetError( const ByteString & rError, SvToken * pTok )
-{
- if( pTok->GetLine() > 10000 )
- aError.SetText( "hgchcg" );
-
- if( aError.nLine < pTok->GetLine()
- || (aError.nLine == pTok->GetLine() && aError.nColumn < pTok->GetColumn()) )
- {
- aError = SvIdlError( pTok->GetLine(), pTok->GetColumn() );
- aError.SetText( rError );
- }
-}
-
-void SvIdlDataBase::Push( SvMetaObject * pObj )
-{
- GetStack().Push( pObj );
-}
-
-#ifdef IDL_COMPILER
-sal_Bool SvIdlDataBase::FindId( const ByteString & rIdName, sal_uLong * pVal )
-{
- if( pIdTable )
- {
- sal_uInt32 nHash;
- if( pIdTable->Test( rIdName, &nHash ) )
- {
- *pVal = pIdTable->Get( nHash )->GetValue();
- return sal_True;
- }
- }
- return sal_False;
-}
-
-sal_Bool SvIdlDataBase::InsertId( const ByteString & rIdName, sal_uLong nVal )
-{
- if( !pIdTable )
- pIdTable = new SvStringHashTable( 20003 );
-
- sal_uInt32 nHash;
- if( pIdTable->Insert( rIdName, &nHash ) )
- {
- pIdTable->Get( nHash )->SetValue( nVal );
- return sal_True;
- }
- return sal_False;
-}
-
-sal_Bool SvIdlDataBase::ReadIdFile( const String & rFileName )
-{
- DirEntry aFullName( rFileName );
- aFullName.Find( GetPath() );
-
- for ( size_t i = 0, n = aIdFileList.size(); i < n; ++i )
- if ( *aIdFileList[ i ] == rFileName )
- return sal_True;
-
- aIdFileList.push_back( new String( rFileName ) );
-
- SvTokenStream aTokStm( aFullName.GetFull() );
- if( aTokStm.GetStream().GetError() == SVSTREAM_OK )
- {
- SvToken * pTok = aTokStm.GetToken_Next();
-
- while( !pTok->IsEof() )
- {
- if( pTok->IsChar() && pTok->GetChar() == '#' )
- {
- pTok = aTokStm.GetToken_Next();
- if( pTok->Is( SvHash_define() ) )
- {
- pTok = aTokStm.GetToken_Next();
- ByteString aDefName;
- if( pTok->IsIdentifier() )
- aDefName = pTok->GetString();
- else
- {
- ByteString aStr( "unexpected token after define" );
- // set error
- SetError( aStr, pTok );
- WriteError( aTokStm );
- return sal_False;
- }
-
- sal_uLong nVal = 0;
- sal_Bool bOk = sal_True;
- while( bOk )
- {
- pTok = aTokStm.GetToken_Next();
- if( pTok->IsIdentifier() )
- {
- sal_uLong n;
- if( FindId( pTok->GetString(), &n ) )
- nVal += n;
- else
- bOk = sal_False;
- }
- else if( pTok->IsChar() )
- {
- if( pTok->GetChar() == '-'
- || pTok->GetChar() == '/'
- || pTok->GetChar() == '*'
- || pTok->GetChar() == '&'
- || pTok->GetChar() == '|'
- || pTok->GetChar() == '^'
- || pTok->GetChar() == '~' )
- {
- ByteString aStr( "unknown operator '" );
- aStr += pTok->GetChar();
- aStr += "'in define";
- // set error
- SetError( aStr, pTok );
- WriteError( aTokStm );
- return sal_False;
- }
- if( pTok->GetChar() != '+'
- && pTok->GetChar() != '('
- && pTok->GetChar() != ')' )
- // only + is allowed, parentheses are immaterial
- // because + is commutative
- break;
- }
- else if( pTok->IsInteger() )
- {
- nVal += pTok->GetNumber();
- }
- else
- break;
- }
- if( bOk )
- {
- if( !InsertId( aDefName, nVal ) )
- {
- ByteString aStr = "hash table overflow: ";
- SetError( aStr, pTok );
- WriteError( aTokStm );
- return sal_False;
- }
- }
- }
- else if( pTok->Is( SvHash_include() ) )
- {
- pTok = aTokStm.GetToken_Next();
- ByteString aName;
- if( pTok->IsString() )
- aName = pTok->GetString();
- else if( pTok->IsChar() && pTok->GetChar() == '<' )
- {
- pTok = aTokStm.GetToken_Next();
- while( !pTok->IsEof()
- && !(pTok->IsChar() && pTok->GetChar() == '>') )
- {
- aName += pTok->GetTokenAsString();
- pTok = aTokStm.GetToken_Next();
- }
- if( pTok->IsEof() )
- {
- ByteString aStr( "unexpected eof in #include" );
- // set error
- SetError( aStr, pTok );
- WriteError( aTokStm );
- return sal_False;
- }
- }
- if( !ReadIdFile( String::CreateFromAscii(aName.GetBuffer()) ) )
- {
- ByteString aStr = "cannot read file: ";
- aStr += aName;
- SetError( aStr, pTok );
- WriteError( aTokStm );
- return sal_False;
- }
- }
- }
- else
- pTok = aTokStm.GetToken_Next();
- }
- }
- else
- return sal_False;
- return sal_True;
-}
-
-SvMetaType * SvIdlDataBase::FindType( const SvMetaType * pPType,
- SvMetaTypeMemberList & rList )
-{
- SvMetaType * pType = rList.First();
- while( pType && pPType != pType )
- pType = rList.Next();
- return pType;
-}
-
-SvMetaType * SvIdlDataBase::FindType( const ByteString & rName )
-{
- SvMetaType * pType = aTypeList.First();
- while( pType && rName != pType->GetName() )
- pType = aTypeList.Next();
- return pType;
-}
-
-SvMetaType * SvIdlDataBase::ReadKnownType( SvTokenStream & rInStm )
-{
- sal_Bool bIn = sal_False;
- sal_Bool bOut = sal_False;
- int nCall0 = CALL_VALUE;
- int nCall1 = CALL_VALUE;
- sal_Bool bSet = sal_False; // any attribute set
-
- sal_uInt32 nTokPos = rInStm.Tell();
- SvToken * pTok = rInStm.GetToken_Next();
-
- if( pTok->HasHash() )
- {
- sal_uInt32 nBeginPos = 0; // can not happen with Tell
- while( nBeginPos != rInStm.Tell() )
- {
- nBeginPos = rInStm.Tell();
- if( pTok->Is( SvHash_in() ) )
- {
- bIn = sal_True;
- pTok = rInStm.GetToken_Next();
- bSet = sal_True;
- }
- if( pTok->Is( SvHash_out() ) )
- {
- bOut = sal_True;
- pTok = rInStm.GetToken_Next();
- bSet = sal_True;
- }
- if( pTok->Is( SvHash_inout() ) )
- {
- bIn = sal_True;
- bOut = sal_True;
- pTok = rInStm.GetToken_Next();
- bSet = sal_True;
- }
- }
- }
-
- if( pTok->IsIdentifier() )
- {
- ByteString aName = pTok->GetString();
- SvMetaTypeMemberList & rList = GetTypeList();
- SvMetaType * pType = rList.First();
- while( pType )
- {
- if( pType->GetName() == aName )
- break;
- pType = rList.Next();
- }
- if( pType )
- {
- pTok = rInStm.GetToken();
- if( pTok->IsChar() )
- {
- if( pTok->GetChar() == '&' || pTok->GetChar() == '*' )
- {
- nCall0 = (pTok->GetChar() == '&') ? CALL_REFERENCE :
- CALL_POINTER;
- rInStm.GetToken_Next();
- pTok = rInStm.GetToken();
- if( pTok->GetChar() == '&' || pTok->GetChar() == '*' )
- {
- nCall1 = (pTok->GetChar() == '&') ? CALL_REFERENCE :
- CALL_POINTER;
- rInStm.GetToken_Next();
- }
- bSet = sal_True;
- }
- }
-
- if( !bSet )
- // is exactly this type
- return pType;
-
- DBG_ASSERT( aTmpTypeList.First(), "mindestens ein Element" );
- SvMetaTypeRef xType = new SvMetaType( pType->GetName(), 'h', "dummy" );
- xType->SetRef( pType );
- xType->SetIn( bIn );
- xType->SetOut( bOut );
- xType->SetCall0( nCall0 );
- xType->SetCall1( nCall1 );
-
- aTmpTypeList.Append( xType );
- return xType;
- }
- }
- rInStm.Seek( nTokPos );
- return NULL;
-}
-
-SvMetaAttribute * SvIdlDataBase::ReadKnownAttr
-(
- SvTokenStream & rInStm,
- SvMetaType * pType /* If pType == NULL, then the type has
- still to be read. */
-)
-{
- sal_uInt32 nTokPos = rInStm.Tell();
-
- if( !pType )
- pType = ReadKnownType( rInStm );
-
- if( !pType )
- {
- // otherwise SlotId?
- SvToken * pTok = rInStm.GetToken_Next();
- if( pTok->IsIdentifier() )
- {
- sal_uLong n;
- if( FindId( pTok->GetString(), &n ) )
- {
- for( sal_uLong i = 0; i < aAttrList.Count(); i++ )
- {
- SvMetaAttribute * pAttr = aAttrList.GetObject( i );
- if( pAttr->GetSlotId() == pTok->GetString() )
- return pAttr;
- }
- }
-
- ByteString aStr( "Nicht gefunden : " );
- aStr += pTok->GetString();
- OSL_FAIL( aStr.GetBuffer() );
- }
- }
-
- rInStm.Seek( nTokPos );
- return NULL;
-}
-
-SvMetaAttribute* SvIdlDataBase::SearchKnownAttr
-(
- const SvNumberIdentifier& rId
-)
-{
- sal_uLong n;
- if( FindId( rId, &n ) )
- {
- for( sal_uLong i = 0; i < aAttrList.Count(); i++ )
- {
- SvMetaAttribute * pAttr = aAttrList.GetObject( i );
- if( pAttr->GetSlotId() == rId )
- return pAttr;
- }
- }
-
- return NULL;
-}
-
-SvMetaClass * SvIdlDataBase::ReadKnownClass( SvTokenStream & rInStm )
-{
- sal_uInt32 nTokPos = rInStm.Tell();
- SvToken * pTok = rInStm.GetToken_Next();
-
- if( pTok->IsIdentifier() )
- for( sal_uLong n = 0; n < aClassList.Count(); n++ )
- {
- SvMetaClass * pClass = aClassList.GetObject( n );
- if( pClass->GetName() == pTok->GetString() )
- return pClass;
- }
-
- rInStm.Seek( nTokPos );
- return NULL;
-}
-
-void SvIdlDataBase::Write( const ByteString & rText )
-{
- if( nVerbosity != 0 )
- fprintf( stdout, "%s", rText.GetBuffer() );
-}
-
-void SvIdlDataBase::WriteError( const ByteString & rErrWrn,
- const ByteString & rFileName,
- const rtl::OString& rErrorText,
- sal_uLong nRow, sal_uLong nColumn ) const
-{
- // error treatment
- fprintf( stderr, "\n%s --- %s: ( %ld, %ld )\n",
- rFileName.GetBuffer(), rErrWrn.GetBuffer(), nRow, nColumn );
-
- if( !rErrorText.isEmpty() )
- { // error set
- fprintf( stderr, "\t%s\n", rErrorText.getStr() );
- }
-}
-
-void SvIdlDataBase::WriteError( SvTokenStream & rInStm )
-{
- // error treatment
- String aFileName( rInStm.GetFileName() );
- rtl::OStringBuffer aErrorText;
- sal_uLong nRow = 0, nColumn = 0;
-
- rInStm.SeekEnd();
- SvToken *pTok = rInStm.GetToken();
-
- // error position
- nRow = pTok->GetLine();
- nColumn = pTok->GetColumn();
-
- if( aError.IsError() )
- { // error set
- // search error token
- // error text
- if( aError.GetText().Len() )
- {
- aErrorText.append(RTL_CONSTASCII_STRINGPARAM("may be <"));
- aErrorText.append(aError.GetText());
- }
- SvToken * pPrevTok = NULL;
- while( pTok != pPrevTok )
- {
- pPrevTok = pTok;
- if( pTok->GetLine() == aError.nLine
- && pTok->GetColumn() == aError.nColumn )
- break;
- pTok = rInStm.GetToken_PrevAll();
- }
-
- // error position
- aErrorText.append(RTL_CONSTASCII_STRINGPARAM("> at ( "));
- aErrorText.append(static_cast<sal_Int64>(aError.nLine));
- aErrorText.append(RTL_CONSTASCII_STRINGPARAM(", "));
- aErrorText.append(static_cast<sal_Int64>(aError.nColumn));
- aErrorText.append(RTL_CONSTASCII_STRINGPARAM(" )"));
-
- // reset error
- aError = SvIdlError();
- }
-
- WriteError( "error", ByteString( aFileName, RTL_TEXTENCODING_UTF8 ), aErrorText.makeStringAndClear(), nRow, nColumn );
-
- DBG_ASSERT( pTok, "token must be found" );
- if( !pTok )
- return;
-
- // look for identifier close by
- if( !pTok->IsIdentifier() )
- {
- rInStm.GetToken_PrevAll();
- pTok = rInStm.GetToken();
- }
- if( pTok && pTok->IsIdentifier() )
- {
- ByteString aN = IDLAPP->pHashTable->GetNearString( pTok->GetString() );
- if( aN.Len() )
- fprintf( stderr, "%s versus %s\n", pTok->GetString().GetBuffer(), aN.GetBuffer() );
- }
-}
-
-SvIdlWorkingBase::SvIdlWorkingBase(const SvCommand& rCmd) : SvIdlDataBase(rCmd)
-{
-}
-
-sal_Bool SvIdlWorkingBase::ReadSvIdl( SvTokenStream & rInStm, sal_Bool bImported, const String & rPath )
-{
- aPath = rPath; // only valid for this iteration
- SvToken * pTok;
- sal_Bool bOk = sal_True;
- pTok = rInStm.GetToken();
- // only one import at the very beginning
- if( pTok->Is( SvHash_import() ) )
- {
- rInStm.GetToken_Next();
- rInStm.Read( '(' ); // optional
- pTok = rInStm.GetToken_Next();
- if( pTok->IsString() )
- {
- DirEntry aFullName( String::CreateFromAscii( pTok->GetString().GetBuffer() ) );
- if( aFullName.Find( rPath ) )
- {
- SvFileStream aStm( aFullName.GetFull(),
- STREAM_STD_READ | STREAM_NOCREATE );
- Load( aStm );
- if( aStm.GetError() != SVSTREAM_OK )
- {
- if( aStm.GetError() == SVSTREAM_WRONGVERSION )
- {
- ByteString aStr( "wrong version, file " );
- aStr += ByteString( aFullName.GetFull(), RTL_TEXTENCODING_UTF8 );
- SetError( aStr, pTok );
- WriteError( rInStm );
- bOk = sal_False;
- }
- else
- {
- aStm.Seek( 0 );
- aStm.ResetError();
- SvTokenStream aTokStm( aStm, aFullName.GetFull() );
- bOk = ReadSvIdl( aTokStm, sal_True, rPath );
- }
- }
- }
- else
- bOk = sal_False;
- }
- else
- bOk = sal_False;
- }
-
- sal_uInt32 nBeginPos = 0xFFFFFFFF; // can not happen with Tell
-
- while( bOk && nBeginPos != rInStm.Tell() )
- {
- nBeginPos = rInStm.Tell();
- pTok = rInStm.GetToken();
- if( pTok->IsEof() )
- return sal_True;
- if( pTok->IsEmpty() )
- bOk = sal_False;
-
- // only one import at the very beginning
- if( pTok->Is( SvHash_module() ) )
- {
- SvMetaModuleRef aModule = new SvMetaModule( rInStm.GetFileName(), bImported );
- if( aModule->ReadSvIdl( *this, rInStm ) )
- GetModuleList().Append( aModule );
- else
- bOk = sal_False;
- }
- else
- bOk = sal_False;
- }
- if( !bOk || !pTok->IsEof() )
- {
- // error treatment
- WriteError( rInStm );
- return sal_False;
- }
- return sal_True;
-}
-
-sal_Bool SvIdlWorkingBase::WriteSvIdl( SvStream & rOutStm )
-{
- if( rOutStm.GetError() != SVSTREAM_OK )
- return sal_False;
-
- SvStringHashList aList;
- if( GetIdTable() )
- {
- GetIdTable()->FillHashList( &aList );
- for ( size_t i = 0, n = aList.size(); i < n; ++i )
- {
- SvStringHashEntry* pEntry = aList[ i ];
- rOutStm << "#define " << pEntry->GetName().GetBuffer()
- << '\t'
- << rtl::OString::valueOf(static_cast<sal_Int64>(
- pEntry->GetValue())).getStr()
- << endl;
- }
- }
-
- for( sal_uLong n = 0; n < GetModuleList().Count(); n++ )
- {
- SvMetaModule * pModule = GetModuleList().GetObject( n );
- pModule->WriteSvIdl( *this, rOutStm, 0 );
- }
- return sal_True;
-}
-
-sal_Bool SvIdlWorkingBase::WriteSfx( SvStream & rOutStm )
-{
- if( rOutStm.GetError() != SVSTREAM_OK )
- return sal_False;
-
- // reset all tmp variables for writing
- WriteReset();
- SvMemoryStream aTmpStm( 256000, 256000 );
- sal_uLong n;
- for( n = 0; n < GetModuleList().Count(); n++ )
- {
- SvMetaModule * pModule = GetModuleList().GetObject( n );
- if( !pModule->IsImported() )
- pModule->WriteSfx( *this, aTmpStm );
- aTmpStm.Seek( 0 );
- }
- for( n = 0; n < aUsedTypes.Count(); n++ )
- {
- SvMetaType * pType = aUsedTypes.GetObject( n );
- pType->WriteSfx( *this, rOutStm );
- }
- aUsedTypes.Clear();
- rOutStm << aTmpStm;
- return sal_True;
-}
-
-sal_Bool SvIdlWorkingBase::WriteHelpIds( SvStream& rOutStm )
-{
- if( rOutStm.GetError() != SVSTREAM_OK )
- return sal_False;
-
- Table aIdTable;
- sal_uLong n;
- for( n = 0; n < GetModuleList().Count(); n++ )
- {
- SvMetaModule * pModule = GetModuleList().GetObject( n );
- pModule->WriteHelpIds( *this, rOutStm, &aIdTable );
- }
-
- const SvMetaAttributeMemberList & rAttrList = GetAttrList();
- for( n = 0; n < rAttrList.Count(); n++ )
- {
- SvMetaAttribute * pAttr = rAttrList.GetObject( n );
- pAttr->WriteHelpId( *this, rOutStm, &aIdTable );
- }
-
- return sal_True;
-}
-
-sal_Bool SvIdlWorkingBase::WriteSfxItem( SvStream & )
-{
- return sal_False;
-}
-
-void SvIdlDataBase::StartNewFile( const String& rName )
-{
- bExport = ( aExportFile.EqualsIgnoreCaseAscii( rName ) );
-}
-
-void SvIdlDataBase::AppendAttr( SvMetaAttribute *pAttr )
-{
- aAttrList.Append( pAttr );
- if ( bExport )
- pAttr->SetNewAttribute( sal_True );
-}
-
-sal_Bool SvIdlWorkingBase::WriteCSV( SvStream& rStrm )
-{
- SvMetaAttributeMemberList &rList = GetAttrList();
- sal_uLong nCount = rList.Count();
- for ( sal_uLong n=0; n<nCount; n++ )
- {
- if ( rList.GetObject(n)->IsNewAttribute() )
- {
- rList.GetObject(n)->WriteCSV( *this, rStrm );
- }
- }
-
- if ( rStrm.GetError() != SVSTREAM_OK )
- return sal_False;
- else
- return sal_True;
-}
-
-sal_Bool SvIdlWorkingBase::WriteDocumentation( SvStream & rOutStm )
-{
- if( rOutStm.GetError() != SVSTREAM_OK )
- return sal_False;
-
- for( sal_uLong n = 0; n < GetModuleList().Count(); n++ )
- {
- SvMetaModule * pModule = GetModuleList().GetObject( n );
- if( !pModule->IsImported() )
- pModule->Write( *this, rOutStm, 0, WRITE_DOCU );
- }
- return sal_True;
-}
-
-
-
-#endif // IDL_COMPILER
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */