<commit_before>/*
 * Copyright 2011 2012 2013 <NAME> <<EMAIL>>
 * See COPYING for terms of redistribution.
 */

#ifndef JIVE_ARCH_STORE_H
#define JIVE_ARCH_STORE_H

#include <jive/vsdg/node.h>

/* store normal form */

typedef struct jive_store_node_normal_form jive_store_node_normal_form;
typedef struct jive_store_node_normal_form_class jive_store_node_normal_form_class;

struct jive_store_node_normal_form_class {
	jive_node_normal_form_class base;
	void (*set_reducible)(jive_store_node_normal_form * self, bool enable);
	void (*normalized_create)(const jive_store_node_normal_form * self,
		struct jive_region * region, const jive_node_attrs * attrs, jive_output * address,
		jive_output * value, size_t nstates, jive_output * const istates[], jive_output * ostates[]);
};

extern const jive_store_node_normal_form_class JIVE_STORE_NODE_NORMAL_FORM_;
#define JIVE_STORE_NODE_NORMAL_FORM (JIVE_STORE_NODE_NORMAL_FORM_.base)

struct jive_store_node_normal_form {
	jive_node_normal_form base;
	bool enable_reducible;
};

JIVE_EXPORTED_INLINE jive_store_node_normal_form *
jive_store_node_normal_form_cast(jive_node_normal_form * self)
{
	const jive_node_normal_form_class * cls = self->class_;
	while (cls) {
		if (cls == &JIVE_STORE_NODE_NORMAL_FORM)
			return (jive_store_node_normal_form *) self;
		cls = cls->parent;
	}
	return NULL;
}

JIVE_EXPORTED_INLINE void
jive_store_node_normalized_create(const jive_store_node_normal_form * self,
	struct jive_region * region, const jive_node_attrs * attrs, jive_output * address,
	jive_output * value, size_t nstates, jive_output * const istates[], jive_output * ostates[])
{
	const jive_store_node_normal_form_class * cls;
	cls = (const jive_store_node_normal_form_class *) self->base.class_;

	return cls->normalized_create(self, region, attrs, address, value, nstates, istates, ostates);
}

JIVE_EXPORTED_INLINE void
jive_store_node_set_reducible(jive_store_node_normal_form * self, bool reducible)
{
	const jive_store_node_normal_form_class * cls;
	cls = (const jive_store_node_normal_form_class *) self->base.class_;
	cls->set_reducible(self, reducible);
}

/* store node */

extern const jive_node_class JIVE_STORE_NODE;

typedef struct jive_store_node_attrs jive_store_node_attrs;
typedef struct jive_store_node jive_store_node;<commit_msg>arch: replace open computation in jive_store_node_normal_form_cast<commit_after>/*
 * Copyright 2011 2012 2013 <NAME> <<EMAIL>>
 * See COPYING for terms of redistribution.
 */

#ifndef JIVE_ARCH_STORE_H
#define JIVE_ARCH_STORE_H

#include <jive/vsdg/node.h>

/* store normal form */

typedef struct jive_store_node_normal_form jive_store_node_normal_form;
typedef struct jive_store_node_normal_form_class jive_store_node_normal_form_class;

struct jive_store_node_normal_form_class {
	jive_node_normal_form_class base;
	void (*set_reducible)(jive_store_node_normal_form * self, bool enable);
	void (*normalized_create)(const jive_store_node_normal_form * self,
		struct jive_region * region, const jive_node_attrs * attrs, jive_output * address,
		jive_output * value, size_t nstates, jive_output * const istates[], jive_output * ostates[]);
};

extern const jive_store_node_normal_form_class JIVE_STORE_NODE_NORMAL_FORM_;
#define JIVE_STORE_NODE_NORMAL_FORM (JIVE_STORE_NODE_NORMAL_FORM_.base)

struct jive_store_node_normal_form {
	jive_node_normal_form base;
	bool enable_reducible;
};

JIVE_EXPORTED_INLINE jive_store_node_normal_form *
jive_store_node_normal_form_cast(jive_node_normal_form * self)
{
	if (jive_node_normal_form_isinstance(self, &JIVE_STORE_NODE_NORMAL_FORM))
		return (jive_store_node_normal_form *) self;
	else
		return NULL;
}

JIVE_EXPORTED_INLINE void
jive_store_node_normalized_create(const jive_store_node_normal_form * self,
	struct jive_region * region, const jive_node_attrs * attrs, jive_output * address,
	jive_output * value, size_t nstates, jive_output * const istates[], jive_output * ostates[])
{
	const jive_store_node_normal_form_class * cls;
	cls = (const jive_store_node_normal_form_class *) self->base.class_;

	return cls->normalized_create(self, region, attrs, address, value, nstates, istates, ostates);
}

JIVE_EXPORTED_INLINE void
jive_store_node_set_reducible(jive_store_node_normal_form * self, bool reducible)
{
	const jive_store_node_normal_form_class * cls;
	cls = (const jive_store_node_normal_form_class *) self->base.class_;
	cls->set_reducible(self, reducible);
}

/* store node */

extern const jive_node_class JIVE_STORE_NODE;

typedef struct jive_store_node_attrs jive_store_node_attrs;
typedef struct jive_store_node jive_store_node;
{'fraction_non_alphanumeric': 0.07514702679154868, 'fraction_numerical': 0.005227619255064256, 'mean_word_length': 7.696969696969697, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 21, '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': '5492405', 'n_tokens_mistral': 1737, 'n_tokens_neox': 1671, 'n_words': 317}