Line data Source code
1 : /**
2 : * Copyright Soramitsu Co., Ltd. 2017 All Rights Reserved.
3 : * http://soramitsu.co.jp
4 : *
5 : * Licensed under the Apache License, Version 2.0 (the "License");
6 : * you may not use this file except in compliance with the License.
7 : * You may obtain a copy of the License at
8 : *
9 : * http://www.apache.org/licenses/LICENSE-2.0
10 : *
11 : * Unless required by applicable law or agreed to in writing, software
12 : * distributed under the License is distributed on an "AS IS" BASIS,
13 : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 : * See the License for the specific language governing permissions and
15 : * limitations under the License.
16 : */
17 :
18 : #ifndef IROHA_SHARED_MODEL_ASSET_HPP
19 : #define IROHA_SHARED_MODEL_ASSET_HPP
20 :
21 : #include "interfaces/base/model_primitive.hpp"
22 : #include "interfaces/common_objects/types.hpp"
23 : #include "utils/string_builder.hpp"
24 :
25 : namespace shared_model {
26 : namespace interface {
27 :
28 : /**
29 : * Representation of valuable goods in the system
30 : */
31 : class Asset : public ModelPrimitive<Asset> {
32 : public:
33 : /**
34 : * @return Identity of asset
35 : */
36 : virtual const types::AccountIdType &assetId() const = 0;
37 :
38 : /**
39 : * @return Identity of domain
40 : */
41 : virtual const types::DomainIdType &domainId() const = 0;
42 :
43 : /**
44 : * @return Asset's fixed precision
45 : */
46 : virtual types::PrecisionType precision() const = 0;
47 :
48 : /**
49 : * Stringify the data.
50 : * @return the content of asset.
51 : */
52 : std::string toString() const override {
53 0 : return detail::PrettyStringBuilder()
54 0 : .init("Asset")
55 0 : .append("assetId", assetId())
56 0 : .append("domainId", domainId())
57 0 : .append("precision", std::to_string(precision()))
58 0 : .finalize();
59 0 : }
60 :
61 : /**
62 : * Checks equality of objects inside
63 : * @param rhs - other wrapped value
64 : * @return true, if wrapped objects are same
65 : */
66 : bool operator==(const ModelType &rhs) const override {
67 1 : return assetId() == rhs.assetId() and domainId() == rhs.domainId()
68 1 : and precision() == rhs.precision();
69 : }
70 : };
71 : } // namespace interface
72 : } // namespace shared_model
73 : #endif // IROHA_SHARED_MODEL_ASSET_HPP
|