|  | /* | 
|  | * Copyright 2016 Google Inc. | 
|  | * | 
|  | * Use of this source code is governed by a BSD-style license that can be | 
|  | * found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  | #ifndef SKSL_CONTEXT | 
|  | #define SKSL_CONTEXT | 
|  |  | 
|  | #include "include/private/base/SkAssert.h" | 
|  |  | 
|  | namespace SkSL { | 
|  |  | 
|  | class BuiltinTypes; | 
|  | class ErrorReporter; | 
|  | struct Module; | 
|  | struct ProgramConfig; | 
|  | class SymbolTable; | 
|  |  | 
|  | /** | 
|  | * Contains compiler-wide objects and state. | 
|  | */ | 
|  | class Context { | 
|  | public: | 
|  | Context(const BuiltinTypes& types, ErrorReporter& errors); | 
|  | ~Context(); | 
|  |  | 
|  | // The Context holds a reference to all of the built-in types. | 
|  | const BuiltinTypes& fTypes; | 
|  |  | 
|  | // The Context holds a pointer to the configuration of the program being compiled. | 
|  | ProgramConfig* fConfig = nullptr; | 
|  |  | 
|  | // The Context holds a pointer to our error reporter. | 
|  | ErrorReporter* fErrors; | 
|  |  | 
|  | void setErrorReporter(ErrorReporter* e) { | 
|  | SkASSERT(e); | 
|  | fErrors = e; | 
|  | } | 
|  |  | 
|  | // The Context holds a pointer to our module with built-in declarations. | 
|  | const Module* fModule = nullptr; | 
|  |  | 
|  | // This is the current symbol table of the code we are processing, and therefore changes during | 
|  | // compilation. | 
|  | SymbolTable* fSymbolTable = nullptr; | 
|  | }; | 
|  |  | 
|  | }  // namespace SkSL | 
|  |  | 
|  | #endif |