aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/model/RBAContentState.hpp
blob: 7d4a81f3276f15425761920d597171e7dce6056f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
 * Copyright (c) 2019 DENSO CORPORATION.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * ContentState class header
 */

#ifndef RBACONTENTSTATE_HPP
#define RBACONTENTSTATE_HPP

#include <cstdint>
#include "RBARuleObject.hpp"

namespace rba
{

class DLL_EXPORT RBAContentState : public RBARuleObject
{
protected:
  explicit RBAContentState(const std::string& name);
  RBAContentState(const RBAContentState&)=delete;
  RBAContentState(const RBAContentState&&)=delete;
  RBAContentState& operator=(const RBAContentState&)=delete;
  RBAContentState& operator=(const RBAContentState&&)=delete;

public:
  virtual ~RBAContentState()=default;

public:
  void clearStatus() final;
  virtual bool isViewContentState() const;
  virtual bool isSoundContentState() const;

  std::string getUniqueName() const override;
  std::int32_t getContentStatePriority() const;
  void setPriority(const std::int32_t newPriority);
  std::int32_t getContentStateOrder() const;
  void setOrder(const std::int32_t newOrder);

  static bool compareFirstComeFirst(const RBAContentState* const lhs,
				    const RBAContentState* const rhs);
  static bool compareLastComeFirst(const RBAContentState* const lhs,
				   const RBAContentState* const rhs);
  static bool comparePriorityFirstComeFirst(const RBAContentState* const lhs,
					    const RBAContentState* const rhs);
  static bool comparePriorityLastComeFirst(const RBAContentState* const lhs,
					   const RBAContentState* const rhs);

  // Log
  const std::string getPriorityString() const;
  const std::string getOrderString() const;
  
private:
  std::int32_t priority_ {0};
  std::int32_t order_ {0};

};

}

#endif