LibreOffice
LibreOffice 7.4 SDK C/C++ API Reference
EnvGuards.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
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/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
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 .
18  */
19 
20 /*
21  * This file is part of LibreOffice published API.
22  */
23 
24 #ifndef INCLUDED_CPPU_ENVGUARDS_HXX
25 #define INCLUDED_CPPU_ENVGUARDS_HXX
26 
27 #include "uno/environment.hxx"
28 
29 
30 namespace cppu
31 {
39  class EnvGuard
40  {
41  css::uno::Environment m_env;
42 
43  public:
44  explicit EnvGuard(css::uno::Environment const & env)
45  {
46  if (env.is())
47  {
48  m_env = css::uno::Environment::getCurrent();
49  env.enter();
50  }
51  }
52 
54  {
55  m_env.enter();
56  }
57 
62  bool SAL_CALL is() const
63  {
64  return m_env.is();
65  }
66 
70  void clear()
71  {
72  if (m_env.is())
73  {
74  m_env.enter();
75  m_env.clear();
76  }
77  }
78  };
79 
88  {
89  css::uno::Environment m_env;
90 
91  public:
92  explicit AntiEnvGuard()
93  : m_env(css::uno::Environment::getCurrent())
94  {
96  }
97 
99  {
100  m_env.enter();
101  }
102  };
103 }
104 
105 #endif
106 
107 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
CPPU_DLLPUBLIC void uno_Environment_enter(uno_Environment *pEnv) SAL_THROW_EXTERN_C()
Enter an environment explicitly.
Definition: types.h:359
Definition: Enterable.hxx:31
Environment Guard The provided Environment becomes entered in the constructor and left in the destruc...
Definition: EnvGuards.hxx:40
bool is() const
Checks if the associated environment is non empty.
Definition: EnvGuards.hxx:62
~EnvGuard()
Definition: EnvGuards.hxx:53
void clear()
Leaves the associated environment and clears the reference.
Definition: EnvGuards.hxx:70
EnvGuard(css::uno::Environment const &env)
Definition: EnvGuards.hxx:44
Environment Anti-Guard Any entered Environment becomes left in the constructor and re-entered in the ...
Definition: EnvGuards.hxx:88
~AntiEnvGuard()
Definition: EnvGuards.hxx:98
AntiEnvGuard()
Definition: EnvGuards.hxx:92