xref: /aoo42x/main/slideshow/source/inc/state.hxx (revision aaef562f)
1*aaef562fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*aaef562fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*aaef562fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*aaef562fSAndrew Rist  * distributed with this work for additional information
6*aaef562fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*aaef562fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*aaef562fSAndrew Rist  * "License"); you may not use this file except in compliance
9*aaef562fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*aaef562fSAndrew Rist  *
11*aaef562fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*aaef562fSAndrew Rist  *
13*aaef562fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*aaef562fSAndrew Rist  * software distributed under the License is distributed on an
15*aaef562fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*aaef562fSAndrew Rist  * KIND, either express or implied.  See the License for the
17*aaef562fSAndrew Rist  * specific language governing permissions and limitations
18*aaef562fSAndrew Rist  * under the License.
19*aaef562fSAndrew Rist  *
20*aaef562fSAndrew Rist  *************************************************************/
21*aaef562fSAndrew Rist 
22*aaef562fSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef INCLUDED_SLIDESHOW_STATE_HXX
25cdf0e10cSrcweir #define INCLUDED_SLIDESHOW_STATE_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <sal/types.h>
28cdf0e10cSrcweir #include <boost/shared_ptr.hpp>
29cdf0e10cSrcweir 
30cdf0e10cSrcweir 
31cdf0e10cSrcweir /* Definition of State interface */
32cdf0e10cSrcweir 
33cdf0e10cSrcweir namespace slideshow
34cdf0e10cSrcweir {
35cdf0e10cSrcweir     namespace internal
36cdf0e10cSrcweir     {
37cdf0e10cSrcweir 
38cdf0e10cSrcweir         /** This interface represents a stateful object.
39cdf0e10cSrcweir 
40cdf0e10cSrcweir             The state ID returned by the getStateId() method
41cdf0e10cSrcweir             abstractly encodes the object's state. When this ID
42cdf0e10cSrcweir             changes, clients can assume that the object's state has
43cdf0e10cSrcweir             changed.
44cdf0e10cSrcweir          */
45cdf0e10cSrcweir         class State
46cdf0e10cSrcweir         {
47cdf0e10cSrcweir         public:
~State()48cdf0e10cSrcweir             virtual ~State() {}
49cdf0e10cSrcweir 
50cdf0e10cSrcweir             /// Abstract, numerically encoded state ID
51cdf0e10cSrcweir             typedef ::std::size_t StateId;
52cdf0e10cSrcweir 
53cdf0e10cSrcweir             /** This method returns a numerical state identifier.
54cdf0e10cSrcweir 
55cdf0e10cSrcweir                 The state ID returned by this method abstractly
56cdf0e10cSrcweir                 encodes the object's state. When this ID changes,
57cdf0e10cSrcweir                 clients can assume that the object's state has
58cdf0e10cSrcweir                 changed.
59cdf0e10cSrcweir 
60cdf0e10cSrcweir                 @return an abstract, numerical state ID.
61cdf0e10cSrcweir              */
62cdf0e10cSrcweir             virtual StateId getStateId() const = 0;
63cdf0e10cSrcweir         };
64cdf0e10cSrcweir 
65cdf0e10cSrcweir         typedef ::boost::shared_ptr< State > StateSharedPtr;
66cdf0e10cSrcweir     }
67cdf0e10cSrcweir }
68cdf0e10cSrcweir 
69cdf0e10cSrcweir #endif /* INCLUDED_SLIDESHOW_STATE_HXX */
70