cid#1640468 Dereference after null check
[LibreOffice.git] / chart2 / source / inc / ControllerLockGuard.hxx
blob6de9212a02689f4ceb2ac6c26edfa39699c4ced8
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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 .
19 #pragma once
21 #include <config_options.h>
22 #include "charttoolsdllapi.hxx"
23 #include <rtl/ref.hxx>
25 namespace chart
27 class ChartModel;
30 namespace chart
32 /** This guard calls lockControllers at the given Model in the CTOR and
33 unlockControllers in the DTOR. Using this ensures that controllers do not
34 remain locked when leaving a function even in case an exception is thrown.
36 class UNLESS_MERGELIBS(OOO_DLLPUBLIC_CHARTTOOLS) ControllerLockGuardUNO
38 public:
39 explicit ControllerLockGuardUNO(rtl::Reference<::chart::ChartModel> xModel);
40 ~ControllerLockGuardUNO();
42 private:
43 rtl::Reference<::chart::ChartModel> mxModel;
46 class ControllerLockGuard
48 public:
49 explicit ControllerLockGuard(ChartModel& rModel);
50 ~ControllerLockGuard();
52 private:
53 ChartModel& mrModel;
56 /** This helper class can be used to pass a locking mechanism to other objects
57 without exposing the full XModel to it.
59 Use the ControllerLockHelperGuard to lock/unlock the model during a block of
60 instructions.
62 class UNLESS_MERGELIBS(OOO_DLLPUBLIC_CHARTTOOLS) ControllerLockHelper
64 public:
65 explicit ControllerLockHelper(rtl::Reference<::chart::ChartModel> xModel);
66 ~ControllerLockHelper();
68 SAL_DLLPRIVATE void lockControllers();
69 SAL_DLLPRIVATE void unlockControllers();
71 private:
72 rtl::Reference<::chart::ChartModel> m_xModel;
75 /** This guard calls lockControllers at the given ControllerLockHelper in the
76 CTOR and unlockControllers in the DTOR. Using this ensures that controllers
77 do not remain locked when leaving a function even in case an exception is
78 thrown.
80 class UNLESS_MERGELIBS(OOO_DLLPUBLIC_CHARTTOOLS) ControllerLockHelperGuard
82 public:
83 explicit ControllerLockHelperGuard(ControllerLockHelper& rHelper);
84 ~ControllerLockHelperGuard();
86 private:
87 ControllerLockHelper& m_rHelper;
90 } // namespace chart
92 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */