Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

50 changes: 50 additions & 0 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ let libraryEvolutionCondition = envBoolValue("LIBRARY_EVOLUTION", default: build
let compatibilityTestCondition = envBoolValue("COMPATIBILITY_TEST", default: false)

let useLocalDeps = envBoolValue("USE_LOCAL_DEPS")
let danceUIGraphCondition = envBoolValue("OPENATTRIBUTESHIMS_DANCEUIGRAPH", default: false)
let computeCondition = envBoolValue("OPENATTRIBUTESHIMS_COMPUTE", default: false)
let attributeGraphCondition = envBoolValue("OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH", default: false)

Expand Down Expand Up @@ -221,6 +222,21 @@ if !(compatibilityTestCondition && buildForDarwinPlatform) {
// MARK: - Extension

extension Target {
func addDanceUIGraphSettings() {
dependencies.append(
.product(name: "DanceUIGraph", package: "DanceUIGraph-spm")
)
dependencies.append(
.target(name: "OpenAttributeGraphDanceUIGraphShims")
)
addDanceUIGraphSwiftSettings()

var linkerSettings = linkerSettings ?? []
linkerSettings.append(.linkedLibrary("c++", .when(platforms: [.iOS, .macOS])))
linkerSettings.append(.linkedLibrary("z", .when(platforms: [.iOS, .macOS])))
self.linkerSettings = linkerSettings
}

func addAGSettings() {
dependencies.append(
.product(name: "AttributeGraph", package: "DarwinPrivateFrameworks")
Expand All @@ -242,6 +258,12 @@ extension Target {
linkerSettings.append(.linkedLibrary("swiftDemangle", .when(platforms: .darwinPlatforms)))
self.linkerSettings = linkerSettings
}

func addDanceUIGraphSwiftSettings() {
var swiftSettings = swiftSettings ?? []
swiftSettings.append(.define("OPENATTRIBUTEGRAPH_DANCEUIGRAPH"))
self.swiftSettings = swiftSettings
}
}

extension [Platform] {
Expand Down Expand Up @@ -314,6 +336,15 @@ let openAttributeGraphShimsTarget = Target.target(
cxxSettings: sharedCxxSettings,
swiftSettings: sharedSwiftSettings
)
let openAttributeGraphDanceUIGraphShimsTarget = Target.target(
name: "OpenAttributeGraphDanceUIGraphShims",
dependencies: [
.product(name: "DanceUIGraph", package: "DanceUIGraph-spm"),
],
path: "Sources/OpenAttributeGraphDanceUIGraphShims",
publicHeadersPath: "include",
cSettings: sharedCSettings
)

// MARK: - Test Targets

Expand Down Expand Up @@ -420,6 +451,25 @@ if computeCondition {
}
openAttributeGraphShimsTarget.addComputeSettings()
package.platforms = [.iOS(.v18), .macOS(.v15), .macCatalyst(.v18), .tvOS(.v18), .watchOS(.v10), .visionOS(.v2)]
} else if danceUIGraphCondition {
let danceUIGraphBinaryRepo: Package.Dependency
if useLocalDeps {
danceUIGraphBinaryRepo = Package.Dependency.package(path: "../DanceUIGraph-spm")
} else {
let version: Version = envStringValue("OPENATTRIBUTESHIMS_DANCEUIGRAPH_BINARY_VERSION").flatMap {
Version($0)
} ?? "0.0.3"
danceUIGraphBinaryRepo = Package.Dependency.package(
url: "https://github.com/OpenSwiftUIProject/DanceUIGraph-spm.git",
exact: version
)
}
package.dependencies.append(danceUIGraphBinaryRepo)
package.targets.append(openAttributeGraphDanceUIGraphShimsTarget)
openAttributeGraphShimsTarget.addDanceUIGraphSettings()
openAttributeGraphShimsTestsTarget.addDanceUIGraphSwiftSettings()
package.targets.append(openAttributeGraphShimsTestsTarget)
package.platforms = [.iOS(.v13), .macOS(.v10_15)]
} else if attributeGraphCondition, buildForDarwinPlatform {
setupDPFDependency()
openAttributeGraphShimsTarget.addAGSettings()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
#include <OpenAttributeGraphDanceUIGraphShims/OpenAttributeGraphDanceUIGraphShims.h>

void * _Nullable OAGDanceUIGraphGetContext(DanceUIGraphRef graph) SWIFT_CC(swift) {
return DanceUIGraphGetContext(graph);
}

void OAGDanceUIGraphSetContext(DanceUIGraphRef graph, void * _Nullable context) SWIFT_CC(swift) {
DanceUIGraphSetContext(graph, context);
}

DanceUIGraphAttribute OAGDanceUIGraphGetCurrentAttribute(void) SWIFT_CC(swift) {
return DanceUIGraphGetCurrentAttribute();
}

bool OAGDanceUIGraphCurrentAttributeWasModified(void) SWIFT_CC(swift) {
return DanceUIGraphCurrentAttributeWasModified();
}

DanceUIGraphAttribute OAGDanceUIGraphCurrentAttributeUpdatedReason(void) SWIFT_CC(swift) {
return DanceUIGraphCurrentAttributeUpdatedReason();
}

void *OAGDanceUIGraphClearUpdate(void) SWIFT_CC(swift) {
return DanceUIGraphClearUpdate();
}

void OAGDanceUIGraphSetUpdate(void *update) SWIFT_CC(swift) {
DanceUIGraphSetUpdate(update);
}

DanceUIGraphAttribute OAGDanceUIGraphCreateAttribute(DanceUIGraphTypeIndex typeID, const void *attribute, const void * _Nullable value) SWIFT_CC(swift) {
return DanceUIGraphCreateAttribute(typeID, (void *)attribute, (void *)value);
}

DanceUIGraphValue OAGDanceUIGraphGetValue(DanceUIGraphAttribute attribute, DanceUIGraphInputOptions options, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift) {
return DanceUIGraphGetValue(attribute, (DanceUIGraphValueOptions)options, metadata);
}

bool OAGDanceUIGraphSetValue(DanceUIGraphAttribute attribute, const void *value, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift) {
return DanceUIGraphSetValue(attribute, value, metadata);
}

DanceUIGraphValue OAGDanceUIGraphGetInputValue(DanceUIGraphAttribute destinationAttribute, DanceUIGraphAttribute inputAttribute, DanceUIGraphInputOptions options, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift) {
return DanceUIGraphGetInputValue(destinationAttribute, inputAttribute, (DanceUIGraphValueOptions)options, metadata);
}

const void * _Nullable OAGDanceUIGraphGetOutputValue(const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift) {
return DanceUIGraphGetOutputValue(metadata);
}

void OAGDanceUIGraphSetOutputValue(const void *value, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift) {
DanceUIGraphSetOutputValue((void *)value, metadata);
}

void OAGDanceUIGraphWithUpdate(DanceUIGraphAttribute attribute, void (*updateCallback)(void *ctx SWIFT_CONTEXT) SWIFT_CC(swift), const void *updateCallbackContext) SWIFT_CC(swift) {
DanceUIGraphWithUpdate(attribute, updateCallback, updateCallbackContext);
}

DanceUIGraphAttribute OAGDanceUIGraphCreateOffsetAttribute(DanceUIGraphAttribute attribute, int offset) SWIFT_CC(swift) {
return DanceUIGraphCreateOffsetAttribute(attribute, (uint32_t)offset);
}

DanceUIGraphAttribute OAGDanceUIGraphCreateOffsetAttribute2(DanceUIGraphAttribute attribute, int offset, int size) SWIFT_CC(swift) {
return DanceUIGraphCreateOffsetAttribute2(attribute, (uint32_t)offset, (uint32_t)size);
}

DanceUIGraphAttribute OAGDanceUIGraphCreateIndirectAttribute(DanceUIGraphAttribute attribute) SWIFT_CC(swift) {
return DanceUIGraphCreateIndirectAttribute(attribute);
}

DanceUIGraphAttribute OAGDanceUIGraphCreateIndirectAttribute2(DanceUIGraphAttribute attribute, uint32_t size) SWIFT_CC(swift) {
return DanceUIGraphCreateIndirectAttribute2(attribute, size);
}

DanceUIGraphAttribute OAGDanceUIGraphGetIndirectAttribute(DanceUIGraphAttribute attribute) SWIFT_CC(swift) {
return DanceUIGraphGetIndirectAttribute(attribute);
}

void OAGDanceUIGraphSetIndirectAttribute(DanceUIGraphAttribute attribute, DanceUIGraphAttribute source) SWIFT_CC(swift) {
DanceUIGraphSetIndirectAttribute(attribute, source);
}

DanceUIGraphAttribute OAGDanceUIGraphGetIndirectDependency(DanceUIGraphAttribute attribute) SWIFT_CC(swift) {
return DanceUIGraphGetIndirectDependency(attribute);
}

void OAGDanceUIGraphSetIndirectDependency(DanceUIGraphAttribute attribute, DanceUIGraphAttribute dependency) SWIFT_CC(swift) {
DanceUIGraphSetIndirectDependency(attribute, dependency);
}

DanceUIGraphWeakAttribute OAGDanceUIGraphCreateWeakAttribute(DanceUIGraphAttribute attribute) SWIFT_CC(swift) {
return DanceUIGraphCreateWeakAttribute(attribute);
}

DanceUIGraphAttribute OAGDanceUIGraphWeakAttributeGetAttribute(DanceUIGraphWeakAttribute weakAttribute) SWIFT_CC(swift) {
return DanceUIGraphWeakAttributeGetAttribute(weakAttribute);
}

DanceUIGraphWeakValue OAGDanceUIGraphGetWeakValue(DanceUIGraphWeakAttribute weakAttribute, DanceUIGraphInputOptions options, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift) {
return DanceUIGraphGetWeakValue(weakAttribute, (DanceUIGraphValueOptions)options, metadata);
}

DanceUIGraphAttributeInfo OAGDanceUIGraphGetAttributeInfo(DanceUIGraphAttribute attribute) SWIFT_CC(swift) {
return DanceUIGraphGetAttributeInfo(attribute);
}

void OAGDanceUIGraphMutateAttribute(DanceUIGraphAttribute attribute, const DanceUIGraphSwiftMetadata *metadata, bool invalidate, void (*mutateBody)(void *ctx SWIFT_CONTEXT, void *attribute) SWIFT_CC(swift), const void *mutateBodyContext) SWIFT_CC(swift) {
DanceUIGraphMutateAttribute(attribute, metadata, invalidate, mutateBody, mutateBodyContext);
}

void OAGDanceUIGraphVerifyType(DanceUIGraphAttribute attribute, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift) {
DanceUIGraphVerifyType(attribute, metadata);
}

void OAGDanceUIGraphAddInput(DanceUIGraphAttribute toAttribute, DanceUIGraphAttribute fromAttribute, DanceUIGraphInputOptions inputOptions) SWIFT_CC(swift) {
DanceUIGraphAddInput(toAttribute, fromAttribute, inputOptions);
}

void OAGDanceUIGraphInvalidateAllValues(DanceUIGraphRef graph) SWIFT_CC(swift) {
DanceUIGraphInvalidateAllValues(graph);
}

void OAGDanceUIGraphInvalidateValue(DanceUIGraphAttribute attribute) SWIFT_CC(swift) {
DanceUIGraphInvalidateValue(attribute);
}

bool OAGDanceUIGraphHasValue(DanceUIGraphAttribute attribute) SWIFT_CC(swift) {
return DanceUIGraphHasValue(attribute);
}

void OAGDanceUIGraphUpdateValue(DanceUIGraphAttribute attribute) SWIFT_CC(swift) {
DanceUIGraphUpdateValue(attribute);
}

DanceUIGraphValueState OAGDanceUIGraphGetValueState(DanceUIGraphAttribute attribute) SWIFT_CC(swift) {
return DanceUIGraphGetValueState(attribute);
}

bool OAGDanceUIGraphSearch(DanceUIGraphAttribute rootAttribute, DanceUIGraphSearchOptions options, bool (*body)(void *ctx SWIFT_CONTEXT, DanceUIGraphAttribute attribute) SWIFT_CC(swift), const void *bodyContext) SWIFT_CC(swift) {
return DanceUIGraphSearch(rootAttribute, options, body, bodyContext);
}

DanceUIGraphAttributeFlags OAGDanceUIGraphGetFlags(DanceUIGraphAttribute attribute) SWIFT_CC(swift) {
return DanceUIGraphGetFlags(attribute);
}

void OAGDanceUIGraphSetFlags(DanceUIGraphAttribute attribute, DanceUIGraphAttributeFlags flags) SWIFT_CC(swift) {
DanceUIGraphSetFlags(attribute, flags);
}

const void *OAGDanceUIGraphReadCachedAttribute(uintptr_t hashValue, const DanceUIGraphSwiftMetadata *selfMetadata, const void *attributeBody, const DanceUIGraphSwiftMetadata *valueMetadata, DanceUIGraphCachedValueOptions valueOptions, DanceUIGraphAttribute attribute, DanceUIGraphChangedValueFlags *changedValueFlags, DanceUIGraphTypeIndex (*body)(void *ctx SWIFT_CONTEXT, DanceUIGraphContextRef) SWIFT_CC(swift), const void *bodyContext) SWIFT_CC(swift) {
return DanceUIGraphReadCachedAttribute(hashValue, selfMetadata, attributeBody, valueMetadata, valueOptions, attribute, changedValueFlags, body, bodyContext);
}

const void * _Nullable OAGDanceUIGraphReadCachedAttributeIfExists(uintptr_t hashValue, const DanceUIGraphSwiftMetadata *selfMetadata, const void *attributeBody, const DanceUIGraphSwiftMetadata *valueMetadata, DanceUIGraphCachedValueOptions valueOptions, DanceUIGraphAttribute attribute, DanceUIGraphChangedValueFlags *changedValueFlags) SWIFT_CC(swift) {
return DanceUIGraphReadCachedAttributeIfExists(hashValue, selfMetadata, attributeBody, valueMetadata, valueOptions, attribute, changedValueFlags);
}

void OAGDanceUISubgraphSetCurrent(DanceUISubgraphRef _Nullable subgraph) SWIFT_CC(swift) {
DanceUISubgraphSetCurrent(subgraph);
}

DanceUISubgraphRef _Nullable OAGDanceUISubgraphGetCurrent(void) SWIFT_CC(swift) {
return DanceUISubgraphGetCurrent();
}

DanceUIGraphContextRef _Nullable OAGDanceUISubgraphGetCurrentGraphContext(void) SWIFT_CC(swift) {
return DanceUISubgraphGetCurrentGraphContext();
}

void OAGDanceUISubgraphApply(DanceUISubgraphRef subgraph, DanceUIGraphAttributeFlags flags, void (*applyBody)(void *ctx SWIFT_CONTEXT, DanceUIGraphAttribute attribute) SWIFT_CC(swift), const void *applyBodyContext) SWIFT_CC(swift) {
DanceUISubgraphApply(subgraph, flags, applyBody, applyBodyContext);
}

bool OAGDanceUISubgraphIntersects(DanceUISubgraphRef subgraph, DanceUIGraphAttributeFlags flags) SWIFT_CC(swift) {
return DanceUISubgraphIntersects(subgraph, flags);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#ifndef OpenAttributeGraphDanceUIGraphShims_h
#define OpenAttributeGraphDanceUIGraphShims_h

#include <stdbool.h>
#include <stdint.h>

#include <DanceUIGraph/DanceUIGraph.h>
#include <DanceUIGraph/DanceUISubgraph.h>
#include <DanceUIRuntime/DanceUISwiftSupport.h>

DANCE_UI_ASSUME_NONNULL_BEGIN

void * _Nullable OAGDanceUIGraphGetContext(DanceUIGraphRef graph) SWIFT_CC(swift);
void OAGDanceUIGraphSetContext(DanceUIGraphRef graph, void * _Nullable context) SWIFT_CC(swift);
DanceUIGraphAttribute OAGDanceUIGraphGetCurrentAttribute(void) SWIFT_CC(swift);
bool OAGDanceUIGraphCurrentAttributeWasModified(void) SWIFT_CC(swift);
DanceUIGraphAttribute OAGDanceUIGraphCurrentAttributeUpdatedReason(void) SWIFT_CC(swift);
void *OAGDanceUIGraphClearUpdate(void) SWIFT_CC(swift);
void OAGDanceUIGraphSetUpdate(void *update) SWIFT_CC(swift);
DanceUIGraphAttribute OAGDanceUIGraphCreateAttribute(DanceUIGraphTypeIndex typeID, const void *attribute, const void * _Nullable value) SWIFT_CC(swift);
DanceUIGraphValue OAGDanceUIGraphGetValue(DanceUIGraphAttribute attribute, DanceUIGraphInputOptions options, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift);
bool OAGDanceUIGraphSetValue(DanceUIGraphAttribute attribute, const void *value, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift);
DanceUIGraphValue OAGDanceUIGraphGetInputValue(DanceUIGraphAttribute destinationAttribute, DanceUIGraphAttribute inputAttribute, DanceUIGraphInputOptions options, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift);
const void * _Nullable OAGDanceUIGraphGetOutputValue(const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift);
void OAGDanceUIGraphSetOutputValue(const void *value, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift);
void OAGDanceUIGraphWithUpdate(DanceUIGraphAttribute attribute, void (*updateCallback)(void *ctx SWIFT_CONTEXT) SWIFT_CC(swift), const void *updateCallbackContext) SWIFT_CC(swift);
DanceUIGraphAttribute OAGDanceUIGraphCreateOffsetAttribute(DanceUIGraphAttribute attribute, int offset) SWIFT_CC(swift);
DanceUIGraphAttribute OAGDanceUIGraphCreateOffsetAttribute2(DanceUIGraphAttribute attribute, int offset, int size) SWIFT_CC(swift);
DanceUIGraphAttribute OAGDanceUIGraphCreateIndirectAttribute(DanceUIGraphAttribute attribute) SWIFT_CC(swift);
DanceUIGraphAttribute OAGDanceUIGraphCreateIndirectAttribute2(DanceUIGraphAttribute attribute, uint32_t size) SWIFT_CC(swift);
DanceUIGraphAttribute OAGDanceUIGraphGetIndirectAttribute(DanceUIGraphAttribute attribute) SWIFT_CC(swift);
void OAGDanceUIGraphSetIndirectAttribute(DanceUIGraphAttribute attribute, DanceUIGraphAttribute source) SWIFT_CC(swift);
DanceUIGraphAttribute OAGDanceUIGraphGetIndirectDependency(DanceUIGraphAttribute attribute) SWIFT_CC(swift);
void OAGDanceUIGraphSetIndirectDependency(DanceUIGraphAttribute attribute, DanceUIGraphAttribute dependency) SWIFT_CC(swift);
DanceUIGraphWeakAttribute OAGDanceUIGraphCreateWeakAttribute(DanceUIGraphAttribute attribute) SWIFT_CC(swift);
DanceUIGraphAttribute OAGDanceUIGraphWeakAttributeGetAttribute(DanceUIGraphWeakAttribute weakAttribute) SWIFT_CC(swift);
DanceUIGraphWeakValue OAGDanceUIGraphGetWeakValue(DanceUIGraphWeakAttribute weakAttribute, DanceUIGraphInputOptions options, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift);
DanceUIGraphAttributeInfo OAGDanceUIGraphGetAttributeInfo(DanceUIGraphAttribute attribute) SWIFT_CC(swift);
void OAGDanceUIGraphMutateAttribute(DanceUIGraphAttribute attribute, const DanceUIGraphSwiftMetadata *metadata, bool invalidate, void (*mutateBody)(void *ctx SWIFT_CONTEXT, void *attribute) SWIFT_CC(swift), const void *mutateBodyContext) SWIFT_CC(swift);
void OAGDanceUIGraphVerifyType(DanceUIGraphAttribute attribute, const DanceUIGraphSwiftMetadata *metadata) SWIFT_CC(swift);
void OAGDanceUIGraphAddInput(DanceUIGraphAttribute toAttribute, DanceUIGraphAttribute fromAttribute, DanceUIGraphInputOptions inputOptions) SWIFT_CC(swift);
void OAGDanceUIGraphInvalidateAllValues(DanceUIGraphRef graph) SWIFT_CC(swift);
void OAGDanceUIGraphInvalidateValue(DanceUIGraphAttribute attribute) SWIFT_CC(swift);
bool OAGDanceUIGraphHasValue(DanceUIGraphAttribute attribute) SWIFT_CC(swift);
void OAGDanceUIGraphUpdateValue(DanceUIGraphAttribute attribute) SWIFT_CC(swift);
DanceUIGraphValueState OAGDanceUIGraphGetValueState(DanceUIGraphAttribute attribute) SWIFT_CC(swift);
bool OAGDanceUIGraphSearch(DanceUIGraphAttribute rootAttribute, DanceUIGraphSearchOptions options, bool (*body)(void *ctx SWIFT_CONTEXT, DanceUIGraphAttribute attribute) SWIFT_CC(swift), const void *bodyContext) SWIFT_CC(swift);
DanceUIGraphAttributeFlags OAGDanceUIGraphGetFlags(DanceUIGraphAttribute attribute) SWIFT_CC(swift);
void OAGDanceUIGraphSetFlags(DanceUIGraphAttribute attribute, DanceUIGraphAttributeFlags flags) SWIFT_CC(swift);
const void *OAGDanceUIGraphReadCachedAttribute(uintptr_t hashValue, const DanceUIGraphSwiftMetadata *selfMetadata, const void *attributeBody, const DanceUIGraphSwiftMetadata *valueMetadata, DanceUIGraphCachedValueOptions valueOptions, DanceUIGraphAttribute attribute, DanceUIGraphChangedValueFlags *changedValueFlags, DanceUIGraphTypeIndex (*body)(void *ctx SWIFT_CONTEXT, DanceUIGraphContextRef) SWIFT_CC(swift), const void *bodyContext) SWIFT_CC(swift);
const void * _Nullable OAGDanceUIGraphReadCachedAttributeIfExists(uintptr_t hashValue, const DanceUIGraphSwiftMetadata *selfMetadata, const void *attributeBody, const DanceUIGraphSwiftMetadata *valueMetadata, DanceUIGraphCachedValueOptions valueOptions, DanceUIGraphAttribute attribute, DanceUIGraphChangedValueFlags *changedValueFlags) SWIFT_CC(swift);

void OAGDanceUISubgraphSetCurrent(DanceUISubgraphRef _Nullable subgraph) SWIFT_CC(swift);
DanceUISubgraphRef _Nullable OAGDanceUISubgraphGetCurrent(void) SWIFT_CC(swift);
DanceUIGraphContextRef _Nullable OAGDanceUISubgraphGetCurrentGraphContext(void) SWIFT_CC(swift);
void OAGDanceUISubgraphApply(DanceUISubgraphRef subgraph, DanceUIGraphAttributeFlags flags, void (*applyBody)(void *ctx SWIFT_CONTEXT, DanceUIGraphAttribute attribute) SWIFT_CC(swift), const void *applyBodyContext) SWIFT_CC(swift);
bool OAGDanceUISubgraphIntersects(DanceUISubgraphRef subgraph, DanceUIGraphAttributeFlags flags) SWIFT_CC(swift);

DANCE_UI_ASSUME_NONNULL_END

#endif
Loading
Loading