Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/metal-cpp/Metal/MTL4PipelineDataSetSerializer.hpp
21066 views
1
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
2
//
3
// Metal/MTL4PipelineDataSetSerializer.hpp
4
//
5
// Copyright 2020-2025 Apple Inc.
6
//
7
// Licensed under the Apache License, Version 2.0 (the "License");
8
// you may not use this file except in compliance with the License.
9
// You may obtain a copy of the License at
10
//
11
// http://www.apache.org/licenses/LICENSE-2.0
12
//
13
// Unless required by applicable law or agreed to in writing, software
14
// distributed under the License is distributed on an "AS IS" BASIS,
15
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
// See the License for the specific language governing permissions and
17
// limitations under the License.
18
//
19
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
20
21
#pragma once
22
23
#include "../Foundation/Foundation.hpp"
24
#include "MTLDefines.hpp"
25
#include "MTLHeaderBridge.hpp"
26
#include "MTLPrivate.hpp"
27
28
namespace MTL4
29
{
30
class PipelineDataSetSerializerDescriptor;
31
32
_MTL_OPTIONS(NS::UInteger, PipelineDataSetSerializerConfiguration) {
33
PipelineDataSetSerializerConfigurationCaptureDescriptors = 1,
34
PipelineDataSetSerializerConfigurationCaptureBinaries = 1 << 1,
35
};
36
37
class PipelineDataSetSerializerDescriptor : public NS::Copying<PipelineDataSetSerializerDescriptor>
38
{
39
public:
40
static PipelineDataSetSerializerDescriptor* alloc();
41
42
PipelineDataSetSerializerConfiguration configuration() const;
43
44
PipelineDataSetSerializerDescriptor* init();
45
46
void setConfiguration(MTL4::PipelineDataSetSerializerConfiguration configuration);
47
};
48
class PipelineDataSetSerializer : public NS::Referencing<PipelineDataSetSerializer>
49
{
50
public:
51
bool serializeAsArchiveAndFlushToURL(const NS::URL* url, NS::Error** error);
52
53
NS::Data* serializeAsPipelinesScript(NS::Error** error);
54
};
55
56
}
57
_MTL_INLINE MTL4::PipelineDataSetSerializerDescriptor* MTL4::PipelineDataSetSerializerDescriptor::alloc()
58
{
59
return NS::Object::alloc<MTL4::PipelineDataSetSerializerDescriptor>(_MTL_PRIVATE_CLS(MTL4PipelineDataSetSerializerDescriptor));
60
}
61
62
_MTL_INLINE MTL4::PipelineDataSetSerializerConfiguration MTL4::PipelineDataSetSerializerDescriptor::configuration() const
63
{
64
return Object::sendMessage<MTL4::PipelineDataSetSerializerConfiguration>(this, _MTL_PRIVATE_SEL(configuration));
65
}
66
67
_MTL_INLINE MTL4::PipelineDataSetSerializerDescriptor* MTL4::PipelineDataSetSerializerDescriptor::init()
68
{
69
return NS::Object::init<MTL4::PipelineDataSetSerializerDescriptor>();
70
}
71
72
_MTL_INLINE void MTL4::PipelineDataSetSerializerDescriptor::setConfiguration(MTL4::PipelineDataSetSerializerConfiguration configuration)
73
{
74
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setConfiguration_), configuration);
75
}
76
77
_MTL_INLINE bool MTL4::PipelineDataSetSerializer::serializeAsArchiveAndFlushToURL(const NS::URL* url, NS::Error** error)
78
{
79
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(serializeAsArchiveAndFlushToURL_error_), url, error);
80
}
81
82
_MTL_INLINE NS::Data* MTL4::PipelineDataSetSerializer::serializeAsPipelinesScript(NS::Error** error)
83
{
84
return Object::sendMessage<NS::Data*>(this, _MTL_PRIVATE_SEL(serializeAsPipelinesScriptWithError_), error);
85
}
86
87