#include "src/sksl/SkSLModuleLoader.h"
#include "include/core/SkTypes.h"
#include "include/private/base/SkMutex.h"
#include "src/base/SkNoDestructor.h"
#include "src/sksl/SkSLBuiltinTypes.h"
#include "src/sksl/SkSLCompiler.h"
#include "src/sksl/SkSLModule.h"
#include "src/sksl/SkSLPosition.h"
#include "src/sksl/SkSLProgramKind.h"
#include "src/sksl/ir/SkSLIRNode.h"
#include "src/sksl/ir/SkSLLayout.h"
#include "src/sksl/ir/SkSLModifierFlags.h"
#include "src/sksl/ir/SkSLProgramElement.h"
#include "src/sksl/ir/SkSLSymbolTable.h"
#include "src/sksl/ir/SkSLType.h"
#include "src/sksl/ir/SkSLVariable.h"
#include <algorithm>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#define MODULE_DATA(type) …
namespace SkSL {
#define TYPE …
static constexpr BuiltinTypePtr kRootTypes[] = …;
static constexpr BuiltinTypePtr kPrivateTypes[] = …;
#undef TYPE
struct ModuleLoader::Impl { … };
ModuleLoader ModuleLoader::Get() { … }
ModuleLoader::ModuleLoader(ModuleLoader::Impl& m) : … { … }
ModuleLoader::~ModuleLoader() { … }
void ModuleLoader::unloadModules() { … }
ModuleLoader::Impl::Impl() { … }
static std::unique_ptr<Module> compile_and_shrink(SkSL::Compiler* compiler,
ProgramKind kind,
ModuleType moduleType,
std::string moduleSource,
const Module* parent) { … }
const BuiltinTypes& ModuleLoader::builtinTypes() { … }
const Module* ModuleLoader::rootModule() { … }
void ModuleLoader::addPublicTypeAliases(const SkSL::Module* module) { … }
const Module* ModuleLoader::loadPublicModule(SkSL::Compiler* compiler) { … }
const Module* ModuleLoader::loadPrivateRTShaderModule(SkSL::Compiler* compiler) { … }
const Module* ModuleLoader::loadSharedModule(SkSL::Compiler* compiler) { … }
const Module* ModuleLoader::loadGPUModule(SkSL::Compiler* compiler) { … }
const Module* ModuleLoader::loadFragmentModule(SkSL::Compiler* compiler) { … }
const Module* ModuleLoader::loadVertexModule(SkSL::Compiler* compiler) { … }
const Module* ModuleLoader::loadComputeModule(SkSL::Compiler* compiler) { … }
const Module* ModuleLoader::loadGraphiteFragmentModule(SkSL::Compiler* compiler) { … }
const Module* ModuleLoader::loadGraphiteFragmentES2Module(SkSL::Compiler* compiler) { … }
const Module* ModuleLoader::loadGraphiteVertexModule(SkSL::Compiler* compiler) { … }
const Module* ModuleLoader::loadGraphiteVertexES2Module(SkSL::Compiler* compiler) { … }
void ModuleLoader::Impl::makeRootSymbolTable() { … }
}