73e4170fd1347b8e52f3180141ee22c838918e4a
[platform/upstream/connectedhomeip.git] / src / lib / mdns / minimal / BytesRange.h
1 /*
2  *
3  *    Copyright (c) 2020 Project CHIP Authors
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 #pragma once
19
20 #include <cstddef>
21 #include <cstdint>
22
23 namespace mdns {
24 namespace Minimal {
25
26 /// Simple range of bytes with a start and an end
27 class BytesRange
28 {
29 public:
30     BytesRange() {}
31     BytesRange(const uint8_t * start, const uint8_t * end) : mStart(start), mEnd(end)
32     {
33         // negative ranges are not allowed
34         if (mStart > mEnd)
35         {
36             mEnd = mStart;
37         }
38     }
39
40     const uint8_t * Start() const { return mStart; }
41     const uint8_t * End() const { return mEnd; }
42
43     bool Contains(const uint8_t * p) const { return ((p >= mStart) && (p < mEnd)); }
44
45     size_t Size() const { return static_cast<size_t>(mEnd - mStart); }
46
47 private:
48     const uint8_t * mStart = nullptr;
49     const uint8_t * mEnd   = nullptr;
50 };
51
52 } // namespace Minimal
53
54 } // namespace mdns