]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/object-key-dumper.hh
1dd1e6c1138654f0e4bbcbdd00768adba035b7ab
[lilypond.git] / lily / include / object-key-dumper.hh
1 /*
2   object-key-dumper.hh -- declare Object_key_dumper
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
7
8 */
9
10 #ifndef OBJECT_KEY_DUMPER_HH
11 #define OBJECT_KEY_DUMPER_HH
12
13 #include <map>
14
15 #include "lily-guile.hh"
16 #include "object-key.hh"
17 #include "smobs.hh"
18
19 typedef std::map<Object_key const*, Object_key const*, Object_key_less> Key_to_key_map;
20 typedef std::map<Object_key const*, int> Pointer_to_int_map;
21 typedef std::map<int, Object_key const *> Int_to_key_map;
22
23 class Object_key_dumper
24 {
25   SCM file_contents_;
26   Key_to_key_map serialized_keys_;
27   Pointer_to_int_map key_serial_numbers_;
28   int next_available_;
29   
30   SCM key_serial (int);
31   SCM serialize_key (Object_key const *);
32   DECLARE_SMOBS (Object_key_dumper,);
33 public:
34   Object_key_dumper (); 
35   SCM get_file_contents () const;
36   SCM dump_key (Object_key const *);
37 };
38
39 DECLARE_UNSMOB(Object_key_dumper, key_dumper);
40
41 #endif /* OBJECT_KEY_DUMPER_HH */
42