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 IINTERFACE_HXX_INCLUDED
21 #define IINTERFACE_HXX_INCLUDED
23 #include <sal/types.h>
25 /** The base interface
31 /** Aquire a reference to an instance. A caller shall release
32 the instance by calling 'release' when it is no longer needed.
33 'acquire' and 'release' calls need to be balanced.
36 the current reference count of the instance for debugging purposes.
38 virtual sal_Int32
acquire() = 0;
40 /** Releases a reference to an instance. A caller has to call
41 'release' when a before aquired reference to an instance
42 is no longer needed. 'acquire' and 'release' calls need to
46 the current reference count of the instance for debugging purposes.
48 virtual sal_Int32
release() = 0;
50 /** Returns the current reference count. This method should be used for
51 debugging purposes. Using it otherwise is a signal of a design flaw.
53 virtual sal_Int32
getReferenceCount() const = 0;
56 virtual ~IInterface() {};
59 #endif // IDOCUMENT_HXX_INCLUDED
61 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */