1/*
2 * Copyright 2010, Haiku Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _ATOMIZER_H
6#define _ATOMIZER_H
7
8#include <SupportDefs.h>
9#include <module.h>
10
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16
17#define B_ATOMIZER_MODULE_NAME	"generic/atomizer/v1"
18#define B_SYSTEM_ATOMIZER_NAME	"Haiku System Atomizer"
19
20
21typedef struct atomizer_info {
22	void*		atomizer;
23	char		name[B_OS_NAME_LENGTH];
24	uint32		atom_count;
25} atomizer_info;
26
27
28typedef struct atomizer_module_info {
29	module_info		minfo;
30	const void*		(*find_or_make_atomizer)(const char* string);
31	status_t		(*delete_atomizer)(const void* atomizer);
32	const void*		(*atomize)
33						(const void* atomizer, const char* string, int create);
34	const char*		(*string_for_token)
35						(const void* atomizer, const void* atom);
36	status_t		(*get_next_atomizer_info)
37						(void** cookie, atomizer_info* info);
38	const void*		(*get_next_atom)(const void* atomizer, uint32* cookie);
39} atomizer_module_info;
40
41
42#ifdef __cplusplus
43}
44#endif
45
46
47#endif	/* _ATOMIZER_H */
48