]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/translator.hh
release: 0.1.11
[lilypond.git] / lily / include / translator.hh
1 /*
2   translator.hh -- declare Translator
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9
10 #ifndef TRANSLATOR_HH
11 #define TRANSLATOR_HH
12
13 #include "string.hh"
14 #include "lily-proto.hh"
15 #include "virtual-methods.hh"
16
17 /** Make some kind of #Element#s from Requests. Elements are made by
18   hierarchically grouped #Translator#s
19   */
20 class Translator {
21 public:
22   String id_str_;
23     
24   int iterator_count_;
25     
26   virtual Global_translator *global_l() { return 0; }
27
28   virtual void print() const;
29     
30   /// Score_register = 0, Staff_registers = 1, etc)
31   virtual int depth_i() const=0;
32   virtual bool is_bottom_engraver_b() const { return false; }
33   virtual bool try_request (Request*);
34   virtual Translator *find_get_translator_l (String name, String id)=0;
35   virtual Translator *ancestor_l (int l=1)=0;
36   virtual ~Translator(){}
37   DECLARE_MY_RUNTIME_TYPEINFO;
38   Translator();
39   virtual Translator *get_default_interpreter()=0;
40 };
41
42 #endif // TRANSLATOR_HH