diff options
Diffstat (limited to 'autodoc/source/parser/cpp/pe_vafu.cxx')
-rw-r--r-- | autodoc/source/parser/cpp/pe_vafu.cxx | 651 |
1 files changed, 0 insertions, 651 deletions
diff --git a/autodoc/source/parser/cpp/pe_vafu.cxx b/autodoc/source/parser/cpp/pe_vafu.cxx deleted file mode 100644 index be771157..00000000 --- a/autodoc/source/parser/cpp/pe_vafu.cxx +++ /dev/null @@ -1,651 +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. - * - ************************************************************************/ - -#include <precomp.h> -#include "pe_vafu.hxx" - - -// NOT FULLY DEFINED SERVICES -#include <cosv/tpl/tpltools.hxx> -#include <ary/cpp/c_gate.hxx> -#include <ary/cpp/c_class.hxx> -#include <ary/cpp/c_vari.hxx> -#include <ary/cpp/c_vfflag.hxx> -#include <ary/cpp/cp_ce.hxx> -#include <ary/cpp/inpcontx.hxx> -#include "pe_type.hxx" -#include "pe_vari.hxx" -#include "pe_funct.hxx" -#include "pe_ignor.hxx" -#include <x_parse.hxx> - - - - -namespace cpp { - - - -//*********************** PE_VarFunc ***********************// - - -PE_VarFunc::PE_VarFunc( Cpp_PE * i_pParent ) - : Cpp_PE(i_pParent), - pStati( new PeStatusArray<PE_VarFunc> ), - // pSpType, - // pSpuType, - // pSpVariable, - // pSpuVariable, - // pSpFunction, - // pSpuFunctionStd, - // pSpuFunctionCtor, - // pSpuFunctionDtor, - // pSpuFunctionCastOperator, - // pSpuFunctionNormalOperator - // pSpIgnore, - // pSpuIgnore, - nCounter_TemplateBrackets(0), - bInDestructor(false), - // aResultIds, - nResultFrontType(0), - eResultType(result_unknown), - bVirtual(false), - bStatic(false), - bExtern(false), - bExternC(false), - bMutable(false), - bInline(false), - bRegister(false), - bExplicit(false) -{ - Setup_StatusFunctions(); - - pSpType = new SP_Type(*this); - pSpuType = new SPU_Type(*pSpType, 0, &PE_VarFunc::SpReturn_Type); - pSpVariable = new SP_Variable(*this); - pSpuVariable = new SPU_Variable(*pSpVariable, 0, &PE_VarFunc::SpReturn_Variable); - pSpFunction = new SP_Function(*this); - pSpuFunctionStd = new SPU_Function(*pSpFunction, &PE_VarFunc::SpInit_FunctionStd, &PE_VarFunc::SpReturn_FunctionStd); - pSpuFunctionCtor = new SPU_Function(*pSpFunction, &PE_VarFunc::SpInit_FunctionCtor, &PE_VarFunc::SpReturn_FunctionStd); - pSpuFunctionDtor = new SPU_Function(*pSpFunction, &PE_VarFunc::SpInit_FunctionDtor, &PE_VarFunc::SpReturn_FunctionStd); - pSpuFunctionCastOperator - = new SPU_Function(*pSpFunction, &PE_VarFunc::SpInit_FunctionCastOperator, &PE_VarFunc::SpReturn_FunctionStd); - pSpuFunctionNormalOperator - = new SPU_Function(*pSpFunction, &PE_VarFunc::SpInit_FunctionNormalOperator, &PE_VarFunc::SpReturn_FunctionStd); - pSpIgnore = new SP_Ignore(*this); - pSpuIgnore = new SPU_Ignore(*pSpIgnore, 0, &PE_VarFunc::SpReturn_Ignore); -} - -PE_VarFunc::~PE_VarFunc() -{ -} - -void -PE_VarFunc::Call_Handler( const cpp::Token & i_rTok ) -{ - pStati->Cur().Call_Handler(i_rTok.TypeId(), i_rTok.Text()); -} - -void -PE_VarFunc::Setup_StatusFunctions() -{ - typedef CallFunction<PE_VarFunc>::F_Tok F_Tok; - - static F_Tok stateF_start[] = { &PE_VarFunc::On_start_Identifier, - &PE_VarFunc::On_start_operator, - &PE_VarFunc::On_start_TypeKey, - &PE_VarFunc::On_start_TypeKey, - &PE_VarFunc::On_start_TypeKey, - &PE_VarFunc::On_start_TypeKey, - &PE_VarFunc::On_start_virtual, - &PE_VarFunc::On_start_Tilde, - &PE_VarFunc::On_start_const, - &PE_VarFunc::On_start_volatile, - &PE_VarFunc::On_start_extern, - &PE_VarFunc::On_start_static, - &PE_VarFunc::On_start_mutable, - &PE_VarFunc::On_start_register, - &PE_VarFunc::On_start_inline, - &PE_VarFunc::On_start_explicit, - &PE_VarFunc::On_start_Bracket_Right, - &PE_VarFunc::On_start_Identifier, - &PE_VarFunc::On_start_typename, - &PE_VarFunc::On_start_Identifier, - &PE_VarFunc::On_start_Identifier }; - static INT16 stateT_start[] = { Tid_Identifier, - Tid_operator, - Tid_class, - Tid_struct, - Tid_union, - Tid_enum, - Tid_virtual, - Tid_Tilde, - Tid_const, - Tid_volatile, - Tid_extern, - Tid_static, - Tid_mutable, - Tid_register, - Tid_inline, - Tid_explicit, - Tid_Bracket_Right, - Tid_DoubleColon, - Tid_typename, - Tid_BuiltInType, - Tid_TypeSpecializer }; - - static F_Tok stateF_expectCtor[] = { &PE_VarFunc::On_expectCtor_Bracket_Left }; - static INT16 stateT_expectCtor[] = { Tid_Bracket_Left }; - - static F_Tok stateF_afterClassDecl[] = { &PE_VarFunc::On_afterClassDecl_Semicolon }; - static INT16 stateT_afterClassDecl[] = { Tid_Semicolon }; - - static F_Tok stateF_expectName[] = { &PE_VarFunc::On_expectName_Identifier, - &PE_VarFunc::On_expectName_operator, - &PE_VarFunc::On_expectName_Bracket_Left }; - static INT16 stateT_expectName[] = { Tid_Identifier, - Tid_operator, - Tid_Bracket_Left }; - - static F_Tok stateF_afterName[] = { &PE_VarFunc::On_afterName_ArrayBracket_Left, - &PE_VarFunc::On_afterName_Bracket_Left, - &PE_VarFunc::On_afterName_DoubleColon, - &PE_VarFunc::On_afterName_Semicolon, - &PE_VarFunc::On_afterName_Comma, - &PE_VarFunc::On_afterName_Assign, - &PE_VarFunc::On_afterName_Less }; - static INT16 stateT_afterName[] = { Tid_ArrayBracket_Left, - Tid_Bracket_Left, - Tid_DoubleColon, - Tid_Semicolon, - Tid_Comma, - Tid_Assign, - Tid_Less }; - - static F_Tok stateF_afterName_inErraneousTemplate[] = - { &PE_VarFunc::On_afterName_inErraneousTemplate_Less, - &PE_VarFunc::On_afterName_inErraneousTemplate_Greater }; - static INT16 stateT_afterName_inErraneousTemplate[] = - { Tid_Less, - Tid_Greater }; - - static F_Tok stateF_finished[] = { &PE_VarFunc::On_finished_Semicolon, - &PE_VarFunc::On_finished_Comma }; - static INT16 stateT_finished[] = { Tid_Semicolon, - Tid_Comma }; - - static F_Tok stateF_finishedIncludingFunctionImplementation[] = - { &PE_VarFunc::On_finishedIncludingFunctionImplementation_Default - }; - static INT16 stateT_finishedIncludingFunctionImplementation[] = - { Tid_BuiltInType // Just to have one entry, but it is default handled, too. - }; - - SEMPARSE_CREATE_STATUS(PE_VarFunc, start, Hdl_UnknownToken); - SEMPARSE_CREATE_STATUS(PE_VarFunc, expectCtor, Hdl_UnknownToken); - SEMPARSE_CREATE_STATUS(PE_VarFunc, afterClassDecl, Hdl_UnknownToken); - SEMPARSE_CREATE_STATUS(PE_VarFunc, expectName, Hdl_UnknownToken); - SEMPARSE_CREATE_STATUS(PE_VarFunc, afterName, Hdl_UnknownToken); - SEMPARSE_CREATE_STATUS(PE_VarFunc, afterName_inErraneousTemplate, On_afterName_inErraneousTemplate_Default); - SEMPARSE_CREATE_STATUS(PE_VarFunc, finished, On_finished_Default); - SEMPARSE_CREATE_STATUS(PE_VarFunc, finishedIncludingFunctionImplementation, On_finishedIncludingFunctionImplementation_Default); -} - -void -PE_VarFunc::InitData() -{ - pStati->SetCur(start); - csv::erase_container(aResultIds); - - nCounter_TemplateBrackets = 0; - bInDestructor = false; - - nResultFrontType = 0; - eResultType = result_unknown; - sName.clear(); - bVirtual = ary::cpp::VIRTUAL_none; - bStatic = false; - bExtern = false; - bExternC = false; - bMutable = false; - bInline = false; - bRegister = false; - bExplicit = false; -} - -void -PE_VarFunc::TransferData() -{ - pStati->SetCur(size_of_states); -} - -void -PE_VarFunc::Hdl_UnknownToken( const char *) -{ - pSpuIgnore->Push(not_done); -} - -void -PE_VarFunc::SpInit_FunctionStd() -{ - if ( nResultFrontType.IsValid() AND sName.length() > 0 ) - { - pSpuFunctionStd->Child().Init_Std( - sName, - nResultFrontType, - bVirtual, - CreateFunctionFlags() ); - } - else - { - throw X_Parser( X_Parser::x_UnexpectedToken, - "", - Env().CurFileName(), - Env().LineCount() ); - } -} - -void -PE_VarFunc::SpInit_FunctionCtor() -{ - ary::cpp::Class * pOwnerClass = Env().Context().CurClass(); - csv_assert( pOwnerClass != 0 ); - pSpuFunctionStd->Child().Init_Ctor( pOwnerClass->LocalName(), - CreateFunctionFlags() ); -} - -void -PE_VarFunc::SpInit_FunctionDtor() -{ - pSpuFunctionStd->Child().Init_Dtor( sName, - bVirtual, - CreateFunctionFlags() ); -} - -void -PE_VarFunc::SpInit_FunctionCastOperator() -{ - pSpuFunctionStd->Child().Init_CastOperator( bVirtual, - CreateFunctionFlags() ); -} - -void -PE_VarFunc::SpInit_FunctionNormalOperator() -{ - pSpuFunctionStd->Child().Init_NormalOperator( nResultFrontType, - bVirtual, - CreateFunctionFlags() ); -} - -void -PE_VarFunc::SpReturn_Type() -{ - switch ( pSpuType->Child().Result_KindOf() ) - { - case PE_Type::is_type: - pStati->SetCur(expectName); - nResultFrontType - = pSpuType->Child().Result_Type().Id(); - break; - case PE_Type::is_constructor: - pStati->SetCur(expectCtor); - eResultType = result_function; - break; - case PE_Type::is_explicit_class_declaration: - case PE_Type::is_explicit_enum_declaration: - pStati->SetCur(afterClassDecl); - eResultType = result_ignore; - break; - case PE_Type::is_class_predeclaration: - pStati->SetCur(afterClassDecl); - eResultType = result_ignore; - break; - default: - ; - } -} - -void -PE_VarFunc::SpReturn_Variable() -{ - typedef ary::cpp::VariableFlags VarFlags; - - if ( NOT bExtern ) - { - VarFlags aFlags( UINT16( - ( bStatic AND Env().Context().CurClass() == 0 ? VarFlags::f_static_local : 0 ) - | ( bStatic AND Env().Context().CurClass() != 0 ? VarFlags::f_static_member : 0 ) - | ( bMutable ? VarFlags::f_mutable : 0 ) ) - ); - -// ary::S_InitData aData( 0, Env().CurCeSpace().Id(), i_sName, 0 ); - ary::cpp::Variable & rCurParsedVariable - = Env().AryGate().Ces().Store_Variable( Env().Context(), - sName, - nResultFrontType, - aFlags, - pSpuVariable->Child().Result_SizeExpression(), - pSpuVariable->Child().Result_InitExpression() ); - Env().Event_Store_Variable(rCurParsedVariable); - aResultIds.push_back( rCurParsedVariable.CeId() ); - eResultType = result_variable; - } - else if (bExtern) - { - eResultType = result_ignore; - } - - pStati->SetCur(finished); -} - -void -PE_VarFunc::SpReturn_FunctionStd() -{ - if ( (NOT bExtern) OR bExternC ) - { - aResultIds.push_back(pSpuFunctionStd->Child().Result_Id()); - eResultType = result_function; - } - else - { - eResultType = result_ignore; - } - - if ( NOT pSpuFunctionStd->Child().Result_WithImplementation() ) - pStati->SetCur(finished); - else - pStati->SetCur(finishedIncludingFunctionImplementation); -} - -void -PE_VarFunc::SpReturn_Ignore() -{ - pStati->SetCur(finished); -} - -void -PE_VarFunc::On_start_Identifier(const char *) -{ - pSpuType->Push(not_done); -} - -void -PE_VarFunc::On_start_operator(const char *) -{ - pSpuFunctionCastOperator->Push(done); -} - -void -PE_VarFunc::On_start_TypeKey(const char *) -{ - pSpuType->Push(not_done); -} - -void -PE_VarFunc::On_start_virtual(const char *) -{ - SetTokenResult(done, stay); - bVirtual = true; -} - -void -PE_VarFunc::On_start_Tilde(const char *) -{ - SetTokenResult(done, stay); - pStati->SetCur(expectName); - - bInDestructor = true; -} - -void -PE_VarFunc::On_start_const(const char *) -{ - pSpuType->Push(not_done); -} - -void -PE_VarFunc::On_start_volatile(const char *) -{ - pSpuType->Push(not_done); -} - -void -PE_VarFunc::On_start_extern(const char *) -{ - SetTokenResult(done, stay); - bExtern = true; -} - -void -PE_VarFunc::On_start_static(const char *) -{ - SetTokenResult(done, stay); - bStatic = true; -} - -void -PE_VarFunc::On_start_mutable(const char *) -{ - SetTokenResult(done, stay); - bMutable = true; -} - -void -PE_VarFunc::On_start_register(const char *) -{ - SetTokenResult(done, stay); - bRegister = true; -} - -void -PE_VarFunc::On_start_inline(const char *) -{ - SetTokenResult(done, stay); - - bInline = true; -} - -void -PE_VarFunc::On_start_explicit(const char *) -{ - SetTokenResult(done, stay); - bExplicit = true; -} - -void -PE_VarFunc::On_start_Bracket_Right(const char *) -{ - SetTokenResult(not_done, pop_success); -} - -void -PE_VarFunc::On_start_typename(const char *) -{ - pSpuType->Push(not_done); -} - -void -PE_VarFunc::On_expectCtor_Bracket_Left(const char *) -{ - pSpuFunctionCtor->Push(not_done); -} - -void -PE_VarFunc::On_afterClassDecl_Semicolon(const char *) -{ - SetTokenResult(done, pop_success); -} - -void -PE_VarFunc::On_expectName_Identifier(const char * i_sText) -{ - SetTokenResult(done, stay); - pStati->SetCur(afterName); - sName = i_sText; -} - -void -PE_VarFunc::On_expectName_operator(const char *) -{ - pSpuFunctionNormalOperator->Push(done); -} - -void -PE_VarFunc::On_expectName_Bracket_Left(const char *) -{ - // Function pointer declaration - pSpuIgnore->Push(not_done); - // TODO -} - - -void -PE_VarFunc::On_afterName_ArrayBracket_Left(const char *) -{ - pSpuVariable->Push(not_done); -} - -void -PE_VarFunc::On_afterName_Bracket_Left(const char *) -{ - if ( NOT bInDestructor) - pSpuFunctionStd->Push(not_done); - else - pSpuFunctionDtor->Push(not_done); -} - -void -PE_VarFunc::On_afterName_DoubleColon(const char *) -{ - pSpuIgnore->Push(done); // This seems to be only an implementation. - - // This may have been a template. - // In that case, the declaration needs to be closed. - Env().Close_OpenTemplate(); -} - -void -PE_VarFunc::On_afterName_Semicolon(const char *) -{ - pSpuVariable->Push(not_done); -} - -void -PE_VarFunc::On_afterName_Comma(const char *) -{ - pSpuVariable->Push(not_done); -} - -void -PE_VarFunc::On_afterName_Assign(const char * ) -{ - pSpuVariable->Push(not_done); -} - -void -PE_VarFunc::On_afterName_Less(const char * ) -{ - SetTokenResult(done, stay); - pStati->SetCur(afterName_inErraneousTemplate); - - nCounter_TemplateBrackets = 1; -} - -void -PE_VarFunc::On_afterName_inErraneousTemplate_Less(const char * ) -{ - SetTokenResult(done, stay); - - nCounter_TemplateBrackets++; -} - -void -PE_VarFunc::On_afterName_inErraneousTemplate_Greater(const char * ) -{ - SetTokenResult(done, stay); - - nCounter_TemplateBrackets--; - if ( nCounter_TemplateBrackets == 0 ) - pStati->SetCur(afterName); -} - -void -PE_VarFunc::On_afterName_inErraneousTemplate_Default(const char * ) -{ - SetTokenResult(done, stay); -} - -void -PE_VarFunc::On_finished_Semicolon(const char * ) // Should be Semicolon !!! -{ - SetTokenResult(done, pop_success); -} - -void -PE_VarFunc::On_finished_Comma(const char * ) -{ - SetTokenResult(done, stay); - pStati->SetCur(expectName); -} - -void -PE_VarFunc::On_finished_Default(const char * ) -{ - SetTokenResult(not_done, pop_success); -} - -void -PE_VarFunc::On_finishedIncludingFunctionImplementation_Default(const char * ) -{ - SetTokenResult(not_done, pop_success); -} - -ary::cpp::FunctionFlags -PE_VarFunc::CreateFunctionFlags() -{ - typedef ary::cpp::FunctionFlags FuncFlags; - - return FuncFlags( UINT16( - ( bStatic AND Env().Context().CurClass() == 0 ? FuncFlags::f_static_local : 0 ) - | ( bStatic AND Env().Context().CurClass() != 0 ? FuncFlags::f_static_member : 0 ) - | ( bExtern ? FuncFlags::f_extern : 0 ) - | ( Env().IsExternC() ? FuncFlags::f_externC : 0 ) - | ( bMutable ? FuncFlags::f_mutable : 0 ) - | ( bInline ? FuncFlags::f_inline : 0 ) - | ( bRegister ? FuncFlags::f_register : 0 ) - | ( bExplicit ? FuncFlags::f_explicit : 0 ) ) - ); - -} - - -} // namespace cpp - - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |