xref: /haiku/src/bin/keymap/Keymap.h (revision 1deede7388b04dbeec5af85cae7164735ea9e70d)
1 /*
2  * Copyright 2004-2010, Haiku, Inc. All Rights Reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Jérôme Duval
7  *		Axel Dörfler, axeld@pinc-software.de.
8  */
9 #ifndef KEYMAP_H
10 #define KEYMAP_H
11 
12 
13 #include <Keymap.h>
14 
15 #ifdef HAIKU_TARGET_PLATFORM_HAIKU
16 #	include <TextView.h>
17 #endif
18 
19 #include <stdio.h>
20 #ifndef __USE_GNU
21 #	define __USE_GNU
22 #endif
23 #include <regex.h>
24 
25 
26 class Keymap : public BKeymap {
27 public:
28 								Keymap();
29 								~Keymap();
30 
31 			status_t			LoadSource(const char* name);
32 			status_t			LoadSource(FILE* file);
33 			status_t			SaveAsCurrent();
34 			status_t			Save(const char* name);
35 			status_t			SaveAsSource(const char* name);
36 			status_t			SaveAsSource(FILE* file);
37 			status_t			SaveAsCppHeader(const char* name,
38 									const char* mapName);
39 
40 			status_t			Use();
41 
42 			void				RestoreSystemDefault();
43 
44 	static	bool				GetKey(const char* chars, int32 offset,
45 									char* buffer, size_t bufferSize);
46 
47 private:
48 #ifdef HAIKU_TARGET_PLATFORM_HAIKU
49 			void				_SaveSourceText(FILE* file,
50 									text_run_array** _textRuns = NULL);
51 #else
52 			void				_SaveSourceText(FILE* file);
53 #endif
54 			void				_ComputeChars(const char* buffer,
55 									struct re_registers& regs, int i,
56 									int& offset);
57 			void				_ComputeTables(const char* buffer,
58 									struct re_registers& regs, uint32& table);
59 };
60 
61 #define KEYMAP_ERROR_UNKNOWN_VERSION	(B_ERRORS_END + 1)
62 
63 #endif // KEYMAP_H
64