1# Copyright 2004-2008 Roman Yakovenko.
2# Distributed under the Boost Software License, Version 1.0. (See
3# accompanying file LICENSE_1_0.txt or copy at
4# http://www.boost.org/LICENSE_1_0.txt)
5
6import os
7from . import code_creator
8
9class instruction_t(code_creator.code_creator_t):
10    """
11    This class is used as a base class for different instruction for code creators.
12    """
13    #TODO: add silent option and make it default
14    def __init__(self, silent=True):
15        code_creator.code_creator_t.__init__(self)
16        self._silent = silent
17
18    def get_silent(self):
19        return self._silent
20
21    def set_silent(self, silent ):
22        self._silent = silent
23
24    silent = property( get_silent, set_silent
25                       , doc="""silent property controls, whether instruction
26                         should be written within generated code or not.
27                         Default value is True - not written.""" )
28
29    def _create_impl(self):
30        if self.silent:
31            return ''
32        answer = []
33        for line in self._generate_description().split( os.linesep ):
34            answer.append( '// %s' % line )
35        return os.linesep.join( answer )
36
37    def _generate_description(self):
38        raise NotImplementedError()
39
40    def _get_system_files_impl( self ):
41        return []
42