// vim:fileencoding=utf-8:foldmethod=marker

#ifndef XORSHIFT_H
#define XORSHIFT_H

#include "../../common/aliases/aliases.h"
#include "../../common/platform/platform.h"

#ifdef WP_PLATFORM_CPP
BEGIN_C_LINKAGE
#endif // !WP_PLATFORM_CPP

typedef struct WpXor256State WpXor256State;
struct WpXor256State {
	u64 x;
	u64 y;
	u64 z;
	u64 w;
};

WpXor256State wpPrngXorshiftInit(void);
u64 wpPrngXorshift256(WpXor256State *state);
u64 wpPrngXorshift256ss(WpXor256State *state);
u64 wpPrngXorshift256p(WpXor256State *state);

#ifdef WP_PLATFORM_CPP
END_C_LINKAGE
#endif // !WP_PLATFORM_CPP

#endif // !XORSHIFT_H
