123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #pragma once
- class SafeSize
- {
- public:
- SafeSize()
- {
- value = 0;
- overflow = false;
- }
- void Add(size_t add)
- {
- if (!overflow)
- {
- value += add;
- if (value < add)
- overflow=true;
- }
- }
- void AddN(size_t size, size_t count)
- {
- if (!overflow)
- {
- size_t total = size * count;
- if (total < size)
- {
- overflow = true;
- }
- else
- {
- Add(total);
- }
- }
- }
- bool Overflowed() const
- {
- return overflow;
- }
- operator size_t ()
- {
- return value;
- }
- private:
- size_t value;
- bool overflow;
- };
|