1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_SW_SOURCE_CORE_INC_DBG_LAY_HXX
21 #define INCLUDED_SW_SOURCE_CORE_INC_DBG_LAY_HXX
23 #include <o3tl/typed_flags_set.hxx>
27 FileInit
= 0x00000000,
31 MoveBack
= 0x00000008,
34 GrowTest
= 0x00000040,
35 ShrinkTest
= 0x00000080,
37 PrintArea
= 0x00000200,
43 TestFormat
= 0x00010000,
44 FrmChanges
= 0x00020000,
47 template<> struct typed_flags
<PROT
> : is_typed_flags
<PROT
, 0x0003fbff> {};
50 enum class DbgAction
{
53 CreateMaster
, CreateFollow
,
63 class SwImplEnterLeave
;
67 static PROT s_nRecord
;
68 static SwImplProtocol
* s_pImpl
;
69 static bool Start() { return bool( PROT::Init
& s_nRecord
); }
72 static PROT
Record() { return s_nRecord
; }
73 static void SetRecord( PROT nNew
) { s_nRecord
= nNew
; }
74 static bool Record( PROT nFunc
) { return bool(( nFunc
| PROT::Init
) & s_nRecord
); }
75 static void Record( const SwFrame
* pFrame
, PROT nFunction
, DbgAction nAction
, void* pParam
);
82 std::unique_ptr
<SwImplEnterLeave
> pImpl
;
84 SwEnterLeave( const SwFrame
* pFrame
, PROT nFunc
, DbgAction nAct
, void* pPar
);
88 #define PROTOCOL( pFrame, nFunc, nAct, pPar ) { if( SwProtocol::Record( nFunc ) )\
89 SwProtocol::Record( pFrame, nFunc, nAct, pPar ); }
90 #define PROTOCOL_INIT SwProtocol::Init();
91 #define PROTOCOL_STOP SwProtocol::Stop();
92 #define PROTOCOL_ENTER( pFrame, nFunc, nAct, pPar ) SwEnterLeave aEnter( pFrame, nFunc, nAct, pPar );
96 #define PROTOCOL( pFrame, nFunc, nAct, pPar )
99 #define PROTOCOL_ENTER( pFrame, nFunc, nAct, pPar )
105 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */