Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
src
sksl
ir
SkSLStructDefinition.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2023 Google LLC
3
*
4
* Use of this source code is governed by a BSD-style license that can be
5
* found in the LICENSE file.
6
*/
7
8
#include "
src/sksl/ir/SkSLStructDefinition.h
"
9
10
#include "
include/private/base/SkSpan_impl.h
"
11
#include "
src/sksl/SkSLContext.h
"
12
#include "
src/sksl/ir/SkSLLayout.h
"
13
#include "
src/sksl/ir/SkSLModifierFlags.h
"
14
#include "
src/sksl/ir/SkSLSymbolTable.h
"
15
#include "
src/sksl/ir/SkSLType.h
"
16
17
#include <utility>
18
19
using namespace
skia_private
;
20
21
namespace
SkSL
{
22
23
std::unique_ptr<StructDefinition>
StructDefinition::Convert
(
const
Context
& context,
24
Position
pos
,
25
std::string_view
name
,
26
TArray<Field>
fields) {
27
std::unique_ptr<Type> ownedType =
Type::MakeStructType
(context,
pos
,
name
,
28
std::move(fields),
29
/*interfaceBlock=*/
false
);
30
const
SkSL::Type
*
type
= context.
fSymbolTable
->
add
(context, std::move(ownedType));
31
return
StructDefinition::Make
(
pos
, *
type
);
32
}
33
34
std::unique_ptr<StructDefinition>
StructDefinition::Make
(
Position
pos
,
const
Type
&
type
) {
35
return
std::make_unique<SkSL::StructDefinition>(
pos
,
type
);
36
}
37
38
std::string
StructDefinition::description
()
const
{
39
std::string
s
=
"struct "
;
40
s
+= this->
type
().
name
();
41
s +=
" { "
;
42
for
(
const
auto
& f : this->
type
().
fields
()) {
43
s += f.fLayout.description();
44
s
+= f.fModifierFlags.description();
45
s
+=
' '
;
46
s
+= f.fType->description();
47
s
+=
' '
;
48
s
+= f.fName;
49
s
+=
"; "
;
50
}
51
s
+=
"};"
;
52
return
s
;
53
}
54
55
}
// namespace SkSL
pos
SkPoint pos
Definition
ImageShaderTest.cpp:27
SkSLContext.h
SkSLLayout.h
SkSLModifierFlags.h
SkSLStructDefinition.h
SkSLSymbolTable.h
SkSLType.h
SkSpan_impl.h
SkSL::Context
Definition
SkSLContext.h:24
SkSL::Context::fSymbolTable
SymbolTable * fSymbolTable
Definition
SkSLContext.h:48
SkSL::Position
Definition
SkSLPosition.h:18
SkSL::StructDefinition::Make
static std::unique_ptr< StructDefinition > Make(Position pos, const Type &type)
Definition
SkSLStructDefinition.cpp:34
SkSL::StructDefinition::description
std::string description() const override
Definition
SkSLStructDefinition.cpp:38
SkSL::StructDefinition::Convert
static std::unique_ptr< StructDefinition > Convert(const Context &context, Position pos, std::string_view name, skia_private::TArray< Field > fields)
Definition
SkSLStructDefinition.cpp:23
SkSL::StructDefinition::type
const Type & type() const
Definition
SkSLStructDefinition.h:48
SkSL::SymbolTable::add
T * add(const Context &context, std::unique_ptr< T > symbol)
Definition
SkSLSymbolTable.h:121
SkSL::Symbol::name
std::string_view name() const
Definition
SkSLSymbol.h:51
SkSL::Type
Definition
SkSLType.h:94
SkSL::Type::fields
virtual SkSpan< const Field > fields() const
Definition
SkSLType.h:469
SkSL::Type::MakeStructType
static std::unique_ptr< Type > MakeStructType(const Context &context, Position pos, std::string_view name, skia_private::TArray< Field > fields, bool interfaceBlock=false)
Definition
SkSLType.cpp:811
skia_private::TArray
Definition
SkTArray.h:40
s
struct MyStruct s
type
uint8_t type
Definition
fl_standard_message_codec_test.cc:1115
name
const char * name
Definition
fuchsia.cc:50
SkSL
Definition
SkCapabilities.h:15
Type
Definition
asyncrescaleandread.cpp:530
skia_private
Definition
SkTArray.h:32
Generated on Fri Apr 26 2024 06:17:32 for Flutter Engine by
1.9.8