#include "include/core/SkSpan.h"
#include "src/sksl/SkSLBuiltinTypes.h"
#include "src/sksl/SkSLCompiler.h"
#include "src/sksl/SkSLContext.h"
#include "src/sksl/SkSLErrorReporter.h"
#include "src/sksl/SkSLProgramSettings.h"
#include "src/sksl/SkSLString.h"
#include "src/sksl/ir/SkSLFieldSymbol.h"
#include "src/sksl/ir/SkSLInterfaceBlock.h"
#include "src/sksl/ir/SkSLLayout.h"
#include "src/sksl/ir/SkSLModifierFlags.h"
#include "src/sksl/ir/SkSLModifiers.h"
#include "src/sksl/ir/SkSLSymbolTable.h"
#include "src/sksl/ir/SkSLVarDeclarations.h"
#include <cstddef>
#include <cstdint>
#include <optional>
#include <utility>
usingnamespaceskia_private;
namespace SkSL {
enum class ProgramKind : int8_t;
InterfaceBlock::~InterfaceBlock() { … }
static std::optional<int> find_rt_adjust_index(SkSpan<const Field> fields) { … }
std::unique_ptr<InterfaceBlock> InterfaceBlock::Convert(const Context& context,
Position pos,
const Modifiers& modifiers,
std::string_view typeName,
TArray<Field> fields,
std::string_view varName,
int arraySize) { … }
std::unique_ptr<InterfaceBlock> InterfaceBlock::Make(const Context& context,
Position pos,
Variable* variable) { … }
std::string InterfaceBlock::description() const { … }
}