<commit_before>

#ifdef KAI_PRAGMA_ONCE
#	pragma once
#endif

#ifndef KAI_INTERFACES_H
#	define KAI_INTERFACES_H

KAI_BEGIN

struct StorageBase;
struct Label;

struct IObject
{
	enum Switch 
	{ 
		Marked = 1, 
		Managed = 2, 
		Const = 4, 
		Clean = 8, 
		NoRecurse = 16,

		DefaultSwitches = Managed
	};

	enum Color
	{
		White, Grey, Black
	};
	virtual const StorageBase &GetStorageBase() const = 0;
	virtual StorageBase &GetStorageBase() = 0;

	virtual Number GetTypeNumber() const = 0;
	virtual const ClassBase *GetClass() const = 0;
	
	virtual Registry *GetRegistry() const = 0;<commit_msg>Correctly reference Type::Number.<commit_after>

#ifdef KAI_PRAGMA_ONCE
#	pragma once
#endif

#ifndef KAI_INTERFACES_H
#	define KAI_INTERFACES_H

KAI_BEGIN

struct StorageBase;
struct Label;

struct IObject
{
	enum Switch 
	{ 
		Marked = 1, 
		Managed = 2, 
		Const = 4, 
		Clean = 8, 
		NoRecurse = 16,

		DefaultSwitches = Managed
	};

	enum Color
	{
		White, Grey, Black
	};
	virtual const StorageBase &GetStorageBase() const = 0;
	virtual StorageBase &GetStorageBase() = 0;

	virtual Type::Number GetTypeNumber() const = 0;
	virtual const ClassBase *GetClass() const = 0;
	
	virtual Registry *GetRegistry() const = 0;
{'fraction_non_alphanumeric': 0.09292763157894737, 'fraction_numerical': 0.018092105263157895, 'mean_word_length': 3.987704918032787, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6471683', 'n_tokens_mistral': 497, 'n_tokens_neox': 430, 'n_words': 125}