'If xcode_settings is None, all methods on this class are no-ops.
Args:
gyp_path_to_build_path: A function that takes a gyp-relative path,
and returns a path relative to the build directory.
gyp_path_to_build_output: A function that takes a gyp-relative path and
a language code (\'c\', \'cc\', \'m\', or \'mm\'), and that returns a path
to where the output of precompiling that path for that language
should be placed (without the trailing \'.gch\').'

def __init__(self, xcode_settings, gyp_path_to_build_path, gyp_path_to_build_output):

    self.header = None
    self.compile_headers = False
    if xcode_settings:
        self.header = xcode_settings.GetPerTargetSetting('GCC_PREFIX_HEADER')
        self.compile_headers = (xcode_settings.GetPerTargetSetting('GCC_PRECOMPILE_PREFIX_HEADER', default='NO') != 'NO')
    self.compiled_headers = {}
    if self.header:
        if self.compile_headers:
            for lang in ['c', 'cc', 'm', 'mm']:
                self.compiled_headers[lang] = gyp_path_to_build_output(self.header, lang)
        self.header = gyp_path_to_build_path(self.header)
