#ifndef BASE_JSON_JSON_COMMON_H_
#define BASE_JSON_JSON_COMMON_H_
#include <stddef.h>
#include "base/check_op.h"
#include "base/memory/raw_ptr.h"
namespace base {
namespace internal {
const size_t kAbsoluteMaxDepth = 200;
class StackMarker {
public:
StackMarker(size_t max_depth, size_t* depth)
: max_depth_(max_depth), depth_(depth) {
++(*depth_);
DCHECK_LE(*depth_, max_depth_);
}
StackMarker(const StackMarker&) = delete;
StackMarker& operator=(const StackMarker&) = delete;
~StackMarker() { --(*depth_); }
bool IsTooDeep() const { return *depth_ >= max_depth_; }
private:
const size_t max_depth_;
const raw_ptr<size_t> depth_;
};
}
}
#endif