/*
* 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_MODIFIERFLAGS
#define SKSL_MODIFIERFLAGS
#include "include/private/base/SkTo.h"
#include "src/base/SkEnumBitMask.h"
#include <string>
namespace SkSL {
class Context;
class Position;
enum class ModifierFlag : int {
kNone = 0 ,
// Real GLSL modifiers
kFlat = 1 << 0 ,
kNoPerspective = 1 << 1 ,
kConst = 1 << 2 ,
kUniform = 1 << 3 ,
kIn = 1 << 4 ,
kOut = 1 << 5 ,
kHighp = 1 << 6 ,
kMediump = 1 << 7 ,
kLowp = 1 << 8 ,
kReadOnly = 1 << 9 ,
kWriteOnly = 1 << 10 ,
kBuffer = 1 << 11 ,
kPixelLocal = 1 << 12 ,
// Corresponds to the GLSL 'shared' modifier. Only allowed in a compute program.
kWorkgroup = 1 << 13 ,
// SkSL extensions, not present in GLSL
kExport = 1 << 14 ,
kES3 = 1 << 15 ,
kPure = 1 << 16 ,
kInline = 1 << 17 ,
kNoInline = 1 << 18 ,
};
} // namespace SkSL
SK_MAKE_BITMASK_OPS(SkSL::ModifierFlag);
namespace SkSL {
class ModifierFlags : public SkEnumBitMask<SkSL::ModifierFlag> {
public :
using SkEnumBitMask<SkSL::ModifierFlag>::SkEnumBitMask;
ModifierFlags(SkEnumBitMask<SkSL::ModifierFlag> that)
: SkEnumBitMask<SkSL::ModifierFlag>(that) {}
std::string description() const ;
std::string paddedDescription() const ;
/**
* Verifies that only permitted modifier flags are included. Reports errors and returns false in
* the event of a violation.
*/
bool checkPermittedFlags(const Context& context,
Position pos,
ModifierFlags permittedModifierFlags) const ;
bool isConst() const { return SkToBool(*this & ModifierFlag::kConst); }
bool isUniform() const { return SkToBool(*this & ModifierFlag::kUniform); }
bool isReadOnly() const { return SkToBool(*this & ModifierFlag::kReadOnly); }
bool isWriteOnly() const { return SkToBool(*this & ModifierFlag::kWriteOnly); }
bool isBuffer() const { return SkToBool(*this & ModifierFlag::kBuffer); }
bool isPixelLocal() const { return SkToBool(*this & ModifierFlag::kPixelLocal); }
bool isWorkgroup() const { return SkToBool(*this & ModifierFlag::kWorkgroup); }
bool isExport() const { return SkToBool(*this & ModifierFlag::kExport); }
bool isES3() const { return SkToBool(*this & ModifierFlag::kES3); }
bool isPure() const { return SkToBool(*this & ModifierFlag::kPure); }
bool isInline() const { return SkToBool(*this & ModifierFlag::kInline); }
bool isNoInline() const { return SkToBool(*this & ModifierFlag::kNoInline); }
bool isFlat() const { return SkToBool(*this & ModifierFlag::kFlat); }
bool isNoPerspective() const { return SkToBool(*this & ModifierFlag::kNoPerspective); }
};
} // namespace SkSL
#endif
Messung V0.5 in Prozent C=89 H=96 G=92
[Dauer der Verarbeitung: 0.44 Sekunden, vorverarbeitet 2026-06-06]