diff --git a/.gitignore b/.gitignore index 595100a..f01e237 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,39 @@ .DS_Store -.build \ No newline at end of file +.build + + +# Xcode +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa + +# Bundler +.bundle + +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build + +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control +# +# Note: if you ignore the Pods directory, make sure to uncomment +# `pod install` in .travis.yml +# + +Pods/ \ No newline at end of file diff --git a/Makefile b/Makefile index 87f1a4a..55d3e06 100644 --- a/Makefile +++ b/Makefile @@ -55,7 +55,5 @@ build-xcframeworks: build-cocoapods build-xcframework-archives: build-xcframeworks @cd ./ios/xcframeworks && zip -r yoga.xcframework.zip yoga.xcframework @cd ./ios/xcframeworks && zip -r YogaKit.xcframework.zip YogaKit.xcframework - @rm -rf ./ios/xcframeworks/yoga.xcframework - @rm -rf ./ios/xcframeworks/YogaKit.xcframework @swift package compute-checksum ./ios/xcframeworks/yoga.xcframework.zip > ./ios/xcframeworks/yoga.xcframework.zip.checksum @swift package compute-checksum ./ios/xcframeworks/YogaKit.xcframework.zip > ./ios/xcframeworks/YogaKit.xcframework.zip.checksum \ No newline at end of file diff --git a/Nativebrik.podspec b/Nativebrik.podspec index 97c5556..4aacea8 100644 --- a/Nativebrik.podspec +++ b/Nativebrik.podspec @@ -14,7 +14,7 @@ Nativebrik SDK for iOS. s.swift_version = '5' s.ios.deployment_target = '13.4' - s.source_files = 'ios/Nativebrik/Classes/**/*' + s.source_files = 'ios/Nativebrik/Nativebrik/**/*' s.frameworks = 'UIKit', 'Foundation', 'SwiftUI', 'Combine' s.dependency 'YogaKit', '~> 2.0.0' diff --git a/Package.swift b/Package.swift index 46e2501..0e7c44a 100644 --- a/Package.swift +++ b/Package.swift @@ -17,7 +17,7 @@ let package = Package( targets: [ .target( name: "Nativebrik", - path: "ios/Nativebrik/Classes" + path: "ios/Nativebrik/Nativebrik" ), .binaryTarget( name: "Yoga", diff --git a/ios/.gitignore b/ios/.gitignore deleted file mode 100644 index 07d6222..0000000 --- a/ios/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -# macOS -.DS_Store - -# Xcode -build/ -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 -xcuserdata/ -*.xccheckout -*.moved-aside -DerivedData -*.hmap -*.ipa - -# Bundler -.bundle - -# Add this line if you want to avoid checking in source code from Carthage dependencies. -# Carthage/Checkouts - -Carthage/Build - -# We recommend against adding the Pods directory to your .gitignore. However -# you should judge for yourself, the pros and cons are mentioned at: -# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control -# -# Note: if you ignore the Pods directory, make sure to uncomment -# `pod install` in .travis.yml -# - -Pods/ diff --git a/ios/.travis.yml b/ios/.travis.yml deleted file mode 100644 index 561ff25..0000000 --- a/ios/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -# references: -# * https://www.objc.io/issues/6-build-tools/travis-ci/ -# * https://github.com/supermarin/xcpretty#usage - -osx_image: xcode7.3 -language: objective-c -# cache: cocoapods -# podfile: Example/Podfile -# before_install: -# - gem install cocoapods # Since Travis is not always on latest version -# - pod install --project-directory=Example -script: -- set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/Nativebrik.xcworkspace -scheme Nativebrik-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty -- pod lib lint diff --git a/ios/Example/Example.xcodeproj/project.pbxproj b/ios/Example/Example.xcodeproj/project.pbxproj new file mode 100644 index 0000000..4505f86 --- /dev/null +++ b/ios/Example/Example.xcodeproj/project.pbxproj @@ -0,0 +1,623 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + C13633C22AEB777800B9F437 /* ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13633C12AEB777800B9F437 /* ExampleApp.swift */; }; + C13633C42AEB777800B9F437 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13633C32AEB777800B9F437 /* ContentView.swift */; }; + C13633C62AEB777900B9F437 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C13633C52AEB777900B9F437 /* Assets.xcassets */; }; + C13633C92AEB777900B9F437 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C13633C82AEB777900B9F437 /* Preview Assets.xcassets */; }; + C13633D32AEB777900B9F437 /* ExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13633D22AEB777900B9F437 /* ExampleTests.swift */; }; + C13633DD2AEB777900B9F437 /* ExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13633DC2AEB777900B9F437 /* ExampleUITests.swift */; }; + C13633DF2AEB777900B9F437 /* ExampleUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13633DE2AEB777900B9F437 /* ExampleUITestsLaunchTests.swift */; }; + C13634092AEB780900B9F437 /* Nativebrik.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C13634082AEB780900B9F437 /* Nativebrik.framework */; }; + C136340A2AEB780900B9F437 /* Nativebrik.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C13634082AEB780900B9F437 /* Nativebrik.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + C13633CF2AEB777900B9F437 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C13633B62AEB777800B9F437 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C13633BD2AEB777800B9F437; + remoteInfo = Example; + }; + C13633D92AEB777900B9F437 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C13633B62AEB777800B9F437 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C13633BD2AEB777800B9F437; + remoteInfo = Example; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + C136340B2AEB780900B9F437 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + C136340A2AEB780900B9F437 /* Nativebrik.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + C13633BE2AEB777800B9F437 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + C13633C12AEB777800B9F437 /* ExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleApp.swift; sourceTree = ""; }; + C13633C32AEB777800B9F437 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + C13633C52AEB777900B9F437 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + C13633C82AEB777900B9F437 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + C13633CE2AEB777900B9F437 /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + C13633D22AEB777900B9F437 /* ExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleTests.swift; sourceTree = ""; }; + C13633D82AEB777900B9F437 /* ExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + C13633DC2AEB777900B9F437 /* ExampleUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleUITests.swift; sourceTree = ""; }; + C13633DE2AEB777900B9F437 /* ExampleUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleUITestsLaunchTests.swift; sourceTree = ""; }; + C13634082AEB780900B9F437 /* Nativebrik.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Nativebrik.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + C13633BB2AEB777800B9F437 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C13634092AEB780900B9F437 /* Nativebrik.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C13633CB2AEB777900B9F437 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C13633D52AEB777900B9F437 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + C13633B52AEB777800B9F437 = { + isa = PBXGroup; + children = ( + C13633C02AEB777800B9F437 /* Example */, + C13633D12AEB777900B9F437 /* ExampleTests */, + C13633DB2AEB777900B9F437 /* ExampleUITests */, + C13633BF2AEB777800B9F437 /* Products */, + C13634072AEB77FC00B9F437 /* Frameworks */, + ); + sourceTree = ""; + }; + C13633BF2AEB777800B9F437 /* Products */ = { + isa = PBXGroup; + children = ( + C13633BE2AEB777800B9F437 /* Example.app */, + C13633CE2AEB777900B9F437 /* ExampleTests.xctest */, + C13633D82AEB777900B9F437 /* ExampleUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + C13633C02AEB777800B9F437 /* Example */ = { + isa = PBXGroup; + children = ( + C13633C12AEB777800B9F437 /* ExampleApp.swift */, + C13633C32AEB777800B9F437 /* ContentView.swift */, + C13633C52AEB777900B9F437 /* Assets.xcassets */, + C13633C72AEB777900B9F437 /* Preview Content */, + ); + path = Example; + sourceTree = ""; + }; + C13633C72AEB777900B9F437 /* Preview Content */ = { + isa = PBXGroup; + children = ( + C13633C82AEB777900B9F437 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + C13633D12AEB777900B9F437 /* ExampleTests */ = { + isa = PBXGroup; + children = ( + C13633D22AEB777900B9F437 /* ExampleTests.swift */, + ); + path = ExampleTests; + sourceTree = ""; + }; + C13633DB2AEB777900B9F437 /* ExampleUITests */ = { + isa = PBXGroup; + children = ( + C13633DC2AEB777900B9F437 /* ExampleUITests.swift */, + C13633DE2AEB777900B9F437 /* ExampleUITestsLaunchTests.swift */, + ); + path = ExampleUITests; + sourceTree = ""; + }; + C13634072AEB77FC00B9F437 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C13634082AEB780900B9F437 /* Nativebrik.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C13633BD2AEB777800B9F437 /* Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = C13633E22AEB777900B9F437 /* Build configuration list for PBXNativeTarget "Example" */; + buildPhases = ( + C13633BA2AEB777800B9F437 /* Sources */, + C13633BB2AEB777800B9F437 /* Frameworks */, + C13633BC2AEB777800B9F437 /* Resources */, + C136340B2AEB780900B9F437 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Example; + productName = Example; + productReference = C13633BE2AEB777800B9F437 /* Example.app */; + productType = "com.apple.product-type.application"; + }; + C13633CD2AEB777900B9F437 /* ExampleTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = C13633E52AEB777900B9F437 /* Build configuration list for PBXNativeTarget "ExampleTests" */; + buildPhases = ( + C13633CA2AEB777900B9F437 /* Sources */, + C13633CB2AEB777900B9F437 /* Frameworks */, + C13633CC2AEB777900B9F437 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C13633D02AEB777900B9F437 /* PBXTargetDependency */, + ); + name = ExampleTests; + productName = ExampleTests; + productReference = C13633CE2AEB777900B9F437 /* ExampleTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + C13633D72AEB777900B9F437 /* ExampleUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = C13633E82AEB777900B9F437 /* Build configuration list for PBXNativeTarget "ExampleUITests" */; + buildPhases = ( + C13633D42AEB777900B9F437 /* Sources */, + C13633D52AEB777900B9F437 /* Frameworks */, + C13633D62AEB777900B9F437 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C13633DA2AEB777900B9F437 /* PBXTargetDependency */, + ); + name = ExampleUITests; + productName = ExampleUITests; + productReference = C13633D82AEB777900B9F437 /* ExampleUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C13633B62AEB777800B9F437 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1500; + LastUpgradeCheck = 1500; + TargetAttributes = { + C13633BD2AEB777800B9F437 = { + CreatedOnToolsVersion = 15.0.1; + }; + C13633CD2AEB777900B9F437 = { + CreatedOnToolsVersion = 15.0.1; + TestTargetID = C13633BD2AEB777800B9F437; + }; + C13633D72AEB777900B9F437 = { + CreatedOnToolsVersion = 15.0.1; + TestTargetID = C13633BD2AEB777800B9F437; + }; + }; + }; + buildConfigurationList = C13633B92AEB777800B9F437 /* Build configuration list for PBXProject "Example" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = C13633B52AEB777800B9F437; + productRefGroup = C13633BF2AEB777800B9F437 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C13633BD2AEB777800B9F437 /* Example */, + C13633CD2AEB777900B9F437 /* ExampleTests */, + C13633D72AEB777900B9F437 /* ExampleUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + C13633BC2AEB777800B9F437 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C13633C92AEB777900B9F437 /* Preview Assets.xcassets in Resources */, + C13633C62AEB777900B9F437 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C13633CC2AEB777900B9F437 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C13633D62AEB777900B9F437 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + C13633BA2AEB777800B9F437 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C13633C42AEB777800B9F437 /* ContentView.swift in Sources */, + C13633C22AEB777800B9F437 /* ExampleApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C13633CA2AEB777900B9F437 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C13633D32AEB777900B9F437 /* ExampleTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C13633D42AEB777900B9F437 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C13633DD2AEB777900B9F437 /* ExampleUITests.swift in Sources */, + C13633DF2AEB777900B9F437 /* ExampleUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + C13633D02AEB777900B9F437 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C13633BD2AEB777800B9F437 /* Example */; + targetProxy = C13633CF2AEB777900B9F437 /* PBXContainerItemProxy */; + }; + C13633DA2AEB777900B9F437 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C13633BD2AEB777800B9F437 /* Example */; + targetProxy = C13633D92AEB777900B9F437 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + C13633E02AEB777900B9F437 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + C13633E12AEB777900B9F437 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + C13633E32AEB777900B9F437 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Example/Preview Content\""; + DEVELOPMENT_TEAM = M3LJ3SDTT4; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.nativebrik.Example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + C13633E42AEB777900B9F437 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Example/Preview Content\""; + DEVELOPMENT_TEAM = M3LJ3SDTT4; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.nativebrik.Example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + C13633E62AEB777900B9F437 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = M3LJ3SDTT4; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.nativebrik.ExampleTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Example"; + }; + name = Debug; + }; + C13633E72AEB777900B9F437 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = M3LJ3SDTT4; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.nativebrik.ExampleTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Example"; + }; + name = Release; + }; + C13633E92AEB777900B9F437 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = M3LJ3SDTT4; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.nativebrik.ExampleUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Example; + }; + name = Debug; + }; + C13633EA2AEB777900B9F437 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = M3LJ3SDTT4; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.nativebrik.ExampleUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Example; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C13633B92AEB777800B9F437 /* Build configuration list for PBXProject "Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C13633E02AEB777900B9F437 /* Debug */, + C13633E12AEB777900B9F437 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C13633E22AEB777900B9F437 /* Build configuration list for PBXNativeTarget "Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C13633E32AEB777900B9F437 /* Debug */, + C13633E42AEB777900B9F437 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C13633E52AEB777900B9F437 /* Build configuration list for PBXNativeTarget "ExampleTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C13633E62AEB777900B9F437 /* Debug */, + C13633E72AEB777900B9F437 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C13633E82AEB777900B9F437 /* Build configuration list for PBXNativeTarget "ExampleUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C13633E92AEB777900B9F437 /* Debug */, + C13633EA2AEB777900B9F437 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = C13633B62AEB777800B9F437 /* Project object */; +} diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from ios/Example/Nativebrik_Example/Nativebrik_Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to ios/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/ios/Example/Nativebrik_Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from ios/Example/Nativebrik_Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to ios/Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AccentColor.colorset/Contents.json b/ios/Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 56% rename from ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AccentColor.colorset/Contents.json rename to ios/Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json index 2f0f228..eb87897 100644 --- a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AccentColor.colorset/Contents.json +++ b/ios/Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json @@ -1,10 +1,6 @@ { "colors" : [ { - "color" : { - "platform" : "universal", - "reference" : "labelColor" - }, "idiom" : "universal" } ], diff --git a/ios/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/ios/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/Contents.json b/ios/Example/Example/Assets.xcassets/Contents.json similarity index 100% rename from ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/Contents.json rename to ios/Example/Example/Assets.xcassets/Contents.json diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/ContentView.swift b/ios/Example/Example/ContentView.swift similarity index 97% rename from ios/Example/Nativebrik_Example/Nativebrik_Example/ContentView.swift rename to ios/Example/Example/ContentView.swift index 9919cf7..f5977d6 100644 --- a/ios/Example/Nativebrik_Example/Nativebrik_Example/ContentView.swift +++ b/ios/Example/Example/ContentView.swift @@ -1,8 +1,8 @@ // // ContentView.swift -// Nativebrik_Example +// Example // -// Created by Ryosuke Suzuki on 2023/05/25. +// Created by Ryosuke Suzuki on 2023/10/27. // import SwiftUI @@ -133,6 +133,7 @@ Morondava is a charming coastal town located on the western coast of Madagascar. .experiment .embedding("TOP_COMPONENT") .frame(width: nil, height: 270) + ForEach(self.items, id: \.title) { item in item.padding() } @@ -143,8 +144,12 @@ Morondava is a charming coastal town located on the western coast of Madagascar. struct ContentView: View { var body: some View { - NativebrikProvider(client: NativebrikClient(projectId: "cgv3p3223akg00fod19g")) { - AppView() - } + AppView() + } +} + +#Preview { + NativebrikProvider(client: NativebrikClient(projectId: "cgv3p3223akg00fod19g")) { + ContentView() } } diff --git a/ios/Example/Example/ExampleApp.swift b/ios/Example/Example/ExampleApp.swift new file mode 100644 index 0000000..1abfee8 --- /dev/null +++ b/ios/Example/Example/ExampleApp.swift @@ -0,0 +1,20 @@ +// +// ExampleApp.swift +// Example +// +// Created by Ryosuke Suzuki on 2023/10/27. +// + +import SwiftUI +import Nativebrik + +@main +struct ExampleApp: App { + var body: some Scene { + WindowGroup { + NativebrikProvider(client: NativebrikClient(projectId: "cgv3p3223akg00fod19g")) { + ContentView() + } + } + } +} diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Preview Content/Preview Assets.xcassets/Contents.json b/ios/Example/Example/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from ios/Example/Nativebrik_Example/Nativebrik_Example/Preview Content/Preview Assets.xcassets/Contents.json rename to ios/Example/Example/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/ios/Example/Nativebrik_Example/Nativebrik_ExampleTests/Nativebrik_ExampleTests.swift b/ios/Example/ExampleTests/ExampleTests.swift similarity index 85% rename from ios/Example/Nativebrik_Example/Nativebrik_ExampleTests/Nativebrik_ExampleTests.swift rename to ios/Example/ExampleTests/ExampleTests.swift index 8851b37..047ffeb 100644 --- a/ios/Example/Nativebrik_Example/Nativebrik_ExampleTests/Nativebrik_ExampleTests.swift +++ b/ios/Example/ExampleTests/ExampleTests.swift @@ -1,14 +1,14 @@ // -// Nativebrik_ExampleTests.swift -// Nativebrik_ExampleTests +// ExampleTests.swift +// ExampleTests // -// Created by Ryosuke Suzuki on 2023/05/25. +// Created by Ryosuke Suzuki on 2023/10/27. // import XCTest -@testable import Nativebrik_Example +@testable import Example -class Nativebrik_ExampleTests: XCTestCase { +final class ExampleTests: XCTestCase { override func setUpWithError() throws { // Put setup code here. This method is called before the invocation of each test method in the class. diff --git a/ios/Example/Nativebrik_Example/Nativebrik_ExampleUITests/Nativebrik_ExampleUITests.swift b/ios/Example/ExampleUITests/ExampleUITests.swift similarity index 88% rename from ios/Example/Nativebrik_Example/Nativebrik_ExampleUITests/Nativebrik_ExampleUITests.swift rename to ios/Example/ExampleUITests/ExampleUITests.swift index b2a761b..ab4c904 100644 --- a/ios/Example/Nativebrik_Example/Nativebrik_ExampleUITests/Nativebrik_ExampleUITests.swift +++ b/ios/Example/ExampleUITests/ExampleUITests.swift @@ -1,13 +1,13 @@ // -// Nativebrik_ExampleUITests.swift -// Nativebrik_ExampleUITests +// ExampleUITests.swift +// ExampleUITests // -// Created by Ryosuke Suzuki on 2023/05/25. +// Created by Ryosuke Suzuki on 2023/10/27. // import XCTest -class Nativebrik_ExampleUITests: XCTestCase { +final class ExampleUITests: XCTestCase { override func setUpWithError() throws { // Put setup code here. This method is called before the invocation of each test method in the class. diff --git a/ios/Example/Nativebrik_Example/Nativebrik_ExampleUITests/Nativebrik_ExampleUITestsLaunchTests.swift b/ios/Example/ExampleUITests/ExampleUITestsLaunchTests.swift similarity index 78% rename from ios/Example/Nativebrik_Example/Nativebrik_ExampleUITests/Nativebrik_ExampleUITestsLaunchTests.swift rename to ios/Example/ExampleUITests/ExampleUITestsLaunchTests.swift index 2fbf6ca..ca22183 100644 --- a/ios/Example/Nativebrik_Example/Nativebrik_ExampleUITests/Nativebrik_ExampleUITestsLaunchTests.swift +++ b/ios/Example/ExampleUITests/ExampleUITestsLaunchTests.swift @@ -1,13 +1,13 @@ // -// Nativebrik_ExampleUITestsLaunchTests.swift -// Nativebrik_ExampleUITests +// ExampleUITestsLaunchTests.swift +// ExampleUITests // -// Created by Ryosuke Suzuki on 2023/05/25. +// Created by Ryosuke Suzuki on 2023/10/27. // import XCTest -class Nativebrik_ExampleUITestsLaunchTests: XCTestCase { +final class ExampleUITestsLaunchTests: XCTestCase { override class var runsForEachTargetApplicationUIConfiguration: Bool { true diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example.xcodeproj/project.pbxproj b/ios/Example/Nativebrik_Example/Nativebrik_Example.xcodeproj/project.pbxproj deleted file mode 100644 index b4e700f..0000000 --- a/ios/Example/Nativebrik_Example/Nativebrik_Example.xcodeproj/project.pbxproj +++ /dev/null @@ -1,708 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 55; - objects = { - -/* Begin PBXBuildFile section */ - C17002562A1F2757003E20C9 /* Nativebrik_ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17002552A1F2757003E20C9 /* Nativebrik_ExampleApp.swift */; }; - C17002582A1F2757003E20C9 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17002572A1F2757003E20C9 /* ContentView.swift */; }; - C170025A2A1F2758003E20C9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C17002592A1F2758003E20C9 /* Assets.xcassets */; }; - C170025D2A1F2758003E20C9 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C170025C2A1F2758003E20C9 /* Preview Assets.xcassets */; }; - C17002672A1F2758003E20C9 /* Nativebrik_ExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17002662A1F2758003E20C9 /* Nativebrik_ExampleTests.swift */; }; - C17002712A1F2758003E20C9 /* Nativebrik_ExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17002702A1F2758003E20C9 /* Nativebrik_ExampleUITests.swift */; }; - C17002732A1F2758003E20C9 /* Nativebrik_ExampleUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17002722A1F2758003E20C9 /* Nativebrik_ExampleUITestsLaunchTests.swift */; }; - F0A7BF072A656BD3BF5310A2 /* Pods_Nativebrik_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A0AF88AF576D0AAAEA19DDE /* Pods_Nativebrik_Example.framework */; }; - FFE85287B4925D973F32A803 /* Pods_Nativebrik_ExampleTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E80529B4F05BF9F08DDA2869 /* Pods_Nativebrik_ExampleTests.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - C17002632A1F2758003E20C9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = C170024A2A1F2757003E20C9 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C17002512A1F2757003E20C9; - remoteInfo = Nativebrik_Example; - }; - C170026D2A1F2758003E20C9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = C170024A2A1F2757003E20C9 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C17002512A1F2757003E20C9; - remoteInfo = Nativebrik_Example; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 06D813980A5CAC2168CC8A49 /* Pods-Nativebrik_ExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Nativebrik_ExampleTests.release.xcconfig"; path = "Target Support Files/Pods-Nativebrik_ExampleTests/Pods-Nativebrik_ExampleTests.release.xcconfig"; sourceTree = ""; }; - 4A0AF88AF576D0AAAEA19DDE /* Pods_Nativebrik_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Nativebrik_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 780618F358D431D88216D77A /* Pods-Nativebrik_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Nativebrik_Example.release.xcconfig"; path = "Target Support Files/Pods-Nativebrik_Example/Pods-Nativebrik_Example.release.xcconfig"; sourceTree = ""; }; - C17002522A1F2757003E20C9 /* Nativebrik_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Nativebrik_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - C17002552A1F2757003E20C9 /* Nativebrik_ExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Nativebrik_ExampleApp.swift; sourceTree = ""; }; - C17002572A1F2757003E20C9 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - C17002592A1F2758003E20C9 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - C170025C2A1F2758003E20C9 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - C17002622A1F2758003E20C9 /* Nativebrik_ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Nativebrik_ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - C17002662A1F2758003E20C9 /* Nativebrik_ExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Nativebrik_ExampleTests.swift; sourceTree = ""; }; - C170026C2A1F2758003E20C9 /* Nativebrik_ExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Nativebrik_ExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - C17002702A1F2758003E20C9 /* Nativebrik_ExampleUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Nativebrik_ExampleUITests.swift; sourceTree = ""; }; - C17002722A1F2758003E20C9 /* Nativebrik_ExampleUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Nativebrik_ExampleUITestsLaunchTests.swift; sourceTree = ""; }; - C6254460EA9239CC055C7668 /* Pods-Nativebrik_ExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Nativebrik_ExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-Nativebrik_ExampleTests/Pods-Nativebrik_ExampleTests.debug.xcconfig"; sourceTree = ""; }; - D02D15D30014AA4C133B54DE /* Pods-Nativebrik_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Nativebrik_Example.debug.xcconfig"; path = "Target Support Files/Pods-Nativebrik_Example/Pods-Nativebrik_Example.debug.xcconfig"; sourceTree = ""; }; - E80529B4F05BF9F08DDA2869 /* Pods_Nativebrik_ExampleTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Nativebrik_ExampleTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - C170024F2A1F2757003E20C9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - F0A7BF072A656BD3BF5310A2 /* Pods_Nativebrik_Example.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C170025F2A1F2758003E20C9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FFE85287B4925D973F32A803 /* Pods_Nativebrik_ExampleTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C17002692A1F2758003E20C9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - A35A3730CB85BE2B0C390FB0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 4A0AF88AF576D0AAAEA19DDE /* Pods_Nativebrik_Example.framework */, - E80529B4F05BF9F08DDA2869 /* Pods_Nativebrik_ExampleTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - BB283430AC7F8B5B060583D2 /* Pods */ = { - isa = PBXGroup; - children = ( - D02D15D30014AA4C133B54DE /* Pods-Nativebrik_Example.debug.xcconfig */, - 780618F358D431D88216D77A /* Pods-Nativebrik_Example.release.xcconfig */, - C6254460EA9239CC055C7668 /* Pods-Nativebrik_ExampleTests.debug.xcconfig */, - 06D813980A5CAC2168CC8A49 /* Pods-Nativebrik_ExampleTests.release.xcconfig */, - ); - name = Pods; - path = ../Pods; - sourceTree = ""; - }; - C17002492A1F2757003E20C9 = { - isa = PBXGroup; - children = ( - C17002542A1F2757003E20C9 /* Nativebrik_Example */, - C17002652A1F2758003E20C9 /* Nativebrik_ExampleTests */, - C170026F2A1F2758003E20C9 /* Nativebrik_ExampleUITests */, - C17002532A1F2757003E20C9 /* Products */, - BB283430AC7F8B5B060583D2 /* Pods */, - A35A3730CB85BE2B0C390FB0 /* Frameworks */, - ); - sourceTree = ""; - }; - C17002532A1F2757003E20C9 /* Products */ = { - isa = PBXGroup; - children = ( - C17002522A1F2757003E20C9 /* Nativebrik_Example.app */, - C17002622A1F2758003E20C9 /* Nativebrik_ExampleTests.xctest */, - C170026C2A1F2758003E20C9 /* Nativebrik_ExampleUITests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - C17002542A1F2757003E20C9 /* Nativebrik_Example */ = { - isa = PBXGroup; - children = ( - C17002552A1F2757003E20C9 /* Nativebrik_ExampleApp.swift */, - C17002572A1F2757003E20C9 /* ContentView.swift */, - C17002592A1F2758003E20C9 /* Assets.xcassets */, - C170025B2A1F2758003E20C9 /* Preview Content */, - ); - path = Nativebrik_Example; - sourceTree = ""; - }; - C170025B2A1F2758003E20C9 /* Preview Content */ = { - isa = PBXGroup; - children = ( - C170025C2A1F2758003E20C9 /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - C17002652A1F2758003E20C9 /* Nativebrik_ExampleTests */ = { - isa = PBXGroup; - children = ( - C17002662A1F2758003E20C9 /* Nativebrik_ExampleTests.swift */, - ); - path = Nativebrik_ExampleTests; - sourceTree = ""; - }; - C170026F2A1F2758003E20C9 /* Nativebrik_ExampleUITests */ = { - isa = PBXGroup; - children = ( - C17002702A1F2758003E20C9 /* Nativebrik_ExampleUITests.swift */, - C17002722A1F2758003E20C9 /* Nativebrik_ExampleUITestsLaunchTests.swift */, - ); - path = Nativebrik_ExampleUITests; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - C17002512A1F2757003E20C9 /* Nativebrik_Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = C17002762A1F2758003E20C9 /* Build configuration list for PBXNativeTarget "Nativebrik_Example" */; - buildPhases = ( - 7AFB1A74FAC56A701142BB63 /* [CP] Check Pods Manifest.lock */, - C170024E2A1F2757003E20C9 /* Sources */, - C170024F2A1F2757003E20C9 /* Frameworks */, - C17002502A1F2757003E20C9 /* Resources */, - 7B0D1BB5D0612CF1161A087B /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Nativebrik_Example; - productName = Nativebrik_Example; - productReference = C17002522A1F2757003E20C9 /* Nativebrik_Example.app */; - productType = "com.apple.product-type.application"; - }; - C17002612A1F2758003E20C9 /* Nativebrik_ExampleTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = C17002792A1F2758003E20C9 /* Build configuration list for PBXNativeTarget "Nativebrik_ExampleTests" */; - buildPhases = ( - 74386BCED223D1C6E1EC1043 /* [CP] Check Pods Manifest.lock */, - C170025E2A1F2758003E20C9 /* Sources */, - C170025F2A1F2758003E20C9 /* Frameworks */, - C17002602A1F2758003E20C9 /* Resources */, - A408D8DC11386A82546BE130 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - C17002642A1F2758003E20C9 /* PBXTargetDependency */, - ); - name = Nativebrik_ExampleTests; - productName = Nativebrik_ExampleTests; - productReference = C17002622A1F2758003E20C9 /* Nativebrik_ExampleTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - C170026B2A1F2758003E20C9 /* Nativebrik_ExampleUITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = C170027C2A1F2758003E20C9 /* Build configuration list for PBXNativeTarget "Nativebrik_ExampleUITests" */; - buildPhases = ( - C17002682A1F2758003E20C9 /* Sources */, - C17002692A1F2758003E20C9 /* Frameworks */, - C170026A2A1F2758003E20C9 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - C170026E2A1F2758003E20C9 /* PBXTargetDependency */, - ); - name = Nativebrik_ExampleUITests; - productName = Nativebrik_ExampleUITests; - productReference = C170026C2A1F2758003E20C9 /* Nativebrik_ExampleUITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - C170024A2A1F2757003E20C9 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1340; - LastUpgradeCheck = 1340; - TargetAttributes = { - C17002512A1F2757003E20C9 = { - CreatedOnToolsVersion = 13.4.1; - }; - C17002612A1F2758003E20C9 = { - CreatedOnToolsVersion = 13.4.1; - TestTargetID = C17002512A1F2757003E20C9; - }; - C170026B2A1F2758003E20C9 = { - CreatedOnToolsVersion = 13.4.1; - TestTargetID = C17002512A1F2757003E20C9; - }; - }; - }; - buildConfigurationList = C170024D2A1F2757003E20C9 /* Build configuration list for PBXProject "Nativebrik_Example" */; - compatibilityVersion = "Xcode 13.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = C17002492A1F2757003E20C9; - productRefGroup = C17002532A1F2757003E20C9 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - C17002512A1F2757003E20C9 /* Nativebrik_Example */, - C17002612A1F2758003E20C9 /* Nativebrik_ExampleTests */, - C170026B2A1F2758003E20C9 /* Nativebrik_ExampleUITests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - C17002502A1F2757003E20C9 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C170025D2A1F2758003E20C9 /* Preview Assets.xcassets in Resources */, - C170025A2A1F2758003E20C9 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C17002602A1F2758003E20C9 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C170026A2A1F2758003E20C9 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 74386BCED223D1C6E1EC1043 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Nativebrik_ExampleTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 7AFB1A74FAC56A701142BB63 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Nativebrik_Example-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 7B0D1BB5D0612CF1161A087B /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Nativebrik_Example/Pods-Nativebrik_Example-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Nativebrik_Example/Pods-Nativebrik_Example-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Nativebrik_Example/Pods-Nativebrik_Example-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - A408D8DC11386A82546BE130 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Nativebrik_ExampleTests/Pods-Nativebrik_ExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Nativebrik_ExampleTests/Pods-Nativebrik_ExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Nativebrik_ExampleTests/Pods-Nativebrik_ExampleTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - C170024E2A1F2757003E20C9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C17002582A1F2757003E20C9 /* ContentView.swift in Sources */, - C17002562A1F2757003E20C9 /* Nativebrik_ExampleApp.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C170025E2A1F2758003E20C9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C17002672A1F2758003E20C9 /* Nativebrik_ExampleTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C17002682A1F2758003E20C9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C17002732A1F2758003E20C9 /* Nativebrik_ExampleUITestsLaunchTests.swift in Sources */, - C17002712A1F2758003E20C9 /* Nativebrik_ExampleUITests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - C17002642A1F2758003E20C9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = C17002512A1F2757003E20C9 /* Nativebrik_Example */; - targetProxy = C17002632A1F2758003E20C9 /* PBXContainerItemProxy */; - }; - C170026E2A1F2758003E20C9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = C17002512A1F2757003E20C9 /* Nativebrik_Example */; - targetProxy = C170026D2A1F2758003E20C9 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - C17002742A1F2758003E20C9 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - C17002752A1F2758003E20C9 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - C17002772A1F2758003E20C9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D02D15D30014AA4C133B54DE /* Pods-Nativebrik_Example.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_ASSET_PATHS = "\"Nativebrik_Example/Preview Content\""; - DEVELOPMENT_TEAM = M3LJ3SDTT4; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0.4; - PRODUCT_BUNDLE_IDENTIFIER = com.natvebrik.example; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - C17002782A1F2758003E20C9 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 780618F358D431D88216D77A /* Pods-Nativebrik_Example.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_ASSET_PATHS = "\"Nativebrik_Example/Preview Content\""; - DEVELOPMENT_TEAM = M3LJ3SDTT4; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0.4; - PRODUCT_BUNDLE_IDENTIFIER = com.natvebrik.example; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - C170027A2A1F2758003E20C9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C6254460EA9239CC055C7668 /* Pods-Nativebrik_ExampleTests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.5; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "ryosukesuzuki.Nativebrik-ExampleTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Nativebrik_Example.app/Nativebrik_Example"; - }; - name = Debug; - }; - C170027B2A1F2758003E20C9 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 06D813980A5CAC2168CC8A49 /* Pods-Nativebrik_ExampleTests.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.5; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "ryosukesuzuki.Nativebrik-ExampleTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Nativebrik_Example.app/Nativebrik_Example"; - }; - name = Release; - }; - C170027D2A1F2758003E20C9 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "ryosukesuzuki.Nativebrik-ExampleUITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Nativebrik_Example; - }; - name = Debug; - }; - C170027E2A1F2758003E20C9 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "ryosukesuzuki.Nativebrik-ExampleUITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Nativebrik_Example; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - C170024D2A1F2757003E20C9 /* Build configuration list for PBXProject "Nativebrik_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C17002742A1F2758003E20C9 /* Debug */, - C17002752A1F2758003E20C9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C17002762A1F2758003E20C9 /* Build configuration list for PBXNativeTarget "Nativebrik_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C17002772A1F2758003E20C9 /* Debug */, - C17002782A1F2758003E20C9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C17002792A1F2758003E20C9 /* Build configuration list for PBXNativeTarget "Nativebrik_ExampleTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C170027A2A1F2758003E20C9 /* Debug */, - C170027B2A1F2758003E20C9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C170027C2A1F2758003E20C9 /* Build configuration list for PBXNativeTarget "Nativebrik_ExampleUITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C170027D2A1F2758003E20C9 /* Debug */, - C170027E2A1F2758003E20C9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = C170024A2A1F2757003E20C9 /* Project object */; -} diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/1024.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/1024.png deleted file mode 100644 index d1e3099..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/1024.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/120-1.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/120-1.png deleted file mode 100644 index ff3a578..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/120-1.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/120.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/120.png deleted file mode 100644 index ff3a578..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/120.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/152.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/152.png deleted file mode 100644 index 62c6902..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/152.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/167.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/167.png deleted file mode 100644 index e46422e..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/167.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/180.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/180.png deleted file mode 100644 index 7c72d30..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/180.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/20.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/20.png deleted file mode 100644 index b48d3df..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/20.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/29.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/29.png deleted file mode 100644 index 08dbbd1..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/29.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/40-1.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/40-1.png deleted file mode 100644 index 09c723e..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/40-1.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/40-2.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/40-2.png deleted file mode 100644 index 09c723e..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/40-2.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/40.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/40.png deleted file mode 100644 index 09c723e..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/40.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/58-1.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/58-1.png deleted file mode 100644 index d595cf2..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/58-1.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/58.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/58.png deleted file mode 100644 index d595cf2..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/58.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/60.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/60.png deleted file mode 100644 index 5fcbe53..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/60.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/76.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/76.png deleted file mode 100644 index ec8345a..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/76.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/80-1.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/80-1.png deleted file mode 100644 index 6ea44e4..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/80-1.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/80.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/80.png deleted file mode 100644 index 6ea44e4..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/80.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/87.png b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/87.png deleted file mode 100644 index d02a0b7..0000000 Binary files a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/87.png and /dev/null differ diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index e594077..0000000 --- a/ios/Example/Nativebrik_Example/Nativebrik_Example/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "images" : [ - { - "filename" : "40.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "filename" : "60.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "filename" : "58.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "filename" : "87.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "filename" : "80.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "filename" : "120.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "filename" : "120-1.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "filename" : "180.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "filename" : "20.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "20x20" - }, - { - "filename" : "40-1.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "20x20" - }, - { - "filename" : "29.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "29x29" - }, - { - "filename" : "58-1.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "29x29" - }, - { - "filename" : "40-2.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "40x40" - }, - { - "filename" : "80-1.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "40x40" - }, - { - "filename" : "76.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "76x76" - }, - { - "filename" : "152.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "76x76" - }, - { - "filename" : "167.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "83.5x83.5" - }, - { - "filename" : "1024.png", - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example/Nativebrik_ExampleApp.swift b/ios/Example/Nativebrik_Example/Nativebrik_Example/Nativebrik_ExampleApp.swift deleted file mode 100644 index 5c2fc58..0000000 --- a/ios/Example/Nativebrik_Example/Nativebrik_Example/Nativebrik_ExampleApp.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// Nativebrik_ExampleApp.swift -// Nativebrik_Example -// -// Created by Ryosuke Suzuki on 2023/05/25. -// - -import SwiftUI - -@main -struct Nativebrik_ExampleApp: App { - var body: some Scene { - WindowGroup { - ContentView() - } - } -} diff --git a/ios/Example/Podfile b/ios/Example/Podfile deleted file mode 100644 index c0abd92..0000000 --- a/ios/Example/Podfile +++ /dev/null @@ -1,25 +0,0 @@ -use_frameworks! - -platform :ios, '15.0' - -project 'Nativebrik_Example/Nativebrik_Example.xcodeproj' - -target 'Nativebrik_Example' do - pod 'Nativebrik', :path => '../../' - - target 'Nativebrik_ExampleTests' do - inherit! :search_paths - - pod 'Quick', '~> 2.2.0' - pod 'Nimble', '~> 10.0.0' - pod 'FBSnapshotTestCase' , '~> 2.1.4' - pod 'Nimble-Snapshots' , '~> 9.4.0' - end -end - -post_install do |installer| - puts 'Patching Yoga.cpp to compile with Xcode 14.3' - %x(patch -N Pods/Yoga/yoga/Yoga.cpp < ./Yoga.cpp.patch || true) - puts 'Patching frameworks.sh to compile with Xcode 14.3' - %x(patch -N "Pods/Target Support Files/Pods-Nativebrik_Example/Pods-Nativebrik_Example-frameworks.sh" < ./frameworks.sh.patch || true) -end diff --git a/ios/Example/Podfile.lock b/ios/Example/Podfile.lock deleted file mode 100644 index fd4e05e..0000000 --- a/ios/Example/Podfile.lock +++ /dev/null @@ -1,58 +0,0 @@ -PODS: - - FBSnapshotTestCase (2.1.4): - - FBSnapshotTestCase/SwiftSupport (= 2.1.4) - - FBSnapshotTestCase/Core (2.1.4) - - FBSnapshotTestCase/SwiftSupport (2.1.4): - - FBSnapshotTestCase/Core - - iOSSnapshotTestCase (8.0.0): - - iOSSnapshotTestCase/SwiftSupport (= 8.0.0) - - iOSSnapshotTestCase/Core (8.0.0) - - iOSSnapshotTestCase/SwiftSupport (8.0.0): - - iOSSnapshotTestCase/Core - - Nativebrik (0.1.5): - - YogaKit (~> 2.0.0) - - Nimble (10.0.0) - - Nimble-Snapshots (9.4.0): - - Nimble-Snapshots/Core (= 9.4.0) - - Nimble-Snapshots/Core (9.4.0): - - iOSSnapshotTestCase (~> 8.0) - - Nimble - - Quick (2.2.1) - - Yoga (2.0.0) - - YogaKit (2.0.0): - - Yoga (~> 2.0.0) - -DEPENDENCIES: - - FBSnapshotTestCase (~> 2.1.4) - - Nativebrik (from `../../`) - - Nimble (~> 10.0.0) - - Nimble-Snapshots (~> 9.4.0) - - Quick (~> 2.2.0) - -SPEC REPOS: - trunk: - - FBSnapshotTestCase - - iOSSnapshotTestCase - - Nimble - - Nimble-Snapshots - - Quick - - Yoga - - YogaKit - -EXTERNAL SOURCES: - Nativebrik: - :path: "../../" - -SPEC CHECKSUMS: - FBSnapshotTestCase: 094f9f314decbabe373b87cc339bea235a63e07a - iOSSnapshotTestCase: a670511f9ee3829c2b9c23e6e68f315fd7b6790f - Nativebrik: 97ac9f19c8a4f5583075a93910ad20bdd2b29f0a - Nimble: 5316ef81a170ce87baf72dd961f22f89a602ff84 - Nimble-Snapshots: ef281b908c604f78c8313587e25ea92c8ab513d7 - Quick: f5754d69b7013f5864c29aab9ae6f0c79c5bc200 - Yoga: 6ef6b49e92d5d5c0c81ca640365c2b031d5fb378 - YogaKit: 9ba24d2f5ac46b342be3685339c0e15e85a70c25 - -PODFILE CHECKSUM: f29305997227717b18753bdcb05d66dbc18994b5 - -COCOAPODS: 1.11.3 diff --git a/ios/Example/README.md b/ios/Example/README.md deleted file mode 100644 index 2be844a..0000000 --- a/ios/Example/README.md +++ /dev/null @@ -1,28 +0,0 @@ - -# how to archive with xcode 14.3 - -```sh -cd ./ios/Example -pod install -``` - -1. patch Yoga.cpp with ./Yoga.cpp.patch after pods installation. see post_install in ./Podfile. -2. patch frameworks.sh with ./frameworks.sh.patch after pods intstallation. -3. then, archive. - -## Troubleshooting - -> SDK does not contain 'libarclite' at the path '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a'; try increasing the minimum deployment target - -``` -cd /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/ -sudo mkdir arc -cd arc -sudo git clone https://github.com/kamyarelyasi/Libarclite-Files.git . -sudo chmod +x * -``` - -## References -- https://stackoverflow.com/questions/16821838/how-to-patch-a-library-imported-with-cocoapods -- https://github.com/facebook/react-native/issues/36758 -- https://stackoverflow.com/a/75924853 \ No newline at end of file diff --git a/ios/Example/Yoga.cpp.patch b/ios/Example/Yoga.cpp.patch deleted file mode 100644 index 1064188..0000000 --- a/ios/Example/Yoga.cpp.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ./Pods/Yoga/yoga/Yoga.cpp 2023-05-29 18:51:09 -+++ ../Nativebrik/Assets/Yoga.patched.cpp 2023-05-30 10:54:37 -@@ -2193,7 +2193,7 @@ - layoutMarkerData, - layoutContext); - node->setLayoutHadOverflow( -- node->getLayout().hadOverflow | -+ node->getLayout().hadOverflow || - currentRelativeChild->getLayout().hadOverflow); - } - return deltaFreeSpace; diff --git a/ios/Example/frameworks.sh.patch b/ios/Example/frameworks.sh.patch deleted file mode 100644 index 1992017..0000000 --- a/ios/Example/frameworks.sh.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ./Pods/Target Support Files/Pods-Nativebrik_Example/Pods-Nativebrik_Example-frameworks.sh 2023-06-07 19:04:57 -+++ ./Pods/Target Support Files/Pods-Nativebrik_Example/Pods-Nativebrik_Example-frameworks.patched.sh 2023-06-07 19:04:57 -@@ -41,7 +41,7 @@ - - if [ -L "${source}" ]; then - echo "Symlinked..." -- source="$(readlink "${source}")" -+ source="$(readlink -f "${source}")" - fi - - if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then diff --git a/ios/Nativebrik/Assets/.gitkeep b/ios/Nativebrik/Assets/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/ios/Nativebrik/Assets/Yoga.patched.cpp b/ios/Nativebrik/Assets/Yoga.patched.cpp deleted file mode 100644 index bbebdb0..0000000 --- a/ios/Nativebrik/Assets/Yoga.patched.cpp +++ /dev/null @@ -1,4285 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the LICENSE - * file in the root directory of this source tree. - */ -#include "Yoga.h" -#include "log.h" -#include -#include -#include -#include "Utils.h" -#include "YGNode.h" -#include "YGNodePrint.h" -#include "Yoga-internal.h" -#include "instrumentation.h" -#ifdef _MSC_VER -#include - -/* define fmaxf if < VC12 */ -#if _MSC_VER < 1800 -__forceinline const float fmaxf(const float a, const float b) { - return (a > b) ? a : b; -} -#endif -#endif - -using namespace facebook::yoga; -using detail::Log; - -namespace { -size_t usedMeasureCacheEntries = YG_MAX_CACHED_RESULT_COUNT; -} - -void YGSetUsedCachedEntries(size_t n) { - usedMeasureCacheEntries = - n == 0 || n > YG_MAX_CACHED_RESULT_COUNT ? YG_MAX_CACHED_RESULT_COUNT : n; -} - -#ifdef ANDROID -static int YGAndroidLog( - const YGConfigRef config, - const YGNodeRef node, - YGLogLevel level, - const char* format, - va_list args); -#else -static int YGDefaultLog( - const YGConfigRef config, - const YGNodeRef node, - YGLogLevel level, - const char* format, - va_list args); -#endif - -#ifdef ANDROID -#include -static int YGAndroidLog( - const YGConfigRef config, - const YGNodeRef node, - YGLogLevel level, - const char* format, - va_list args) { - int androidLevel = YGLogLevelDebug; - switch (level) { - case YGLogLevelFatal: - androidLevel = ANDROID_LOG_FATAL; - break; - case YGLogLevelError: - androidLevel = ANDROID_LOG_ERROR; - break; - case YGLogLevelWarn: - androidLevel = ANDROID_LOG_WARN; - break; - case YGLogLevelInfo: - androidLevel = ANDROID_LOG_INFO; - break; - case YGLogLevelDebug: - androidLevel = ANDROID_LOG_DEBUG; - break; - case YGLogLevelVerbose: - androidLevel = ANDROID_LOG_VERBOSE; - break; - } - const int result = __android_log_vprint(androidLevel, "yoga", format, args); - return result; -} -#else -#define YG_UNUSED(x) (void) (x); - -static int YGDefaultLog( - const YGConfigRef config, - const YGNodeRef node, - YGLogLevel level, - const char* format, - va_list args) { - YG_UNUSED(config); - YG_UNUSED(node); - switch (level) { - case YGLogLevelError: - case YGLogLevelFatal: - return vfprintf(stderr, format, args); - case YGLogLevelWarn: - case YGLogLevelInfo: - case YGLogLevelDebug: - case YGLogLevelVerbose: - default: - return vprintf(format, args); - } -} - -#undef YG_UNUSED -#endif - -bool YGFloatIsUndefined(const float value) { - return facebook::yoga::isUndefined(value); -} - -detail::CompactValue YGComputedEdgeValue( - const YGStyle::Edges& edges, - YGEdge edge, - detail::CompactValue defaultValue) { - if (!edges[edge].isUndefined()) { - return edges[edge]; - } - - if ((edge == YGEdgeTop || edge == YGEdgeBottom) && - !edges[YGEdgeVertical].isUndefined()) { - return edges[YGEdgeVertical]; - } - - if ((edge == YGEdgeLeft || edge == YGEdgeRight || edge == YGEdgeStart || - edge == YGEdgeEnd) && - !edges[YGEdgeHorizontal].isUndefined()) { - return edges[YGEdgeHorizontal]; - } - - if (!edges[YGEdgeAll].isUndefined()) { - return edges[YGEdgeAll]; - } - - if (edge == YGEdgeStart || edge == YGEdgeEnd) { - return detail::CompactValue::ofUndefined(); - } - - return defaultValue; -} - -void* YGNodeGetContext(YGNodeRef node) { - return node->getContext(); -} - -void YGNodeSetContext(YGNodeRef node, void* context) { - return node->setContext(context); -} - -bool YGNodeHasMeasureFunc(YGNodeRef node) { - return node->hasMeasureFunc(); -} - -void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc) { - node->setMeasureFunc(measureFunc); -} - -bool YGNodeHasBaselineFunc(YGNodeRef node) { - return node->hasBaselineFunc(); -} - -void YGNodeSetBaselineFunc(YGNodeRef node, YGBaselineFunc baselineFunc) { - node->setBaselineFunc(baselineFunc); -} - -YGDirtiedFunc YGNodeGetDirtiedFunc(YGNodeRef node) { - return node->getDirtied(); -} - -void YGNodeSetDirtiedFunc(YGNodeRef node, YGDirtiedFunc dirtiedFunc) { - node->setDirtiedFunc(dirtiedFunc); -} - -void YGNodeSetPrintFunc(YGNodeRef node, YGPrintFunc printFunc) { - node->setPrintFunc(printFunc); -} - -bool YGNodeGetHasNewLayout(YGNodeRef node) { - return node->getHasNewLayout(); -} - -void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled) { - config->printTree = enabled; -} - -void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout) { - node->setHasNewLayout(hasNewLayout); -} - -YGNodeType YGNodeGetNodeType(YGNodeRef node) { - return node->getNodeType(); -} - -void YGNodeSetNodeType(YGNodeRef node, YGNodeType nodeType) { - return node->setNodeType(nodeType); -} - -bool YGNodeIsDirty(YGNodeRef node) { - return node->isDirty(); -} - -bool YGNodeLayoutGetDidUseLegacyFlag(const YGNodeRef node) { - return node->didUseLegacyFlag(); -} - -void YGNodeMarkDirtyAndPropogateToDescendants(const YGNodeRef node) { - return node->markDirtyAndPropogateDownwards(); -} - -int32_t gNodeInstanceCount = 0; -int32_t gConfigInstanceCount = 0; - -WIN_EXPORT YGNodeRef YGNodeNewWithConfig(const YGConfigRef config) { - const YGNodeRef node = new YGNode(); - YGAssertWithConfig( - config, node != nullptr, "Could not allocate memory for node"); - gNodeInstanceCount++; - - if (config->useWebDefaults) { - node->setStyleFlexDirection(YGFlexDirectionRow); - node->setStyleAlignContent(YGAlignStretch); - } - node->setConfig(config); - return node; -} - -YGConfigRef YGConfigGetDefault() { - static YGConfigRef defaultConfig = YGConfigNew(); - return defaultConfig; -} - -YGNodeRef YGNodeNew(void) { - return YGNodeNewWithConfig(YGConfigGetDefault()); -} - -YGNodeRef YGNodeClone(YGNodeRef oldNode) { - YGNodeRef node = new YGNode(*oldNode); - YGAssertWithConfig( - oldNode->getConfig(), - node != nullptr, - "Could not allocate memory for node"); - gNodeInstanceCount++; - node->setOwner(nullptr); - return node; -} - -static YGConfigRef YGConfigClone(const YGConfig& oldConfig) { - const YGConfigRef config = new YGConfig(oldConfig); - YGAssert(config != nullptr, "Could not allocate memory for config"); - if (config == nullptr) { - abort(); - } - gConfigInstanceCount++; - return config; -} - -static YGNodeRef YGNodeDeepClone(YGNodeRef oldNode) { - YGNodeRef node = YGNodeClone(oldNode); - YGVector vec = YGVector(); - vec.reserve(oldNode->getChildren().size()); - YGNodeRef childNode = nullptr; - for (auto* item : oldNode->getChildren()) { - childNode = YGNodeDeepClone(item); - childNode->setOwner(node); - vec.push_back(childNode); - } - node->setChildren(vec); - - if (oldNode->getConfig() != nullptr) { - node->setConfig(YGConfigClone(*(oldNode->getConfig()))); - } - - return node; -} - -void YGNodeFree(const YGNodeRef node) { - if (YGNodeRef owner = node->getOwner()) { - owner->removeChild(node); - node->setOwner(nullptr); - } - - const uint32_t childCount = YGNodeGetChildCount(node); - for (uint32_t i = 0; i < childCount; i++) { - const YGNodeRef child = YGNodeGetChild(node, i); - child->setOwner(nullptr); - } - - node->clearChildren(); - delete node; - gNodeInstanceCount--; -} - -static void YGConfigFreeRecursive(const YGNodeRef root) { - if (root->getConfig() != nullptr) { - gConfigInstanceCount--; - delete root->getConfig(); - } - // Delete configs recursively for childrens - for (auto* child : root->getChildren()) { - YGConfigFreeRecursive(child); - } -} - -void YGNodeFreeRecursiveWithCleanupFunc( - const YGNodeRef root, - YGNodeCleanupFunc cleanup) { - uint32_t skipped = 0; - while (YGNodeGetChildCount(root) > skipped) { - const YGNodeRef child = YGNodeGetChild(root, skipped); - if (child->getOwner() != root) { - // Don't free shared nodes that we don't own. - skipped += 1; - } else { - YGNodeRemoveChild(root, child); - YGNodeFreeRecursive(child); - } - } - if (cleanup != nullptr) { - cleanup(root); - } - YGNodeFree(root); -} - -void YGNodeFreeRecursive(const YGNodeRef root) { - return YGNodeFreeRecursiveWithCleanupFunc(root, nullptr); -} - -void YGNodeReset(YGNodeRef node) { - node->reset(); -} - -int32_t YGNodeGetInstanceCount(void) { - return gNodeInstanceCount; -} - -int32_t YGConfigGetInstanceCount(void) { - return gConfigInstanceCount; -} - -YGConfigRef YGConfigNew(void) { -#ifdef ANDROID - const YGConfigRef config = new YGConfig(YGAndroidLog); -#else - const YGConfigRef config = new YGConfig(YGDefaultLog); -#endif - gConfigInstanceCount++; - return config; -} - -void YGConfigFree(const YGConfigRef config) { - delete config; - gConfigInstanceCount--; -} - -void YGConfigCopy(const YGConfigRef dest, const YGConfigRef src) { - memcpy(dest, src, sizeof(YGConfig)); -} - -void YGNodeSetIsReferenceBaseline(YGNodeRef node, bool isReferenceBaseline) { - if (node->isReferenceBaseline() != isReferenceBaseline) { - node->setIsReferenceBaseline(isReferenceBaseline); - node->markDirtyAndPropogate(); - } -} - -bool YGNodeIsReferenceBaseline(YGNodeRef node) { - return node->isReferenceBaseline(); -} - -void YGNodeInsertChild( - const YGNodeRef owner, - const YGNodeRef child, - const uint32_t index) { - YGAssertWithNode( - owner, - child->getOwner() == nullptr, - "Child already has a owner, it must be removed first."); - - YGAssertWithNode( - owner, - !owner->hasMeasureFunc(), - "Cannot add child: Nodes with measure functions cannot have children."); - - owner->insertChild(child, index); - child->setOwner(owner); - owner->markDirtyAndPropogate(); -} - -void YGNodeRemoveChild(const YGNodeRef owner, const YGNodeRef excludedChild) { - if (YGNodeGetChildCount(owner) == 0) { - // This is an empty set. Nothing to remove. - return; - } - - // Children may be shared between parents, which is indicated by not having an - // owner. We only want to reset the child completely if it is owned - // exclusively by one node. - auto childOwner = excludedChild->getOwner(); - if (owner->removeChild(excludedChild)) { - if (owner == childOwner) { - excludedChild->setLayout({}); // layout is no longer valid - excludedChild->setOwner(nullptr); - } - owner->markDirtyAndPropogate(); - } -} - -void YGNodeRemoveAllChildren(const YGNodeRef owner) { - const uint32_t childCount = YGNodeGetChildCount(owner); - if (childCount == 0) { - // This is an empty set already. Nothing to do. - return; - } - const YGNodeRef firstChild = YGNodeGetChild(owner, 0); - if (firstChild->getOwner() == owner) { - // If the first child has this node as its owner, we assume that this child - // set is unique. - for (uint32_t i = 0; i < childCount; i++) { - const YGNodeRef oldChild = YGNodeGetChild(owner, i); - oldChild->setLayout(YGNode().getLayout()); // layout is no longer valid - oldChild->setOwner(nullptr); - } - owner->clearChildren(); - owner->markDirtyAndPropogate(); - return; - } - // Otherwise, we are not the owner of the child set. We don't have to do - // anything to clear it. - owner->setChildren(YGVector()); - owner->markDirtyAndPropogate(); -} - -static void YGNodeSetChildrenInternal( - YGNodeRef const owner, - const std::vector& children) { - if (!owner) { - return; - } - if (children.size() == 0) { - if (YGNodeGetChildCount(owner) > 0) { - for (YGNodeRef const child : owner->getChildren()) { - child->setLayout(YGLayout()); - child->setOwner(nullptr); - } - owner->setChildren(YGVector()); - owner->markDirtyAndPropogate(); - } - } else { - if (YGNodeGetChildCount(owner) > 0) { - for (YGNodeRef const oldChild : owner->getChildren()) { - // Our new children may have nodes in common with the old children. We - // don't reset these common nodes. - if (std::find(children.begin(), children.end(), oldChild) == - children.end()) { - oldChild->setLayout(YGLayout()); - oldChild->setOwner(nullptr); - } - } - } - owner->setChildren(children); - for (YGNodeRef child : children) { - child->setOwner(owner); - } - owner->markDirtyAndPropogate(); - } -} - -void YGNodeSetChildren( - YGNodeRef const owner, - const YGNodeRef c[], - const uint32_t count) { - const YGVector children = {c, c + count}; - YGNodeSetChildrenInternal(owner, children); -} - -void YGNodeSetChildren( - YGNodeRef const owner, - const std::vector& children) { - YGNodeSetChildrenInternal(owner, children); -} - -YGNodeRef YGNodeGetChild(const YGNodeRef node, const uint32_t index) { - if (index < node->getChildren().size()) { - return node->getChild(index); - } - return nullptr; -} - -uint32_t YGNodeGetChildCount(const YGNodeRef node) { - return static_cast(node->getChildren().size()); -} - -YGNodeRef YGNodeGetOwner(const YGNodeRef node) { - return node->getOwner(); -} - -YGNodeRef YGNodeGetParent(const YGNodeRef node) { - return node->getOwner(); -} - -void YGNodeMarkDirty(const YGNodeRef node) { - YGAssertWithNode( - node, - node->hasMeasureFunc(), - "Only leaf nodes with custom measure functions" - "should manually mark themselves as dirty"); - - node->markDirtyAndPropogate(); -} - -void YGNodeCopyStyle(const YGNodeRef dstNode, const YGNodeRef srcNode) { - if (!(dstNode->getStyle() == srcNode->getStyle())) { - dstNode->setStyle(srcNode->getStyle()); - dstNode->markDirtyAndPropogate(); - } -} - -float YGNodeStyleGetFlexGrow(const YGNodeRef node) { - return node->getStyle().flexGrow.isUndefined() - ? kDefaultFlexGrow - : node->getStyle().flexGrow.unwrap(); -} - -float YGNodeStyleGetFlexShrink(const YGNodeRef node) { - return node->getStyle().flexShrink.isUndefined() - ? (node->getConfig()->useWebDefaults ? kWebDefaultFlexShrink - : kDefaultFlexShrink) - : node->getStyle().flexShrink.unwrap(); -} - -namespace { - -struct Value { - template - static detail::CompactValue create(float value) { - return detail::CompactValue::ofMaybe(value); - } -}; - -template <> -inline detail::CompactValue Value::create(float) { - return detail::CompactValue::ofUndefined(); -} - -template <> -inline detail::CompactValue Value::create(float) { - return detail::CompactValue::ofAuto(); -} - -template -struct DimensionProp { - template - static YGValue get(YGNodeRef node) { - YGValue value = (node->getStyle().*P)[idx]; - if (value.unit == YGUnitUndefined || value.unit == YGUnitAuto) { - value.value = YGUndefined; - } - return value; - } - - template - static void set(YGNodeRef node, float newValue) { - auto value = Value::create(newValue); - if ((node->getStyle().*P)[idx] != value) { - (node->getStyle().*P)[idx] = value; - node->markDirtyAndPropogate(); - } - } -}; - -} // namespace - -#define YG_NODE_STYLE_PROPERTY_SETTER_UNIT_AUTO_IMPL( \ - type, name, paramName, instanceName) \ - void YGNodeStyleSet##name(const YGNodeRef node, const type paramName) { \ - auto value = detail::CompactValue::ofMaybe(paramName); \ - if (node->getStyle().instanceName != value) { \ - node->getStyle().instanceName = value; \ - node->markDirtyAndPropogate(); \ - } \ - } \ - \ - void YGNodeStyleSet##name##Percent( \ - const YGNodeRef node, const type paramName) { \ - auto value = detail::CompactValue::ofMaybe(paramName); \ - if (node->getStyle().instanceName != value) { \ - node->getStyle().instanceName = value; \ - node->markDirtyAndPropogate(); \ - } \ - } \ - \ - void YGNodeStyleSet##name##Auto(const YGNodeRef node) { \ - if (node->getStyle().instanceName != detail::CompactValue::ofAuto()) { \ - node->getStyle().instanceName = detail::CompactValue::ofAuto(); \ - node->markDirtyAndPropogate(); \ - } \ - } - -#define YG_NODE_STYLE_PROPERTY_UNIT_AUTO_IMPL( \ - type, name, paramName, instanceName) \ - YG_NODE_STYLE_PROPERTY_SETTER_UNIT_AUTO_IMPL( \ - float, name, paramName, instanceName) \ - \ - type YGNodeStyleGet##name(const YGNodeRef node) { \ - YGValue value = node->getStyle().instanceName; \ - if (value.unit == YGUnitUndefined || value.unit == YGUnitAuto) { \ - value.value = YGUndefined; \ - } \ - return value; \ - } - -#define YG_NODE_STYLE_EDGE_PROPERTY_UNIT_AUTO_IMPL(type, name, instanceName) \ - void YGNodeStyleSet##name##Auto(const YGNodeRef node, const YGEdge edge) { \ - if (node->getStyle().instanceName[edge] != \ - detail::CompactValue::ofAuto()) { \ - node->getStyle().instanceName[edge] = detail::CompactValue::ofAuto(); \ - node->markDirtyAndPropogate(); \ - } \ - } - -#define YG_NODE_STYLE_EDGE_PROPERTY_UNIT_IMPL( \ - type, name, paramName, instanceName) \ - void YGNodeStyleSet##name( \ - const YGNodeRef node, const YGEdge edge, const float paramName) { \ - auto value = detail::CompactValue::ofMaybe(paramName); \ - if (node->getStyle().instanceName[edge] != value) { \ - node->getStyle().instanceName[edge] = value; \ - node->markDirtyAndPropogate(); \ - } \ - } \ - \ - void YGNodeStyleSet##name##Percent( \ - const YGNodeRef node, const YGEdge edge, const float paramName) { \ - auto value = detail::CompactValue::ofMaybe(paramName); \ - if (node->getStyle().instanceName[edge] != value) { \ - node->getStyle().instanceName[edge] = value; \ - node->markDirtyAndPropogate(); \ - } \ - } \ - \ - type YGNodeStyleGet##name(const YGNodeRef node, const YGEdge edge) { \ - YGValue value = node->getStyle().instanceName[edge]; \ - if (value.unit == YGUnitUndefined || value.unit == YGUnitAuto) { \ - value.value = YGUndefined; \ - } \ - return value; \ - } - -#define YG_NODE_LAYOUT_PROPERTY_IMPL(type, name, instanceName) \ - type YGNodeLayoutGet##name(const YGNodeRef node) { \ - return node->getLayout().instanceName; \ - } - -#define YG_NODE_LAYOUT_RESOLVED_PROPERTY_IMPL(type, name, instanceName) \ - type YGNodeLayoutGet##name(const YGNodeRef node, const YGEdge edge) { \ - YGAssertWithNode( \ - node, \ - edge <= YGEdgeEnd, \ - "Cannot get layout properties of multi-edge shorthands"); \ - \ - if (edge == YGEdgeLeft) { \ - if (node->getLayout().direction == YGDirectionRTL) { \ - return node->getLayout().instanceName[YGEdgeEnd]; \ - } else { \ - return node->getLayout().instanceName[YGEdgeStart]; \ - } \ - } \ - \ - if (edge == YGEdgeRight) { \ - if (node->getLayout().direction == YGDirectionRTL) { \ - return node->getLayout().instanceName[YGEdgeStart]; \ - } else { \ - return node->getLayout().instanceName[YGEdgeEnd]; \ - } \ - } \ - \ - return node->getLayout().instanceName[edge]; \ - } - -#define YG_NODE_STYLE_SET(node, property, value) \ - if (node->getStyle().property != value) { \ - node->getStyle().property = value; \ - node->markDirtyAndPropogate(); \ - } - -void YGNodeStyleSetDirection(const YGNodeRef node, const YGDirection value) { - YG_NODE_STYLE_SET(node, direction, value); -} -YGDirection YGNodeStyleGetDirection(const YGNodeRef node) { - return node->getStyle().direction; -} - -void YGNodeStyleSetFlexDirection( - const YGNodeRef node, - const YGFlexDirection flexDirection) { - YG_NODE_STYLE_SET(node, flexDirection, flexDirection); -} -YGFlexDirection YGNodeStyleGetFlexDirection(const YGNodeRef node) { - return node->getStyle().flexDirection; -} - -void YGNodeStyleSetJustifyContent( - const YGNodeRef node, - const YGJustify justifyContent) { - YG_NODE_STYLE_SET(node, justifyContent, justifyContent); -} -YGJustify YGNodeStyleGetJustifyContent(const YGNodeRef node) { - return node->getStyle().justifyContent; -} - -void YGNodeStyleSetAlignContent( - const YGNodeRef node, - const YGAlign alignContent) { - YG_NODE_STYLE_SET(node, alignContent, alignContent); -} -YGAlign YGNodeStyleGetAlignContent(const YGNodeRef node) { - return node->getStyle().alignContent; -} - -void YGNodeStyleSetAlignItems(const YGNodeRef node, const YGAlign alignItems) { - YG_NODE_STYLE_SET(node, alignItems, alignItems); -} -YGAlign YGNodeStyleGetAlignItems(const YGNodeRef node) { - return node->getStyle().alignItems; -} - -void YGNodeStyleSetAlignSelf(const YGNodeRef node, const YGAlign alignSelf) { - YG_NODE_STYLE_SET(node, alignSelf, alignSelf); -} -YGAlign YGNodeStyleGetAlignSelf(const YGNodeRef node) { - return node->getStyle().alignSelf; -} - -void YGNodeStyleSetPositionType( - const YGNodeRef node, - const YGPositionType positionType) { - YG_NODE_STYLE_SET(node, positionType, positionType); -} -YGPositionType YGNodeStyleGetPositionType(const YGNodeRef node) { - return node->getStyle().positionType; -} - -void YGNodeStyleSetFlexWrap(const YGNodeRef node, const YGWrap flexWrap) { - YG_NODE_STYLE_SET(node, flexWrap, flexWrap); -} -YGWrap YGNodeStyleGetFlexWrap(const YGNodeRef node) { - return node->getStyle().flexWrap; -} - -void YGNodeStyleSetOverflow(const YGNodeRef node, const YGOverflow overflow) { - YG_NODE_STYLE_SET(node, overflow, overflow); -} -YGOverflow YGNodeStyleGetOverflow(const YGNodeRef node) { - return node->getStyle().overflow; -} - -void YGNodeStyleSetDisplay(const YGNodeRef node, const YGDisplay display) { - YG_NODE_STYLE_SET(node, display, display); -} -YGDisplay YGNodeStyleGetDisplay(const YGNodeRef node) { - return node->getStyle().display; -} - -// TODO(T26792433): Change the API to accept YGFloatOptional. -void YGNodeStyleSetFlex(const YGNodeRef node, const float flex) { - if (node->getStyle().flex != flex) { - node->getStyle().flex = - YGFloatIsUndefined(flex) ? YGFloatOptional() : YGFloatOptional(flex); - node->markDirtyAndPropogate(); - } -} - -// TODO(T26792433): Change the API to accept YGFloatOptional. -float YGNodeStyleGetFlex(const YGNodeRef node) { - return node->getStyle().flex.isUndefined() ? YGUndefined - : node->getStyle().flex.unwrap(); -} - -// TODO(T26792433): Change the API to accept YGFloatOptional. -void YGNodeStyleSetFlexGrow(const YGNodeRef node, const float flexGrow) { - if (node->getStyle().flexGrow != flexGrow) { - node->getStyle().flexGrow = YGFloatIsUndefined(flexGrow) - ? YGFloatOptional() - : YGFloatOptional(flexGrow); - node->markDirtyAndPropogate(); - } -} - -// TODO(T26792433): Change the API to accept YGFloatOptional. -void YGNodeStyleSetFlexShrink(const YGNodeRef node, const float flexShrink) { - if (node->getStyle().flexShrink != flexShrink) { - node->getStyle().flexShrink = YGFloatIsUndefined(flexShrink) - ? YGFloatOptional() - : YGFloatOptional(flexShrink); - node->markDirtyAndPropogate(); - } -} - -YGValue YGNodeStyleGetFlexBasis(const YGNodeRef node) { - YGValue flexBasis = node->getStyle().flexBasis; - if (flexBasis.unit == YGUnitUndefined || flexBasis.unit == YGUnitAuto) { - // TODO(T26792433): Get rid off the use of YGUndefined at client side - flexBasis.value = YGUndefined; - } - return flexBasis; -} - -void YGNodeStyleSetFlexBasis(const YGNodeRef node, const float flexBasis) { - auto value = detail::CompactValue::ofMaybe(flexBasis); - if (node->getStyle().flexBasis != value) { - node->getStyle().flexBasis = value; - node->markDirtyAndPropogate(); - } -} - -void YGNodeStyleSetFlexBasisPercent( - const YGNodeRef node, - const float flexBasisPercent) { - auto value = detail::CompactValue::ofMaybe(flexBasisPercent); - if (node->getStyle().flexBasis != value) { - node->getStyle().flexBasis = value; - node->markDirtyAndPropogate(); - } -} - -void YGNodeStyleSetFlexBasisAuto(const YGNodeRef node) { - if (node->getStyle().flexBasis != detail::CompactValue::ofAuto()) { - node->getStyle().flexBasis = detail::CompactValue::ofAuto(); - node->markDirtyAndPropogate(); - } -} - -YG_NODE_STYLE_EDGE_PROPERTY_UNIT_IMPL(YGValue, Position, position, position); -YG_NODE_STYLE_EDGE_PROPERTY_UNIT_IMPL(YGValue, Margin, margin, margin); -YG_NODE_STYLE_EDGE_PROPERTY_UNIT_AUTO_IMPL(YGValue, Margin, margin); -YG_NODE_STYLE_EDGE_PROPERTY_UNIT_IMPL(YGValue, Padding, padding, padding); - -// TODO(T26792433): Change the API to accept YGFloatOptional. -void YGNodeStyleSetBorder( - const YGNodeRef node, - const YGEdge edge, - const float border) { - auto value = detail::CompactValue::ofMaybe(border); - if (node->getStyle().border[edge] != value) { - node->getStyle().border[edge] = value; - node->markDirtyAndPropogate(); - } -} - -float YGNodeStyleGetBorder(const YGNodeRef node, const YGEdge edge) { - if (node->getStyle().border[edge].isUndefined() || - node->getStyle().border[edge].isAuto()) { - // TODO(T26792433): Rather than returning YGUndefined, change the api to - // return YGFloatOptional. - return YGUndefined; - } - - auto border = (YGValue) node->getStyle().border[edge]; - return border.value; -} - -// Yoga specific properties, not compatible with flexbox specification - -// TODO(T26792433): Change the API to accept YGFloatOptional. -float YGNodeStyleGetAspectRatio(const YGNodeRef node) { - const YGFloatOptional op = node->getStyle().aspectRatio; - return op.isUndefined() ? YGUndefined : op.unwrap(); -} - -// TODO(T26792433): Change the API to accept YGFloatOptional. -void YGNodeStyleSetAspectRatio(const YGNodeRef node, const float aspectRatio) { - if (node->getStyle().aspectRatio != aspectRatio) { - node->getStyle().aspectRatio = YGFloatOptional(aspectRatio); - node->markDirtyAndPropogate(); - } -} - -YG_NODE_STYLE_PROPERTY_UNIT_AUTO_IMPL( - YGValue, - Width, - width, - dimensions[YGDimensionWidth]); -YG_NODE_STYLE_PROPERTY_UNIT_AUTO_IMPL( - YGValue, - Height, - height, - dimensions[YGDimensionHeight]); - -void YGNodeStyleSetMinWidth(const YGNodeRef node, const float minWidth) { - DimensionProp<&YGStyle::minDimensions>::set( - node, minWidth); -} -void YGNodeStyleSetMinWidthPercent(const YGNodeRef node, const float minWidth) { - DimensionProp<&YGStyle::minDimensions>::set( - node, minWidth); -} -YGValue YGNodeStyleGetMinWidth(const YGNodeRef node) { - return DimensionProp<&YGStyle::minDimensions>::get(node); -}; - -void YGNodeStyleSetMinHeight(const YGNodeRef node, const float minHeight) { - DimensionProp<&YGStyle::minDimensions>::set( - node, minHeight); -} -void YGNodeStyleSetMinHeightPercent( - const YGNodeRef node, - const float minHeight) { - DimensionProp<&YGStyle::minDimensions>::set( - node, minHeight); -} -YGValue YGNodeStyleGetMinHeight(const YGNodeRef node) { - return DimensionProp<&YGStyle::minDimensions>::get(node); -}; - -void YGNodeStyleSetMaxWidth(const YGNodeRef node, const float maxWidth) { - DimensionProp<&YGStyle::maxDimensions>::set( - node, maxWidth); -} -void YGNodeStyleSetMaxWidthPercent(const YGNodeRef node, const float maxWidth) { - DimensionProp<&YGStyle::maxDimensions>::set( - node, maxWidth); -} -YGValue YGNodeStyleGetMaxWidth(const YGNodeRef node) { - return DimensionProp<&YGStyle::maxDimensions>::get(node); -}; - -void YGNodeStyleSetMaxHeight(const YGNodeRef node, const float maxHeight) { - DimensionProp<&YGStyle::maxDimensions>::set( - node, maxHeight); -} -void YGNodeStyleSetMaxHeightPercent( - const YGNodeRef node, - const float maxHeight) { - DimensionProp<&YGStyle::maxDimensions>::set( - node, maxHeight); -} -YGValue YGNodeStyleGetMaxHeight(const YGNodeRef node) { - return DimensionProp<&YGStyle::maxDimensions>::get(node); -}; - -YG_NODE_LAYOUT_PROPERTY_IMPL(float, Left, position[YGEdgeLeft]); -YG_NODE_LAYOUT_PROPERTY_IMPL(float, Top, position[YGEdgeTop]); -YG_NODE_LAYOUT_PROPERTY_IMPL(float, Right, position[YGEdgeRight]); -YG_NODE_LAYOUT_PROPERTY_IMPL(float, Bottom, position[YGEdgeBottom]); -YG_NODE_LAYOUT_PROPERTY_IMPL(float, Width, dimensions[YGDimensionWidth]); -YG_NODE_LAYOUT_PROPERTY_IMPL(float, Height, dimensions[YGDimensionHeight]); -YG_NODE_LAYOUT_PROPERTY_IMPL(YGDirection, Direction, direction); -YG_NODE_LAYOUT_PROPERTY_IMPL(bool, HadOverflow, hadOverflow); - -YG_NODE_LAYOUT_RESOLVED_PROPERTY_IMPL(float, Margin, margin); -YG_NODE_LAYOUT_RESOLVED_PROPERTY_IMPL(float, Border, border); -YG_NODE_LAYOUT_RESOLVED_PROPERTY_IMPL(float, Padding, padding); - -bool YGNodeLayoutGetDidLegacyStretchFlagAffectLayout(const YGNodeRef node) { - return node->getLayout().doesLegacyStretchFlagAffectsLayout; -} - -uint32_t gCurrentGenerationCount = 0; - -bool YGLayoutNodeInternal( - const YGNodeRef node, - const float availableWidth, - const float availableHeight, - const YGDirection ownerDirection, - const YGMeasureMode widthMeasureMode, - const YGMeasureMode heightMeasureMode, - const float ownerWidth, - const float ownerHeight, - const bool performLayout, - const char* reason, - const YGConfigRef config, - YGMarkerLayoutData& layoutMarkerData, - void* const layoutContext); - -#ifdef DEBUG -static void YGNodePrintInternal( - const YGNodeRef node, - const YGPrintOptions options) { - std::string str; - facebook::yoga::YGNodeToString(str, node, options, 0); - Log::log(node, YGLogLevelDebug, nullptr, str.c_str()); -} - -void YGNodePrint(const YGNodeRef node, const YGPrintOptions options) { - YGNodePrintInternal(node, options); -} -#endif - -const std::array leading = { - {YGEdgeTop, YGEdgeBottom, YGEdgeLeft, YGEdgeRight}}; - -const std::array trailing = { - {YGEdgeBottom, YGEdgeTop, YGEdgeRight, YGEdgeLeft}}; -static const std::array pos = {{ - YGEdgeTop, - YGEdgeBottom, - YGEdgeLeft, - YGEdgeRight, -}}; - -static const std::array dim = { - {YGDimensionHeight, YGDimensionHeight, YGDimensionWidth, YGDimensionWidth}}; - -static inline float YGNodePaddingAndBorderForAxis( - const YGNodeRef node, - const YGFlexDirection axis, - const float widthSize) { - return (node->getLeadingPaddingAndBorder(axis, widthSize) + - node->getTrailingPaddingAndBorder(axis, widthSize)) - .unwrap(); -} - -static inline YGAlign YGNodeAlignItem( - const YGNodeRef node, - const YGNodeRef child) { - const YGAlign align = child->getStyle().alignSelf == YGAlignAuto - ? node->getStyle().alignItems - : child->getStyle().alignSelf; - if (align == YGAlignBaseline && - YGFlexDirectionIsColumn(node->getStyle().flexDirection)) { - return YGAlignFlexStart; - } - return align; -} - -static float YGBaseline(const YGNodeRef node, void* layoutContext) { - if (node->hasBaselineFunc()) { - const float baseline = marker::MarkerSection::wrap( - node, - &YGNode::baseline, - node->getLayout().measuredDimensions[YGDimensionWidth], - node->getLayout().measuredDimensions[YGDimensionHeight], - layoutContext); - YGAssertWithNode( - node, - !YGFloatIsUndefined(baseline), - "Expect custom baseline function to not return NaN"); - return baseline; - } - - YGNodeRef baselineChild = nullptr; - const uint32_t childCount = YGNodeGetChildCount(node); - for (uint32_t i = 0; i < childCount; i++) { - const YGNodeRef child = YGNodeGetChild(node, i); - if (child->getLineIndex() > 0) { - break; - } - if (child->getStyle().positionType == YGPositionTypeAbsolute) { - continue; - } - if (YGNodeAlignItem(node, child) == YGAlignBaseline || - child->isReferenceBaseline()) { - baselineChild = child; - break; - } - - if (baselineChild == nullptr) { - baselineChild = child; - } - } - - if (baselineChild == nullptr) { - return node->getLayout().measuredDimensions[YGDimensionHeight]; - } - - const float baseline = YGBaseline(baselineChild, layoutContext); - return baseline + baselineChild->getLayout().position[YGEdgeTop]; -} - -static bool YGIsBaselineLayout(const YGNodeRef node) { - if (YGFlexDirectionIsColumn(node->getStyle().flexDirection)) { - return false; - } - if (node->getStyle().alignItems == YGAlignBaseline) { - return true; - } - const uint32_t childCount = YGNodeGetChildCount(node); - for (uint32_t i = 0; i < childCount; i++) { - const YGNodeRef child = YGNodeGetChild(node, i); - if (child->getStyle().positionType == YGPositionTypeRelative && - child->getStyle().alignSelf == YGAlignBaseline) { - return true; - } - } - - return false; -} - -static inline float YGNodeDimWithMargin( - const YGNodeRef node, - const YGFlexDirection axis, - const float widthSize) { - return node->getLayout().measuredDimensions[dim[axis]] + - (node->getLeadingMargin(axis, widthSize) + - node->getTrailingMargin(axis, widthSize)) - .unwrap(); -} - -static inline bool YGNodeIsStyleDimDefined( - const YGNodeRef node, - const YGFlexDirection axis, - const float ownerSize) { - bool isUndefined = - YGFloatIsUndefined(node->getResolvedDimension(dim[axis]).value); - return !( - node->getResolvedDimension(dim[axis]).unit == YGUnitAuto || - node->getResolvedDimension(dim[axis]).unit == YGUnitUndefined || - (node->getResolvedDimension(dim[axis]).unit == YGUnitPoint && - !isUndefined && node->getResolvedDimension(dim[axis]).value < 0.0f) || - (node->getResolvedDimension(dim[axis]).unit == YGUnitPercent && - !isUndefined && - (node->getResolvedDimension(dim[axis]).value < 0.0f || - YGFloatIsUndefined(ownerSize)))); -} - -static inline bool YGNodeIsLayoutDimDefined( - const YGNodeRef node, - const YGFlexDirection axis) { - const float value = node->getLayout().measuredDimensions[dim[axis]]; - return !YGFloatIsUndefined(value) && value >= 0.0f; -} - -static YGFloatOptional YGNodeBoundAxisWithinMinAndMax( - const YGNodeRef node, - const YGFlexDirection axis, - const YGFloatOptional value, - const float axisSize) { - YGFloatOptional min; - YGFloatOptional max; - - if (YGFlexDirectionIsColumn(axis)) { - min = YGResolveValue( - node->getStyle().minDimensions[YGDimensionHeight], axisSize); - max = YGResolveValue( - node->getStyle().maxDimensions[YGDimensionHeight], axisSize); - } else if (YGFlexDirectionIsRow(axis)) { - min = YGResolveValue( - node->getStyle().minDimensions[YGDimensionWidth], axisSize); - max = YGResolveValue( - node->getStyle().maxDimensions[YGDimensionWidth], axisSize); - } - - if (max >= YGFloatOptional{0} && value > max) { - return max; - } - - if (min >= YGFloatOptional{0} && value < min) { - return min; - } - - return value; -} - -// Like YGNodeBoundAxisWithinMinAndMax but also ensures that the value doesn't -// go below the padding and border amount. -static inline float YGNodeBoundAxis( - const YGNodeRef node, - const YGFlexDirection axis, - const float value, - const float axisSize, - const float widthSize) { - return YGFloatMax( - YGNodeBoundAxisWithinMinAndMax( - node, axis, YGFloatOptional{value}, axisSize) - .unwrap(), - YGNodePaddingAndBorderForAxis(node, axis, widthSize)); -} - -static void YGNodeSetChildTrailingPosition( - const YGNodeRef node, - const YGNodeRef child, - const YGFlexDirection axis) { - const float size = child->getLayout().measuredDimensions[dim[axis]]; - child->setLayoutPosition( - node->getLayout().measuredDimensions[dim[axis]] - size - - child->getLayout().position[pos[axis]], - trailing[axis]); -} - -static void YGConstrainMaxSizeForMode( - const YGNodeRef node, - const enum YGFlexDirection axis, - const float ownerAxisSize, - const float ownerWidth, - YGMeasureMode* mode, - float* size) { - const YGFloatOptional maxSize = - YGResolveValue(node->getStyle().maxDimensions[dim[axis]], ownerAxisSize) + - YGFloatOptional(node->getMarginForAxis(axis, ownerWidth)); - switch (*mode) { - case YGMeasureModeExactly: - case YGMeasureModeAtMost: - *size = (maxSize.isUndefined() || *size < maxSize.unwrap()) - ? *size - : maxSize.unwrap(); - break; - case YGMeasureModeUndefined: - if (!maxSize.isUndefined()) { - *mode = YGMeasureModeAtMost; - *size = maxSize.unwrap(); - } - break; - } -} - -static void YGNodeComputeFlexBasisForChild( - const YGNodeRef node, - const YGNodeRef child, - const float width, - const YGMeasureMode widthMode, - const float height, - const float ownerWidth, - const float ownerHeight, - const YGMeasureMode heightMode, - const YGDirection direction, - const YGConfigRef config, - YGMarkerLayoutData& layoutMarkerData, - void* const layoutContext) { - const YGFlexDirection mainAxis = - YGResolveFlexDirection(node->getStyle().flexDirection, direction); - const bool isMainAxisRow = YGFlexDirectionIsRow(mainAxis); - const float mainAxisSize = isMainAxisRow ? width : height; - const float mainAxisownerSize = isMainAxisRow ? ownerWidth : ownerHeight; - - float childWidth; - float childHeight; - YGMeasureMode childWidthMeasureMode; - YGMeasureMode childHeightMeasureMode; - - const YGFloatOptional resolvedFlexBasis = - YGResolveValue(child->resolveFlexBasisPtr(), mainAxisownerSize); - const bool isRowStyleDimDefined = - YGNodeIsStyleDimDefined(child, YGFlexDirectionRow, ownerWidth); - const bool isColumnStyleDimDefined = - YGNodeIsStyleDimDefined(child, YGFlexDirectionColumn, ownerHeight); - - if (!resolvedFlexBasis.isUndefined() && !YGFloatIsUndefined(mainAxisSize)) { - if (child->getLayout().computedFlexBasis.isUndefined() || - (YGConfigIsExperimentalFeatureEnabled( - child->getConfig(), YGExperimentalFeatureWebFlexBasis) && - child->getLayout().computedFlexBasisGeneration != - gCurrentGenerationCount)) { - const YGFloatOptional paddingAndBorder = YGFloatOptional( - YGNodePaddingAndBorderForAxis(child, mainAxis, ownerWidth)); - child->setLayoutComputedFlexBasis( - YGFloatOptionalMax(resolvedFlexBasis, paddingAndBorder)); - } - } else if (isMainAxisRow && isRowStyleDimDefined) { - // The width is definite, so use that as the flex basis. - const YGFloatOptional paddingAndBorder = YGFloatOptional( - YGNodePaddingAndBorderForAxis(child, YGFlexDirectionRow, ownerWidth)); - - child->setLayoutComputedFlexBasis(YGFloatOptionalMax( - YGResolveValue( - child->getResolvedDimension(YGDimensionWidth), ownerWidth), - paddingAndBorder)); - } else if (!isMainAxisRow && isColumnStyleDimDefined) { - // The height is definite, so use that as the flex basis. - const YGFloatOptional paddingAndBorder = - YGFloatOptional(YGNodePaddingAndBorderForAxis( - child, YGFlexDirectionColumn, ownerWidth)); - child->setLayoutComputedFlexBasis(YGFloatOptionalMax( - YGResolveValue( - child->getResolvedDimension(YGDimensionHeight), ownerHeight), - paddingAndBorder)); - } else { - // Compute the flex basis and hypothetical main size (i.e. the clamped flex - // basis). - childWidth = YGUndefined; - childHeight = YGUndefined; - childWidthMeasureMode = YGMeasureModeUndefined; - childHeightMeasureMode = YGMeasureModeUndefined; - - auto marginRow = - child->getMarginForAxis(YGFlexDirectionRow, ownerWidth).unwrap(); - auto marginColumn = - child->getMarginForAxis(YGFlexDirectionColumn, ownerWidth).unwrap(); - - if (isRowStyleDimDefined) { - childWidth = - YGResolveValue( - child->getResolvedDimension(YGDimensionWidth), ownerWidth) - .unwrap() + - marginRow; - childWidthMeasureMode = YGMeasureModeExactly; - } - if (isColumnStyleDimDefined) { - childHeight = - YGResolveValue( - child->getResolvedDimension(YGDimensionHeight), ownerHeight) - .unwrap() + - marginColumn; - childHeightMeasureMode = YGMeasureModeExactly; - } - - // The W3C spec doesn't say anything about the 'overflow' property, but all - // major browsers appear to implement the following logic. - if ((!isMainAxisRow && node->getStyle().overflow == YGOverflowScroll) || - node->getStyle().overflow != YGOverflowScroll) { - if (YGFloatIsUndefined(childWidth) && !YGFloatIsUndefined(width)) { - childWidth = width; - childWidthMeasureMode = YGMeasureModeAtMost; - } - } - - if ((isMainAxisRow && node->getStyle().overflow == YGOverflowScroll) || - node->getStyle().overflow != YGOverflowScroll) { - if (YGFloatIsUndefined(childHeight) && !YGFloatIsUndefined(height)) { - childHeight = height; - childHeightMeasureMode = YGMeasureModeAtMost; - } - } - - if (!child->getStyle().aspectRatio.isUndefined()) { - if (!isMainAxisRow && childWidthMeasureMode == YGMeasureModeExactly) { - childHeight = marginColumn + - (childWidth - marginRow) / child->getStyle().aspectRatio.unwrap(); - childHeightMeasureMode = YGMeasureModeExactly; - } else if ( - isMainAxisRow && childHeightMeasureMode == YGMeasureModeExactly) { - childWidth = marginRow + - (childHeight - marginColumn) * - child->getStyle().aspectRatio.unwrap(); - childWidthMeasureMode = YGMeasureModeExactly; - } - } - - // If child has no defined size in the cross axis and is set to stretch, set - // the cross axis to be measured exactly with the available inner width - - const bool hasExactWidth = - !YGFloatIsUndefined(width) && widthMode == YGMeasureModeExactly; - const bool childWidthStretch = - YGNodeAlignItem(node, child) == YGAlignStretch && - childWidthMeasureMode != YGMeasureModeExactly; - if (!isMainAxisRow && !isRowStyleDimDefined && hasExactWidth && - childWidthStretch) { - childWidth = width; - childWidthMeasureMode = YGMeasureModeExactly; - if (!child->getStyle().aspectRatio.isUndefined()) { - childHeight = - (childWidth - marginRow) / child->getStyle().aspectRatio.unwrap(); - childHeightMeasureMode = YGMeasureModeExactly; - } - } - - const bool hasExactHeight = - !YGFloatIsUndefined(height) && heightMode == YGMeasureModeExactly; - const bool childHeightStretch = - YGNodeAlignItem(node, child) == YGAlignStretch && - childHeightMeasureMode != YGMeasureModeExactly; - if (isMainAxisRow && !isColumnStyleDimDefined && hasExactHeight && - childHeightStretch) { - childHeight = height; - childHeightMeasureMode = YGMeasureModeExactly; - - if (!child->getStyle().aspectRatio.isUndefined()) { - childWidth = (childHeight - marginColumn) * - child->getStyle().aspectRatio.unwrap(); - childWidthMeasureMode = YGMeasureModeExactly; - } - } - - YGConstrainMaxSizeForMode( - child, - YGFlexDirectionRow, - ownerWidth, - ownerWidth, - &childWidthMeasureMode, - &childWidth); - YGConstrainMaxSizeForMode( - child, - YGFlexDirectionColumn, - ownerHeight, - ownerWidth, - &childHeightMeasureMode, - &childHeight); - - // Measure the child - YGLayoutNodeInternal( - child, - childWidth, - childHeight, - direction, - childWidthMeasureMode, - childHeightMeasureMode, - ownerWidth, - ownerHeight, - false, - "measure", - config, - layoutMarkerData, - layoutContext); - - child->setLayoutComputedFlexBasis(YGFloatOptional(YGFloatMax( - child->getLayout().measuredDimensions[dim[mainAxis]], - YGNodePaddingAndBorderForAxis(child, mainAxis, ownerWidth)))); - } - child->setLayoutComputedFlexBasisGeneration(gCurrentGenerationCount); -} - -static void YGNodeAbsoluteLayoutChild( - const YGNodeRef node, - const YGNodeRef child, - const float width, - const YGMeasureMode widthMode, - const float height, - const YGDirection direction, - const YGConfigRef config, - YGMarkerLayoutData& layoutMarkerData, - void* const layoutContext) { - const YGFlexDirection mainAxis = - YGResolveFlexDirection(node->getStyle().flexDirection, direction); - const YGFlexDirection crossAxis = YGFlexDirectionCross(mainAxis, direction); - const bool isMainAxisRow = YGFlexDirectionIsRow(mainAxis); - - float childWidth = YGUndefined; - float childHeight = YGUndefined; - YGMeasureMode childWidthMeasureMode = YGMeasureModeUndefined; - YGMeasureMode childHeightMeasureMode = YGMeasureModeUndefined; - - auto marginRow = child->getMarginForAxis(YGFlexDirectionRow, width).unwrap(); - auto marginColumn = - child->getMarginForAxis(YGFlexDirectionColumn, width).unwrap(); - - if (YGNodeIsStyleDimDefined(child, YGFlexDirectionRow, width)) { - childWidth = - YGResolveValue(child->getResolvedDimension(YGDimensionWidth), width) - .unwrap() + - marginRow; - } else { - // If the child doesn't have a specified width, compute the width based on - // the left/right offsets if they're defined. - if (child->isLeadingPositionDefined(YGFlexDirectionRow) && - child->isTrailingPosDefined(YGFlexDirectionRow)) { - childWidth = node->getLayout().measuredDimensions[YGDimensionWidth] - - (node->getLeadingBorder(YGFlexDirectionRow) + - node->getTrailingBorder(YGFlexDirectionRow)) - - (child->getLeadingPosition(YGFlexDirectionRow, width) + - child->getTrailingPosition(YGFlexDirectionRow, width)) - .unwrap(); - childWidth = - YGNodeBoundAxis(child, YGFlexDirectionRow, childWidth, width, width); - } - } - - if (YGNodeIsStyleDimDefined(child, YGFlexDirectionColumn, height)) { - childHeight = - YGResolveValue(child->getResolvedDimension(YGDimensionHeight), height) - .unwrap() + - marginColumn; - } else { - // If the child doesn't have a specified height, compute the height based on - // the top/bottom offsets if they're defined. - if (child->isLeadingPositionDefined(YGFlexDirectionColumn) && - child->isTrailingPosDefined(YGFlexDirectionColumn)) { - childHeight = node->getLayout().measuredDimensions[YGDimensionHeight] - - (node->getLeadingBorder(YGFlexDirectionColumn) + - node->getTrailingBorder(YGFlexDirectionColumn)) - - (child->getLeadingPosition(YGFlexDirectionColumn, height) + - child->getTrailingPosition(YGFlexDirectionColumn, height)) - .unwrap(); - childHeight = YGNodeBoundAxis( - child, YGFlexDirectionColumn, childHeight, height, width); - } - } - - // Exactly one dimension needs to be defined for us to be able to do aspect - // ratio calculation. One dimension being the anchor and the other being - // flexible. - if (YGFloatIsUndefined(childWidth) ^ YGFloatIsUndefined(childHeight)) { - if (!child->getStyle().aspectRatio.isUndefined()) { - if (YGFloatIsUndefined(childWidth)) { - childWidth = marginRow + - (childHeight - marginColumn) * - child->getStyle().aspectRatio.unwrap(); - } else if (YGFloatIsUndefined(childHeight)) { - childHeight = marginColumn + - (childWidth - marginRow) / child->getStyle().aspectRatio.unwrap(); - } - } - } - - // If we're still missing one or the other dimension, measure the content. - if (YGFloatIsUndefined(childWidth) || YGFloatIsUndefined(childHeight)) { - childWidthMeasureMode = YGFloatIsUndefined(childWidth) - ? YGMeasureModeUndefined - : YGMeasureModeExactly; - childHeightMeasureMode = YGFloatIsUndefined(childHeight) - ? YGMeasureModeUndefined - : YGMeasureModeExactly; - - // If the size of the owner is defined then try to constrain the absolute - // child to that size as well. This allows text within the absolute child to - // wrap to the size of its owner. This is the same behavior as many browsers - // implement. - if (!isMainAxisRow && YGFloatIsUndefined(childWidth) && - widthMode != YGMeasureModeUndefined && !YGFloatIsUndefined(width) && - width > 0) { - childWidth = width; - childWidthMeasureMode = YGMeasureModeAtMost; - } - - YGLayoutNodeInternal( - child, - childWidth, - childHeight, - direction, - childWidthMeasureMode, - childHeightMeasureMode, - childWidth, - childHeight, - false, - "abs-measure", - config, - layoutMarkerData, - layoutContext); - childWidth = child->getLayout().measuredDimensions[YGDimensionWidth] + - child->getMarginForAxis(YGFlexDirectionRow, width).unwrap(); - childHeight = child->getLayout().measuredDimensions[YGDimensionHeight] + - child->getMarginForAxis(YGFlexDirectionColumn, width).unwrap(); - } - - YGLayoutNodeInternal( - child, - childWidth, - childHeight, - direction, - YGMeasureModeExactly, - YGMeasureModeExactly, - childWidth, - childHeight, - true, - "abs-layout", - config, - layoutMarkerData, - layoutContext); - - if (child->isTrailingPosDefined(mainAxis) && - !child->isLeadingPositionDefined(mainAxis)) { - child->setLayoutPosition( - node->getLayout().measuredDimensions[dim[mainAxis]] - - child->getLayout().measuredDimensions[dim[mainAxis]] - - node->getTrailingBorder(mainAxis) - - child->getTrailingMargin(mainAxis, width).unwrap() - - child->getTrailingPosition(mainAxis, isMainAxisRow ? width : height) - .unwrap(), - leading[mainAxis]); - } else if ( - !child->isLeadingPositionDefined(mainAxis) && - node->getStyle().justifyContent == YGJustifyCenter) { - child->setLayoutPosition( - (node->getLayout().measuredDimensions[dim[mainAxis]] - - child->getLayout().measuredDimensions[dim[mainAxis]]) / - 2.0f, - leading[mainAxis]); - } else if ( - !child->isLeadingPositionDefined(mainAxis) && - node->getStyle().justifyContent == YGJustifyFlexEnd) { - child->setLayoutPosition( - (node->getLayout().measuredDimensions[dim[mainAxis]] - - child->getLayout().measuredDimensions[dim[mainAxis]]), - leading[mainAxis]); - } - - if (child->isTrailingPosDefined(crossAxis) && - !child->isLeadingPositionDefined(crossAxis)) { - child->setLayoutPosition( - node->getLayout().measuredDimensions[dim[crossAxis]] - - child->getLayout().measuredDimensions[dim[crossAxis]] - - node->getTrailingBorder(crossAxis) - - child->getTrailingMargin(crossAxis, width).unwrap() - - child - ->getTrailingPosition(crossAxis, isMainAxisRow ? height : width) - .unwrap(), - leading[crossAxis]); - - } else if ( - !child->isLeadingPositionDefined(crossAxis) && - YGNodeAlignItem(node, child) == YGAlignCenter) { - child->setLayoutPosition( - (node->getLayout().measuredDimensions[dim[crossAxis]] - - child->getLayout().measuredDimensions[dim[crossAxis]]) / - 2.0f, - leading[crossAxis]); - } else if ( - !child->isLeadingPositionDefined(crossAxis) && - ((YGNodeAlignItem(node, child) == YGAlignFlexEnd) ^ - (node->getStyle().flexWrap == YGWrapWrapReverse))) { - child->setLayoutPosition( - (node->getLayout().measuredDimensions[dim[crossAxis]] - - child->getLayout().measuredDimensions[dim[crossAxis]]), - leading[crossAxis]); - } -} - -static void YGNodeWithMeasureFuncSetMeasuredDimensions( - const YGNodeRef node, - const float availableWidth, - const float availableHeight, - const YGMeasureMode widthMeasureMode, - const YGMeasureMode heightMeasureMode, - const float ownerWidth, - const float ownerHeight, - void* const layoutContext) { - YGAssertWithNode( - node, - node->hasMeasureFunc(), - "Expected node to have custom measure function"); - - const float paddingAndBorderAxisRow = - YGNodePaddingAndBorderForAxis(node, YGFlexDirectionRow, availableWidth); - const float paddingAndBorderAxisColumn = YGNodePaddingAndBorderForAxis( - node, YGFlexDirectionColumn, availableWidth); - const float marginAxisRow = - node->getMarginForAxis(YGFlexDirectionRow, availableWidth).unwrap(); - const float marginAxisColumn = - node->getMarginForAxis(YGFlexDirectionColumn, availableWidth).unwrap(); - - // We want to make sure we don't call measure with negative size - const float innerWidth = YGFloatIsUndefined(availableWidth) - ? availableWidth - : YGFloatMax(0, availableWidth - marginAxisRow - paddingAndBorderAxisRow); - const float innerHeight = YGFloatIsUndefined(availableHeight) - ? availableHeight - : YGFloatMax( - 0, availableHeight - marginAxisColumn - paddingAndBorderAxisColumn); - - if (widthMeasureMode == YGMeasureModeExactly && - heightMeasureMode == YGMeasureModeExactly) { - // Don't bother sizing the text if both dimensions are already defined. - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - YGFlexDirectionRow, - availableWidth - marginAxisRow, - ownerWidth, - ownerWidth), - YGDimensionWidth); - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - YGFlexDirectionColumn, - availableHeight - marginAxisColumn, - ownerHeight, - ownerWidth), - YGDimensionHeight); - } else { - // Measure the text under the current constraints. - const YGSize measuredSize = marker::MarkerSection::wrap( - node, - &YGNode::measure, - innerWidth, - widthMeasureMode, - innerHeight, - heightMeasureMode, - layoutContext); - - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - YGFlexDirectionRow, - (widthMeasureMode == YGMeasureModeUndefined || - widthMeasureMode == YGMeasureModeAtMost) - ? measuredSize.width + paddingAndBorderAxisRow - : availableWidth - marginAxisRow, - ownerWidth, - ownerWidth), - YGDimensionWidth); - - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - YGFlexDirectionColumn, - (heightMeasureMode == YGMeasureModeUndefined || - heightMeasureMode == YGMeasureModeAtMost) - ? measuredSize.height + paddingAndBorderAxisColumn - : availableHeight - marginAxisColumn, - ownerHeight, - ownerWidth), - YGDimensionHeight); - } -} - -// For nodes with no children, use the available values if they were provided, -// or the minimum size as indicated by the padding and border sizes. -static void YGNodeEmptyContainerSetMeasuredDimensions( - const YGNodeRef node, - const float availableWidth, - const float availableHeight, - const YGMeasureMode widthMeasureMode, - const YGMeasureMode heightMeasureMode, - const float ownerWidth, - const float ownerHeight) { - const float paddingAndBorderAxisRow = - YGNodePaddingAndBorderForAxis(node, YGFlexDirectionRow, ownerWidth); - const float paddingAndBorderAxisColumn = - YGNodePaddingAndBorderForAxis(node, YGFlexDirectionColumn, ownerWidth); - const float marginAxisRow = - node->getMarginForAxis(YGFlexDirectionRow, ownerWidth).unwrap(); - const float marginAxisColumn = - node->getMarginForAxis(YGFlexDirectionColumn, ownerWidth).unwrap(); - - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - YGFlexDirectionRow, - (widthMeasureMode == YGMeasureModeUndefined || - widthMeasureMode == YGMeasureModeAtMost) - ? paddingAndBorderAxisRow - : availableWidth - marginAxisRow, - ownerWidth, - ownerWidth), - YGDimensionWidth); - - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - YGFlexDirectionColumn, - (heightMeasureMode == YGMeasureModeUndefined || - heightMeasureMode == YGMeasureModeAtMost) - ? paddingAndBorderAxisColumn - : availableHeight - marginAxisColumn, - ownerHeight, - ownerWidth), - YGDimensionHeight); -} - -static bool YGNodeFixedSizeSetMeasuredDimensions( - const YGNodeRef node, - const float availableWidth, - const float availableHeight, - const YGMeasureMode widthMeasureMode, - const YGMeasureMode heightMeasureMode, - const float ownerWidth, - const float ownerHeight) { - if ((!YGFloatIsUndefined(availableWidth) && - widthMeasureMode == YGMeasureModeAtMost && availableWidth <= 0.0f) || - (!YGFloatIsUndefined(availableHeight) && - heightMeasureMode == YGMeasureModeAtMost && availableHeight <= 0.0f) || - (widthMeasureMode == YGMeasureModeExactly && - heightMeasureMode == YGMeasureModeExactly)) { - auto marginAxisColumn = - node->getMarginForAxis(YGFlexDirectionColumn, ownerWidth).unwrap(); - auto marginAxisRow = - node->getMarginForAxis(YGFlexDirectionRow, ownerWidth).unwrap(); - - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - YGFlexDirectionRow, - YGFloatIsUndefined(availableWidth) || - (widthMeasureMode == YGMeasureModeAtMost && - availableWidth < 0.0f) - ? 0.0f - : availableWidth - marginAxisRow, - ownerWidth, - ownerWidth), - YGDimensionWidth); - - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - YGFlexDirectionColumn, - YGFloatIsUndefined(availableHeight) || - (heightMeasureMode == YGMeasureModeAtMost && - availableHeight < 0.0f) - ? 0.0f - : availableHeight - marginAxisColumn, - ownerHeight, - ownerWidth), - YGDimensionHeight); - return true; - } - - return false; -} - -static void YGZeroOutLayoutRecursivly( - const YGNodeRef node, - void* layoutContext) { - node->getLayout() = {}; - node->setLayoutDimension(0, 0); - node->setLayoutDimension(0, 1); - node->setHasNewLayout(true); - - node->iterChildrenAfterCloningIfNeeded( - YGZeroOutLayoutRecursivly, layoutContext); -} - -static float YGNodeCalculateAvailableInnerDim( - const YGNodeRef node, - YGFlexDirection axis, - float availableDim, - float ownerDim) { - YGFlexDirection direction = - YGFlexDirectionIsRow(axis) ? YGFlexDirectionRow : YGFlexDirectionColumn; - YGDimension dimension = - YGFlexDirectionIsRow(axis) ? YGDimensionWidth : YGDimensionHeight; - - const float margin = node->getMarginForAxis(direction, ownerDim).unwrap(); - const float paddingAndBorder = - YGNodePaddingAndBorderForAxis(node, direction, ownerDim); - - float availableInnerDim = availableDim - margin - paddingAndBorder; - // Max dimension overrides predefined dimension value; Min dimension in turn - // overrides both of the above - if (!YGFloatIsUndefined(availableInnerDim)) { - // We want to make sure our available height does not violate min and max - // constraints - const YGFloatOptional minDimensionOptional = - YGResolveValue(node->getStyle().minDimensions[dimension], ownerDim); - const float minInnerDim = minDimensionOptional.isUndefined() - ? 0.0f - : minDimensionOptional.unwrap() - paddingAndBorder; - - const YGFloatOptional maxDimensionOptional = - YGResolveValue(node->getStyle().maxDimensions[dimension], ownerDim); - - const float maxInnerDim = maxDimensionOptional.isUndefined() - ? FLT_MAX - : maxDimensionOptional.unwrap() - paddingAndBorder; - availableInnerDim = - YGFloatMax(YGFloatMin(availableInnerDim, maxInnerDim), minInnerDim); - } - - return availableInnerDim; -} - -static float YGNodeComputeFlexBasisForChildren( - const YGNodeRef node, - const float availableInnerWidth, - const float availableInnerHeight, - YGMeasureMode widthMeasureMode, - YGMeasureMode heightMeasureMode, - YGDirection direction, - YGFlexDirection mainAxis, - const YGConfigRef config, - bool performLayout, - YGMarkerLayoutData& layoutMarkerData, - void* const layoutContext) { - float totalOuterFlexBasis = 0.0f; - YGNodeRef singleFlexChild = nullptr; - YGVector children = node->getChildren(); - YGMeasureMode measureModeMainDim = - YGFlexDirectionIsRow(mainAxis) ? widthMeasureMode : heightMeasureMode; - // If there is only one child with flexGrow + flexShrink it means we can set - // the computedFlexBasis to 0 instead of measuring and shrinking / flexing the - // child to exactly match the remaining space - if (measureModeMainDim == YGMeasureModeExactly) { - for (auto child : children) { - if (child->isNodeFlexible()) { - if (singleFlexChild != nullptr || - YGFloatsEqual(child->resolveFlexGrow(), 0.0f) || - YGFloatsEqual(child->resolveFlexShrink(), 0.0f)) { - // There is already a flexible child, or this flexible child doesn't - // have flexGrow and flexShrink, abort - singleFlexChild = nullptr; - break; - } else { - singleFlexChild = child; - } - } - } - } - - for (auto child : children) { - child->resolveDimension(); - if (child->getStyle().display == YGDisplayNone) { - YGZeroOutLayoutRecursivly(child, layoutContext); - child->setHasNewLayout(true); - child->setDirty(false); - continue; - } - if (performLayout) { - // Set the initial position (relative to the owner). - const YGDirection childDirection = child->resolveDirection(direction); - const float mainDim = YGFlexDirectionIsRow(mainAxis) - ? availableInnerWidth - : availableInnerHeight; - const float crossDim = YGFlexDirectionIsRow(mainAxis) - ? availableInnerHeight - : availableInnerWidth; - child->setPosition( - childDirection, mainDim, crossDim, availableInnerWidth); - } - - if (child->getStyle().positionType == YGPositionTypeAbsolute) { - continue; - } - if (child == singleFlexChild) { - child->setLayoutComputedFlexBasisGeneration(gCurrentGenerationCount); - child->setLayoutComputedFlexBasis(YGFloatOptional(0)); - } else { - YGNodeComputeFlexBasisForChild( - node, - child, - availableInnerWidth, - widthMeasureMode, - availableInnerHeight, - availableInnerWidth, - availableInnerHeight, - heightMeasureMode, - direction, - config, - layoutMarkerData, - layoutContext); - } - - totalOuterFlexBasis += - (child->getLayout().computedFlexBasis + - child->getMarginForAxis(mainAxis, availableInnerWidth)) - .unwrap(); - } - - return totalOuterFlexBasis; -} - -// This function assumes that all the children of node have their -// computedFlexBasis properly computed(To do this use -// YGNodeComputeFlexBasisForChildren function). This function calculates -// YGCollectFlexItemsRowMeasurement -static YGCollectFlexItemsRowValues YGCalculateCollectFlexItemsRowValues( - const YGNodeRef& node, - const YGDirection ownerDirection, - const float mainAxisownerSize, - const float availableInnerWidth, - const float availableInnerMainDim, - const uint32_t startOfLineIndex, - const uint32_t lineCount) { - YGCollectFlexItemsRowValues flexAlgoRowMeasurement = {}; - flexAlgoRowMeasurement.relativeChildren.reserve(node->getChildren().size()); - - float sizeConsumedOnCurrentLineIncludingMinConstraint = 0; - const YGFlexDirection mainAxis = YGResolveFlexDirection( - node->getStyle().flexDirection, node->resolveDirection(ownerDirection)); - const bool isNodeFlexWrap = node->getStyle().flexWrap != YGWrapNoWrap; - - // Add items to the current line until it's full or we run out of items. - uint32_t endOfLineIndex = startOfLineIndex; - for (; endOfLineIndex < node->getChildren().size(); endOfLineIndex++) { - const YGNodeRef child = node->getChild(endOfLineIndex); - if (child->getStyle().display == YGDisplayNone || - child->getStyle().positionType == YGPositionTypeAbsolute) { - continue; - } - child->setLineIndex(lineCount); - const float childMarginMainAxis = - child->getMarginForAxis(mainAxis, availableInnerWidth).unwrap(); - const float flexBasisWithMinAndMaxConstraints = - YGNodeBoundAxisWithinMinAndMax( - child, - mainAxis, - child->getLayout().computedFlexBasis, - mainAxisownerSize) - .unwrap(); - - // If this is a multi-line flow and this item pushes us over the available - // size, we've hit the end of the current line. Break out of the loop and - // lay out the current line. - if (sizeConsumedOnCurrentLineIncludingMinConstraint + - flexBasisWithMinAndMaxConstraints + childMarginMainAxis > - availableInnerMainDim && - isNodeFlexWrap && flexAlgoRowMeasurement.itemsOnLine > 0) { - break; - } - - sizeConsumedOnCurrentLineIncludingMinConstraint += - flexBasisWithMinAndMaxConstraints + childMarginMainAxis; - flexAlgoRowMeasurement.sizeConsumedOnCurrentLine += - flexBasisWithMinAndMaxConstraints + childMarginMainAxis; - flexAlgoRowMeasurement.itemsOnLine++; - - if (child->isNodeFlexible()) { - flexAlgoRowMeasurement.totalFlexGrowFactors += child->resolveFlexGrow(); - - // Unlike the grow factor, the shrink factor is scaled relative to the - // child dimension. - flexAlgoRowMeasurement.totalFlexShrinkScaledFactors += - -child->resolveFlexShrink() * - child->getLayout().computedFlexBasis.unwrap(); - } - - flexAlgoRowMeasurement.relativeChildren.push_back(child); - } - - // The total flex factor needs to be floored to 1. - if (flexAlgoRowMeasurement.totalFlexGrowFactors > 0 && - flexAlgoRowMeasurement.totalFlexGrowFactors < 1) { - flexAlgoRowMeasurement.totalFlexGrowFactors = 1; - } - - // The total flex shrink factor needs to be floored to 1. - if (flexAlgoRowMeasurement.totalFlexShrinkScaledFactors > 0 && - flexAlgoRowMeasurement.totalFlexShrinkScaledFactors < 1) { - flexAlgoRowMeasurement.totalFlexShrinkScaledFactors = 1; - } - flexAlgoRowMeasurement.endOfLineIndex = endOfLineIndex; - return flexAlgoRowMeasurement; -} - -// It distributes the free space to the flexible items and ensures that the size -// of the flex items abide the min and max constraints. At the end of this -// function the child nodes would have proper size. Prior using this function -// please ensure that YGDistributeFreeSpaceFirstPass is called. -static float YGDistributeFreeSpaceSecondPass( - YGCollectFlexItemsRowValues& collectedFlexItemsValues, - const YGNodeRef node, - const YGFlexDirection mainAxis, - const YGFlexDirection crossAxis, - const float mainAxisownerSize, - const float availableInnerMainDim, - const float availableInnerCrossDim, - const float availableInnerWidth, - const float availableInnerHeight, - const bool flexBasisOverflows, - const YGMeasureMode measureModeCrossDim, - const bool performLayout, - const YGConfigRef config, - YGMarkerLayoutData& layoutMarkerData, - void* const layoutContext) { - float childFlexBasis = 0; - float flexShrinkScaledFactor = 0; - float flexGrowFactor = 0; - float deltaFreeSpace = 0; - const bool isMainAxisRow = YGFlexDirectionIsRow(mainAxis); - const bool isNodeFlexWrap = node->getStyle().flexWrap != YGWrapNoWrap; - - for (auto currentRelativeChild : collectedFlexItemsValues.relativeChildren) { - childFlexBasis = YGNodeBoundAxisWithinMinAndMax( - currentRelativeChild, - mainAxis, - currentRelativeChild->getLayout().computedFlexBasis, - mainAxisownerSize) - .unwrap(); - float updatedMainSize = childFlexBasis; - - if (!YGFloatIsUndefined(collectedFlexItemsValues.remainingFreeSpace) && - collectedFlexItemsValues.remainingFreeSpace < 0) { - flexShrinkScaledFactor = - -currentRelativeChild->resolveFlexShrink() * childFlexBasis; - // Is this child able to shrink? - if (flexShrinkScaledFactor != 0) { - float childSize; - - if (!YGFloatIsUndefined( - collectedFlexItemsValues.totalFlexShrinkScaledFactors) && - collectedFlexItemsValues.totalFlexShrinkScaledFactors == 0) { - childSize = childFlexBasis + flexShrinkScaledFactor; - } else { - childSize = childFlexBasis + - (collectedFlexItemsValues.remainingFreeSpace / - collectedFlexItemsValues.totalFlexShrinkScaledFactors) * - flexShrinkScaledFactor; - } - - updatedMainSize = YGNodeBoundAxis( - currentRelativeChild, - mainAxis, - childSize, - availableInnerMainDim, - availableInnerWidth); - } - } else if ( - !YGFloatIsUndefined(collectedFlexItemsValues.remainingFreeSpace) && - collectedFlexItemsValues.remainingFreeSpace > 0) { - flexGrowFactor = currentRelativeChild->resolveFlexGrow(); - - // Is this child able to grow? - if (!YGFloatIsUndefined(flexGrowFactor) && flexGrowFactor != 0) { - updatedMainSize = YGNodeBoundAxis( - currentRelativeChild, - mainAxis, - childFlexBasis + - collectedFlexItemsValues.remainingFreeSpace / - collectedFlexItemsValues.totalFlexGrowFactors * - flexGrowFactor, - availableInnerMainDim, - availableInnerWidth); - } - } - - deltaFreeSpace += updatedMainSize - childFlexBasis; - - const float marginMain = - currentRelativeChild->getMarginForAxis(mainAxis, availableInnerWidth) - .unwrap(); - const float marginCross = - currentRelativeChild->getMarginForAxis(crossAxis, availableInnerWidth) - .unwrap(); - - float childCrossSize; - float childMainSize = updatedMainSize + marginMain; - YGMeasureMode childCrossMeasureMode; - YGMeasureMode childMainMeasureMode = YGMeasureModeExactly; - - if (!currentRelativeChild->getStyle().aspectRatio.isUndefined()) { - childCrossSize = isMainAxisRow ? (childMainSize - marginMain) / - currentRelativeChild->getStyle().aspectRatio.unwrap() - : (childMainSize - marginMain) * - currentRelativeChild->getStyle().aspectRatio.unwrap(); - childCrossMeasureMode = YGMeasureModeExactly; - - childCrossSize += marginCross; - } else if ( - !YGFloatIsUndefined(availableInnerCrossDim) && - !YGNodeIsStyleDimDefined( - currentRelativeChild, crossAxis, availableInnerCrossDim) && - measureModeCrossDim == YGMeasureModeExactly && - !(isNodeFlexWrap && flexBasisOverflows) && - YGNodeAlignItem(node, currentRelativeChild) == YGAlignStretch && - currentRelativeChild->marginLeadingValue(crossAxis).unit != - YGUnitAuto && - currentRelativeChild->marginTrailingValue(crossAxis).unit != - YGUnitAuto) { - childCrossSize = availableInnerCrossDim; - childCrossMeasureMode = YGMeasureModeExactly; - } else if (!YGNodeIsStyleDimDefined( - currentRelativeChild, crossAxis, availableInnerCrossDim)) { - childCrossSize = availableInnerCrossDim; - childCrossMeasureMode = YGFloatIsUndefined(childCrossSize) - ? YGMeasureModeUndefined - : YGMeasureModeAtMost; - } else { - childCrossSize = - YGResolveValue( - currentRelativeChild->getResolvedDimension(dim[crossAxis]), - availableInnerCrossDim) - .unwrap() + - marginCross; - const bool isLoosePercentageMeasurement = - currentRelativeChild->getResolvedDimension(dim[crossAxis]).unit == - YGUnitPercent && - measureModeCrossDim != YGMeasureModeExactly; - childCrossMeasureMode = - YGFloatIsUndefined(childCrossSize) || isLoosePercentageMeasurement - ? YGMeasureModeUndefined - : YGMeasureModeExactly; - } - - YGConstrainMaxSizeForMode( - currentRelativeChild, - mainAxis, - availableInnerMainDim, - availableInnerWidth, - &childMainMeasureMode, - &childMainSize); - YGConstrainMaxSizeForMode( - currentRelativeChild, - crossAxis, - availableInnerCrossDim, - availableInnerWidth, - &childCrossMeasureMode, - &childCrossSize); - - const bool requiresStretchLayout = - !YGNodeIsStyleDimDefined( - currentRelativeChild, crossAxis, availableInnerCrossDim) && - YGNodeAlignItem(node, currentRelativeChild) == YGAlignStretch && - currentRelativeChild->marginLeadingValue(crossAxis).unit != - YGUnitAuto && - currentRelativeChild->marginTrailingValue(crossAxis).unit != YGUnitAuto; - - const float childWidth = isMainAxisRow ? childMainSize : childCrossSize; - const float childHeight = !isMainAxisRow ? childMainSize : childCrossSize; - - const YGMeasureMode childWidthMeasureMode = - isMainAxisRow ? childMainMeasureMode : childCrossMeasureMode; - const YGMeasureMode childHeightMeasureMode = - !isMainAxisRow ? childMainMeasureMode : childCrossMeasureMode; - - // Recursively call the layout algorithm for this child with the updated - // main size. - YGLayoutNodeInternal( - currentRelativeChild, - childWidth, - childHeight, - node->getLayout().direction, - childWidthMeasureMode, - childHeightMeasureMode, - availableInnerWidth, - availableInnerHeight, - performLayout && !requiresStretchLayout, - "flex", - config, - layoutMarkerData, - layoutContext); - node->setLayoutHadOverflow( - node->getLayout().hadOverflow || - currentRelativeChild->getLayout().hadOverflow); - } - return deltaFreeSpace; -} - -// It distributes the free space to the flexible items.For those flexible items -// whose min and max constraints are triggered, those flex item's clamped size -// is removed from the remaingfreespace. -static void YGDistributeFreeSpaceFirstPass( - YGCollectFlexItemsRowValues& collectedFlexItemsValues, - const YGFlexDirection mainAxis, - const float mainAxisownerSize, - const float availableInnerMainDim, - const float availableInnerWidth) { - float flexShrinkScaledFactor = 0; - float flexGrowFactor = 0; - float baseMainSize = 0; - float boundMainSize = 0; - float deltaFreeSpace = 0; - - for (auto currentRelativeChild : collectedFlexItemsValues.relativeChildren) { - float childFlexBasis = - YGNodeBoundAxisWithinMinAndMax( - currentRelativeChild, - mainAxis, - currentRelativeChild->getLayout().computedFlexBasis, - mainAxisownerSize) - .unwrap(); - - if (collectedFlexItemsValues.remainingFreeSpace < 0) { - flexShrinkScaledFactor = - -currentRelativeChild->resolveFlexShrink() * childFlexBasis; - - // Is this child able to shrink? - if (!YGFloatIsUndefined(flexShrinkScaledFactor) && - flexShrinkScaledFactor != 0) { - baseMainSize = childFlexBasis + - collectedFlexItemsValues.remainingFreeSpace / - collectedFlexItemsValues.totalFlexShrinkScaledFactors * - flexShrinkScaledFactor; - boundMainSize = YGNodeBoundAxis( - currentRelativeChild, - mainAxis, - baseMainSize, - availableInnerMainDim, - availableInnerWidth); - if (!YGFloatIsUndefined(baseMainSize) && - !YGFloatIsUndefined(boundMainSize) && - baseMainSize != boundMainSize) { - // By excluding this item's size and flex factor from remaining, this - // item's min/max constraints should also trigger in the second pass - // resulting in the item's size calculation being identical in the - // first and second passes. - deltaFreeSpace += boundMainSize - childFlexBasis; - collectedFlexItemsValues.totalFlexShrinkScaledFactors -= - flexShrinkScaledFactor; - } - } - } else if ( - !YGFloatIsUndefined(collectedFlexItemsValues.remainingFreeSpace) && - collectedFlexItemsValues.remainingFreeSpace > 0) { - flexGrowFactor = currentRelativeChild->resolveFlexGrow(); - - // Is this child able to grow? - if (!YGFloatIsUndefined(flexGrowFactor) && flexGrowFactor != 0) { - baseMainSize = childFlexBasis + - collectedFlexItemsValues.remainingFreeSpace / - collectedFlexItemsValues.totalFlexGrowFactors * flexGrowFactor; - boundMainSize = YGNodeBoundAxis( - currentRelativeChild, - mainAxis, - baseMainSize, - availableInnerMainDim, - availableInnerWidth); - - if (!YGFloatIsUndefined(baseMainSize) && - !YGFloatIsUndefined(boundMainSize) && - baseMainSize != boundMainSize) { - // By excluding this item's size and flex factor from remaining, this - // item's min/max constraints should also trigger in the second pass - // resulting in the item's size calculation being identical in the - // first and second passes. - deltaFreeSpace += boundMainSize - childFlexBasis; - collectedFlexItemsValues.totalFlexGrowFactors -= flexGrowFactor; - } - } - } - } - collectedFlexItemsValues.remainingFreeSpace -= deltaFreeSpace; -} - -// Do two passes over the flex items to figure out how to distribute the -// remaining space. -// -// The first pass finds the items whose min/max constraints trigger, freezes -// them at those sizes, and excludes those sizes from the remaining space. -// -// The second pass sets the size of each flexible item. It distributes the -// remaining space amongst the items whose min/max constraints didn't trigger in -// the first pass. For the other items, it sets their sizes by forcing their -// min/max constraints to trigger again. -// -// This two pass approach for resolving min/max constraints deviates from the -// spec. The spec -// (https://www.w3.org/TR/CSS-flexbox-1/#resolve-flexible-lengths) describes a -// process that needs to be repeated a variable number of times. The algorithm -// implemented here won't handle all cases but it was simpler to implement and -// it mitigates performance concerns because we know exactly how many passes -// it'll do. -// -// At the end of this function the child nodes would have the proper size -// assigned to them. -// -static void YGResolveFlexibleLength( - const YGNodeRef node, - YGCollectFlexItemsRowValues& collectedFlexItemsValues, - const YGFlexDirection mainAxis, - const YGFlexDirection crossAxis, - const float mainAxisownerSize, - const float availableInnerMainDim, - const float availableInnerCrossDim, - const float availableInnerWidth, - const float availableInnerHeight, - const bool flexBasisOverflows, - const YGMeasureMode measureModeCrossDim, - const bool performLayout, - const YGConfigRef config, - YGMarkerLayoutData& layoutMarkerData, - void* const layoutContext) { - const float originalFreeSpace = collectedFlexItemsValues.remainingFreeSpace; - // First pass: detect the flex items whose min/max constraints trigger - YGDistributeFreeSpaceFirstPass( - collectedFlexItemsValues, - mainAxis, - mainAxisownerSize, - availableInnerMainDim, - availableInnerWidth); - - // Second pass: resolve the sizes of the flexible items - const float distributedFreeSpace = YGDistributeFreeSpaceSecondPass( - collectedFlexItemsValues, - node, - mainAxis, - crossAxis, - mainAxisownerSize, - availableInnerMainDim, - availableInnerCrossDim, - availableInnerWidth, - availableInnerHeight, - flexBasisOverflows, - measureModeCrossDim, - performLayout, - config, - layoutMarkerData, - layoutContext); - - collectedFlexItemsValues.remainingFreeSpace = - originalFreeSpace - distributedFreeSpace; -} - -static void YGJustifyMainAxis( - const YGNodeRef node, - YGCollectFlexItemsRowValues& collectedFlexItemsValues, - const uint32_t startOfLineIndex, - const YGFlexDirection mainAxis, - const YGFlexDirection crossAxis, - const YGMeasureMode measureModeMainDim, - const YGMeasureMode measureModeCrossDim, - const float mainAxisownerSize, - const float ownerWidth, - const float availableInnerMainDim, - const float availableInnerCrossDim, - const float availableInnerWidth, - const bool performLayout, - void* const layoutContext) { - const YGStyle& style = node->getStyle(); - const float leadingPaddingAndBorderMain = - node->getLeadingPaddingAndBorder(mainAxis, ownerWidth).unwrap(); - const float trailingPaddingAndBorderMain = - node->getTrailingPaddingAndBorder(mainAxis, ownerWidth).unwrap(); - // If we are using "at most" rules in the main axis, make sure that - // remainingFreeSpace is 0 when min main dimension is not given - if (measureModeMainDim == YGMeasureModeAtMost && - collectedFlexItemsValues.remainingFreeSpace > 0) { - if (!style.minDimensions[dim[mainAxis]].isUndefined() && - !YGResolveValue(style.minDimensions[dim[mainAxis]], mainAxisownerSize) - .isUndefined()) { - // This condition makes sure that if the size of main dimension(after - // considering child nodes main dim, leading and trailing padding etc) - // falls below min dimension, then the remainingFreeSpace is reassigned - // considering the min dimension - - // `minAvailableMainDim` denotes minimum available space in which child - // can be laid out, it will exclude space consumed by padding and border. - const float minAvailableMainDim = - YGResolveValue(style.minDimensions[dim[mainAxis]], mainAxisownerSize) - .unwrap() - - leadingPaddingAndBorderMain - trailingPaddingAndBorderMain; - const float occupiedSpaceByChildNodes = - availableInnerMainDim - collectedFlexItemsValues.remainingFreeSpace; - collectedFlexItemsValues.remainingFreeSpace = - YGFloatMax(0, minAvailableMainDim - occupiedSpaceByChildNodes); - } else { - collectedFlexItemsValues.remainingFreeSpace = 0; - } - } - - int numberOfAutoMarginsOnCurrentLine = 0; - for (uint32_t i = startOfLineIndex; - i < collectedFlexItemsValues.endOfLineIndex; - i++) { - const YGNodeRef child = node->getChild(i); - if (child->getStyle().positionType == YGPositionTypeRelative) { - if (child->marginLeadingValue(mainAxis).unit == YGUnitAuto) { - numberOfAutoMarginsOnCurrentLine++; - } - if (child->marginTrailingValue(mainAxis).unit == YGUnitAuto) { - numberOfAutoMarginsOnCurrentLine++; - } - } - } - - // In order to position the elements in the main axis, we have two controls. - // The space between the beginning and the first element and the space between - // each two elements. - float leadingMainDim = 0; - float betweenMainDim = 0; - const YGJustify justifyContent = node->getStyle().justifyContent; - - if (numberOfAutoMarginsOnCurrentLine == 0) { - switch (justifyContent) { - case YGJustifyCenter: - leadingMainDim = collectedFlexItemsValues.remainingFreeSpace / 2; - break; - case YGJustifyFlexEnd: - leadingMainDim = collectedFlexItemsValues.remainingFreeSpace; - break; - case YGJustifySpaceBetween: - if (collectedFlexItemsValues.itemsOnLine > 1) { - betweenMainDim = - YGFloatMax(collectedFlexItemsValues.remainingFreeSpace, 0) / - (collectedFlexItemsValues.itemsOnLine - 1); - } else { - betweenMainDim = 0; - } - break; - case YGJustifySpaceEvenly: - // Space is distributed evenly across all elements - betweenMainDim = collectedFlexItemsValues.remainingFreeSpace / - (collectedFlexItemsValues.itemsOnLine + 1); - leadingMainDim = betweenMainDim; - break; - case YGJustifySpaceAround: - // Space on the edges is half of the space between elements - betweenMainDim = collectedFlexItemsValues.remainingFreeSpace / - collectedFlexItemsValues.itemsOnLine; - leadingMainDim = betweenMainDim / 2; - break; - case YGJustifyFlexStart: - break; - } - } - - collectedFlexItemsValues.mainDim = - leadingPaddingAndBorderMain + leadingMainDim; - collectedFlexItemsValues.crossDim = 0; - - float maxAscentForCurrentLine = 0; - float maxDescentForCurrentLine = 0; - bool isNodeBaselineLayout = YGIsBaselineLayout(node); - for (uint32_t i = startOfLineIndex; - i < collectedFlexItemsValues.endOfLineIndex; - i++) { - const YGNodeRef child = node->getChild(i); - const YGStyle& childStyle = child->getStyle(); - const YGLayout childLayout = child->getLayout(); - if (childStyle.display == YGDisplayNone) { - continue; - } - if (childStyle.positionType == YGPositionTypeAbsolute && - child->isLeadingPositionDefined(mainAxis)) { - if (performLayout) { - // In case the child is position absolute and has left/top being - // defined, we override the position to whatever the user said (and - // margin/border). - child->setLayoutPosition( - child->getLeadingPosition(mainAxis, availableInnerMainDim) - .unwrap() + - node->getLeadingBorder(mainAxis) + - child->getLeadingMargin(mainAxis, availableInnerWidth).unwrap(), - pos[mainAxis]); - } - } else { - // Now that we placed the element, we need to update the variables. - // We need to do that only for relative elements. Absolute elements do not - // take part in that phase. - if (childStyle.positionType == YGPositionTypeRelative) { - if (child->marginLeadingValue(mainAxis).unit == YGUnitAuto) { - collectedFlexItemsValues.mainDim += - collectedFlexItemsValues.remainingFreeSpace / - numberOfAutoMarginsOnCurrentLine; - } - - if (performLayout) { - child->setLayoutPosition( - childLayout.position[pos[mainAxis]] + - collectedFlexItemsValues.mainDim, - pos[mainAxis]); - } - - if (child->marginTrailingValue(mainAxis).unit == YGUnitAuto) { - collectedFlexItemsValues.mainDim += - collectedFlexItemsValues.remainingFreeSpace / - numberOfAutoMarginsOnCurrentLine; - } - bool canSkipFlex = - !performLayout && measureModeCrossDim == YGMeasureModeExactly; - if (canSkipFlex) { - // If we skipped the flex step, then we can't rely on the measuredDims - // because they weren't computed. This means we can't call - // YGNodeDimWithMargin. - collectedFlexItemsValues.mainDim += betweenMainDim + - child->getMarginForAxis(mainAxis, availableInnerWidth).unwrap() + - childLayout.computedFlexBasis.unwrap(); - collectedFlexItemsValues.crossDim = availableInnerCrossDim; - } else { - // The main dimension is the sum of all the elements dimension plus - // the spacing. - collectedFlexItemsValues.mainDim += betweenMainDim + - YGNodeDimWithMargin(child, mainAxis, availableInnerWidth); - - if (isNodeBaselineLayout) { - // If the child is baseline aligned then the cross dimension is - // calculated by adding maxAscent and maxDescent from the baseline. - const float ascent = YGBaseline(child, layoutContext) + - child - ->getLeadingMargin( - YGFlexDirectionColumn, availableInnerWidth) - .unwrap(); - const float descent = - child->getLayout().measuredDimensions[YGDimensionHeight] + - child - ->getMarginForAxis( - YGFlexDirectionColumn, availableInnerWidth) - .unwrap() - - ascent; - - maxAscentForCurrentLine = - YGFloatMax(maxAscentForCurrentLine, ascent); - maxDescentForCurrentLine = - YGFloatMax(maxDescentForCurrentLine, descent); - } else { - // The cross dimension is the max of the elements dimension since - // there can only be one element in that cross dimension in the case - // when the items are not baseline aligned - collectedFlexItemsValues.crossDim = YGFloatMax( - collectedFlexItemsValues.crossDim, - YGNodeDimWithMargin(child, crossAxis, availableInnerWidth)); - } - } - } else if (performLayout) { - child->setLayoutPosition( - childLayout.position[pos[mainAxis]] + - node->getLeadingBorder(mainAxis) + leadingMainDim, - pos[mainAxis]); - } - } - } - collectedFlexItemsValues.mainDim += trailingPaddingAndBorderMain; - - if (isNodeBaselineLayout) { - collectedFlexItemsValues.crossDim = - maxAscentForCurrentLine + maxDescentForCurrentLine; - } -} - -// -// This is the main routine that implements a subset of the flexbox layout -// algorithm described in the W3C CSS documentation: -// https://www.w3.org/TR/CSS3-flexbox/. -// -// Limitations of this algorithm, compared to the full standard: -// * Display property is always assumed to be 'flex' except for Text nodes, -// which are assumed to be 'inline-flex'. -// * The 'zIndex' property (or any form of z ordering) is not supported. Nodes -// are stacked in document order. -// * The 'order' property is not supported. The order of flex items is always -// defined by document order. -// * The 'visibility' property is always assumed to be 'visible'. Values of -// 'collapse' and 'hidden' are not supported. -// * There is no support for forced breaks. -// * It does not support vertical inline directions (top-to-bottom or -// bottom-to-top text). -// -// Deviations from standard: -// * Section 4.5 of the spec indicates that all flex items have a default -// minimum main size. For text blocks, for example, this is the width of the -// widest word. Calculating the minimum width is expensive, so we forego it -// and assume a default minimum main size of 0. -// * Min/Max sizes in the main axis are not honored when resolving flexible -// lengths. -// * The spec indicates that the default value for 'flexDirection' is 'row', -// but the algorithm below assumes a default of 'column'. -// -// Input parameters: -// - node: current node to be sized and layed out -// - availableWidth & availableHeight: available size to be used for sizing -// the node or YGUndefined if the size is not available; interpretation -// depends on layout flags -// - ownerDirection: the inline (text) direction within the owner -// (left-to-right or right-to-left) -// - widthMeasureMode: indicates the sizing rules for the width (see below -// for explanation) -// - heightMeasureMode: indicates the sizing rules for the height (see below -// for explanation) -// - performLayout: specifies whether the caller is interested in just the -// dimensions of the node or it requires the entire node and its subtree to -// be layed out (with final positions) -// -// Details: -// This routine is called recursively to lay out subtrees of flexbox -// elements. It uses the information in node.style, which is treated as a -// read-only input. It is responsible for setting the layout.direction and -// layout.measuredDimensions fields for the input node as well as the -// layout.position and layout.lineIndex fields for its child nodes. The -// layout.measuredDimensions field includes any border or padding for the -// node but does not include margins. -// -// The spec describes four different layout modes: "fill available", "max -// content", "min content", and "fit content". Of these, we don't use "min -// content" because we don't support default minimum main sizes (see above -// for details). Each of our measure modes maps to a layout mode from the -// spec (https://www.w3.org/TR/CSS3-sizing/#terms): -// - YGMeasureModeUndefined: max content -// - YGMeasureModeExactly: fill available -// - YGMeasureModeAtMost: fit content -// -// When calling YGNodelayoutImpl and YGLayoutNodeInternal, if the caller -// passes an available size of undefined then it must also pass a measure -// mode of YGMeasureModeUndefined in that dimension. -// -static void YGNodelayoutImpl( - const YGNodeRef node, - const float availableWidth, - const float availableHeight, - const YGDirection ownerDirection, - const YGMeasureMode widthMeasureMode, - const YGMeasureMode heightMeasureMode, - const float ownerWidth, - const float ownerHeight, - const bool performLayout, - const YGConfigRef config, - YGMarkerLayoutData& layoutMarkerData, - void* const layoutContext) { - YGAssertWithNode( - node, - YGFloatIsUndefined(availableWidth) - ? widthMeasureMode == YGMeasureModeUndefined - : true, - "availableWidth is indefinite so widthMeasureMode must be " - "YGMeasureModeUndefined"); - YGAssertWithNode( - node, - YGFloatIsUndefined(availableHeight) - ? heightMeasureMode == YGMeasureModeUndefined - : true, - "availableHeight is indefinite so heightMeasureMode must be " - "YGMeasureModeUndefined"); - - (performLayout ? layoutMarkerData.layouts : layoutMarkerData.measures) += 1; - - // Set the resolved resolution in the node's layout. - const YGDirection direction = node->resolveDirection(ownerDirection); - node->setLayoutDirection(direction); - - const YGFlexDirection flexRowDirection = - YGResolveFlexDirection(YGFlexDirectionRow, direction); - const YGFlexDirection flexColumnDirection = - YGResolveFlexDirection(YGFlexDirectionColumn, direction); - - node->setLayoutMargin( - node->getLeadingMargin(flexRowDirection, ownerWidth).unwrap(), - YGEdgeStart); - node->setLayoutMargin( - node->getTrailingMargin(flexRowDirection, ownerWidth).unwrap(), - YGEdgeEnd); - node->setLayoutMargin( - node->getLeadingMargin(flexColumnDirection, ownerWidth).unwrap(), - YGEdgeTop); - node->setLayoutMargin( - node->getTrailingMargin(flexColumnDirection, ownerWidth).unwrap(), - YGEdgeBottom); - - node->setLayoutBorder(node->getLeadingBorder(flexRowDirection), YGEdgeStart); - node->setLayoutBorder(node->getTrailingBorder(flexRowDirection), YGEdgeEnd); - node->setLayoutBorder(node->getLeadingBorder(flexColumnDirection), YGEdgeTop); - node->setLayoutBorder( - node->getTrailingBorder(flexColumnDirection), YGEdgeBottom); - - node->setLayoutPadding( - node->getLeadingPadding(flexRowDirection, ownerWidth).unwrap(), - YGEdgeStart); - node->setLayoutPadding( - node->getTrailingPadding(flexRowDirection, ownerWidth).unwrap(), - YGEdgeEnd); - node->setLayoutPadding( - node->getLeadingPadding(flexColumnDirection, ownerWidth).unwrap(), - YGEdgeTop); - node->setLayoutPadding( - node->getTrailingPadding(flexColumnDirection, ownerWidth).unwrap(), - YGEdgeBottom); - - if (node->hasMeasureFunc()) { - YGNodeWithMeasureFuncSetMeasuredDimensions( - node, - availableWidth, - availableHeight, - widthMeasureMode, - heightMeasureMode, - ownerWidth, - ownerHeight, - layoutContext); - return; - } - - const uint32_t childCount = YGNodeGetChildCount(node); - if (childCount == 0) { - YGNodeEmptyContainerSetMeasuredDimensions( - node, - availableWidth, - availableHeight, - widthMeasureMode, - heightMeasureMode, - ownerWidth, - ownerHeight); - return; - } - - // If we're not being asked to perform a full layout we can skip the algorithm - // if we already know the size - if (!performLayout && - YGNodeFixedSizeSetMeasuredDimensions( - node, - availableWidth, - availableHeight, - widthMeasureMode, - heightMeasureMode, - ownerWidth, - ownerHeight)) { - return; - } - - // At this point we know we're going to perform work. Ensure that each child - // has a mutable copy. - node->cloneChildrenIfNeeded(layoutContext); - // Reset layout flags, as they could have changed. - node->setLayoutHadOverflow(false); - - // STEP 1: CALCULATE VALUES FOR REMAINDER OF ALGORITHM - const YGFlexDirection mainAxis = - YGResolveFlexDirection(node->getStyle().flexDirection, direction); - const YGFlexDirection crossAxis = YGFlexDirectionCross(mainAxis, direction); - const bool isMainAxisRow = YGFlexDirectionIsRow(mainAxis); - const bool isNodeFlexWrap = node->getStyle().flexWrap != YGWrapNoWrap; - - const float mainAxisownerSize = isMainAxisRow ? ownerWidth : ownerHeight; - const float crossAxisownerSize = isMainAxisRow ? ownerHeight : ownerWidth; - - const float leadingPaddingAndBorderCross = - node->getLeadingPaddingAndBorder(crossAxis, ownerWidth).unwrap(); - const float paddingAndBorderAxisMain = - YGNodePaddingAndBorderForAxis(node, mainAxis, ownerWidth); - const float paddingAndBorderAxisCross = - YGNodePaddingAndBorderForAxis(node, crossAxis, ownerWidth); - - YGMeasureMode measureModeMainDim = - isMainAxisRow ? widthMeasureMode : heightMeasureMode; - YGMeasureMode measureModeCrossDim = - isMainAxisRow ? heightMeasureMode : widthMeasureMode; - - const float paddingAndBorderAxisRow = - isMainAxisRow ? paddingAndBorderAxisMain : paddingAndBorderAxisCross; - const float paddingAndBorderAxisColumn = - isMainAxisRow ? paddingAndBorderAxisCross : paddingAndBorderAxisMain; - - const float marginAxisRow = - node->getMarginForAxis(YGFlexDirectionRow, ownerWidth).unwrap(); - const float marginAxisColumn = - node->getMarginForAxis(YGFlexDirectionColumn, ownerWidth).unwrap(); - - const float minInnerWidth = - YGResolveValue( - node->getStyle().minDimensions[YGDimensionWidth], ownerWidth) - .unwrap() - - paddingAndBorderAxisRow; - const float maxInnerWidth = - YGResolveValue( - node->getStyle().maxDimensions[YGDimensionWidth], ownerWidth) - .unwrap() - - paddingAndBorderAxisRow; - const float minInnerHeight = - YGResolveValue( - node->getStyle().minDimensions[YGDimensionHeight], ownerHeight) - .unwrap() - - paddingAndBorderAxisColumn; - const float maxInnerHeight = - YGResolveValue( - node->getStyle().maxDimensions[YGDimensionHeight], ownerHeight) - .unwrap() - - paddingAndBorderAxisColumn; - - const float minInnerMainDim = isMainAxisRow ? minInnerWidth : minInnerHeight; - const float maxInnerMainDim = isMainAxisRow ? maxInnerWidth : maxInnerHeight; - - // STEP 2: DETERMINE AVAILABLE SIZE IN MAIN AND CROSS DIRECTIONS - - float availableInnerWidth = YGNodeCalculateAvailableInnerDim( - node, YGFlexDirectionRow, availableWidth, ownerWidth); - float availableInnerHeight = YGNodeCalculateAvailableInnerDim( - node, YGFlexDirectionColumn, availableHeight, ownerHeight); - - float availableInnerMainDim = - isMainAxisRow ? availableInnerWidth : availableInnerHeight; - const float availableInnerCrossDim = - isMainAxisRow ? availableInnerHeight : availableInnerWidth; - - // STEP 3: DETERMINE FLEX BASIS FOR EACH ITEM - - float totalOuterFlexBasis = YGNodeComputeFlexBasisForChildren( - node, - availableInnerWidth, - availableInnerHeight, - widthMeasureMode, - heightMeasureMode, - direction, - mainAxis, - config, - performLayout, - layoutMarkerData, - layoutContext); - - const bool flexBasisOverflows = measureModeMainDim == YGMeasureModeUndefined - ? false - : totalOuterFlexBasis > availableInnerMainDim; - if (isNodeFlexWrap && flexBasisOverflows && - measureModeMainDim == YGMeasureModeAtMost) { - measureModeMainDim = YGMeasureModeExactly; - } - // STEP 4: COLLECT FLEX ITEMS INTO FLEX LINES - - // Indexes of children that represent the first and last items in the line. - uint32_t startOfLineIndex = 0; - uint32_t endOfLineIndex = 0; - - // Number of lines. - uint32_t lineCount = 0; - - // Accumulated cross dimensions of all lines so far. - float totalLineCrossDim = 0; - - // Max main dimension of all the lines. - float maxLineMainDim = 0; - YGCollectFlexItemsRowValues collectedFlexItemsValues; - for (; endOfLineIndex < childCount; - lineCount++, startOfLineIndex = endOfLineIndex) { - collectedFlexItemsValues = YGCalculateCollectFlexItemsRowValues( - node, - ownerDirection, - mainAxisownerSize, - availableInnerWidth, - availableInnerMainDim, - startOfLineIndex, - lineCount); - endOfLineIndex = collectedFlexItemsValues.endOfLineIndex; - - // If we don't need to measure the cross axis, we can skip the entire flex - // step. - const bool canSkipFlex = - !performLayout && measureModeCrossDim == YGMeasureModeExactly; - - // STEP 5: RESOLVING FLEXIBLE LENGTHS ON MAIN AXIS - // Calculate the remaining available space that needs to be allocated. If - // the main dimension size isn't known, it is computed based on the line - // length, so there's no more space left to distribute. - - bool sizeBasedOnContent = false; - // If we don't measure with exact main dimension we want to ensure we don't - // violate min and max - if (measureModeMainDim != YGMeasureModeExactly) { - if (!YGFloatIsUndefined(minInnerMainDim) && - collectedFlexItemsValues.sizeConsumedOnCurrentLine < - minInnerMainDim) { - availableInnerMainDim = minInnerMainDim; - } else if ( - !YGFloatIsUndefined(maxInnerMainDim) && - collectedFlexItemsValues.sizeConsumedOnCurrentLine > - maxInnerMainDim) { - availableInnerMainDim = maxInnerMainDim; - } else { - if (!node->getConfig()->useLegacyStretchBehaviour && - ((YGFloatIsUndefined( - collectedFlexItemsValues.totalFlexGrowFactors) && - collectedFlexItemsValues.totalFlexGrowFactors == 0) || - (YGFloatIsUndefined(node->resolveFlexGrow()) && - node->resolveFlexGrow() == 0))) { - // If we don't have any children to flex or we can't flex the node - // itself, space we've used is all space we need. Root node also - // should be shrunk to minimum - availableInnerMainDim = - collectedFlexItemsValues.sizeConsumedOnCurrentLine; - } - - if (node->getConfig()->useLegacyStretchBehaviour) { - node->setLayoutDidUseLegacyFlag(true); - } - sizeBasedOnContent = !node->getConfig()->useLegacyStretchBehaviour; - } - } - - if (!sizeBasedOnContent && !YGFloatIsUndefined(availableInnerMainDim)) { - collectedFlexItemsValues.remainingFreeSpace = availableInnerMainDim - - collectedFlexItemsValues.sizeConsumedOnCurrentLine; - } else if (collectedFlexItemsValues.sizeConsumedOnCurrentLine < 0) { - // availableInnerMainDim is indefinite which means the node is being sized - // based on its content. sizeConsumedOnCurrentLine is negative which means - // the node will allocate 0 points for its content. Consequently, - // remainingFreeSpace is 0 - sizeConsumedOnCurrentLine. - collectedFlexItemsValues.remainingFreeSpace = - -collectedFlexItemsValues.sizeConsumedOnCurrentLine; - } - - if (!canSkipFlex) { - YGResolveFlexibleLength( - node, - collectedFlexItemsValues, - mainAxis, - crossAxis, - mainAxisownerSize, - availableInnerMainDim, - availableInnerCrossDim, - availableInnerWidth, - availableInnerHeight, - flexBasisOverflows, - measureModeCrossDim, - performLayout, - config, - layoutMarkerData, - layoutContext); - } - - node->setLayoutHadOverflow( - node->getLayout().hadOverflow | - (collectedFlexItemsValues.remainingFreeSpace < 0)); - - // STEP 6: MAIN-AXIS JUSTIFICATION & CROSS-AXIS SIZE DETERMINATION - - // At this point, all the children have their dimensions set in the main - // axis. Their dimensions are also set in the cross axis with the exception - // of items that are aligned "stretch". We need to compute these stretch - // values and set the final positions. - - YGJustifyMainAxis( - node, - collectedFlexItemsValues, - startOfLineIndex, - mainAxis, - crossAxis, - measureModeMainDim, - measureModeCrossDim, - mainAxisownerSize, - ownerWidth, - availableInnerMainDim, - availableInnerCrossDim, - availableInnerWidth, - performLayout, - layoutContext); - - float containerCrossAxis = availableInnerCrossDim; - if (measureModeCrossDim == YGMeasureModeUndefined || - measureModeCrossDim == YGMeasureModeAtMost) { - // Compute the cross axis from the max cross dimension of the children. - containerCrossAxis = - YGNodeBoundAxis( - node, - crossAxis, - collectedFlexItemsValues.crossDim + paddingAndBorderAxisCross, - crossAxisownerSize, - ownerWidth) - - paddingAndBorderAxisCross; - } - - // If there's no flex wrap, the cross dimension is defined by the container. - if (!isNodeFlexWrap && measureModeCrossDim == YGMeasureModeExactly) { - collectedFlexItemsValues.crossDim = availableInnerCrossDim; - } - - // Clamp to the min/max size specified on the container. - collectedFlexItemsValues.crossDim = - YGNodeBoundAxis( - node, - crossAxis, - collectedFlexItemsValues.crossDim + paddingAndBorderAxisCross, - crossAxisownerSize, - ownerWidth) - - paddingAndBorderAxisCross; - - // STEP 7: CROSS-AXIS ALIGNMENT - // We can skip child alignment if we're just measuring the container. - if (performLayout) { - for (uint32_t i = startOfLineIndex; i < endOfLineIndex; i++) { - const YGNodeRef child = node->getChild(i); - if (child->getStyle().display == YGDisplayNone) { - continue; - } - if (child->getStyle().positionType == YGPositionTypeAbsolute) { - // If the child is absolutely positioned and has a - // top/left/bottom/right set, override all the previously computed - // positions to set it correctly. - const bool isChildLeadingPosDefined = - child->isLeadingPositionDefined(crossAxis); - if (isChildLeadingPosDefined) { - child->setLayoutPosition( - child->getLeadingPosition(crossAxis, availableInnerCrossDim) - .unwrap() + - node->getLeadingBorder(crossAxis) + - child->getLeadingMargin(crossAxis, availableInnerWidth) - .unwrap(), - pos[crossAxis]); - } - // If leading position is not defined or calculations result in Nan, - // default to border + margin - if (!isChildLeadingPosDefined || - YGFloatIsUndefined(child->getLayout().position[pos[crossAxis]])) { - child->setLayoutPosition( - node->getLeadingBorder(crossAxis) + - child->getLeadingMargin(crossAxis, availableInnerWidth) - .unwrap(), - pos[crossAxis]); - } - } else { - float leadingCrossDim = leadingPaddingAndBorderCross; - - // For a relative children, we're either using alignItems (owner) or - // alignSelf (child) in order to determine the position in the cross - // axis - const YGAlign alignItem = YGNodeAlignItem(node, child); - - // If the child uses align stretch, we need to lay it out one more - // time, this time forcing the cross-axis size to be the computed - // cross size for the current line. - if (alignItem == YGAlignStretch && - child->marginLeadingValue(crossAxis).unit != YGUnitAuto && - child->marginTrailingValue(crossAxis).unit != YGUnitAuto) { - // If the child defines a definite size for its cross axis, there's - // no need to stretch. - if (!YGNodeIsStyleDimDefined( - child, crossAxis, availableInnerCrossDim)) { - float childMainSize = - child->getLayout().measuredDimensions[dim[mainAxis]]; - float childCrossSize = - !child->getStyle().aspectRatio.isUndefined() - ? child->getMarginForAxis(crossAxis, availableInnerWidth) - .unwrap() + - (isMainAxisRow ? childMainSize / - child->getStyle().aspectRatio.unwrap() - : childMainSize * - child->getStyle().aspectRatio.unwrap()) - : collectedFlexItemsValues.crossDim; - - childMainSize += - child->getMarginForAxis(mainAxis, availableInnerWidth) - .unwrap(); - - YGMeasureMode childMainMeasureMode = YGMeasureModeExactly; - YGMeasureMode childCrossMeasureMode = YGMeasureModeExactly; - YGConstrainMaxSizeForMode( - child, - mainAxis, - availableInnerMainDim, - availableInnerWidth, - &childMainMeasureMode, - &childMainSize); - YGConstrainMaxSizeForMode( - child, - crossAxis, - availableInnerCrossDim, - availableInnerWidth, - &childCrossMeasureMode, - &childCrossSize); - - const float childWidth = - isMainAxisRow ? childMainSize : childCrossSize; - const float childHeight = - !isMainAxisRow ? childMainSize : childCrossSize; - - auto alignContent = node->getStyle().alignContent; - auto crossAxisDoesNotGrow = - alignContent != YGAlignStretch && isNodeFlexWrap; - const YGMeasureMode childWidthMeasureMode = - YGFloatIsUndefined(childWidth) || - (!isMainAxisRow && crossAxisDoesNotGrow) - ? YGMeasureModeUndefined - : YGMeasureModeExactly; - const YGMeasureMode childHeightMeasureMode = - YGFloatIsUndefined(childHeight) || - (isMainAxisRow && crossAxisDoesNotGrow) - ? YGMeasureModeUndefined - : YGMeasureModeExactly; - - YGLayoutNodeInternal( - child, - childWidth, - childHeight, - direction, - childWidthMeasureMode, - childHeightMeasureMode, - availableInnerWidth, - availableInnerHeight, - true, - "stretch", - config, - layoutMarkerData, - layoutContext); - } - } else { - const float remainingCrossDim = containerCrossAxis - - YGNodeDimWithMargin(child, crossAxis, availableInnerWidth); - - if (child->marginLeadingValue(crossAxis).unit == YGUnitAuto && - child->marginTrailingValue(crossAxis).unit == YGUnitAuto) { - leadingCrossDim += YGFloatMax(0.0f, remainingCrossDim / 2); - } else if ( - child->marginTrailingValue(crossAxis).unit == YGUnitAuto) { - // No-Op - } else if ( - child->marginLeadingValue(crossAxis).unit == YGUnitAuto) { - leadingCrossDim += YGFloatMax(0.0f, remainingCrossDim); - } else if (alignItem == YGAlignFlexStart) { - // No-Op - } else if (alignItem == YGAlignCenter) { - leadingCrossDim += remainingCrossDim / 2; - } else { - leadingCrossDim += remainingCrossDim; - } - } - // And we apply the position - child->setLayoutPosition( - child->getLayout().position[pos[crossAxis]] + totalLineCrossDim + - leadingCrossDim, - pos[crossAxis]); - } - } - } - - totalLineCrossDim += collectedFlexItemsValues.crossDim; - maxLineMainDim = - YGFloatMax(maxLineMainDim, collectedFlexItemsValues.mainDim); - } - - // STEP 8: MULTI-LINE CONTENT ALIGNMENT - // currentLead stores the size of the cross dim - if (performLayout && (isNodeFlexWrap || YGIsBaselineLayout(node))) { - float crossDimLead = 0; - float currentLead = leadingPaddingAndBorderCross; - if (!YGFloatIsUndefined(availableInnerCrossDim)) { - const float remainingAlignContentDim = - availableInnerCrossDim - totalLineCrossDim; - switch (node->getStyle().alignContent) { - case YGAlignFlexEnd: - currentLead += remainingAlignContentDim; - break; - case YGAlignCenter: - currentLead += remainingAlignContentDim / 2; - break; - case YGAlignStretch: - if (availableInnerCrossDim > totalLineCrossDim) { - crossDimLead = remainingAlignContentDim / lineCount; - } - break; - case YGAlignSpaceAround: - if (availableInnerCrossDim > totalLineCrossDim) { - currentLead += remainingAlignContentDim / (2 * lineCount); - if (lineCount > 1) { - crossDimLead = remainingAlignContentDim / lineCount; - } - } else { - currentLead += remainingAlignContentDim / 2; - } - break; - case YGAlignSpaceBetween: - if (availableInnerCrossDim > totalLineCrossDim && lineCount > 1) { - crossDimLead = remainingAlignContentDim / (lineCount - 1); - } - break; - case YGAlignAuto: - case YGAlignFlexStart: - case YGAlignBaseline: - break; - } - } - uint32_t endIndex = 0; - for (uint32_t i = 0; i < lineCount; i++) { - const uint32_t startIndex = endIndex; - uint32_t ii; - - // compute the line's height and find the endIndex - float lineHeight = 0; - float maxAscentForCurrentLine = 0; - float maxDescentForCurrentLine = 0; - for (ii = startIndex; ii < childCount; ii++) { - const YGNodeRef child = node->getChild(ii); - if (child->getStyle().display == YGDisplayNone) { - continue; - } - if (child->getStyle().positionType == YGPositionTypeRelative) { - if (child->getLineIndex() != i) { - break; - } - if (YGNodeIsLayoutDimDefined(child, crossAxis)) { - lineHeight = YGFloatMax( - lineHeight, - child->getLayout().measuredDimensions[dim[crossAxis]] + - child->getMarginForAxis(crossAxis, availableInnerWidth) - .unwrap()); - } - if (YGNodeAlignItem(node, child) == YGAlignBaseline) { - const float ascent = YGBaseline(child, layoutContext) + - child - ->getLeadingMargin( - YGFlexDirectionColumn, availableInnerWidth) - .unwrap(); - const float descent = - child->getLayout().measuredDimensions[YGDimensionHeight] + - child - ->getMarginForAxis( - YGFlexDirectionColumn, availableInnerWidth) - .unwrap() - - ascent; - maxAscentForCurrentLine = - YGFloatMax(maxAscentForCurrentLine, ascent); - maxDescentForCurrentLine = - YGFloatMax(maxDescentForCurrentLine, descent); - lineHeight = YGFloatMax( - lineHeight, maxAscentForCurrentLine + maxDescentForCurrentLine); - } - } - } - endIndex = ii; - lineHeight += crossDimLead; - - if (performLayout) { - for (ii = startIndex; ii < endIndex; ii++) { - const YGNodeRef child = node->getChild(ii); - if (child->getStyle().display == YGDisplayNone) { - continue; - } - if (child->getStyle().positionType == YGPositionTypeRelative) { - switch (YGNodeAlignItem(node, child)) { - case YGAlignFlexStart: { - child->setLayoutPosition( - currentLead + - child->getLeadingMargin(crossAxis, availableInnerWidth) - .unwrap(), - pos[crossAxis]); - break; - } - case YGAlignFlexEnd: { - child->setLayoutPosition( - currentLead + lineHeight - - child->getTrailingMargin(crossAxis, availableInnerWidth) - .unwrap() - - child->getLayout().measuredDimensions[dim[crossAxis]], - pos[crossAxis]); - break; - } - case YGAlignCenter: { - float childHeight = - child->getLayout().measuredDimensions[dim[crossAxis]]; - - child->setLayoutPosition( - currentLead + (lineHeight - childHeight) / 2, - pos[crossAxis]); - break; - } - case YGAlignStretch: { - child->setLayoutPosition( - currentLead + - child->getLeadingMargin(crossAxis, availableInnerWidth) - .unwrap(), - pos[crossAxis]); - - // Remeasure child with the line height as it as been only - // measured with the owners height yet. - if (!YGNodeIsStyleDimDefined( - child, crossAxis, availableInnerCrossDim)) { - const float childWidth = isMainAxisRow - ? (child->getLayout() - .measuredDimensions[YGDimensionWidth] + - child->getMarginForAxis(mainAxis, availableInnerWidth) - .unwrap()) - : lineHeight; - - const float childHeight = !isMainAxisRow - ? (child->getLayout() - .measuredDimensions[YGDimensionHeight] + - child->getMarginForAxis(crossAxis, availableInnerWidth) - .unwrap()) - : lineHeight; - - if (!(YGFloatsEqual( - childWidth, - child->getLayout() - .measuredDimensions[YGDimensionWidth]) && - YGFloatsEqual( - childHeight, - child->getLayout() - .measuredDimensions[YGDimensionHeight]))) { - YGLayoutNodeInternal( - child, - childWidth, - childHeight, - direction, - YGMeasureModeExactly, - YGMeasureModeExactly, - availableInnerWidth, - availableInnerHeight, - true, - "multiline-stretch", - config, - layoutMarkerData, - layoutContext); - } - } - break; - } - case YGAlignBaseline: { - child->setLayoutPosition( - currentLead + maxAscentForCurrentLine - - YGBaseline(child, layoutContext) + - child - ->getLeadingPosition( - YGFlexDirectionColumn, availableInnerCrossDim) - .unwrap(), - YGEdgeTop); - - break; - } - case YGAlignAuto: - case YGAlignSpaceBetween: - case YGAlignSpaceAround: - break; - } - } - } - } - currentLead += lineHeight; - } - } - - // STEP 9: COMPUTING FINAL DIMENSIONS - - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - YGFlexDirectionRow, - availableWidth - marginAxisRow, - ownerWidth, - ownerWidth), - YGDimensionWidth); - - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - YGFlexDirectionColumn, - availableHeight - marginAxisColumn, - ownerHeight, - ownerWidth), - YGDimensionHeight); - - // If the user didn't specify a width or height for the node, set the - // dimensions based on the children. - if (measureModeMainDim == YGMeasureModeUndefined || - (node->getStyle().overflow != YGOverflowScroll && - measureModeMainDim == YGMeasureModeAtMost)) { - // Clamp the size to the min/max size, if specified, and make sure it - // doesn't go below the padding and border amount. - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, mainAxis, maxLineMainDim, mainAxisownerSize, ownerWidth), - dim[mainAxis]); - - } else if ( - measureModeMainDim == YGMeasureModeAtMost && - node->getStyle().overflow == YGOverflowScroll) { - node->setLayoutMeasuredDimension( - YGFloatMax( - YGFloatMin( - availableInnerMainDim + paddingAndBorderAxisMain, - YGNodeBoundAxisWithinMinAndMax( - node, - mainAxis, - YGFloatOptional{maxLineMainDim}, - mainAxisownerSize) - .unwrap()), - paddingAndBorderAxisMain), - dim[mainAxis]); - } - - if (measureModeCrossDim == YGMeasureModeUndefined || - (node->getStyle().overflow != YGOverflowScroll && - measureModeCrossDim == YGMeasureModeAtMost)) { - // Clamp the size to the min/max size, if specified, and make sure it - // doesn't go below the padding and border amount. - node->setLayoutMeasuredDimension( - YGNodeBoundAxis( - node, - crossAxis, - totalLineCrossDim + paddingAndBorderAxisCross, - crossAxisownerSize, - ownerWidth), - dim[crossAxis]); - - } else if ( - measureModeCrossDim == YGMeasureModeAtMost && - node->getStyle().overflow == YGOverflowScroll) { - node->setLayoutMeasuredDimension( - YGFloatMax( - YGFloatMin( - availableInnerCrossDim + paddingAndBorderAxisCross, - YGNodeBoundAxisWithinMinAndMax( - node, - crossAxis, - YGFloatOptional{totalLineCrossDim + - paddingAndBorderAxisCross}, - crossAxisownerSize) - .unwrap()), - paddingAndBorderAxisCross), - dim[crossAxis]); - } - - // As we only wrapped in normal direction yet, we need to reverse the - // positions on wrap-reverse. - if (performLayout && node->getStyle().flexWrap == YGWrapWrapReverse) { - for (uint32_t i = 0; i < childCount; i++) { - const YGNodeRef child = YGNodeGetChild(node, i); - if (child->getStyle().positionType == YGPositionTypeRelative) { - child->setLayoutPosition( - node->getLayout().measuredDimensions[dim[crossAxis]] - - child->getLayout().position[pos[crossAxis]] - - child->getLayout().measuredDimensions[dim[crossAxis]], - pos[crossAxis]); - } - } - } - - if (performLayout) { - // STEP 10: SIZING AND POSITIONING ABSOLUTE CHILDREN - for (auto child : node->getChildren()) { - if (child->getStyle().positionType != YGPositionTypeAbsolute) { - continue; - } - YGNodeAbsoluteLayoutChild( - node, - child, - availableInnerWidth, - isMainAxisRow ? measureModeMainDim : measureModeCrossDim, - availableInnerHeight, - direction, - config, - layoutMarkerData, - layoutContext); - } - - // STEP 11: SETTING TRAILING POSITIONS FOR CHILDREN - const bool needsMainTrailingPos = mainAxis == YGFlexDirectionRowReverse || - mainAxis == YGFlexDirectionColumnReverse; - const bool needsCrossTrailingPos = crossAxis == YGFlexDirectionRowReverse || - crossAxis == YGFlexDirectionColumnReverse; - - // Set trailing position if necessary. - if (needsMainTrailingPos || needsCrossTrailingPos) { - for (uint32_t i = 0; i < childCount; i++) { - const YGNodeRef child = node->getChild(i); - if (child->getStyle().display == YGDisplayNone) { - continue; - } - if (needsMainTrailingPos) { - YGNodeSetChildTrailingPosition(node, child, mainAxis); - } - - if (needsCrossTrailingPos) { - YGNodeSetChildTrailingPosition(node, child, crossAxis); - } - } - } - } -} - -uint32_t gDepth = 0; -bool gPrintChanges = false; -bool gPrintSkips = false; - -static const char* spacer = - " "; - -static const char* YGSpacer(const unsigned long level) { - const size_t spacerLen = strlen(spacer); - if (level > spacerLen) { - return &spacer[0]; - } else { - return &spacer[spacerLen - level]; - } -} - -static const char* YGMeasureModeName( - const YGMeasureMode mode, - const bool performLayout) { - constexpr auto N = enums::count(); - const char* kMeasureModeNames[N] = {"UNDEFINED", "EXACTLY", "AT_MOST"}; - const char* kLayoutModeNames[N] = { - "LAY_UNDEFINED", "LAY_EXACTLY", "LAY_AT_MOST"}; - - if (mode >= N) { - return ""; - } - - return performLayout ? kLayoutModeNames[mode] : kMeasureModeNames[mode]; -} - -static inline bool YGMeasureModeSizeIsExactAndMatchesOldMeasuredSize( - YGMeasureMode sizeMode, - float size, - float lastComputedSize) { - return sizeMode == YGMeasureModeExactly && - YGFloatsEqual(size, lastComputedSize); -} - -static inline bool YGMeasureModeOldSizeIsUnspecifiedAndStillFits( - YGMeasureMode sizeMode, - float size, - YGMeasureMode lastSizeMode, - float lastComputedSize) { - return sizeMode == YGMeasureModeAtMost && - lastSizeMode == YGMeasureModeUndefined && - (size >= lastComputedSize || YGFloatsEqual(size, lastComputedSize)); -} - -static inline bool YGMeasureModeNewMeasureSizeIsStricterAndStillValid( - YGMeasureMode sizeMode, - float size, - YGMeasureMode lastSizeMode, - float lastSize, - float lastComputedSize) { - return lastSizeMode == YGMeasureModeAtMost && - sizeMode == YGMeasureModeAtMost && !YGFloatIsUndefined(lastSize) && - !YGFloatIsUndefined(size) && !YGFloatIsUndefined(lastComputedSize) && - lastSize > size && - (lastComputedSize <= size || YGFloatsEqual(size, lastComputedSize)); -} - -float YGRoundValueToPixelGrid( - const float value, - const float pointScaleFactor, - const bool forceCeil, - const bool forceFloor) { - float scaledValue = value * pointScaleFactor; - // We want to calculate `fractial` such that `floor(scaledValue) = scaledValue - // - fractial`. - float fractial = fmodf(scaledValue, 1.0f); - if (fractial < 0) { - // This branch is for handling negative numbers for `value`. - // - // Regarding `floor` and `ceil`. Note that for a number x, `floor(x) <= x <= - // ceil(x)` even for negative numbers. Here are a couple of examples: - // - x = 2.2: floor( 2.2) = 2, ceil( 2.2) = 3 - // - x = -2.2: floor(-2.2) = -3, ceil(-2.2) = -2 - // - // Regarding `fmodf`. For fractional negative numbers, `fmodf` returns a - // negative number. For example, `fmodf(-2.2) = -0.2`. However, we want - // `fractial` to be the number such that subtracting it from `value` will - // give us `floor(value)`. In the case of negative numbers, adding 1 to - // `fmodf(value)` gives us this. Let's continue the example from above: - // - fractial = fmodf(-2.2) = -0.2 - // - Add 1 to the fraction: fractial2 = fractial + 1 = -0.2 + 1 = 0.8 - // - Finding the `floor`: -2.2 - fractial2 = -2.2 - 0.8 = -3 - ++fractial; - } - if (YGFloatsEqual(fractial, 0)) { - // First we check if the value is already rounded - scaledValue = scaledValue - fractial; - } else if (YGFloatsEqual(fractial, 1.0f)) { - scaledValue = scaledValue - fractial + 1.0f; - } else if (forceCeil) { - // Next we check if we need to use forced rounding - scaledValue = scaledValue - fractial + 1.0f; - } else if (forceFloor) { - scaledValue = scaledValue - fractial; - } else { - // Finally we just round the value - scaledValue = scaledValue - fractial + - (!YGFloatIsUndefined(fractial) && - (fractial > 0.5f || YGFloatsEqual(fractial, 0.5f)) - ? 1.0f - : 0.0f); - } - return (YGFloatIsUndefined(scaledValue) || - YGFloatIsUndefined(pointScaleFactor)) - ? YGUndefined - : scaledValue / pointScaleFactor; -} - -bool YGNodeCanUseCachedMeasurement( - const YGMeasureMode widthMode, - const float width, - const YGMeasureMode heightMode, - const float height, - const YGMeasureMode lastWidthMode, - const float lastWidth, - const YGMeasureMode lastHeightMode, - const float lastHeight, - const float lastComputedWidth, - const float lastComputedHeight, - const float marginRow, - const float marginColumn, - const YGConfigRef config) { - if ((!YGFloatIsUndefined(lastComputedHeight) && lastComputedHeight < 0) || - (!YGFloatIsUndefined(lastComputedWidth) && lastComputedWidth < 0)) { - return false; - } - bool useRoundedComparison = - config != nullptr && config->pointScaleFactor != 0; - const float effectiveWidth = useRoundedComparison - ? YGRoundValueToPixelGrid(width, config->pointScaleFactor, false, false) - : width; - const float effectiveHeight = useRoundedComparison - ? YGRoundValueToPixelGrid(height, config->pointScaleFactor, false, false) - : height; - const float effectiveLastWidth = useRoundedComparison - ? YGRoundValueToPixelGrid( - lastWidth, config->pointScaleFactor, false, false) - : lastWidth; - const float effectiveLastHeight = useRoundedComparison - ? YGRoundValueToPixelGrid( - lastHeight, config->pointScaleFactor, false, false) - : lastHeight; - - const bool hasSameWidthSpec = lastWidthMode == widthMode && - YGFloatsEqual(effectiveLastWidth, effectiveWidth); - const bool hasSameHeightSpec = lastHeightMode == heightMode && - YGFloatsEqual(effectiveLastHeight, effectiveHeight); - - const bool widthIsCompatible = - hasSameWidthSpec || - YGMeasureModeSizeIsExactAndMatchesOldMeasuredSize( - widthMode, width - marginRow, lastComputedWidth) || - YGMeasureModeOldSizeIsUnspecifiedAndStillFits( - widthMode, width - marginRow, lastWidthMode, lastComputedWidth) || - YGMeasureModeNewMeasureSizeIsStricterAndStillValid( - widthMode, - width - marginRow, - lastWidthMode, - lastWidth, - lastComputedWidth); - - const bool heightIsCompatible = - hasSameHeightSpec || - YGMeasureModeSizeIsExactAndMatchesOldMeasuredSize( - heightMode, height - marginColumn, lastComputedHeight) || - YGMeasureModeOldSizeIsUnspecifiedAndStillFits( - heightMode, - height - marginColumn, - lastHeightMode, - lastComputedHeight) || - YGMeasureModeNewMeasureSizeIsStricterAndStillValid( - heightMode, - height - marginColumn, - lastHeightMode, - lastHeight, - lastComputedHeight); - - return widthIsCompatible && heightIsCompatible; -} - -// -// This is a wrapper around the YGNodelayoutImpl function. It determines whether -// the layout request is redundant and can be skipped. -// -// Parameters: -// Input parameters are the same as YGNodelayoutImpl (see above) -// Return parameter is true if layout was performed, false if skipped -// -bool YGLayoutNodeInternal( - const YGNodeRef node, - const float availableWidth, - const float availableHeight, - const YGDirection ownerDirection, - const YGMeasureMode widthMeasureMode, - const YGMeasureMode heightMeasureMode, - const float ownerWidth, - const float ownerHeight, - const bool performLayout, - const char* reason, - const YGConfigRef config, - YGMarkerLayoutData& layoutMarkerData, - void* const layoutContext) { - YGLayout* layout = &node->getLayout(); - - gDepth++; - - const bool needToVisitNode = - (node->isDirty() && layout->generationCount != gCurrentGenerationCount) || - layout->lastOwnerDirection != ownerDirection; - - if (needToVisitNode) { - // Invalidate the cached results. - layout->nextCachedMeasurementsIndex = 0; - layout->cachedLayout.widthMeasureMode = (YGMeasureMode) -1; - layout->cachedLayout.heightMeasureMode = (YGMeasureMode) -1; - layout->cachedLayout.computedWidth = -1; - layout->cachedLayout.computedHeight = -1; - } - - YGCachedMeasurement* cachedResults = nullptr; - - // Determine whether the results are already cached. We maintain a separate - // cache for layouts and measurements. A layout operation modifies the - // positions and dimensions for nodes in the subtree. The algorithm assumes - // that each node gets layed out a maximum of one time per tree layout, but - // multiple measurements may be required to resolve all of the flex - // dimensions. We handle nodes with measure functions specially here because - // they are the most expensive to measure, so it's worth avoiding redundant - // measurements if at all possible. - if (node->hasMeasureFunc()) { - const float marginAxisRow = - node->getMarginForAxis(YGFlexDirectionRow, ownerWidth).unwrap(); - const float marginAxisColumn = - node->getMarginForAxis(YGFlexDirectionColumn, ownerWidth).unwrap(); - - // First, try to use the layout cache. - if (YGNodeCanUseCachedMeasurement( - widthMeasureMode, - availableWidth, - heightMeasureMode, - availableHeight, - layout->cachedLayout.widthMeasureMode, - layout->cachedLayout.availableWidth, - layout->cachedLayout.heightMeasureMode, - layout->cachedLayout.availableHeight, - layout->cachedLayout.computedWidth, - layout->cachedLayout.computedHeight, - marginAxisRow, - marginAxisColumn, - config)) { - cachedResults = &layout->cachedLayout; - } else { - // Try to use the measurement cache. - for (uint32_t i = 0; i < layout->nextCachedMeasurementsIndex; i++) { - if (YGNodeCanUseCachedMeasurement( - widthMeasureMode, - availableWidth, - heightMeasureMode, - availableHeight, - layout->cachedMeasurements[i].widthMeasureMode, - layout->cachedMeasurements[i].availableWidth, - layout->cachedMeasurements[i].heightMeasureMode, - layout->cachedMeasurements[i].availableHeight, - layout->cachedMeasurements[i].computedWidth, - layout->cachedMeasurements[i].computedHeight, - marginAxisRow, - marginAxisColumn, - config)) { - cachedResults = &layout->cachedMeasurements[i]; - break; - } - } - } - } else if (performLayout) { - if (YGFloatsEqual(layout->cachedLayout.availableWidth, availableWidth) && - YGFloatsEqual(layout->cachedLayout.availableHeight, availableHeight) && - layout->cachedLayout.widthMeasureMode == widthMeasureMode && - layout->cachedLayout.heightMeasureMode == heightMeasureMode) { - cachedResults = &layout->cachedLayout; - } - } else { - for (uint32_t i = 0; i < layout->nextCachedMeasurementsIndex; i++) { - if (YGFloatsEqual( - layout->cachedMeasurements[i].availableWidth, availableWidth) && - YGFloatsEqual( - layout->cachedMeasurements[i].availableHeight, availableHeight) && - layout->cachedMeasurements[i].widthMeasureMode == widthMeasureMode && - layout->cachedMeasurements[i].heightMeasureMode == - heightMeasureMode) { - cachedResults = &layout->cachedMeasurements[i]; - break; - } - } - } - - if (!needToVisitNode && cachedResults != nullptr) { - layout->measuredDimensions[YGDimensionWidth] = cachedResults->computedWidth; - layout->measuredDimensions[YGDimensionHeight] = - cachedResults->computedHeight; - - (performLayout ? layoutMarkerData.cachedLayouts - : layoutMarkerData.cachedMeasures) += 1; - - if (gPrintChanges && gPrintSkips) { - Log::log( - node, - YGLogLevelVerbose, - nullptr, - "%s%d.{[skipped] ", - YGSpacer(gDepth), - gDepth); - node->print(layoutContext); - Log::log( - node, - YGLogLevelVerbose, - nullptr, - "wm: %s, hm: %s, aw: %f ah: %f => d: (%f, %f) %s\n", - YGMeasureModeName(widthMeasureMode, performLayout), - YGMeasureModeName(heightMeasureMode, performLayout), - availableWidth, - availableHeight, - cachedResults->computedWidth, - cachedResults->computedHeight, - reason); - } - } else { - if (gPrintChanges) { - Log::log( - node, - YGLogLevelVerbose, - nullptr, - "%s%d.{%s", - YGSpacer(gDepth), - gDepth, - needToVisitNode ? "*" : ""); - node->print(layoutContext); - Log::log( - node, - YGLogLevelVerbose, - nullptr, - "wm: %s, hm: %s, aw: %f ah: %f %s\n", - YGMeasureModeName(widthMeasureMode, performLayout), - YGMeasureModeName(heightMeasureMode, performLayout), - availableWidth, - availableHeight, - reason); - } - - YGNodelayoutImpl( - node, - availableWidth, - availableHeight, - ownerDirection, - widthMeasureMode, - heightMeasureMode, - ownerWidth, - ownerHeight, - performLayout, - config, - layoutMarkerData, - layoutContext); - - if (gPrintChanges) { - Log::log( - node, - YGLogLevelVerbose, - nullptr, - "%s%d.}%s", - YGSpacer(gDepth), - gDepth, - needToVisitNode ? "*" : ""); - node->print(layoutContext); - Log::log( - node, - YGLogLevelVerbose, - nullptr, - "wm: %s, hm: %s, d: (%f, %f) %s\n", - YGMeasureModeName(widthMeasureMode, performLayout), - YGMeasureModeName(heightMeasureMode, performLayout), - layout->measuredDimensions[YGDimensionWidth], - layout->measuredDimensions[YGDimensionHeight], - reason); - } - - layout->lastOwnerDirection = ownerDirection; - - if (cachedResults == nullptr) { - if (layout->nextCachedMeasurementsIndex + 1 > - (uint32_t) layoutMarkerData.maxMeasureCache) { - layoutMarkerData.maxMeasureCache = - layout->nextCachedMeasurementsIndex + 1; - } - if (layout->nextCachedMeasurementsIndex == usedMeasureCacheEntries) { - if (gPrintChanges) { - Log::log(node, YGLogLevelVerbose, nullptr, "Out of cache entries!\n"); - } - layout->nextCachedMeasurementsIndex = 0; - } - - YGCachedMeasurement* newCacheEntry; - if (performLayout) { - // Use the single layout cache entry. - newCacheEntry = &layout->cachedLayout; - } else { - // Allocate a new measurement cache entry. - newCacheEntry = - &layout->cachedMeasurements[layout->nextCachedMeasurementsIndex]; - layout->nextCachedMeasurementsIndex++; - } - - newCacheEntry->availableWidth = availableWidth; - newCacheEntry->availableHeight = availableHeight; - newCacheEntry->widthMeasureMode = widthMeasureMode; - newCacheEntry->heightMeasureMode = heightMeasureMode; - newCacheEntry->computedWidth = - layout->measuredDimensions[YGDimensionWidth]; - newCacheEntry->computedHeight = - layout->measuredDimensions[YGDimensionHeight]; - } - } - - if (performLayout) { - node->setLayoutDimension( - node->getLayout().measuredDimensions[YGDimensionWidth], - YGDimensionWidth); - node->setLayoutDimension( - node->getLayout().measuredDimensions[YGDimensionHeight], - YGDimensionHeight); - - node->setHasNewLayout(true); - node->setDirty(false); - } - - gDepth--; - layout->generationCount = gCurrentGenerationCount; - return (needToVisitNode || cachedResults == nullptr); -} - -void YGConfigSetPointScaleFactor( - const YGConfigRef config, - const float pixelsInPoint) { - YGAssertWithConfig( - config, - pixelsInPoint >= 0.0f, - "Scale factor should not be less than zero"); - - // We store points for Pixel as we will use it for rounding - if (pixelsInPoint == 0.0f) { - // Zero is used to skip rounding - config->pointScaleFactor = 0.0f; - } else { - config->pointScaleFactor = pixelsInPoint; - } -} - -static void YGRoundToPixelGrid( - const YGNodeRef node, - const float pointScaleFactor, - const float absoluteLeft, - const float absoluteTop) { - if (pointScaleFactor == 0.0f) { - return; - } - - const float nodeLeft = node->getLayout().position[YGEdgeLeft]; - const float nodeTop = node->getLayout().position[YGEdgeTop]; - - const float nodeWidth = node->getLayout().dimensions[YGDimensionWidth]; - const float nodeHeight = node->getLayout().dimensions[YGDimensionHeight]; - - const float absoluteNodeLeft = absoluteLeft + nodeLeft; - const float absoluteNodeTop = absoluteTop + nodeTop; - - const float absoluteNodeRight = absoluteNodeLeft + nodeWidth; - const float absoluteNodeBottom = absoluteNodeTop + nodeHeight; - - // If a node has a custom measure function we never want to round down its - // size as this could lead to unwanted text truncation. - const bool textRounding = node->getNodeType() == YGNodeTypeText; - - node->setLayoutPosition( - YGRoundValueToPixelGrid(nodeLeft, pointScaleFactor, false, textRounding), - YGEdgeLeft); - - node->setLayoutPosition( - YGRoundValueToPixelGrid(nodeTop, pointScaleFactor, false, textRounding), - YGEdgeTop); - - // We multiply dimension by scale factor and if the result is close to the - // whole number, we don't have any fraction To verify if the result is close - // to whole number we want to check both floor and ceil numbers - const bool hasFractionalWidth = - !YGFloatsEqual(fmodf(nodeWidth * pointScaleFactor, 1.0), 0) && - !YGFloatsEqual(fmodf(nodeWidth * pointScaleFactor, 1.0), 1.0); - const bool hasFractionalHeight = - !YGFloatsEqual(fmodf(nodeHeight * pointScaleFactor, 1.0), 0) && - !YGFloatsEqual(fmodf(nodeHeight * pointScaleFactor, 1.0), 1.0); - - node->setLayoutDimension( - YGRoundValueToPixelGrid( - absoluteNodeRight, - pointScaleFactor, - (textRounding && hasFractionalWidth), - (textRounding && !hasFractionalWidth)) - - YGRoundValueToPixelGrid( - absoluteNodeLeft, pointScaleFactor, false, textRounding), - YGDimensionWidth); - - node->setLayoutDimension( - YGRoundValueToPixelGrid( - absoluteNodeBottom, - pointScaleFactor, - (textRounding && hasFractionalHeight), - (textRounding && !hasFractionalHeight)) - - YGRoundValueToPixelGrid( - absoluteNodeTop, pointScaleFactor, false, textRounding), - YGDimensionHeight); - - const uint32_t childCount = YGNodeGetChildCount(node); - for (uint32_t i = 0; i < childCount; i++) { - YGRoundToPixelGrid( - YGNodeGetChild(node, i), - pointScaleFactor, - absoluteNodeLeft, - absoluteNodeTop); - } -} - -void YGNodeCalculateLayoutWithContext( - const YGNodeRef node, - const float ownerWidth, - const float ownerHeight, - const YGDirection ownerDirection, - void* layoutContext) { - marker::MarkerSection marker{node}; - - // Increment the generation count. This will force the recursive routine to - // visit all dirty nodes at least once. Subsequent visits will be skipped if - // the input parameters don't change. - gCurrentGenerationCount++; - node->resolveDimension(); - float width = YGUndefined; - YGMeasureMode widthMeasureMode = YGMeasureModeUndefined; - if (YGNodeIsStyleDimDefined(node, YGFlexDirectionRow, ownerWidth)) { - width = - (YGResolveValue( - node->getResolvedDimension(dim[YGFlexDirectionRow]), ownerWidth) + - node->getMarginForAxis(YGFlexDirectionRow, ownerWidth)) - .unwrap(); - widthMeasureMode = YGMeasureModeExactly; - } else if (!YGResolveValue( - node->getStyle().maxDimensions[YGDimensionWidth], ownerWidth) - .isUndefined()) { - width = YGResolveValue( - node->getStyle().maxDimensions[YGDimensionWidth], ownerWidth) - .unwrap(); - widthMeasureMode = YGMeasureModeAtMost; - } else { - width = ownerWidth; - widthMeasureMode = YGFloatIsUndefined(width) ? YGMeasureModeUndefined - : YGMeasureModeExactly; - } - - float height = YGUndefined; - YGMeasureMode heightMeasureMode = YGMeasureModeUndefined; - if (YGNodeIsStyleDimDefined(node, YGFlexDirectionColumn, ownerHeight)) { - height = (YGResolveValue( - node->getResolvedDimension(dim[YGFlexDirectionColumn]), - ownerHeight) + - node->getMarginForAxis(YGFlexDirectionColumn, ownerWidth)) - .unwrap(); - heightMeasureMode = YGMeasureModeExactly; - } else if (!YGResolveValue( - node->getStyle().maxDimensions[YGDimensionHeight], - ownerHeight) - .isUndefined()) { - height = YGResolveValue( - node->getStyle().maxDimensions[YGDimensionHeight], ownerHeight) - .unwrap(); - heightMeasureMode = YGMeasureModeAtMost; - } else { - height = ownerHeight; - heightMeasureMode = YGFloatIsUndefined(height) ? YGMeasureModeUndefined - : YGMeasureModeExactly; - } - if (YGLayoutNodeInternal( - node, - width, - height, - ownerDirection, - widthMeasureMode, - heightMeasureMode, - ownerWidth, - ownerHeight, - true, - "initial", - node->getConfig(), - marker.data, - layoutContext)) { - node->setPosition( - node->getLayout().direction, ownerWidth, ownerHeight, ownerWidth); - YGRoundToPixelGrid(node, node->getConfig()->pointScaleFactor, 0.0f, 0.0f); - -#ifdef DEBUG - if (node->getConfig()->printTree) { - YGNodePrint( - node, - (YGPrintOptions)( - YGPrintOptionsLayout | YGPrintOptionsChildren | - YGPrintOptionsStyle)); - } -#endif - } - - // We want to get rid off `useLegacyStretchBehaviour` from YGConfig. But we - // aren't sure whether client's of yoga have gotten rid off this flag or not. - // So logging this in YGLayout would help to find out the call sites depending - // on this flag. This check would be removed once we are sure no one is - // dependent on this flag anymore. The flag - // `shouldDiffLayoutWithoutLegacyStretchBehaviour` in YGConfig will help to - // run experiments. - if (node->getConfig()->shouldDiffLayoutWithoutLegacyStretchBehaviour && - node->didUseLegacyFlag()) { - const YGNodeRef originalNode = YGNodeDeepClone(node); - originalNode->resolveDimension(); - // Recursively mark nodes as dirty - originalNode->markDirtyAndPropogateDownwards(); - gCurrentGenerationCount++; - // Rerun the layout, and calculate the diff - originalNode->setAndPropogateUseLegacyFlag(false); - YGMarkerLayoutData layoutMarkerData; - if (YGLayoutNodeInternal( - originalNode, - width, - height, - ownerDirection, - widthMeasureMode, - heightMeasureMode, - ownerWidth, - ownerHeight, - true, - "initial", - originalNode->getConfig(), - layoutMarkerData, - layoutContext)) { - originalNode->setPosition( - originalNode->getLayout().direction, - ownerWidth, - ownerHeight, - ownerWidth); - YGRoundToPixelGrid( - originalNode, - originalNode->getConfig()->pointScaleFactor, - 0.0f, - 0.0f); - - // Set whether the two layouts are different or not. - auto neededLegacyStretchBehaviour = - !originalNode->isLayoutTreeEqualToNode(*node); - node->setLayoutDoesLegacyFlagAffectsLayout(neededLegacyStretchBehaviour); - -#ifdef DEBUG - if (originalNode->getConfig()->printTree) { - YGNodePrint( - originalNode, - (YGPrintOptions)( - YGPrintOptionsLayout | YGPrintOptionsChildren | - YGPrintOptionsStyle)); - } -#endif - } - YGConfigFreeRecursive(originalNode); - YGNodeFreeRecursive(originalNode); - } -} - -void YGNodeCalculateLayout( - const YGNodeRef node, - const float ownerWidth, - const float ownerHeight, - const YGDirection ownerDirection) { - YGNodeCalculateLayoutWithContext( - node, ownerWidth, ownerHeight, ownerDirection, nullptr); -} - -void YGConfigSetLogger(const YGConfigRef config, YGLogger logger) { - if (logger != nullptr) { - config->setLogger(logger); - } else { -#ifdef ANDROID - config->setLogger(&YGAndroidLog); -#else - config->setLogger(&YGDefaultLog); -#endif - } -} - -void YGConfigSetShouldDiffLayoutWithoutLegacyStretchBehaviour( - const YGConfigRef config, - const bool shouldDiffLayout) { - config->shouldDiffLayoutWithoutLegacyStretchBehaviour = shouldDiffLayout; -} - -void YGAssert(const bool condition, const char* message) { - if (!condition) { - Log::log(YGNodeRef{nullptr}, YGLogLevelFatal, nullptr, "%s\n", message); - } -} - -void YGAssertWithNode( - const YGNodeRef node, - const bool condition, - const char* message) { - if (!condition) { - Log::log(node, YGLogLevelFatal, nullptr, "%s\n", message); - } -} - -void YGAssertWithConfig( - const YGConfigRef config, - const bool condition, - const char* message) { - if (!condition) { - Log::log(config, YGLogLevelFatal, nullptr, "%s\n", message); - } -} - -void YGConfigSetExperimentalFeatureEnabled( - const YGConfigRef config, - const YGExperimentalFeature feature, - const bool enabled) { - config->experimentalFeatures[feature] = enabled; -} - -inline bool YGConfigIsExperimentalFeatureEnabled( - const YGConfigRef config, - const YGExperimentalFeature feature) { - return config->experimentalFeatures[feature]; -} - -void YGConfigSetUseWebDefaults(const YGConfigRef config, const bool enabled) { - config->useWebDefaults = enabled; -} - -void YGConfigSetUseLegacyStretchBehaviour( - const YGConfigRef config, - const bool useLegacyStretchBehaviour) { - config->useLegacyStretchBehaviour = useLegacyStretchBehaviour; -} - -bool YGConfigGetUseWebDefaults(const YGConfigRef config) { - return config->useWebDefaults; -} - -void YGConfigSetContext(const YGConfigRef config, void* context) { - config->context = context; -} - -void* YGConfigGetContext(const YGConfigRef config) { - return config->context; -} - -void YGConfigSetCloneNodeFunc( - const YGConfigRef config, - const YGCloneNodeFunc callback) { - config->setCloneNodeCallback(callback); -} - -static void YGTraverseChildrenPreOrder( - const YGVector& children, - const std::function& f) { - for (YGNodeRef node : children) { - f(node); - YGTraverseChildrenPreOrder(node->getChildren(), f); - } -} - -void YGTraversePreOrder( - YGNodeRef const node, - std::function&& f) { - if (!node) { - return; - } - f(node); - YGTraverseChildrenPreOrder(node->getChildren(), f); -} diff --git a/ios/Nativebrik/Classes/.gitkeep b/ios/Nativebrik/Classes/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/ios/Nativebrik/Nativebrik.xcodeproj/project.pbxproj b/ios/Nativebrik/Nativebrik.xcodeproj/project.pbxproj new file mode 100644 index 0000000..383089c --- /dev/null +++ b/ios/Nativebrik/Nativebrik.xcodeproj/project.pbxproj @@ -0,0 +1,622 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + C13633A62AEB769800B9F437 /* Nativebrik.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C136339D2AEB769800B9F437 /* Nativebrik.framework */; }; + C13633AB2AEB769800B9F437 /* NativebrikTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13633AA2AEB769800B9F437 /* NativebrikTests.swift */; }; + C13633AC2AEB769800B9F437 /* Nativebrik.h in Headers */ = {isa = PBXBuildFile; fileRef = C13633A02AEB769800B9F437 /* Nativebrik.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C13634332AEB7AA100B9F437 /* carousel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634172AEB7AA000B9F437 /* carousel.swift */; }; + C13634342AEB7AA100B9F437 /* image.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634182AEB7AA000B9F437 /* image.swift */; }; + C13634352AEB7AA100B9F437 /* user.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634192AEB7AA000B9F437 /* user.swift */; }; + C13634362AEB7AA100B9F437 /* block.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136341A2AEB7AA000B9F437 /* block.swift */; }; + C13634372AEB7AA100B9F437 /* text.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136341B2AEB7AA000B9F437 /* text.swift */; }; + C13634382AEB7AA100B9F437 /* component.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136341C2AEB7AA100B9F437 /* component.swift */; }; + C13634392AEB7AA100B9F437 /* collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136341D2AEB7AA100B9F437 /* collection.swift */; }; + C136343A2AEB7AA100B9F437 /* utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136341E2AEB7AA100B9F437 /* utils.swift */; }; + C136343B2AEB7AA100B9F437 /* sdk.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136341F2AEB7AA100B9F437 /* sdk.swift */; }; + C136343C2AEB7AA100B9F437 /* flex.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634202AEB7AA100B9F437 /* flex.swift */; }; + C136343D2AEB7AA100B9F437 /* context.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634212AEB7AA100B9F437 /* context.swift */; }; + C136343E2AEB7AA100B9F437 /* root.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634222AEB7AA100B9F437 /* root.swift */; }; + C136343F2AEB7AA100B9F437 /* page.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634232AEB7AA100B9F437 /* page.swift */; }; + C13634402AEB7AA100B9F437 /* ios-compat.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634242AEB7AA100B9F437 /* ios-compat.swift */; }; + C13634412AEB7AA100B9F437 /* grid.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634252AEB7AA100B9F437 /* grid.swift */; }; + C13634422AEB7AA100B9F437 /* trigger.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634262AEB7AA100B9F437 /* trigger.swift */; }; + C13634432AEB7AA100B9F437 /* experiment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634272AEB7AA100B9F437 /* experiment.swift */; }; + C13634442AEB7AA100B9F437 /* placeholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634282AEB7AA100B9F437 /* placeholder.swift */; }; + C13634452AEB7AA100B9F437 /* blurhash.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634292AEB7AA100B9F437 /* blurhash.swift */; }; + C13634462AEB7AA100B9F437 /* overlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136342A2AEB7AA100B9F437 /* overlay.swift */; }; + C13634472AEB7AA100B9F437 /* generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136342B2AEB7AA100B9F437 /* generated.swift */; }; + C13634482AEB7AA100B9F437 /* scalars.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136342C2AEB7AA100B9F437 /* scalars.swift */; }; + C13634492AEB7AA100B9F437 /* embedding.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136342D2AEB7AA100B9F437 /* embedding.swift */; }; + C136344A2AEB7AA100B9F437 /* action-listener.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136342E2AEB7AA100B9F437 /* action-listener.swift */; }; + C136344B2AEB7AA100B9F437 /* gif.swift in Sources */ = {isa = PBXBuildFile; fileRef = C136342F2AEB7AA100B9F437 /* gif.swift */; }; + C136344C2AEB7AA100B9F437 /* navigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634302AEB7AA100B9F437 /* navigation.swift */; }; + C136344D2AEB7AA100B9F437 /* repository.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634312AEB7AA100B9F437 /* repository.swift */; }; + C136344E2AEB7AA100B9F437 /* remote-config.swift in Sources */ = {isa = PBXBuildFile; fileRef = C13634322AEB7AA100B9F437 /* remote-config.swift */; }; + C13634502AEB7D5800B9F437 /* yoga.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C136344F2AEB7D5800B9F437 /* yoga.xcframework */; }; + C13634512AEB7D5800B9F437 /* yoga.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C136344F2AEB7D5800B9F437 /* yoga.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + C13634532AEB7D6600B9F437 /* YogaKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C13634522AEB7D6600B9F437 /* YogaKit.xcframework */; }; + C13634542AEB7D6600B9F437 /* YogaKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C13634522AEB7D6600B9F437 /* YogaKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + C13633A72AEB769800B9F437 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C13633942AEB769800B9F437 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C136339C2AEB769800B9F437; + remoteInfo = Nativebrik; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + C13634112AEB7A4D00B9F437 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + C13634542AEB7D6600B9F437 /* YogaKit.xcframework in Embed Frameworks */, + C13634512AEB7D5800B9F437 /* yoga.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + C136339D2AEB769800B9F437 /* Nativebrik.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Nativebrik.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C13633A02AEB769800B9F437 /* Nativebrik.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Nativebrik.h; sourceTree = ""; }; + C13633A52AEB769800B9F437 /* NativebrikTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NativebrikTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + C13633AA2AEB769800B9F437 /* NativebrikTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativebrikTests.swift; sourceTree = ""; }; + C13634172AEB7AA000B9F437 /* carousel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = carousel.swift; sourceTree = ""; }; + C13634182AEB7AA000B9F437 /* image.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = image.swift; sourceTree = ""; }; + C13634192AEB7AA000B9F437 /* user.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = user.swift; sourceTree = ""; }; + C136341A2AEB7AA000B9F437 /* block.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = block.swift; sourceTree = ""; }; + C136341B2AEB7AA000B9F437 /* text.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = text.swift; sourceTree = ""; }; + C136341C2AEB7AA100B9F437 /* component.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = component.swift; sourceTree = ""; }; + C136341D2AEB7AA100B9F437 /* collection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = collection.swift; sourceTree = ""; }; + C136341E2AEB7AA100B9F437 /* utils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = utils.swift; sourceTree = ""; }; + C136341F2AEB7AA100B9F437 /* sdk.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = sdk.swift; sourceTree = ""; }; + C13634202AEB7AA100B9F437 /* flex.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = flex.swift; sourceTree = ""; }; + C13634212AEB7AA100B9F437 /* context.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = context.swift; sourceTree = ""; }; + C13634222AEB7AA100B9F437 /* root.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = root.swift; sourceTree = ""; }; + C13634232AEB7AA100B9F437 /* page.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = page.swift; sourceTree = ""; }; + C13634242AEB7AA100B9F437 /* ios-compat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ios-compat.swift"; sourceTree = ""; }; + C13634252AEB7AA100B9F437 /* grid.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = grid.swift; sourceTree = ""; }; + C13634262AEB7AA100B9F437 /* trigger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = trigger.swift; sourceTree = ""; }; + C13634272AEB7AA100B9F437 /* experiment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = experiment.swift; sourceTree = ""; }; + C13634282AEB7AA100B9F437 /* placeholder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = placeholder.swift; sourceTree = ""; }; + C13634292AEB7AA100B9F437 /* blurhash.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = blurhash.swift; sourceTree = ""; }; + C136342A2AEB7AA100B9F437 /* overlay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = overlay.swift; sourceTree = ""; }; + C136342B2AEB7AA100B9F437 /* generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = generated.swift; sourceTree = ""; }; + C136342C2AEB7AA100B9F437 /* scalars.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = scalars.swift; sourceTree = ""; }; + C136342D2AEB7AA100B9F437 /* embedding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = embedding.swift; sourceTree = ""; }; + C136342E2AEB7AA100B9F437 /* action-listener.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "action-listener.swift"; sourceTree = ""; }; + C136342F2AEB7AA100B9F437 /* gif.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = gif.swift; sourceTree = ""; }; + C13634302AEB7AA100B9F437 /* navigation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = navigation.swift; sourceTree = ""; }; + C13634312AEB7AA100B9F437 /* repository.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = repository.swift; sourceTree = ""; }; + C13634322AEB7AA100B9F437 /* remote-config.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "remote-config.swift"; sourceTree = ""; }; + C136344F2AEB7D5800B9F437 /* yoga.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = yoga.xcframework; path = ../xcframeworks/yoga.xcframework; sourceTree = ""; }; + C13634522AEB7D6600B9F437 /* YogaKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = YogaKit.xcframework; path = ../xcframeworks/YogaKit.xcframework; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + C136339A2AEB769800B9F437 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C13634532AEB7D6600B9F437 /* YogaKit.xcframework in Frameworks */, + C13634502AEB7D5800B9F437 /* yoga.xcframework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C13633A22AEB769800B9F437 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C13633A62AEB769800B9F437 /* Nativebrik.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + C13633932AEB769800B9F437 = { + isa = PBXGroup; + children = ( + C136339F2AEB769800B9F437 /* Nativebrik */, + C13633A92AEB769800B9F437 /* NativebrikTests */, + C136339E2AEB769800B9F437 /* Products */, + C136340C2AEB7A0600B9F437 /* Frameworks */, + ); + sourceTree = ""; + }; + C136339E2AEB769800B9F437 /* Products */ = { + isa = PBXGroup; + children = ( + C136339D2AEB769800B9F437 /* Nativebrik.framework */, + C13633A52AEB769800B9F437 /* NativebrikTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + C136339F2AEB769800B9F437 /* Nativebrik */ = { + isa = PBXGroup; + children = ( + C136342E2AEB7AA100B9F437 /* action-listener.swift */, + C136341A2AEB7AA000B9F437 /* block.swift */, + C13634292AEB7AA100B9F437 /* blurhash.swift */, + C13634172AEB7AA000B9F437 /* carousel.swift */, + C136341D2AEB7AA100B9F437 /* collection.swift */, + C136341C2AEB7AA100B9F437 /* component.swift */, + C13634212AEB7AA100B9F437 /* context.swift */, + C136342D2AEB7AA100B9F437 /* embedding.swift */, + C13634272AEB7AA100B9F437 /* experiment.swift */, + C13634202AEB7AA100B9F437 /* flex.swift */, + C136342B2AEB7AA100B9F437 /* generated.swift */, + C136342F2AEB7AA100B9F437 /* gif.swift */, + C13634252AEB7AA100B9F437 /* grid.swift */, + C13634182AEB7AA000B9F437 /* image.swift */, + C13634242AEB7AA100B9F437 /* ios-compat.swift */, + C13634302AEB7AA100B9F437 /* navigation.swift */, + C136342A2AEB7AA100B9F437 /* overlay.swift */, + C13634232AEB7AA100B9F437 /* page.swift */, + C13634282AEB7AA100B9F437 /* placeholder.swift */, + C13634322AEB7AA100B9F437 /* remote-config.swift */, + C13634312AEB7AA100B9F437 /* repository.swift */, + C13634222AEB7AA100B9F437 /* root.swift */, + C136342C2AEB7AA100B9F437 /* scalars.swift */, + C136341F2AEB7AA100B9F437 /* sdk.swift */, + C136341B2AEB7AA000B9F437 /* text.swift */, + C13634262AEB7AA100B9F437 /* trigger.swift */, + C13634192AEB7AA000B9F437 /* user.swift */, + C136341E2AEB7AA100B9F437 /* utils.swift */, + C13633A02AEB769800B9F437 /* Nativebrik.h */, + ); + path = Nativebrik; + sourceTree = ""; + }; + C13633A92AEB769800B9F437 /* NativebrikTests */ = { + isa = PBXGroup; + children = ( + C13633AA2AEB769800B9F437 /* NativebrikTests.swift */, + ); + path = NativebrikTests; + sourceTree = ""; + }; + C136340C2AEB7A0600B9F437 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C13634522AEB7D6600B9F437 /* YogaKit.xcframework */, + C136344F2AEB7D5800B9F437 /* yoga.xcframework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + C13633982AEB769800B9F437 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C13633AC2AEB769800B9F437 /* Nativebrik.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + C136339C2AEB769800B9F437 /* Nativebrik */ = { + isa = PBXNativeTarget; + buildConfigurationList = C13633AF2AEB769800B9F437 /* Build configuration list for PBXNativeTarget "Nativebrik" */; + buildPhases = ( + C13633982AEB769800B9F437 /* Headers */, + C13633992AEB769800B9F437 /* Sources */, + C136339A2AEB769800B9F437 /* Frameworks */, + C136339B2AEB769800B9F437 /* Resources */, + C13634112AEB7A4D00B9F437 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Nativebrik; + productName = Nativebrik; + productReference = C136339D2AEB769800B9F437 /* Nativebrik.framework */; + productType = "com.apple.product-type.framework"; + }; + C13633A42AEB769800B9F437 /* NativebrikTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = C13633B22AEB769800B9F437 /* Build configuration list for PBXNativeTarget "NativebrikTests" */; + buildPhases = ( + C13633A12AEB769800B9F437 /* Sources */, + C13633A22AEB769800B9F437 /* Frameworks */, + C13633A32AEB769800B9F437 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C13633A82AEB769800B9F437 /* PBXTargetDependency */, + ); + name = NativebrikTests; + productName = NativebrikTests; + productReference = C13633A52AEB769800B9F437 /* NativebrikTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C13633942AEB769800B9F437 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1500; + LastUpgradeCheck = 1500; + TargetAttributes = { + C136339C2AEB769800B9F437 = { + CreatedOnToolsVersion = 15.0.1; + LastSwiftMigration = 1500; + }; + C13633A42AEB769800B9F437 = { + CreatedOnToolsVersion = 15.0.1; + }; + }; + }; + buildConfigurationList = C13633972AEB769800B9F437 /* Build configuration list for PBXProject "Nativebrik" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = C13633932AEB769800B9F437; + productRefGroup = C136339E2AEB769800B9F437 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C136339C2AEB769800B9F437 /* Nativebrik */, + C13633A42AEB769800B9F437 /* NativebrikTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + C136339B2AEB769800B9F437 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C13633A32AEB769800B9F437 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + C13633992AEB769800B9F437 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C13634332AEB7AA100B9F437 /* carousel.swift in Sources */, + C136344E2AEB7AA100B9F437 /* remote-config.swift in Sources */, + C13634402AEB7AA100B9F437 /* ios-compat.swift in Sources */, + C136343E2AEB7AA100B9F437 /* root.swift in Sources */, + C136343D2AEB7AA100B9F437 /* context.swift in Sources */, + C136343B2AEB7AA100B9F437 /* sdk.swift in Sources */, + C13634482AEB7AA100B9F437 /* scalars.swift in Sources */, + C13634412AEB7AA100B9F437 /* grid.swift in Sources */, + C13634492AEB7AA100B9F437 /* embedding.swift in Sources */, + C13634452AEB7AA100B9F437 /* blurhash.swift in Sources */, + C13634382AEB7AA100B9F437 /* component.swift in Sources */, + C13634362AEB7AA100B9F437 /* block.swift in Sources */, + C13634342AEB7AA100B9F437 /* image.swift in Sources */, + C136344D2AEB7AA100B9F437 /* repository.swift in Sources */, + C136344B2AEB7AA100B9F437 /* gif.swift in Sources */, + C13634392AEB7AA100B9F437 /* collection.swift in Sources */, + C13634372AEB7AA100B9F437 /* text.swift in Sources */, + C13634352AEB7AA100B9F437 /* user.swift in Sources */, + C13634422AEB7AA100B9F437 /* trigger.swift in Sources */, + C136343C2AEB7AA100B9F437 /* flex.swift in Sources */, + C136344A2AEB7AA100B9F437 /* action-listener.swift in Sources */, + C136343F2AEB7AA100B9F437 /* page.swift in Sources */, + C13634442AEB7AA100B9F437 /* placeholder.swift in Sources */, + C136344C2AEB7AA100B9F437 /* navigation.swift in Sources */, + C136343A2AEB7AA100B9F437 /* utils.swift in Sources */, + C13634462AEB7AA100B9F437 /* overlay.swift in Sources */, + C13634472AEB7AA100B9F437 /* generated.swift in Sources */, + C13634432AEB7AA100B9F437 /* experiment.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C13633A12AEB769800B9F437 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C13633AB2AEB769800B9F437 /* NativebrikTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + C13633A82AEB769800B9F437 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C136339C2AEB769800B9F437 /* Nativebrik */; + targetProxy = C13633A72AEB769800B9F437 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + C13633AD2AEB769800B9F437 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + C13633AE2AEB769800B9F437 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + C13633B02AEB769800B9F437 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = M3LJ3SDTT4; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; + PRODUCT_BUNDLE_IDENTIFIER = com.nativebrik.Nativebrik; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + C13633B12AEB769800B9F437 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = M3LJ3SDTT4; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; + PRODUCT_BUNDLE_IDENTIFIER = com.nativebrik.Nativebrik; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + C13633B32AEB769800B9F437 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = M3LJ3SDTT4; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.nativebrik.NativebrikTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + C13633B42AEB769800B9F437 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = M3LJ3SDTT4; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.nativebrik.NativebrikTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C13633972AEB769800B9F437 /* Build configuration list for PBXProject "Nativebrik" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C13633AD2AEB769800B9F437 /* Debug */, + C13633AE2AEB769800B9F437 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C13633AF2AEB769800B9F437 /* Build configuration list for PBXNativeTarget "Nativebrik" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C13633B02AEB769800B9F437 /* Debug */, + C13633B12AEB769800B9F437 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C13633B22AEB769800B9F437 /* Build configuration list for PBXNativeTarget "NativebrikTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C13633B32AEB769800B9F437 /* Debug */, + C13633B42AEB769800B9F437 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = C13633942AEB769800B9F437 /* Project object */; +} diff --git a/ios/Nativebrik/Nativebrik.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Nativebrik/Nativebrik.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Nativebrik/Nativebrik.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Example/Nativebrik_Example/Nativebrik_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Nativebrik/Nativebrik.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from ios/Example/Nativebrik_Example/Nativebrik_Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to ios/Nativebrik/Nativebrik.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/ios/Nativebrik/Nativebrik/Nativebrik.h b/ios/Nativebrik/Nativebrik/Nativebrik.h new file mode 100644 index 0000000..158cd41 --- /dev/null +++ b/ios/Nativebrik/Nativebrik/Nativebrik.h @@ -0,0 +1,18 @@ +// +// Nativebrik.h +// Nativebrik +// +// Created by Ryosuke Suzuki on 2023/10/27. +// + +#import + +//! Project version number for Nativebrik. +FOUNDATION_EXPORT double NativebrikVersionNumber; + +//! Project version string for Nativebrik. +FOUNDATION_EXPORT const unsigned char NativebrikVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/ios/Nativebrik/Classes/action-listener.swift b/ios/Nativebrik/Nativebrik/action-listener.swift similarity index 100% rename from ios/Nativebrik/Classes/action-listener.swift rename to ios/Nativebrik/Nativebrik/action-listener.swift diff --git a/ios/Nativebrik/Classes/block.swift b/ios/Nativebrik/Nativebrik/block.swift similarity index 100% rename from ios/Nativebrik/Classes/block.swift rename to ios/Nativebrik/Nativebrik/block.swift diff --git a/ios/Nativebrik/Classes/blurhash.swift b/ios/Nativebrik/Nativebrik/blurhash.swift similarity index 100% rename from ios/Nativebrik/Classes/blurhash.swift rename to ios/Nativebrik/Nativebrik/blurhash.swift diff --git a/ios/Nativebrik/Classes/carousel.swift b/ios/Nativebrik/Nativebrik/carousel.swift similarity index 100% rename from ios/Nativebrik/Classes/carousel.swift rename to ios/Nativebrik/Nativebrik/carousel.swift diff --git a/ios/Nativebrik/Classes/collection.swift b/ios/Nativebrik/Nativebrik/collection.swift similarity index 100% rename from ios/Nativebrik/Classes/collection.swift rename to ios/Nativebrik/Nativebrik/collection.swift diff --git a/ios/Nativebrik/Classes/component.swift b/ios/Nativebrik/Nativebrik/component.swift similarity index 100% rename from ios/Nativebrik/Classes/component.swift rename to ios/Nativebrik/Nativebrik/component.swift diff --git a/ios/Nativebrik/Classes/context.swift b/ios/Nativebrik/Nativebrik/context.swift similarity index 100% rename from ios/Nativebrik/Classes/context.swift rename to ios/Nativebrik/Nativebrik/context.swift diff --git a/ios/Nativebrik/Classes/embedding.swift b/ios/Nativebrik/Nativebrik/embedding.swift similarity index 100% rename from ios/Nativebrik/Classes/embedding.swift rename to ios/Nativebrik/Nativebrik/embedding.swift diff --git a/ios/Nativebrik/Classes/experiment.swift b/ios/Nativebrik/Nativebrik/experiment.swift similarity index 100% rename from ios/Nativebrik/Classes/experiment.swift rename to ios/Nativebrik/Nativebrik/experiment.swift diff --git a/ios/Nativebrik/Classes/flex.swift b/ios/Nativebrik/Nativebrik/flex.swift similarity index 100% rename from ios/Nativebrik/Classes/flex.swift rename to ios/Nativebrik/Nativebrik/flex.swift diff --git a/ios/Nativebrik/Classes/generated.swift b/ios/Nativebrik/Nativebrik/generated.swift similarity index 100% rename from ios/Nativebrik/Classes/generated.swift rename to ios/Nativebrik/Nativebrik/generated.swift diff --git a/ios/Nativebrik/Classes/gif.swift b/ios/Nativebrik/Nativebrik/gif.swift similarity index 100% rename from ios/Nativebrik/Classes/gif.swift rename to ios/Nativebrik/Nativebrik/gif.swift diff --git a/ios/Nativebrik/Classes/grid.swift b/ios/Nativebrik/Nativebrik/grid.swift similarity index 100% rename from ios/Nativebrik/Classes/grid.swift rename to ios/Nativebrik/Nativebrik/grid.swift diff --git a/ios/Nativebrik/Classes/image.swift b/ios/Nativebrik/Nativebrik/image.swift similarity index 100% rename from ios/Nativebrik/Classes/image.swift rename to ios/Nativebrik/Nativebrik/image.swift diff --git a/ios/Nativebrik/Classes/ios-compat.swift b/ios/Nativebrik/Nativebrik/ios-compat.swift similarity index 100% rename from ios/Nativebrik/Classes/ios-compat.swift rename to ios/Nativebrik/Nativebrik/ios-compat.swift diff --git a/ios/Nativebrik/Classes/navigation.swift b/ios/Nativebrik/Nativebrik/navigation.swift similarity index 100% rename from ios/Nativebrik/Classes/navigation.swift rename to ios/Nativebrik/Nativebrik/navigation.swift diff --git a/ios/Nativebrik/Classes/overlay.swift b/ios/Nativebrik/Nativebrik/overlay.swift similarity index 100% rename from ios/Nativebrik/Classes/overlay.swift rename to ios/Nativebrik/Nativebrik/overlay.swift diff --git a/ios/Nativebrik/Classes/page.swift b/ios/Nativebrik/Nativebrik/page.swift similarity index 100% rename from ios/Nativebrik/Classes/page.swift rename to ios/Nativebrik/Nativebrik/page.swift diff --git a/ios/Nativebrik/Classes/placeholder.swift b/ios/Nativebrik/Nativebrik/placeholder.swift similarity index 100% rename from ios/Nativebrik/Classes/placeholder.swift rename to ios/Nativebrik/Nativebrik/placeholder.swift diff --git a/ios/Nativebrik/Classes/remote-config.swift b/ios/Nativebrik/Nativebrik/remote-config.swift similarity index 100% rename from ios/Nativebrik/Classes/remote-config.swift rename to ios/Nativebrik/Nativebrik/remote-config.swift diff --git a/ios/Nativebrik/Classes/repository.swift b/ios/Nativebrik/Nativebrik/repository.swift similarity index 100% rename from ios/Nativebrik/Classes/repository.swift rename to ios/Nativebrik/Nativebrik/repository.swift diff --git a/ios/Nativebrik/Classes/root.swift b/ios/Nativebrik/Nativebrik/root.swift similarity index 100% rename from ios/Nativebrik/Classes/root.swift rename to ios/Nativebrik/Nativebrik/root.swift diff --git a/ios/Nativebrik/Classes/scalars.swift b/ios/Nativebrik/Nativebrik/scalars.swift similarity index 100% rename from ios/Nativebrik/Classes/scalars.swift rename to ios/Nativebrik/Nativebrik/scalars.swift diff --git a/ios/Nativebrik/Classes/sdk.swift b/ios/Nativebrik/Nativebrik/sdk.swift similarity index 100% rename from ios/Nativebrik/Classes/sdk.swift rename to ios/Nativebrik/Nativebrik/sdk.swift diff --git a/ios/Nativebrik/Classes/text.swift b/ios/Nativebrik/Nativebrik/text.swift similarity index 100% rename from ios/Nativebrik/Classes/text.swift rename to ios/Nativebrik/Nativebrik/text.swift diff --git a/ios/Nativebrik/Classes/trigger.swift b/ios/Nativebrik/Nativebrik/trigger.swift similarity index 100% rename from ios/Nativebrik/Classes/trigger.swift rename to ios/Nativebrik/Nativebrik/trigger.swift diff --git a/ios/Nativebrik/Classes/user.swift b/ios/Nativebrik/Nativebrik/user.swift similarity index 100% rename from ios/Nativebrik/Classes/user.swift rename to ios/Nativebrik/Nativebrik/user.swift diff --git a/ios/Nativebrik/Classes/utils.swift b/ios/Nativebrik/Nativebrik/utils.swift similarity index 100% rename from ios/Nativebrik/Classes/utils.swift rename to ios/Nativebrik/Nativebrik/utils.swift diff --git a/ios/Nativebrik/NativebrikTests/NativebrikTests.swift b/ios/Nativebrik/NativebrikTests/NativebrikTests.swift new file mode 100644 index 0000000..cf5add1 --- /dev/null +++ b/ios/Nativebrik/NativebrikTests/NativebrikTests.swift @@ -0,0 +1,36 @@ +// +// NativebrikTests.swift +// NativebrikTests +// +// Created by Ryosuke Suzuki on 2023/10/27. +// + +import XCTest +@testable import Nativebrik + +final class NativebrikTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/ios/README.md b/ios/README.md deleted file mode 100644 index 67fd553..0000000 --- a/ios/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Nativebrik - -[![CI Status](https://img.shields.io/travis/14113526/Nativebrik.svg?style=flat)](https://travis-ci.org/14113526/Nativebrik) -[![Version](https://img.shields.io/cocoapods/v/Nativebrik.svg?style=flat)](https://cocoapods.org/pods/Nativebrik) -[![License](https://img.shields.io/cocoapods/l/Nativebrik.svg?style=flat)](https://cocoapods.org/pods/Nativebrik) -[![Platform](https://img.shields.io/cocoapods/p/Nativebrik.svg?style=flat)](https://cocoapods.org/pods/Nativebrik) - -## Example - -To run the example project, clone the repo, and run `pod install` from the Example directory first. - -## Requirements - -## Installation - -Nativebrik is available through [CocoaPods](https://cocoapods.org). To install -it, simply add the following line to your Podfile: - -```ruby -pod 'Nativebrik' -``` - -## Author - -14113526, RyosukeCla@users.noreply.github.com - -## License - -Nativebrik is available under the MIT license. See the LICENSE file for more info. diff --git a/ios/Example/Nativebrik_Example.xcworkspace/contents.xcworkspacedata b/ios/nativebrik.xcworkspace/contents.xcworkspacedata similarity index 52% rename from ios/Example/Nativebrik_Example.xcworkspace/contents.xcworkspacedata rename to ios/nativebrik.xcworkspace/contents.xcworkspacedata index 09d5228..9e536ca 100644 --- a/ios/Example/Nativebrik_Example.xcworkspace/contents.xcworkspacedata +++ b/ios/nativebrik.xcworkspace/contents.xcworkspacedata @@ -2,9 +2,9 @@ + location = "group:Nativebrik/Nativebrik.xcodeproj"> + location = "group:Nativebrik/../Example/Example.xcodeproj"> diff --git a/ios/nativebrik.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/nativebrik.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/nativebrik.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/nativebrik.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/nativebrik.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..0c67376 --- /dev/null +++ b/ios/nativebrik.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,5 @@ + + + + + diff --git a/ios/xcframeworks/YogaKit.xcframework/Info.plist b/ios/xcframeworks/YogaKit.xcframework/Info.plist new file mode 100644 index 0000000..576df99 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + YogaKit.framework/YogaKit + LibraryIdentifier + ios-arm64 + LibraryPath + YogaKit.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + YogaKit.framework/YogaKit + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + YogaKit.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/UIView+Yoga.h b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/UIView+Yoga.h new file mode 100644 index 0000000..6316851 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/UIView+Yoga.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "YGLayout.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^YGLayoutConfigurationBlock)(YGLayout* layout); + +@interface UIView (Yoga) + +/** + The YGLayout that is attached to this view. It is lazily created. + */ +@property(nonatomic, readonly, strong) YGLayout* yoga; +/** + Indicates whether or not Yoga is enabled + */ +@property(nonatomic, readonly, assign) BOOL isYogaEnabled; + +/** + In ObjC land, every time you access `view.yoga.*` you are adding another + `objc_msgSend` to your code. If you plan on making multiple changes to + YGLayout, it's more performant to use this method, which uses a single + objc_msgSend call. + */ +- (void)configureLayoutWithBlock:(YGLayoutConfigurationBlock)block + NS_SWIFT_NAME(configureLayout(block:)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/YGLayout.h b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/YGLayout.h new file mode 100644 index 0000000..2075140 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/YGLayout.h @@ -0,0 +1,174 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import +#import + +YG_EXTERN_C_BEGIN + +extern YGValue YGPointValue(CGFloat value) NS_SWIFT_UNAVAILABLE( + "Use the swift Int and FloatingPoint extensions instead"); +extern YGValue YGPercentValue(CGFloat value) NS_SWIFT_UNAVAILABLE( + "Use the swift Int and FloatingPoint extensions instead"); + +YG_EXTERN_C_END + +typedef NS_OPTIONS(NSInteger, YGDimensionFlexibility) { + YGDimensionFlexibilityFlexibleWidth = 1 << 0, + YGDimensionFlexibilityFlexibleHeight = 1 << 1, +}; + +@interface YGLayout : NSObject + +/** + Make default init unavailable, as it will not initialise YGNode which is + required for the setters and getters of YGLayout's properties to work properly. +*/ +- (instancetype)init + __attribute__((unavailable("you are not meant to initialise YGLayout"))); + +/** + Make default init unavailable, as it will not initialise YGNode which is + required for the setters and getters of YGLayout's properties to work properly. + */ ++ (instancetype)new + __attribute__((unavailable("you are not meant to initialise YGLayout"))); + +/** + The property that decides if we should include this view when calculating + layout. Defaults to YES. + */ +@property(nonatomic, readwrite, assign, setter=setIncludedInLayout:) + BOOL isIncludedInLayout; + +/** + The property that decides during layout/sizing whether or not styling + properties should be applied. Defaults to NO. + */ +@property(nonatomic, readwrite, assign, setter=setEnabled:) BOOL isEnabled; + +@property(nonatomic, readwrite, assign) YGDirection direction; +@property(nonatomic, readwrite, assign) YGFlexDirection flexDirection; +@property(nonatomic, readwrite, assign) YGJustify justifyContent; +@property(nonatomic, readwrite, assign) YGAlign alignContent; +@property(nonatomic, readwrite, assign) YGAlign alignItems; +@property(nonatomic, readwrite, assign) YGAlign alignSelf; +@property(nonatomic, readwrite, assign) YGPositionType position; +@property(nonatomic, readwrite, assign) YGWrap flexWrap; +@property(nonatomic, readwrite, assign) YGOverflow overflow; +@property(nonatomic, readwrite, assign) YGDisplay display; + +@property(nonatomic, readwrite, assign) CGFloat flex; +@property(nonatomic, readwrite, assign) CGFloat flexGrow; +@property(nonatomic, readwrite, assign) CGFloat flexShrink; +@property(nonatomic, readwrite, assign) YGValue flexBasis; + +@property(nonatomic, readwrite, assign) YGValue left; +@property(nonatomic, readwrite, assign) YGValue top; +@property(nonatomic, readwrite, assign) YGValue right; +@property(nonatomic, readwrite, assign) YGValue bottom; +@property(nonatomic, readwrite, assign) YGValue start; +@property(nonatomic, readwrite, assign) YGValue end; + +@property(nonatomic, readwrite, assign) YGValue marginLeft; +@property(nonatomic, readwrite, assign) YGValue marginTop; +@property(nonatomic, readwrite, assign) YGValue marginRight; +@property(nonatomic, readwrite, assign) YGValue marginBottom; +@property(nonatomic, readwrite, assign) YGValue marginStart; +@property(nonatomic, readwrite, assign) YGValue marginEnd; +@property(nonatomic, readwrite, assign) YGValue marginHorizontal; +@property(nonatomic, readwrite, assign) YGValue marginVertical; +@property(nonatomic, readwrite, assign) YGValue margin; + +@property(nonatomic, readwrite, assign) YGValue paddingLeft; +@property(nonatomic, readwrite, assign) YGValue paddingTop; +@property(nonatomic, readwrite, assign) YGValue paddingRight; +@property(nonatomic, readwrite, assign) YGValue paddingBottom; +@property(nonatomic, readwrite, assign) YGValue paddingStart; +@property(nonatomic, readwrite, assign) YGValue paddingEnd; +@property(nonatomic, readwrite, assign) YGValue paddingHorizontal; +@property(nonatomic, readwrite, assign) YGValue paddingVertical; +@property(nonatomic, readwrite, assign) YGValue padding; + +@property(nonatomic, readwrite, assign) CGFloat borderLeftWidth; +@property(nonatomic, readwrite, assign) CGFloat borderTopWidth; +@property(nonatomic, readwrite, assign) CGFloat borderRightWidth; +@property(nonatomic, readwrite, assign) CGFloat borderBottomWidth; +@property(nonatomic, readwrite, assign) CGFloat borderStartWidth; +@property(nonatomic, readwrite, assign) CGFloat borderEndWidth; +@property(nonatomic, readwrite, assign) CGFloat borderWidth; + +@property(nonatomic, readwrite, assign) YGValue width; +@property(nonatomic, readwrite, assign) YGValue height; +@property(nonatomic, readwrite, assign) YGValue minWidth; +@property(nonatomic, readwrite, assign) YGValue minHeight; +@property(nonatomic, readwrite, assign) YGValue maxWidth; +@property(nonatomic, readwrite, assign) YGValue maxHeight; + +// Yoga specific properties, not compatible with flexbox specification +@property(nonatomic, readwrite, assign) CGFloat aspectRatio; + +/** + Get the resolved direction of this node. This won't be YGDirectionInherit + */ +@property(nonatomic, readonly, assign) YGDirection resolvedDirection; + +/** + Perform a layout calculation and update the frames of the views in the + hierarchy with the results. If the origin is not preserved, the root view's + layout results will applied from {0,0}. + */ +- (void)applyLayoutPreservingOrigin:(BOOL)preserveOrigin + NS_SWIFT_NAME(applyLayout(preservingOrigin:)); + +/** + Perform a layout calculation and update the frames of the views in the + hierarchy with the results. If the origin is not preserved, the root view's + layout results will applied from {0,0}. + */ +- (void)applyLayoutPreservingOrigin:(BOOL)preserveOrigin + dimensionFlexibility:(YGDimensionFlexibility)dimensionFlexibility + NS_SWIFT_NAME(applyLayout(preservingOrigin:dimensionFlexibility:)); + +/** + Returns the size of the view if no constraints were given. This could + equivalent to calling [self sizeThatFits:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)]; + */ +@property(nonatomic, readonly, assign) CGSize intrinsicSize; + +/** + Returns the size of the view based on provided constraints. Pass NaN for an + unconstrained dimension. + */ +- (CGSize)calculateLayoutWithSize:(CGSize)size + NS_SWIFT_NAME(calculateLayout(with:)); + +/** + Returns the number of children that are using Flexbox. + */ +@property(nonatomic, readonly, assign) NSUInteger numberOfChildren; + +/** + Return a BOOL indiciating whether or not we this node contains any subviews + that are included in Yoga's layout. + */ +@property(nonatomic, readonly, assign) BOOL isLeaf; + +/** + Return's a BOOL indicating if a view is dirty. When a node is dirty + it usually indicates that it will be remeasured on the next layout pass. + */ +@property(nonatomic, readonly, assign) BOOL isDirty; + +/** + Mark that a view's layout needs to be recalculated. Only works for leaf views. + */ +- (void)markDirty; + +@end diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/YogaKit-Swift.h b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/YogaKit-Swift.h new file mode 100644 index 0000000..d9ac3ca --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/YogaKit-Swift.h @@ -0,0 +1,311 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +#ifndef YOGAKIT_SWIFT_H +#define YOGAKIT_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="YogaKit",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/YogaKit-umbrella.h b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/YogaKit-umbrella.h new file mode 100644 index 0000000..276ff9d --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Headers/YogaKit-umbrella.h @@ -0,0 +1,18 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "UIView+Yoga.h" +#import "YGLayout.h" + +FOUNDATION_EXPORT double YogaKitVersionNumber; +FOUNDATION_EXPORT const unsigned char YogaKitVersionString[]; + diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Info.plist b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Info.plist new file mode 100644 index 0000000..150300c Binary files /dev/null and b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Info.plist differ diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo new file mode 100644 index 0000000..1cd2a6e Binary files /dev/null and b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.abi.json b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.abi.json new file mode 100644 index 0000000..4141769 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.abi.json @@ -0,0 +1,1429 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "TopLevel", + "printedName": "TopLevel", + "children": [ + { + "kind": "Import", + "name": "yoga", + "printedName": "yoga", + "declKind": "Import", + "moduleName": "YogaKit", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "OperatorDecl", + "name": "%", + "printedName": "%", + "declKind": "PostfixOperator", + "moduleName": "YogaKit", + "declAttributes": [ + "Postfix" + ] + }, + { + "kind": "TypeDecl", + "name": "Int", + "printedName": "Int", + "children": [ + { + "kind": "Function", + "name": "%", + "printedName": "%(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:Si7YogaKitE1roPySo7YGValueVSiFZ", + "mangledName": "$sSi7YogaKitE1roPySo7YGValueVSiFZ", + "moduleName": "YogaKit", + "static": true, + "declAttributes": [ + "Postfix", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:Si", + "mangledName": "$sSi", + "moduleName": "Swift", + "declAttributes": [ + "Frozen" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "FixedWidthInteger", + "printedName": "FixedWidthInteger", + "usr": "s:s17FixedWidthIntegerP", + "mangledName": "$ss17FixedWidthIntegerP" + }, + { + "kind": "Conformance", + "name": "SignedInteger", + "printedName": "SignedInteger", + "usr": "s:SZ", + "mangledName": "$sSZ" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByBuiltinIntegerLiteral", + "printedName": "_ExpressibleByBuiltinIntegerLiteral", + "usr": "s:s35_ExpressibleByBuiltinIntegerLiteralP", + "mangledName": "$ss35_ExpressibleByBuiltinIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "BinaryInteger", + "printedName": "BinaryInteger", + "children": [ + { + "kind": "TypeWitness", + "name": "Words", + "printedName": "Words", + "children": [ + { + "kind": "TypeNominal", + "name": "Words", + "printedName": "Swift.Int.Words", + "usr": "s:Si5WordsV" + } + ] + } + ], + "usr": "s:Sz", + "mangledName": "$sSz" + }, + { + "kind": "Conformance", + "name": "LosslessStringConvertible", + "printedName": "LosslessStringConvertible", + "usr": "s:s25LosslessStringConvertibleP", + "mangledName": "$ss25LosslessStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "SignedNumeric", + "printedName": "SignedNumeric", + "usr": "s:s13SignedNumericP", + "mangledName": "$ss13SignedNumericP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "Numeric", + "printedName": "Numeric", + "children": [ + { + "kind": "TypeWitness", + "name": "Magnitude", + "printedName": "Magnitude", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + } + ], + "usr": "s:Sj", + "mangledName": "$sSj" + }, + { + "kind": "Conformance", + "name": "Strideable", + "printedName": "Strideable", + "children": [ + { + "kind": "TypeWitness", + "name": "Stride", + "printedName": "Stride", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:Sx", + "mangledName": "$sSx" + }, + { + "kind": "Conformance", + "name": "AdditiveArithmetic", + "printedName": "AdditiveArithmetic", + "usr": "s:s18AdditiveArithmeticP", + "mangledName": "$ss18AdditiveArithmeticP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "Comparable", + "printedName": "Comparable", + "usr": "s:SL", + "mangledName": "$sSL" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "CodingKeyRepresentable", + "printedName": "CodingKeyRepresentable", + "usr": "s:s22CodingKeyRepresentableP", + "mangledName": "$ss22CodingKeyRepresentableP" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "_CustomPlaygroundQuickLookable", + "printedName": "_CustomPlaygroundQuickLookable", + "usr": "s:s30_CustomPlaygroundQuickLookableP", + "mangledName": "$ss30_CustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "MirrorPath", + "printedName": "MirrorPath", + "usr": "s:s10MirrorPathP", + "mangledName": "$ss10MirrorPathP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "_HasCustomAnyHashableRepresentation", + "printedName": "_HasCustomAnyHashableRepresentation", + "usr": "s:s35_HasCustomAnyHashableRepresentationP", + "mangledName": "$ss35_HasCustomAnyHashableRepresentationP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SIMDScalar", + "printedName": "SIMDScalar", + "children": [ + { + "kind": "TypeWitness", + "name": "SIMDMaskScalar", + "printedName": "SIMDMaskScalar", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD2Storage", + "printedName": "SIMD2Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD2Storage", + "printedName": "Swift.Int.SIMD2Storage", + "usr": "s:Si12SIMD2StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD4Storage", + "printedName": "SIMD4Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD4Storage", + "printedName": "Swift.Int.SIMD4Storage", + "usr": "s:Si12SIMD4StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD8Storage", + "printedName": "SIMD8Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD8Storage", + "printedName": "Swift.Int.SIMD8Storage", + "usr": "s:Si12SIMD8StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD16Storage", + "printedName": "SIMD16Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD16Storage", + "printedName": "Swift.Int.SIMD16Storage", + "usr": "s:Si13SIMD16StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD32Storage", + "printedName": "SIMD32Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD32Storage", + "printedName": "Swift.Int.SIMD32Storage", + "usr": "s:Si13SIMD32StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD64Storage", + "printedName": "SIMD64Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD64Storage", + "printedName": "Swift.Int.SIMD64Storage", + "usr": "s:Si13SIMD64StorageV" + } + ] + } + ], + "usr": "s:s10SIMDScalarP", + "mangledName": "$ss10SIMDScalarP" + }, + { + "kind": "Conformance", + "name": "_FormatSpecifiable", + "printedName": "_FormatSpecifiable", + "children": [ + { + "kind": "TypeWitness", + "name": "_Arg", + "printedName": "_Arg", + "children": [ + { + "kind": "TypeNominal", + "name": "Int64", + "printedName": "Swift.Int64", + "usr": "s:s5Int64V" + } + ] + } + ], + "usr": "s:10Foundation18_FormatSpecifiableP", + "mangledName": "$s10Foundation18_FormatSpecifiableP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSNumber", + "printedName": "Foundation.NSNumber", + "usr": "c:objc(cs)NSNumber" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Float", + "printedName": "Float", + "children": [ + { + "kind": "Function", + "name": "%", + "printedName": "%(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Func", + "usr": "s:Sf7YogaKitE1roPySo7YGValueVSfFZ", + "mangledName": "$sSf7YogaKitE1roPySo7YGValueVSfFZ", + "moduleName": "YogaKit", + "static": true, + "declAttributes": [ + "Postfix", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:Sf", + "mangledName": "$sSf", + "moduleName": "Swift", + "declAttributes": [ + "Frozen" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "_CustomPlaygroundQuickLookable", + "printedName": "_CustomPlaygroundQuickLookable", + "usr": "s:s30_CustomPlaygroundQuickLookableP", + "mangledName": "$ss30_CustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "_CVarArgPassedAsDouble", + "printedName": "_CVarArgPassedAsDouble", + "usr": "s:s22_CVarArgPassedAsDoubleP", + "mangledName": "$ss22_CVarArgPassedAsDoubleP" + }, + { + "kind": "Conformance", + "name": "_CVarArgAligned", + "printedName": "_CVarArgAligned", + "usr": "s:s15_CVarArgAlignedP", + "mangledName": "$ss15_CVarArgAlignedP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "LosslessStringConvertible", + "printedName": "LosslessStringConvertible", + "usr": "s:s25LosslessStringConvertibleP", + "mangledName": "$ss25LosslessStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "TextOutputStreamable", + "printedName": "TextOutputStreamable", + "usr": "s:s20TextOutputStreamableP", + "mangledName": "$ss20TextOutputStreamableP" + }, + { + "kind": "Conformance", + "name": "BinaryFloatingPoint", + "printedName": "BinaryFloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "RawSignificand", + "printedName": "RawSignificand", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt32", + "printedName": "Swift.UInt32", + "usr": "s:s6UInt32V" + } + ] + }, + { + "kind": "TypeWitness", + "name": "RawExponent", + "printedName": "RawExponent", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + } + ], + "usr": "s:SB", + "mangledName": "$sSB" + }, + { + "kind": "Conformance", + "name": "ExpressibleByFloatLiteral", + "printedName": "ExpressibleByFloatLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "FloatLiteralType", + "printedName": "FloatLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:s25ExpressibleByFloatLiteralP", + "mangledName": "$ss25ExpressibleByFloatLiteralP" + }, + { + "kind": "Conformance", + "name": "FloatingPoint", + "printedName": "FloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "Exponent", + "printedName": "Exponent", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SF", + "mangledName": "$sSF" + }, + { + "kind": "Conformance", + "name": "SignedNumeric", + "printedName": "SignedNumeric", + "usr": "s:s13SignedNumericP", + "mangledName": "$ss13SignedNumericP" + }, + { + "kind": "Conformance", + "name": "Numeric", + "printedName": "Numeric", + "children": [ + { + "kind": "TypeWitness", + "name": "Magnitude", + "printedName": "Magnitude", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:Sj", + "mangledName": "$sSj" + }, + { + "kind": "Conformance", + "name": "AdditiveArithmetic", + "printedName": "AdditiveArithmetic", + "usr": "s:s18AdditiveArithmeticP", + "mangledName": "$ss18AdditiveArithmeticP" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByBuiltinIntegerLiteral", + "printedName": "_ExpressibleByBuiltinIntegerLiteral", + "usr": "s:s35_ExpressibleByBuiltinIntegerLiteralP", + "mangledName": "$ss35_ExpressibleByBuiltinIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int64", + "printedName": "Swift.Int64", + "usr": "s:s5Int64V" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByBuiltinFloatLiteral", + "printedName": "_ExpressibleByBuiltinFloatLiteral", + "usr": "s:s33_ExpressibleByBuiltinFloatLiteralP", + "mangledName": "$ss33_ExpressibleByBuiltinFloatLiteralP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "_HasCustomAnyHashableRepresentation", + "printedName": "_HasCustomAnyHashableRepresentation", + "usr": "s:s35_HasCustomAnyHashableRepresentationP", + "mangledName": "$ss35_HasCustomAnyHashableRepresentationP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Strideable", + "printedName": "Strideable", + "children": [ + { + "kind": "TypeWitness", + "name": "Stride", + "printedName": "Stride", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:Sx", + "mangledName": "$sSx" + }, + { + "kind": "Conformance", + "name": "Comparable", + "printedName": "Comparable", + "usr": "s:SL", + "mangledName": "$sSL" + }, + { + "kind": "Conformance", + "name": "SIMDScalar", + "printedName": "SIMDScalar", + "children": [ + { + "kind": "TypeWitness", + "name": "SIMDMaskScalar", + "printedName": "SIMDMaskScalar", + "children": [ + { + "kind": "TypeNominal", + "name": "Int32", + "printedName": "Swift.Int32", + "usr": "s:s5Int32V" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD2Storage", + "printedName": "SIMD2Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD2Storage", + "printedName": "Swift.Float.SIMD2Storage", + "usr": "s:Sf12SIMD2StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD4Storage", + "printedName": "SIMD4Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD4Storage", + "printedName": "Swift.Float.SIMD4Storage", + "usr": "s:Sf12SIMD4StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD8Storage", + "printedName": "SIMD8Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD8Storage", + "printedName": "Swift.Float.SIMD8Storage", + "usr": "s:Sf12SIMD8StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD16Storage", + "printedName": "SIMD16Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD16Storage", + "printedName": "Swift.Float.SIMD16Storage", + "usr": "s:Sf13SIMD16StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD32Storage", + "printedName": "SIMD32Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD32Storage", + "printedName": "Swift.Float.SIMD32Storage", + "usr": "s:Sf13SIMD32StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD64Storage", + "printedName": "SIMD64Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD64Storage", + "printedName": "Swift.Float.SIMD64Storage", + "usr": "s:Sf13SIMD64StorageV" + } + ] + } + ], + "usr": "s:s10SIMDScalarP", + "mangledName": "$ss10SIMDScalarP" + }, + { + "kind": "Conformance", + "name": "_FormatSpecifiable", + "printedName": "_FormatSpecifiable", + "children": [ + { + "kind": "TypeWitness", + "name": "_Arg", + "printedName": "_Arg", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:10Foundation18_FormatSpecifiableP", + "mangledName": "$s10Foundation18_FormatSpecifiableP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSNumber", + "printedName": "Foundation.NSNumber", + "usr": "c:objc(cs)NSNumber" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "CGFloat", + "printedName": "CGFloat", + "children": [ + { + "kind": "Function", + "name": "%", + "printedName": "%(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Func", + "usr": "s:14CoreFoundation7CGFloatV7YogaKitE1roPySo7YGValueVACFZ", + "mangledName": "$s12CoreGraphics7CGFloatV7YogaKitE1roPySo7YGValueVACFZ", + "moduleName": "YogaKit", + "static": true, + "declAttributes": [ + "Postfix", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:14CoreFoundation7CGFloatV", + "mangledName": "$s12CoreGraphics7CGFloatV", + "moduleName": "CoreFoundation", + "intro_Macosx": "10.0", + "intro_iOS": "2.0", + "intro_tvOS": "9.0", + "intro_watchOS": "1.0", + "declAttributes": [ + "Frozen", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "Available", + "Available", + "Available", + "Available", + "Available" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "SignedNumeric", + "printedName": "SignedNumeric", + "usr": "s:s13SignedNumericP", + "mangledName": "$ss13SignedNumericP" + }, + { + "kind": "Conformance", + "name": "Numeric", + "printedName": "Numeric", + "children": [ + { + "kind": "TypeWitness", + "name": "Magnitude", + "printedName": "Magnitude", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ] + } + ], + "usr": "s:Sj", + "mangledName": "$sSj" + }, + { + "kind": "Conformance", + "name": "AdditiveArithmetic", + "printedName": "AdditiveArithmetic", + "usr": "s:s18AdditiveArithmeticP", + "mangledName": "$ss18AdditiveArithmeticP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "BinaryFloatingPoint", + "printedName": "BinaryFloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "RawSignificand", + "printedName": "RawSignificand", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + }, + { + "kind": "TypeWitness", + "name": "RawExponent", + "printedName": "RawExponent", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + } + ], + "usr": "s:SB", + "mangledName": "$sSB" + }, + { + "kind": "Conformance", + "name": "ExpressibleByFloatLiteral", + "printedName": "ExpressibleByFloatLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "FloatLiteralType", + "printedName": "FloatLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ] + } + ], + "usr": "s:s25ExpressibleByFloatLiteralP", + "mangledName": "$ss25ExpressibleByFloatLiteralP" + }, + { + "kind": "Conformance", + "name": "FloatingPoint", + "printedName": "FloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "Exponent", + "printedName": "Exponent", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SF", + "mangledName": "$sSF" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Strideable", + "printedName": "Strideable", + "children": [ + { + "kind": "TypeWitness", + "name": "Stride", + "printedName": "Stride", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ] + } + ], + "usr": "s:Sx", + "mangledName": "$sSx" + }, + { + "kind": "Conformance", + "name": "Comparable", + "printedName": "Comparable", + "usr": "s:SL", + "mangledName": "$sSL" + }, + { + "kind": "Conformance", + "name": "_CVarArgPassedAsDouble", + "printedName": "_CVarArgPassedAsDouble", + "usr": "s:s22_CVarArgPassedAsDoubleP", + "mangledName": "$ss22_CVarArgPassedAsDoubleP" + }, + { + "kind": "Conformance", + "name": "_CVarArgAligned", + "printedName": "_CVarArgAligned", + "usr": "s:s15_CVarArgAlignedP", + "mangledName": "$ss15_CVarArgAlignedP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "_FormatSpecifiable", + "printedName": "_FormatSpecifiable", + "children": [ + { + "kind": "TypeWitness", + "name": "_Arg", + "printedName": "_Arg", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ] + } + ], + "usr": "s:10Foundation18_FormatSpecifiableP", + "mangledName": "$s10Foundation18_FormatSpecifiableP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSNumber", + "printedName": "Foundation.NSNumber", + "usr": "c:objc(cs)NSNumber" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "YGValue", + "printedName": "YGValue", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(integerLiteral:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitE14integerLiteralABSi_tcfc", + "mangledName": "$sSo7YGValueV7YogaKitE14integerLiteralABSi_tcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(floatLiteral:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitE12floatLiteralABSf_tcfc", + "mangledName": "$sSo7YGValueV7YogaKitE12floatLiteralABSf_tcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitEyABSfcfc", + "mangledName": "$sSo7YGValueV7YogaKitEyABSfcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitEyAB14CoreFoundation7CGFloatVcfc", + "mangledName": "$sSo7YGValueV7YogaKitEyAB12CoreGraphics7CGFloatVcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + } + ], + "declKind": "Struct", + "usr": "c:@S@YGValue", + "moduleName": "yoga", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByFloatLiteral", + "printedName": "ExpressibleByFloatLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "FloatLiteralType", + "printedName": "FloatLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:s25ExpressibleByFloatLiteralP", + "mangledName": "$ss25ExpressibleByFloatLiteralP" + } + ] + } + ], + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.private.swiftinterface b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.private.swiftinterface new file mode 100644 index 0000000..d28cfe3 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.private.swiftinterface @@ -0,0 +1,28 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +// swift-module-flags: -target arm64-apple-ios13.4 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name YogaKit +// swift-module-flags-ignorable: -enable-bare-slash-regex +import Swift +@_exported import YogaKit +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import yoga +postfix operator % +extension Swift.Int { + postfix public static func % (value: Swift.Int) -> yoga.YGValue +} +extension Swift.Float { + postfix public static func % (value: Swift.Float) -> yoga.YGValue +} +extension CoreFoundation.CGFloat { + postfix public static func % (value: CoreFoundation.CGFloat) -> yoga.YGValue +} +extension yoga.YGValue : Swift.ExpressibleByIntegerLiteral, Swift.ExpressibleByFloatLiteral { + public init(integerLiteral value: Swift.Int) + public init(floatLiteral value: Swift.Float) + public init(_ value: Swift.Float) + public init(_ value: CoreFoundation.CGFloat) + public typealias FloatLiteralType = Swift.Float + public typealias IntegerLiteralType = Swift.Int +} diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.swiftdoc b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.swiftdoc new file mode 100644 index 0000000..6daecae Binary files /dev/null and b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.swiftdoc differ diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.swiftinterface b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.swiftinterface new file mode 100644 index 0000000..d28cfe3 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios.swiftinterface @@ -0,0 +1,28 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +// swift-module-flags: -target arm64-apple-ios13.4 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name YogaKit +// swift-module-flags-ignorable: -enable-bare-slash-regex +import Swift +@_exported import YogaKit +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import yoga +postfix operator % +extension Swift.Int { + postfix public static func % (value: Swift.Int) -> yoga.YGValue +} +extension Swift.Float { + postfix public static func % (value: Swift.Float) -> yoga.YGValue +} +extension CoreFoundation.CGFloat { + postfix public static func % (value: CoreFoundation.CGFloat) -> yoga.YGValue +} +extension yoga.YGValue : Swift.ExpressibleByIntegerLiteral, Swift.ExpressibleByFloatLiteral { + public init(integerLiteral value: Swift.Int) + public init(floatLiteral value: Swift.Float) + public init(_ value: Swift.Float) + public init(_ value: CoreFoundation.CGFloat) + public typealias FloatLiteralType = Swift.Float + public typealias IntegerLiteralType = Swift.Int +} diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/module.modulemap b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/module.modulemap new file mode 100644 index 0000000..3f248c4 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module YogaKit { + umbrella header "YogaKit-umbrella.h" + + export * + module * { export * } +} + +module YogaKit.Swift { + header "YogaKit-Swift.h" + requires objc +} diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/PrivateHeaders/YGLayout+Private.h b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/PrivateHeaders/YGLayout+Private.h new file mode 100644 index 0000000..63fd8c7 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/PrivateHeaders/YGLayout+Private.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "YGLayout.h" + +@interface YGLayout () + +@property(nonatomic, assign, readonly) YGNodeRef node; + +- (instancetype)initWithView:(UIView*)view; + +@end diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/YogaKit b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/YogaKit new file mode 100755 index 0000000..79429c0 Binary files /dev/null and b/ios/xcframeworks/YogaKit.xcframework/ios-arm64/YogaKit.framework/YogaKit differ diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/UIView+Yoga.h b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/UIView+Yoga.h new file mode 100644 index 0000000..6316851 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/UIView+Yoga.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "YGLayout.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^YGLayoutConfigurationBlock)(YGLayout* layout); + +@interface UIView (Yoga) + +/** + The YGLayout that is attached to this view. It is lazily created. + */ +@property(nonatomic, readonly, strong) YGLayout* yoga; +/** + Indicates whether or not Yoga is enabled + */ +@property(nonatomic, readonly, assign) BOOL isYogaEnabled; + +/** + In ObjC land, every time you access `view.yoga.*` you are adding another + `objc_msgSend` to your code. If you plan on making multiple changes to + YGLayout, it's more performant to use this method, which uses a single + objc_msgSend call. + */ +- (void)configureLayoutWithBlock:(YGLayoutConfigurationBlock)block + NS_SWIFT_NAME(configureLayout(block:)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/YGLayout.h b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/YGLayout.h new file mode 100644 index 0000000..2075140 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/YGLayout.h @@ -0,0 +1,174 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import +#import + +YG_EXTERN_C_BEGIN + +extern YGValue YGPointValue(CGFloat value) NS_SWIFT_UNAVAILABLE( + "Use the swift Int and FloatingPoint extensions instead"); +extern YGValue YGPercentValue(CGFloat value) NS_SWIFT_UNAVAILABLE( + "Use the swift Int and FloatingPoint extensions instead"); + +YG_EXTERN_C_END + +typedef NS_OPTIONS(NSInteger, YGDimensionFlexibility) { + YGDimensionFlexibilityFlexibleWidth = 1 << 0, + YGDimensionFlexibilityFlexibleHeight = 1 << 1, +}; + +@interface YGLayout : NSObject + +/** + Make default init unavailable, as it will not initialise YGNode which is + required for the setters and getters of YGLayout's properties to work properly. +*/ +- (instancetype)init + __attribute__((unavailable("you are not meant to initialise YGLayout"))); + +/** + Make default init unavailable, as it will not initialise YGNode which is + required for the setters and getters of YGLayout's properties to work properly. + */ ++ (instancetype)new + __attribute__((unavailable("you are not meant to initialise YGLayout"))); + +/** + The property that decides if we should include this view when calculating + layout. Defaults to YES. + */ +@property(nonatomic, readwrite, assign, setter=setIncludedInLayout:) + BOOL isIncludedInLayout; + +/** + The property that decides during layout/sizing whether or not styling + properties should be applied. Defaults to NO. + */ +@property(nonatomic, readwrite, assign, setter=setEnabled:) BOOL isEnabled; + +@property(nonatomic, readwrite, assign) YGDirection direction; +@property(nonatomic, readwrite, assign) YGFlexDirection flexDirection; +@property(nonatomic, readwrite, assign) YGJustify justifyContent; +@property(nonatomic, readwrite, assign) YGAlign alignContent; +@property(nonatomic, readwrite, assign) YGAlign alignItems; +@property(nonatomic, readwrite, assign) YGAlign alignSelf; +@property(nonatomic, readwrite, assign) YGPositionType position; +@property(nonatomic, readwrite, assign) YGWrap flexWrap; +@property(nonatomic, readwrite, assign) YGOverflow overflow; +@property(nonatomic, readwrite, assign) YGDisplay display; + +@property(nonatomic, readwrite, assign) CGFloat flex; +@property(nonatomic, readwrite, assign) CGFloat flexGrow; +@property(nonatomic, readwrite, assign) CGFloat flexShrink; +@property(nonatomic, readwrite, assign) YGValue flexBasis; + +@property(nonatomic, readwrite, assign) YGValue left; +@property(nonatomic, readwrite, assign) YGValue top; +@property(nonatomic, readwrite, assign) YGValue right; +@property(nonatomic, readwrite, assign) YGValue bottom; +@property(nonatomic, readwrite, assign) YGValue start; +@property(nonatomic, readwrite, assign) YGValue end; + +@property(nonatomic, readwrite, assign) YGValue marginLeft; +@property(nonatomic, readwrite, assign) YGValue marginTop; +@property(nonatomic, readwrite, assign) YGValue marginRight; +@property(nonatomic, readwrite, assign) YGValue marginBottom; +@property(nonatomic, readwrite, assign) YGValue marginStart; +@property(nonatomic, readwrite, assign) YGValue marginEnd; +@property(nonatomic, readwrite, assign) YGValue marginHorizontal; +@property(nonatomic, readwrite, assign) YGValue marginVertical; +@property(nonatomic, readwrite, assign) YGValue margin; + +@property(nonatomic, readwrite, assign) YGValue paddingLeft; +@property(nonatomic, readwrite, assign) YGValue paddingTop; +@property(nonatomic, readwrite, assign) YGValue paddingRight; +@property(nonatomic, readwrite, assign) YGValue paddingBottom; +@property(nonatomic, readwrite, assign) YGValue paddingStart; +@property(nonatomic, readwrite, assign) YGValue paddingEnd; +@property(nonatomic, readwrite, assign) YGValue paddingHorizontal; +@property(nonatomic, readwrite, assign) YGValue paddingVertical; +@property(nonatomic, readwrite, assign) YGValue padding; + +@property(nonatomic, readwrite, assign) CGFloat borderLeftWidth; +@property(nonatomic, readwrite, assign) CGFloat borderTopWidth; +@property(nonatomic, readwrite, assign) CGFloat borderRightWidth; +@property(nonatomic, readwrite, assign) CGFloat borderBottomWidth; +@property(nonatomic, readwrite, assign) CGFloat borderStartWidth; +@property(nonatomic, readwrite, assign) CGFloat borderEndWidth; +@property(nonatomic, readwrite, assign) CGFloat borderWidth; + +@property(nonatomic, readwrite, assign) YGValue width; +@property(nonatomic, readwrite, assign) YGValue height; +@property(nonatomic, readwrite, assign) YGValue minWidth; +@property(nonatomic, readwrite, assign) YGValue minHeight; +@property(nonatomic, readwrite, assign) YGValue maxWidth; +@property(nonatomic, readwrite, assign) YGValue maxHeight; + +// Yoga specific properties, not compatible with flexbox specification +@property(nonatomic, readwrite, assign) CGFloat aspectRatio; + +/** + Get the resolved direction of this node. This won't be YGDirectionInherit + */ +@property(nonatomic, readonly, assign) YGDirection resolvedDirection; + +/** + Perform a layout calculation and update the frames of the views in the + hierarchy with the results. If the origin is not preserved, the root view's + layout results will applied from {0,0}. + */ +- (void)applyLayoutPreservingOrigin:(BOOL)preserveOrigin + NS_SWIFT_NAME(applyLayout(preservingOrigin:)); + +/** + Perform a layout calculation and update the frames of the views in the + hierarchy with the results. If the origin is not preserved, the root view's + layout results will applied from {0,0}. + */ +- (void)applyLayoutPreservingOrigin:(BOOL)preserveOrigin + dimensionFlexibility:(YGDimensionFlexibility)dimensionFlexibility + NS_SWIFT_NAME(applyLayout(preservingOrigin:dimensionFlexibility:)); + +/** + Returns the size of the view if no constraints were given. This could + equivalent to calling [self sizeThatFits:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)]; + */ +@property(nonatomic, readonly, assign) CGSize intrinsicSize; + +/** + Returns the size of the view based on provided constraints. Pass NaN for an + unconstrained dimension. + */ +- (CGSize)calculateLayoutWithSize:(CGSize)size + NS_SWIFT_NAME(calculateLayout(with:)); + +/** + Returns the number of children that are using Flexbox. + */ +@property(nonatomic, readonly, assign) NSUInteger numberOfChildren; + +/** + Return a BOOL indiciating whether or not we this node contains any subviews + that are included in Yoga's layout. + */ +@property(nonatomic, readonly, assign) BOOL isLeaf; + +/** + Return's a BOOL indicating if a view is dirty. When a node is dirty + it usually indicates that it will be remeasured on the next layout pass. + */ +@property(nonatomic, readonly, assign) BOOL isDirty; + +/** + Mark that a view's layout needs to be recalculated. Only works for leaf views. + */ +- (void)markDirty; + +@end diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/YogaKit-Swift.h b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/YogaKit-Swift.h new file mode 100644 index 0000000..4b93dd1 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/YogaKit-Swift.h @@ -0,0 +1,618 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +#ifndef YOGAKIT_SWIFT_H +#define YOGAKIT_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="YogaKit",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#elif defined(__x86_64__) && __x86_64__ +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +#ifndef YOGAKIT_SWIFT_H +#define YOGAKIT_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="YogaKit",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/YogaKit-umbrella.h b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/YogaKit-umbrella.h new file mode 100644 index 0000000..276ff9d --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Headers/YogaKit-umbrella.h @@ -0,0 +1,18 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "UIView+Yoga.h" +#import "YGLayout.h" + +FOUNDATION_EXPORT double YogaKitVersionNumber; +FOUNDATION_EXPORT const unsigned char YogaKitVersionString[]; + diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Info.plist b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Info.plist new file mode 100644 index 0000000..de57817 Binary files /dev/null and b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Info.plist differ diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo new file mode 100644 index 0000000..48d14c8 Binary files /dev/null and b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo differ diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo new file mode 100644 index 0000000..497cb2f Binary files /dev/null and b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo differ diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.abi.json b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.abi.json new file mode 100644 index 0000000..4141769 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.abi.json @@ -0,0 +1,1429 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "TopLevel", + "printedName": "TopLevel", + "children": [ + { + "kind": "Import", + "name": "yoga", + "printedName": "yoga", + "declKind": "Import", + "moduleName": "YogaKit", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "OperatorDecl", + "name": "%", + "printedName": "%", + "declKind": "PostfixOperator", + "moduleName": "YogaKit", + "declAttributes": [ + "Postfix" + ] + }, + { + "kind": "TypeDecl", + "name": "Int", + "printedName": "Int", + "children": [ + { + "kind": "Function", + "name": "%", + "printedName": "%(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:Si7YogaKitE1roPySo7YGValueVSiFZ", + "mangledName": "$sSi7YogaKitE1roPySo7YGValueVSiFZ", + "moduleName": "YogaKit", + "static": true, + "declAttributes": [ + "Postfix", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:Si", + "mangledName": "$sSi", + "moduleName": "Swift", + "declAttributes": [ + "Frozen" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "FixedWidthInteger", + "printedName": "FixedWidthInteger", + "usr": "s:s17FixedWidthIntegerP", + "mangledName": "$ss17FixedWidthIntegerP" + }, + { + "kind": "Conformance", + "name": "SignedInteger", + "printedName": "SignedInteger", + "usr": "s:SZ", + "mangledName": "$sSZ" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByBuiltinIntegerLiteral", + "printedName": "_ExpressibleByBuiltinIntegerLiteral", + "usr": "s:s35_ExpressibleByBuiltinIntegerLiteralP", + "mangledName": "$ss35_ExpressibleByBuiltinIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "BinaryInteger", + "printedName": "BinaryInteger", + "children": [ + { + "kind": "TypeWitness", + "name": "Words", + "printedName": "Words", + "children": [ + { + "kind": "TypeNominal", + "name": "Words", + "printedName": "Swift.Int.Words", + "usr": "s:Si5WordsV" + } + ] + } + ], + "usr": "s:Sz", + "mangledName": "$sSz" + }, + { + "kind": "Conformance", + "name": "LosslessStringConvertible", + "printedName": "LosslessStringConvertible", + "usr": "s:s25LosslessStringConvertibleP", + "mangledName": "$ss25LosslessStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "SignedNumeric", + "printedName": "SignedNumeric", + "usr": "s:s13SignedNumericP", + "mangledName": "$ss13SignedNumericP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "Numeric", + "printedName": "Numeric", + "children": [ + { + "kind": "TypeWitness", + "name": "Magnitude", + "printedName": "Magnitude", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + } + ], + "usr": "s:Sj", + "mangledName": "$sSj" + }, + { + "kind": "Conformance", + "name": "Strideable", + "printedName": "Strideable", + "children": [ + { + "kind": "TypeWitness", + "name": "Stride", + "printedName": "Stride", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:Sx", + "mangledName": "$sSx" + }, + { + "kind": "Conformance", + "name": "AdditiveArithmetic", + "printedName": "AdditiveArithmetic", + "usr": "s:s18AdditiveArithmeticP", + "mangledName": "$ss18AdditiveArithmeticP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "Comparable", + "printedName": "Comparable", + "usr": "s:SL", + "mangledName": "$sSL" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "CodingKeyRepresentable", + "printedName": "CodingKeyRepresentable", + "usr": "s:s22CodingKeyRepresentableP", + "mangledName": "$ss22CodingKeyRepresentableP" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "_CustomPlaygroundQuickLookable", + "printedName": "_CustomPlaygroundQuickLookable", + "usr": "s:s30_CustomPlaygroundQuickLookableP", + "mangledName": "$ss30_CustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "MirrorPath", + "printedName": "MirrorPath", + "usr": "s:s10MirrorPathP", + "mangledName": "$ss10MirrorPathP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "_HasCustomAnyHashableRepresentation", + "printedName": "_HasCustomAnyHashableRepresentation", + "usr": "s:s35_HasCustomAnyHashableRepresentationP", + "mangledName": "$ss35_HasCustomAnyHashableRepresentationP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SIMDScalar", + "printedName": "SIMDScalar", + "children": [ + { + "kind": "TypeWitness", + "name": "SIMDMaskScalar", + "printedName": "SIMDMaskScalar", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD2Storage", + "printedName": "SIMD2Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD2Storage", + "printedName": "Swift.Int.SIMD2Storage", + "usr": "s:Si12SIMD2StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD4Storage", + "printedName": "SIMD4Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD4Storage", + "printedName": "Swift.Int.SIMD4Storage", + "usr": "s:Si12SIMD4StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD8Storage", + "printedName": "SIMD8Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD8Storage", + "printedName": "Swift.Int.SIMD8Storage", + "usr": "s:Si12SIMD8StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD16Storage", + "printedName": "SIMD16Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD16Storage", + "printedName": "Swift.Int.SIMD16Storage", + "usr": "s:Si13SIMD16StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD32Storage", + "printedName": "SIMD32Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD32Storage", + "printedName": "Swift.Int.SIMD32Storage", + "usr": "s:Si13SIMD32StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD64Storage", + "printedName": "SIMD64Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD64Storage", + "printedName": "Swift.Int.SIMD64Storage", + "usr": "s:Si13SIMD64StorageV" + } + ] + } + ], + "usr": "s:s10SIMDScalarP", + "mangledName": "$ss10SIMDScalarP" + }, + { + "kind": "Conformance", + "name": "_FormatSpecifiable", + "printedName": "_FormatSpecifiable", + "children": [ + { + "kind": "TypeWitness", + "name": "_Arg", + "printedName": "_Arg", + "children": [ + { + "kind": "TypeNominal", + "name": "Int64", + "printedName": "Swift.Int64", + "usr": "s:s5Int64V" + } + ] + } + ], + "usr": "s:10Foundation18_FormatSpecifiableP", + "mangledName": "$s10Foundation18_FormatSpecifiableP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSNumber", + "printedName": "Foundation.NSNumber", + "usr": "c:objc(cs)NSNumber" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Float", + "printedName": "Float", + "children": [ + { + "kind": "Function", + "name": "%", + "printedName": "%(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Func", + "usr": "s:Sf7YogaKitE1roPySo7YGValueVSfFZ", + "mangledName": "$sSf7YogaKitE1roPySo7YGValueVSfFZ", + "moduleName": "YogaKit", + "static": true, + "declAttributes": [ + "Postfix", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:Sf", + "mangledName": "$sSf", + "moduleName": "Swift", + "declAttributes": [ + "Frozen" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "_CustomPlaygroundQuickLookable", + "printedName": "_CustomPlaygroundQuickLookable", + "usr": "s:s30_CustomPlaygroundQuickLookableP", + "mangledName": "$ss30_CustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "_CVarArgPassedAsDouble", + "printedName": "_CVarArgPassedAsDouble", + "usr": "s:s22_CVarArgPassedAsDoubleP", + "mangledName": "$ss22_CVarArgPassedAsDoubleP" + }, + { + "kind": "Conformance", + "name": "_CVarArgAligned", + "printedName": "_CVarArgAligned", + "usr": "s:s15_CVarArgAlignedP", + "mangledName": "$ss15_CVarArgAlignedP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "LosslessStringConvertible", + "printedName": "LosslessStringConvertible", + "usr": "s:s25LosslessStringConvertibleP", + "mangledName": "$ss25LosslessStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "TextOutputStreamable", + "printedName": "TextOutputStreamable", + "usr": "s:s20TextOutputStreamableP", + "mangledName": "$ss20TextOutputStreamableP" + }, + { + "kind": "Conformance", + "name": "BinaryFloatingPoint", + "printedName": "BinaryFloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "RawSignificand", + "printedName": "RawSignificand", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt32", + "printedName": "Swift.UInt32", + "usr": "s:s6UInt32V" + } + ] + }, + { + "kind": "TypeWitness", + "name": "RawExponent", + "printedName": "RawExponent", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + } + ], + "usr": "s:SB", + "mangledName": "$sSB" + }, + { + "kind": "Conformance", + "name": "ExpressibleByFloatLiteral", + "printedName": "ExpressibleByFloatLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "FloatLiteralType", + "printedName": "FloatLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:s25ExpressibleByFloatLiteralP", + "mangledName": "$ss25ExpressibleByFloatLiteralP" + }, + { + "kind": "Conformance", + "name": "FloatingPoint", + "printedName": "FloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "Exponent", + "printedName": "Exponent", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SF", + "mangledName": "$sSF" + }, + { + "kind": "Conformance", + "name": "SignedNumeric", + "printedName": "SignedNumeric", + "usr": "s:s13SignedNumericP", + "mangledName": "$ss13SignedNumericP" + }, + { + "kind": "Conformance", + "name": "Numeric", + "printedName": "Numeric", + "children": [ + { + "kind": "TypeWitness", + "name": "Magnitude", + "printedName": "Magnitude", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:Sj", + "mangledName": "$sSj" + }, + { + "kind": "Conformance", + "name": "AdditiveArithmetic", + "printedName": "AdditiveArithmetic", + "usr": "s:s18AdditiveArithmeticP", + "mangledName": "$ss18AdditiveArithmeticP" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByBuiltinIntegerLiteral", + "printedName": "_ExpressibleByBuiltinIntegerLiteral", + "usr": "s:s35_ExpressibleByBuiltinIntegerLiteralP", + "mangledName": "$ss35_ExpressibleByBuiltinIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int64", + "printedName": "Swift.Int64", + "usr": "s:s5Int64V" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByBuiltinFloatLiteral", + "printedName": "_ExpressibleByBuiltinFloatLiteral", + "usr": "s:s33_ExpressibleByBuiltinFloatLiteralP", + "mangledName": "$ss33_ExpressibleByBuiltinFloatLiteralP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "_HasCustomAnyHashableRepresentation", + "printedName": "_HasCustomAnyHashableRepresentation", + "usr": "s:s35_HasCustomAnyHashableRepresentationP", + "mangledName": "$ss35_HasCustomAnyHashableRepresentationP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Strideable", + "printedName": "Strideable", + "children": [ + { + "kind": "TypeWitness", + "name": "Stride", + "printedName": "Stride", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:Sx", + "mangledName": "$sSx" + }, + { + "kind": "Conformance", + "name": "Comparable", + "printedName": "Comparable", + "usr": "s:SL", + "mangledName": "$sSL" + }, + { + "kind": "Conformance", + "name": "SIMDScalar", + "printedName": "SIMDScalar", + "children": [ + { + "kind": "TypeWitness", + "name": "SIMDMaskScalar", + "printedName": "SIMDMaskScalar", + "children": [ + { + "kind": "TypeNominal", + "name": "Int32", + "printedName": "Swift.Int32", + "usr": "s:s5Int32V" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD2Storage", + "printedName": "SIMD2Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD2Storage", + "printedName": "Swift.Float.SIMD2Storage", + "usr": "s:Sf12SIMD2StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD4Storage", + "printedName": "SIMD4Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD4Storage", + "printedName": "Swift.Float.SIMD4Storage", + "usr": "s:Sf12SIMD4StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD8Storage", + "printedName": "SIMD8Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD8Storage", + "printedName": "Swift.Float.SIMD8Storage", + "usr": "s:Sf12SIMD8StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD16Storage", + "printedName": "SIMD16Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD16Storage", + "printedName": "Swift.Float.SIMD16Storage", + "usr": "s:Sf13SIMD16StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD32Storage", + "printedName": "SIMD32Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD32Storage", + "printedName": "Swift.Float.SIMD32Storage", + "usr": "s:Sf13SIMD32StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD64Storage", + "printedName": "SIMD64Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD64Storage", + "printedName": "Swift.Float.SIMD64Storage", + "usr": "s:Sf13SIMD64StorageV" + } + ] + } + ], + "usr": "s:s10SIMDScalarP", + "mangledName": "$ss10SIMDScalarP" + }, + { + "kind": "Conformance", + "name": "_FormatSpecifiable", + "printedName": "_FormatSpecifiable", + "children": [ + { + "kind": "TypeWitness", + "name": "_Arg", + "printedName": "_Arg", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:10Foundation18_FormatSpecifiableP", + "mangledName": "$s10Foundation18_FormatSpecifiableP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSNumber", + "printedName": "Foundation.NSNumber", + "usr": "c:objc(cs)NSNumber" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "CGFloat", + "printedName": "CGFloat", + "children": [ + { + "kind": "Function", + "name": "%", + "printedName": "%(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Func", + "usr": "s:14CoreFoundation7CGFloatV7YogaKitE1roPySo7YGValueVACFZ", + "mangledName": "$s12CoreGraphics7CGFloatV7YogaKitE1roPySo7YGValueVACFZ", + "moduleName": "YogaKit", + "static": true, + "declAttributes": [ + "Postfix", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:14CoreFoundation7CGFloatV", + "mangledName": "$s12CoreGraphics7CGFloatV", + "moduleName": "CoreFoundation", + "intro_Macosx": "10.0", + "intro_iOS": "2.0", + "intro_tvOS": "9.0", + "intro_watchOS": "1.0", + "declAttributes": [ + "Frozen", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "Available", + "Available", + "Available", + "Available", + "Available" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "SignedNumeric", + "printedName": "SignedNumeric", + "usr": "s:s13SignedNumericP", + "mangledName": "$ss13SignedNumericP" + }, + { + "kind": "Conformance", + "name": "Numeric", + "printedName": "Numeric", + "children": [ + { + "kind": "TypeWitness", + "name": "Magnitude", + "printedName": "Magnitude", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ] + } + ], + "usr": "s:Sj", + "mangledName": "$sSj" + }, + { + "kind": "Conformance", + "name": "AdditiveArithmetic", + "printedName": "AdditiveArithmetic", + "usr": "s:s18AdditiveArithmeticP", + "mangledName": "$ss18AdditiveArithmeticP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "BinaryFloatingPoint", + "printedName": "BinaryFloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "RawSignificand", + "printedName": "RawSignificand", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + }, + { + "kind": "TypeWitness", + "name": "RawExponent", + "printedName": "RawExponent", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + } + ], + "usr": "s:SB", + "mangledName": "$sSB" + }, + { + "kind": "Conformance", + "name": "ExpressibleByFloatLiteral", + "printedName": "ExpressibleByFloatLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "FloatLiteralType", + "printedName": "FloatLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ] + } + ], + "usr": "s:s25ExpressibleByFloatLiteralP", + "mangledName": "$ss25ExpressibleByFloatLiteralP" + }, + { + "kind": "Conformance", + "name": "FloatingPoint", + "printedName": "FloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "Exponent", + "printedName": "Exponent", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SF", + "mangledName": "$sSF" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Strideable", + "printedName": "Strideable", + "children": [ + { + "kind": "TypeWitness", + "name": "Stride", + "printedName": "Stride", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ] + } + ], + "usr": "s:Sx", + "mangledName": "$sSx" + }, + { + "kind": "Conformance", + "name": "Comparable", + "printedName": "Comparable", + "usr": "s:SL", + "mangledName": "$sSL" + }, + { + "kind": "Conformance", + "name": "_CVarArgPassedAsDouble", + "printedName": "_CVarArgPassedAsDouble", + "usr": "s:s22_CVarArgPassedAsDoubleP", + "mangledName": "$ss22_CVarArgPassedAsDoubleP" + }, + { + "kind": "Conformance", + "name": "_CVarArgAligned", + "printedName": "_CVarArgAligned", + "usr": "s:s15_CVarArgAlignedP", + "mangledName": "$ss15_CVarArgAlignedP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "_FormatSpecifiable", + "printedName": "_FormatSpecifiable", + "children": [ + { + "kind": "TypeWitness", + "name": "_Arg", + "printedName": "_Arg", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ] + } + ], + "usr": "s:10Foundation18_FormatSpecifiableP", + "mangledName": "$s10Foundation18_FormatSpecifiableP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSNumber", + "printedName": "Foundation.NSNumber", + "usr": "c:objc(cs)NSNumber" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "YGValue", + "printedName": "YGValue", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(integerLiteral:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitE14integerLiteralABSi_tcfc", + "mangledName": "$sSo7YGValueV7YogaKitE14integerLiteralABSi_tcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(floatLiteral:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitE12floatLiteralABSf_tcfc", + "mangledName": "$sSo7YGValueV7YogaKitE12floatLiteralABSf_tcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitEyABSfcfc", + "mangledName": "$sSo7YGValueV7YogaKitEyABSfcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitEyAB14CoreFoundation7CGFloatVcfc", + "mangledName": "$sSo7YGValueV7YogaKitEyAB12CoreGraphics7CGFloatVcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + } + ], + "declKind": "Struct", + "usr": "c:@S@YGValue", + "moduleName": "yoga", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByFloatLiteral", + "printedName": "ExpressibleByFloatLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "FloatLiteralType", + "printedName": "FloatLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:s25ExpressibleByFloatLiteralP", + "mangledName": "$ss25ExpressibleByFloatLiteralP" + } + ] + } + ], + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface new file mode 100644 index 0000000..5ae6b9a --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface @@ -0,0 +1,28 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +// swift-module-flags: -target arm64-apple-ios13.4-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name YogaKit +// swift-module-flags-ignorable: -enable-bare-slash-regex +import Swift +@_exported import YogaKit +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import yoga +postfix operator % +extension Swift.Int { + postfix public static func % (value: Swift.Int) -> yoga.YGValue +} +extension Swift.Float { + postfix public static func % (value: Swift.Float) -> yoga.YGValue +} +extension CoreFoundation.CGFloat { + postfix public static func % (value: CoreFoundation.CGFloat) -> yoga.YGValue +} +extension yoga.YGValue : Swift.ExpressibleByIntegerLiteral, Swift.ExpressibleByFloatLiteral { + public init(integerLiteral value: Swift.Int) + public init(floatLiteral value: Swift.Float) + public init(_ value: Swift.Float) + public init(_ value: CoreFoundation.CGFloat) + public typealias FloatLiteralType = Swift.Float + public typealias IntegerLiteralType = Swift.Int +} diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc new file mode 100644 index 0000000..303039e Binary files /dev/null and b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc differ diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface new file mode 100644 index 0000000..5ae6b9a --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface @@ -0,0 +1,28 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +// swift-module-flags: -target arm64-apple-ios13.4-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name YogaKit +// swift-module-flags-ignorable: -enable-bare-slash-regex +import Swift +@_exported import YogaKit +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import yoga +postfix operator % +extension Swift.Int { + postfix public static func % (value: Swift.Int) -> yoga.YGValue +} +extension Swift.Float { + postfix public static func % (value: Swift.Float) -> yoga.YGValue +} +extension CoreFoundation.CGFloat { + postfix public static func % (value: CoreFoundation.CGFloat) -> yoga.YGValue +} +extension yoga.YGValue : Swift.ExpressibleByIntegerLiteral, Swift.ExpressibleByFloatLiteral { + public init(integerLiteral value: Swift.Int) + public init(floatLiteral value: Swift.Float) + public init(_ value: Swift.Float) + public init(_ value: CoreFoundation.CGFloat) + public typealias FloatLiteralType = Swift.Float + public typealias IntegerLiteralType = Swift.Int +} diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.abi.json b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.abi.json new file mode 100644 index 0000000..4141769 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.abi.json @@ -0,0 +1,1429 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "TopLevel", + "printedName": "TopLevel", + "children": [ + { + "kind": "Import", + "name": "yoga", + "printedName": "yoga", + "declKind": "Import", + "moduleName": "YogaKit", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "OperatorDecl", + "name": "%", + "printedName": "%", + "declKind": "PostfixOperator", + "moduleName": "YogaKit", + "declAttributes": [ + "Postfix" + ] + }, + { + "kind": "TypeDecl", + "name": "Int", + "printedName": "Int", + "children": [ + { + "kind": "Function", + "name": "%", + "printedName": "%(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:Si7YogaKitE1roPySo7YGValueVSiFZ", + "mangledName": "$sSi7YogaKitE1roPySo7YGValueVSiFZ", + "moduleName": "YogaKit", + "static": true, + "declAttributes": [ + "Postfix", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:Si", + "mangledName": "$sSi", + "moduleName": "Swift", + "declAttributes": [ + "Frozen" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "FixedWidthInteger", + "printedName": "FixedWidthInteger", + "usr": "s:s17FixedWidthIntegerP", + "mangledName": "$ss17FixedWidthIntegerP" + }, + { + "kind": "Conformance", + "name": "SignedInteger", + "printedName": "SignedInteger", + "usr": "s:SZ", + "mangledName": "$sSZ" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByBuiltinIntegerLiteral", + "printedName": "_ExpressibleByBuiltinIntegerLiteral", + "usr": "s:s35_ExpressibleByBuiltinIntegerLiteralP", + "mangledName": "$ss35_ExpressibleByBuiltinIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "BinaryInteger", + "printedName": "BinaryInteger", + "children": [ + { + "kind": "TypeWitness", + "name": "Words", + "printedName": "Words", + "children": [ + { + "kind": "TypeNominal", + "name": "Words", + "printedName": "Swift.Int.Words", + "usr": "s:Si5WordsV" + } + ] + } + ], + "usr": "s:Sz", + "mangledName": "$sSz" + }, + { + "kind": "Conformance", + "name": "LosslessStringConvertible", + "printedName": "LosslessStringConvertible", + "usr": "s:s25LosslessStringConvertibleP", + "mangledName": "$ss25LosslessStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "SignedNumeric", + "printedName": "SignedNumeric", + "usr": "s:s13SignedNumericP", + "mangledName": "$ss13SignedNumericP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "Numeric", + "printedName": "Numeric", + "children": [ + { + "kind": "TypeWitness", + "name": "Magnitude", + "printedName": "Magnitude", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + } + ], + "usr": "s:Sj", + "mangledName": "$sSj" + }, + { + "kind": "Conformance", + "name": "Strideable", + "printedName": "Strideable", + "children": [ + { + "kind": "TypeWitness", + "name": "Stride", + "printedName": "Stride", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:Sx", + "mangledName": "$sSx" + }, + { + "kind": "Conformance", + "name": "AdditiveArithmetic", + "printedName": "AdditiveArithmetic", + "usr": "s:s18AdditiveArithmeticP", + "mangledName": "$ss18AdditiveArithmeticP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "Comparable", + "printedName": "Comparable", + "usr": "s:SL", + "mangledName": "$sSL" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "CodingKeyRepresentable", + "printedName": "CodingKeyRepresentable", + "usr": "s:s22CodingKeyRepresentableP", + "mangledName": "$ss22CodingKeyRepresentableP" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "_CustomPlaygroundQuickLookable", + "printedName": "_CustomPlaygroundQuickLookable", + "usr": "s:s30_CustomPlaygroundQuickLookableP", + "mangledName": "$ss30_CustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "MirrorPath", + "printedName": "MirrorPath", + "usr": "s:s10MirrorPathP", + "mangledName": "$ss10MirrorPathP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "_HasCustomAnyHashableRepresentation", + "printedName": "_HasCustomAnyHashableRepresentation", + "usr": "s:s35_HasCustomAnyHashableRepresentationP", + "mangledName": "$ss35_HasCustomAnyHashableRepresentationP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SIMDScalar", + "printedName": "SIMDScalar", + "children": [ + { + "kind": "TypeWitness", + "name": "SIMDMaskScalar", + "printedName": "SIMDMaskScalar", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD2Storage", + "printedName": "SIMD2Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD2Storage", + "printedName": "Swift.Int.SIMD2Storage", + "usr": "s:Si12SIMD2StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD4Storage", + "printedName": "SIMD4Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD4Storage", + "printedName": "Swift.Int.SIMD4Storage", + "usr": "s:Si12SIMD4StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD8Storage", + "printedName": "SIMD8Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD8Storage", + "printedName": "Swift.Int.SIMD8Storage", + "usr": "s:Si12SIMD8StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD16Storage", + "printedName": "SIMD16Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD16Storage", + "printedName": "Swift.Int.SIMD16Storage", + "usr": "s:Si13SIMD16StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD32Storage", + "printedName": "SIMD32Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD32Storage", + "printedName": "Swift.Int.SIMD32Storage", + "usr": "s:Si13SIMD32StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD64Storage", + "printedName": "SIMD64Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD64Storage", + "printedName": "Swift.Int.SIMD64Storage", + "usr": "s:Si13SIMD64StorageV" + } + ] + } + ], + "usr": "s:s10SIMDScalarP", + "mangledName": "$ss10SIMDScalarP" + }, + { + "kind": "Conformance", + "name": "_FormatSpecifiable", + "printedName": "_FormatSpecifiable", + "children": [ + { + "kind": "TypeWitness", + "name": "_Arg", + "printedName": "_Arg", + "children": [ + { + "kind": "TypeNominal", + "name": "Int64", + "printedName": "Swift.Int64", + "usr": "s:s5Int64V" + } + ] + } + ], + "usr": "s:10Foundation18_FormatSpecifiableP", + "mangledName": "$s10Foundation18_FormatSpecifiableP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSNumber", + "printedName": "Foundation.NSNumber", + "usr": "c:objc(cs)NSNumber" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Float", + "printedName": "Float", + "children": [ + { + "kind": "Function", + "name": "%", + "printedName": "%(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Func", + "usr": "s:Sf7YogaKitE1roPySo7YGValueVSfFZ", + "mangledName": "$sSf7YogaKitE1roPySo7YGValueVSfFZ", + "moduleName": "YogaKit", + "static": true, + "declAttributes": [ + "Postfix", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:Sf", + "mangledName": "$sSf", + "moduleName": "Swift", + "declAttributes": [ + "Frozen" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "_CustomPlaygroundQuickLookable", + "printedName": "_CustomPlaygroundQuickLookable", + "usr": "s:s30_CustomPlaygroundQuickLookableP", + "mangledName": "$ss30_CustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "_CVarArgPassedAsDouble", + "printedName": "_CVarArgPassedAsDouble", + "usr": "s:s22_CVarArgPassedAsDoubleP", + "mangledName": "$ss22_CVarArgPassedAsDoubleP" + }, + { + "kind": "Conformance", + "name": "_CVarArgAligned", + "printedName": "_CVarArgAligned", + "usr": "s:s15_CVarArgAlignedP", + "mangledName": "$ss15_CVarArgAlignedP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "LosslessStringConvertible", + "printedName": "LosslessStringConvertible", + "usr": "s:s25LosslessStringConvertibleP", + "mangledName": "$ss25LosslessStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "TextOutputStreamable", + "printedName": "TextOutputStreamable", + "usr": "s:s20TextOutputStreamableP", + "mangledName": "$ss20TextOutputStreamableP" + }, + { + "kind": "Conformance", + "name": "BinaryFloatingPoint", + "printedName": "BinaryFloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "RawSignificand", + "printedName": "RawSignificand", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt32", + "printedName": "Swift.UInt32", + "usr": "s:s6UInt32V" + } + ] + }, + { + "kind": "TypeWitness", + "name": "RawExponent", + "printedName": "RawExponent", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + } + ], + "usr": "s:SB", + "mangledName": "$sSB" + }, + { + "kind": "Conformance", + "name": "ExpressibleByFloatLiteral", + "printedName": "ExpressibleByFloatLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "FloatLiteralType", + "printedName": "FloatLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:s25ExpressibleByFloatLiteralP", + "mangledName": "$ss25ExpressibleByFloatLiteralP" + }, + { + "kind": "Conformance", + "name": "FloatingPoint", + "printedName": "FloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "Exponent", + "printedName": "Exponent", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SF", + "mangledName": "$sSF" + }, + { + "kind": "Conformance", + "name": "SignedNumeric", + "printedName": "SignedNumeric", + "usr": "s:s13SignedNumericP", + "mangledName": "$ss13SignedNumericP" + }, + { + "kind": "Conformance", + "name": "Numeric", + "printedName": "Numeric", + "children": [ + { + "kind": "TypeWitness", + "name": "Magnitude", + "printedName": "Magnitude", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:Sj", + "mangledName": "$sSj" + }, + { + "kind": "Conformance", + "name": "AdditiveArithmetic", + "printedName": "AdditiveArithmetic", + "usr": "s:s18AdditiveArithmeticP", + "mangledName": "$ss18AdditiveArithmeticP" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByBuiltinIntegerLiteral", + "printedName": "_ExpressibleByBuiltinIntegerLiteral", + "usr": "s:s35_ExpressibleByBuiltinIntegerLiteralP", + "mangledName": "$ss35_ExpressibleByBuiltinIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int64", + "printedName": "Swift.Int64", + "usr": "s:s5Int64V" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByBuiltinFloatLiteral", + "printedName": "_ExpressibleByBuiltinFloatLiteral", + "usr": "s:s33_ExpressibleByBuiltinFloatLiteralP", + "mangledName": "$ss33_ExpressibleByBuiltinFloatLiteralP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "_HasCustomAnyHashableRepresentation", + "printedName": "_HasCustomAnyHashableRepresentation", + "usr": "s:s35_HasCustomAnyHashableRepresentationP", + "mangledName": "$ss35_HasCustomAnyHashableRepresentationP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Strideable", + "printedName": "Strideable", + "children": [ + { + "kind": "TypeWitness", + "name": "Stride", + "printedName": "Stride", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:Sx", + "mangledName": "$sSx" + }, + { + "kind": "Conformance", + "name": "Comparable", + "printedName": "Comparable", + "usr": "s:SL", + "mangledName": "$sSL" + }, + { + "kind": "Conformance", + "name": "SIMDScalar", + "printedName": "SIMDScalar", + "children": [ + { + "kind": "TypeWitness", + "name": "SIMDMaskScalar", + "printedName": "SIMDMaskScalar", + "children": [ + { + "kind": "TypeNominal", + "name": "Int32", + "printedName": "Swift.Int32", + "usr": "s:s5Int32V" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD2Storage", + "printedName": "SIMD2Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD2Storage", + "printedName": "Swift.Float.SIMD2Storage", + "usr": "s:Sf12SIMD2StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD4Storage", + "printedName": "SIMD4Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD4Storage", + "printedName": "Swift.Float.SIMD4Storage", + "usr": "s:Sf12SIMD4StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD8Storage", + "printedName": "SIMD8Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD8Storage", + "printedName": "Swift.Float.SIMD8Storage", + "usr": "s:Sf12SIMD8StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD16Storage", + "printedName": "SIMD16Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD16Storage", + "printedName": "Swift.Float.SIMD16Storage", + "usr": "s:Sf13SIMD16StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD32Storage", + "printedName": "SIMD32Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD32Storage", + "printedName": "Swift.Float.SIMD32Storage", + "usr": "s:Sf13SIMD32StorageV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SIMD64Storage", + "printedName": "SIMD64Storage", + "children": [ + { + "kind": "TypeNominal", + "name": "SIMD64Storage", + "printedName": "Swift.Float.SIMD64Storage", + "usr": "s:Sf13SIMD64StorageV" + } + ] + } + ], + "usr": "s:s10SIMDScalarP", + "mangledName": "$ss10SIMDScalarP" + }, + { + "kind": "Conformance", + "name": "_FormatSpecifiable", + "printedName": "_FormatSpecifiable", + "children": [ + { + "kind": "TypeWitness", + "name": "_Arg", + "printedName": "_Arg", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:10Foundation18_FormatSpecifiableP", + "mangledName": "$s10Foundation18_FormatSpecifiableP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSNumber", + "printedName": "Foundation.NSNumber", + "usr": "c:objc(cs)NSNumber" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "CGFloat", + "printedName": "CGFloat", + "children": [ + { + "kind": "Function", + "name": "%", + "printedName": "%(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Func", + "usr": "s:14CoreFoundation7CGFloatV7YogaKitE1roPySo7YGValueVACFZ", + "mangledName": "$s12CoreGraphics7CGFloatV7YogaKitE1roPySo7YGValueVACFZ", + "moduleName": "YogaKit", + "static": true, + "declAttributes": [ + "Postfix", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:14CoreFoundation7CGFloatV", + "mangledName": "$s12CoreGraphics7CGFloatV", + "moduleName": "CoreFoundation", + "intro_Macosx": "10.0", + "intro_iOS": "2.0", + "intro_tvOS": "9.0", + "intro_watchOS": "1.0", + "declAttributes": [ + "Frozen", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "Available", + "Available", + "Available", + "Available", + "Available" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "SignedNumeric", + "printedName": "SignedNumeric", + "usr": "s:s13SignedNumericP", + "mangledName": "$ss13SignedNumericP" + }, + { + "kind": "Conformance", + "name": "Numeric", + "printedName": "Numeric", + "children": [ + { + "kind": "TypeWitness", + "name": "Magnitude", + "printedName": "Magnitude", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ] + } + ], + "usr": "s:Sj", + "mangledName": "$sSj" + }, + { + "kind": "Conformance", + "name": "AdditiveArithmetic", + "printedName": "AdditiveArithmetic", + "usr": "s:s18AdditiveArithmeticP", + "mangledName": "$ss18AdditiveArithmeticP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "BinaryFloatingPoint", + "printedName": "BinaryFloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "RawSignificand", + "printedName": "RawSignificand", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + }, + { + "kind": "TypeWitness", + "name": "RawExponent", + "printedName": "RawExponent", + "children": [ + { + "kind": "TypeNominal", + "name": "UInt", + "printedName": "Swift.UInt", + "usr": "s:Su" + } + ] + } + ], + "usr": "s:SB", + "mangledName": "$sSB" + }, + { + "kind": "Conformance", + "name": "ExpressibleByFloatLiteral", + "printedName": "ExpressibleByFloatLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "FloatLiteralType", + "printedName": "FloatLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ] + } + ], + "usr": "s:s25ExpressibleByFloatLiteralP", + "mangledName": "$ss25ExpressibleByFloatLiteralP" + }, + { + "kind": "Conformance", + "name": "FloatingPoint", + "printedName": "FloatingPoint", + "children": [ + { + "kind": "TypeWitness", + "name": "Exponent", + "printedName": "Exponent", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SF", + "mangledName": "$sSF" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Strideable", + "printedName": "Strideable", + "children": [ + { + "kind": "TypeWitness", + "name": "Stride", + "printedName": "Stride", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ] + } + ], + "usr": "s:Sx", + "mangledName": "$sSx" + }, + { + "kind": "Conformance", + "name": "Comparable", + "printedName": "Comparable", + "usr": "s:SL", + "mangledName": "$sSL" + }, + { + "kind": "Conformance", + "name": "_CVarArgPassedAsDouble", + "printedName": "_CVarArgPassedAsDouble", + "usr": "s:s22_CVarArgPassedAsDoubleP", + "mangledName": "$ss22_CVarArgPassedAsDoubleP" + }, + { + "kind": "Conformance", + "name": "_CVarArgAligned", + "printedName": "_CVarArgAligned", + "usr": "s:s15_CVarArgAlignedP", + "mangledName": "$ss15_CVarArgAlignedP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "_FormatSpecifiable", + "printedName": "_FormatSpecifiable", + "children": [ + { + "kind": "TypeWitness", + "name": "_Arg", + "printedName": "_Arg", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ] + } + ], + "usr": "s:10Foundation18_FormatSpecifiableP", + "mangledName": "$s10Foundation18_FormatSpecifiableP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSNumber", + "printedName": "Foundation.NSNumber", + "usr": "c:objc(cs)NSNumber" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "YGValue", + "printedName": "YGValue", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(integerLiteral:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitE14integerLiteralABSi_tcfc", + "mangledName": "$sSo7YGValueV7YogaKitE14integerLiteralABSi_tcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(floatLiteral:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitE12floatLiteralABSf_tcfc", + "mangledName": "$sSo7YGValueV7YogaKitE12floatLiteralABSf_tcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitEyABSfcfc", + "mangledName": "$sSo7YGValueV7YogaKitEyABSfcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "YGValue", + "printedName": "yoga.YGValue", + "usr": "c:@S@YGValue" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Constructor", + "usr": "s:So7YGValueV7YogaKitEyAB14CoreFoundation7CGFloatVcfc", + "mangledName": "$sSo7YGValueV7YogaKitEyAB12CoreGraphics7CGFloatVcfc", + "moduleName": "YogaKit", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Designated" + } + ], + "declKind": "Struct", + "usr": "c:@S@YGValue", + "moduleName": "yoga", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "ExpressibleByIntegerLiteral", + "printedName": "ExpressibleByIntegerLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "IntegerLiteralType", + "printedName": "IntegerLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:s27ExpressibleByIntegerLiteralP", + "mangledName": "$ss27ExpressibleByIntegerLiteralP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByFloatLiteral", + "printedName": "ExpressibleByFloatLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "FloatLiteralType", + "printedName": "FloatLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ] + } + ], + "usr": "s:s25ExpressibleByFloatLiteralP", + "mangledName": "$ss25ExpressibleByFloatLiteralP" + } + ] + } + ], + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface new file mode 100644 index 0000000..85c4b07 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface @@ -0,0 +1,28 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +// swift-module-flags: -target x86_64-apple-ios13.4-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name YogaKit +// swift-module-flags-ignorable: -enable-bare-slash-regex +import Swift +@_exported import YogaKit +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import yoga +postfix operator % +extension Swift.Int { + postfix public static func % (value: Swift.Int) -> yoga.YGValue +} +extension Swift.Float { + postfix public static func % (value: Swift.Float) -> yoga.YGValue +} +extension CoreFoundation.CGFloat { + postfix public static func % (value: CoreFoundation.CGFloat) -> yoga.YGValue +} +extension yoga.YGValue : Swift.ExpressibleByIntegerLiteral, Swift.ExpressibleByFloatLiteral { + public init(integerLiteral value: Swift.Int) + public init(floatLiteral value: Swift.Float) + public init(_ value: Swift.Float) + public init(_ value: CoreFoundation.CGFloat) + public typealias FloatLiteralType = Swift.Float + public typealias IntegerLiteralType = Swift.Int +} diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc new file mode 100644 index 0000000..4bf7f29 Binary files /dev/null and b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc differ diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface new file mode 100644 index 0000000..85c4b07 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface @@ -0,0 +1,28 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) +// swift-module-flags: -target x86_64-apple-ios13.4-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name YogaKit +// swift-module-flags-ignorable: -enable-bare-slash-regex +import Swift +@_exported import YogaKit +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import yoga +postfix operator % +extension Swift.Int { + postfix public static func % (value: Swift.Int) -> yoga.YGValue +} +extension Swift.Float { + postfix public static func % (value: Swift.Float) -> yoga.YGValue +} +extension CoreFoundation.CGFloat { + postfix public static func % (value: CoreFoundation.CGFloat) -> yoga.YGValue +} +extension yoga.YGValue : Swift.ExpressibleByIntegerLiteral, Swift.ExpressibleByFloatLiteral { + public init(integerLiteral value: Swift.Int) + public init(floatLiteral value: Swift.Float) + public init(_ value: Swift.Float) + public init(_ value: CoreFoundation.CGFloat) + public typealias FloatLiteralType = Swift.Float + public typealias IntegerLiteralType = Swift.Int +} diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/module.modulemap b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/module.modulemap new file mode 100644 index 0000000..3f248c4 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module YogaKit { + umbrella header "YogaKit-umbrella.h" + + export * + module * { export * } +} + +module YogaKit.Swift { + header "YogaKit-Swift.h" + requires objc +} diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/PrivateHeaders/YGLayout+Private.h b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/PrivateHeaders/YGLayout+Private.h new file mode 100644 index 0000000..63fd8c7 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/PrivateHeaders/YGLayout+Private.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import "YGLayout.h" + +@interface YGLayout () + +@property(nonatomic, assign, readonly) YGNodeRef node; + +- (instancetype)initWithView:(UIView*)view; + +@end diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/YogaKit b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/YogaKit new file mode 100755 index 0000000..ea90f89 Binary files /dev/null and b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/YogaKit differ diff --git a/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/_CodeSignature/CodeResources b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..e62b7e8 --- /dev/null +++ b/ios/xcframeworks/YogaKit.xcframework/ios-arm64_x86_64-simulator/YogaKit.framework/_CodeSignature/CodeResources @@ -0,0 +1,300 @@ + + + + + files + + Headers/UIView+Yoga.h + + 1JU0qAi/+f9r7mlNQtGPmivqToA= + + Headers/YGLayout.h + + KwAGFKSyQmDqs17JW1Y6ZVyOr8w= + + Headers/YogaKit-Swift.h + + qsIJLgqDifzdF7sbyVb0ZhM855c= + + Headers/YogaKit-umbrella.h + + T5kY+Wjb7LkuoQwlYA8JNnAAwpw= + + Info.plist + + mK6LJC7dQbyBuLMfUABwfDKriTY= + + Modules/YogaKit.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo + + 1D4jSDfr3qINs1UxHJf+jYaowXQ= + + Modules/YogaKit.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo + + JHUXrVD0fo4WF9lVugSblJRIOrA= + + Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.abi.json + + 9to/jtdH9PwPbgxbthHD8ut/0Fs= + + Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface + + /yLpIDOCRWV6l4LmhhzE3xiKB1w= + + Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc + + iUed2MUMLg+gUFrDnJ3Z99nUZdw= + + Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface + + /yLpIDOCRWV6l4LmhhzE3xiKB1w= + + Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftmodule + + MKrJ035vKTi+UVKr7HAHa9dQocg= + + Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.abi.json + + 9to/jtdH9PwPbgxbthHD8ut/0Fs= + + Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface + + EdWPzL4A6ZBEyVXKuIQ3vE+GOpE= + + Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc + + LOR7bwDRQZJy/xk2Nauyqmyqoz8= + + Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface + + EdWPzL4A6ZBEyVXKuIQ3vE+GOpE= + + Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftmodule + + zHBrR97j6aUFedL5OpWnvtZeOqs= + + Modules/module.modulemap + + cfTbz+Z98mkCsBjVIgoBH6nmeV8= + + PrivateHeaders/YGLayout+Private.h + + A69Z3t9Forf79GtQZQv6HNgI4P0= + + + files2 + + Headers/UIView+Yoga.h + + hash2 + + V5DapZ6VzYv5uX2TNbIXFWNwGf040b8iwRzJEtwKEm0= + + + Headers/YGLayout.h + + hash2 + + FebPGx70Ye6Cj63O7XZSjT9ANJOcjcOAj5ATjqQXQ5U= + + + Headers/YogaKit-Swift.h + + hash2 + + agdE8Fgtd+jKaWX441LFpK08LgqMQye1FRdHYLeYL5M= + + + Headers/YogaKit-umbrella.h + + hash2 + + 0w52yK7SVtwtPRUprgeALlxQIASjkgFryZ75p2459sw= + + + Modules/YogaKit.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo + + hash2 + + YL/wNeWcloxqLkoA1LfgOb8WXNy/3HmsF4p3Eky9dag= + + + Modules/YogaKit.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo + + hash2 + + Av5diMLLIzgK4VAcwG4cDZ56JDMXdEGhtzxi074NsKQ= + + + Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.abi.json + + hash2 + + o/KhIxXxXOgbpc9zYG1Ivou2iwxOG4SYEBFfx9qKjXk= + + + Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface + + hash2 + + 8tutj2qOW/ZEeRwEtkh0zzQJ91R80NayB+KIIEUyN/4= + + + Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc + + hash2 + + o+73XAcyQu20jz55BVRd3jCh5E4ktNNSNIS3Zq2TAH0= + + + Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface + + hash2 + + 8tutj2qOW/ZEeRwEtkh0zzQJ91R80NayB+KIIEUyN/4= + + + Modules/YogaKit.swiftmodule/arm64-apple-ios-simulator.swiftmodule + + hash2 + + OdsxWtmgnql0By1WAF2mlMpAn0pHpi4IXGNjTkzV5nM= + + + Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.abi.json + + hash2 + + o/KhIxXxXOgbpc9zYG1Ivou2iwxOG4SYEBFfx9qKjXk= + + + Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface + + hash2 + + HQrE4jHPpQ+If8b19XRRs0R7kaUGbYa6qauo4i8kQws= + + + Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc + + hash2 + + jIpWCEPn6A9NyQBorEBG8+f5JrMBxPy67Jyv14DSKyE= + + + Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface + + hash2 + + HQrE4jHPpQ+If8b19XRRs0R7kaUGbYa6qauo4i8kQws= + + + Modules/YogaKit.swiftmodule/x86_64-apple-ios-simulator.swiftmodule + + hash2 + + Usfm0rEFThZNEXs55hOZeSMyxGHz3OdHIVk+LFvneyY= + + + Modules/module.modulemap + + hash2 + + X0DDvDbR+zPCCQhAandSD1IZC9BLejgqDuUP+rZD+Q4= + + + PrivateHeaders/YGLayout+Private.h + + hash2 + + CX8NB4Rd59KZhjb7wtMyVJlD/zOuXbVXjVqKMKt415o= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ios/xcframeworks/yoga.xcframework/Info.plist b/ios/xcframeworks/yoga.xcframework/Info.plist new file mode 100644 index 0000000..5b6cd1b --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + yoga.framework/yoga + LibraryIdentifier + ios-arm64 + LibraryPath + yoga.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + yoga.framework/yoga + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + yoga.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/YGEnums.h b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/YGEnums.h new file mode 100644 index 0000000..a502d39 --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/YGEnums.h @@ -0,0 +1,145 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// @generated by enums.py + +#pragma once +#include + +// clang-format off + + +YG_EXTERN_C_BEGIN + +YG_ENUM_SEQ_DECL( + YGAlign, + YGAlignAuto, + YGAlignFlexStart, + YGAlignCenter, + YGAlignFlexEnd, + YGAlignStretch, + YGAlignBaseline, + YGAlignSpaceBetween, + YGAlignSpaceAround) + +YG_ENUM_SEQ_DECL( + YGDimension, + YGDimensionWidth, + YGDimensionHeight) + +YG_ENUM_SEQ_DECL( + YGDirection, + YGDirectionInherit, + YGDirectionLTR, + YGDirectionRTL) + +YG_ENUM_SEQ_DECL( + YGDisplay, + YGDisplayFlex, + YGDisplayNone) + +YG_ENUM_SEQ_DECL( + YGEdge, + YGEdgeLeft, + YGEdgeTop, + YGEdgeRight, + YGEdgeBottom, + YGEdgeStart, + YGEdgeEnd, + YGEdgeHorizontal, + YGEdgeVertical, + YGEdgeAll) + +YG_ENUM_DECL( + YGErrata, + YGErrataNone = 0, + YGErrataStretchFlexBasis = 1, + YGErrataAll = 2147483647, + YGErrataClassic = 2147483646) +YG_DEFINE_ENUM_FLAG_OPERATORS(YGErrata) + +YG_ENUM_SEQ_DECL( + YGExperimentalFeature, + YGExperimentalFeatureWebFlexBasis, + YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge, + YGExperimentalFeatureFixJNILocalRefOverflows) + +YG_ENUM_SEQ_DECL( + YGFlexDirection, + YGFlexDirectionColumn, + YGFlexDirectionColumnReverse, + YGFlexDirectionRow, + YGFlexDirectionRowReverse) + +YG_ENUM_SEQ_DECL( + YGGutter, + YGGutterColumn, + YGGutterRow, + YGGutterAll) + +YG_ENUM_SEQ_DECL( + YGJustify, + YGJustifyFlexStart, + YGJustifyCenter, + YGJustifyFlexEnd, + YGJustifySpaceBetween, + YGJustifySpaceAround, + YGJustifySpaceEvenly) + +YG_ENUM_SEQ_DECL( + YGLogLevel, + YGLogLevelError, + YGLogLevelWarn, + YGLogLevelInfo, + YGLogLevelDebug, + YGLogLevelVerbose, + YGLogLevelFatal) + +YG_ENUM_SEQ_DECL( + YGMeasureMode, + YGMeasureModeUndefined, + YGMeasureModeExactly, + YGMeasureModeAtMost) + +YG_ENUM_SEQ_DECL( + YGNodeType, + YGNodeTypeDefault, + YGNodeTypeText) + +YG_ENUM_SEQ_DECL( + YGOverflow, + YGOverflowVisible, + YGOverflowHidden, + YGOverflowScroll) + +YG_ENUM_SEQ_DECL( + YGPositionType, + YGPositionTypeStatic, + YGPositionTypeRelative, + YGPositionTypeAbsolute) + +YG_ENUM_DECL( + YGPrintOptions, + YGPrintOptionsLayout = 1, + YGPrintOptionsStyle = 2, + YGPrintOptionsChildren = 4) +YG_DEFINE_ENUM_FLAG_OPERATORS(YGPrintOptions) + +YG_ENUM_SEQ_DECL( + YGUnit, + YGUnitUndefined, + YGUnitPoint, + YGUnitPercent, + YGUnitAuto) + +YG_ENUM_SEQ_DECL( + YGWrap, + YGWrapNoWrap, + YGWrapWrap, + YGWrapWrapReverse) + +YG_EXTERN_C_END diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/YGMacros.h b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/YGMacros.h new file mode 100644 index 0000000..cd13711 --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/YGMacros.h @@ -0,0 +1,138 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#ifdef __cplusplus +#include +#endif + +#ifdef __cplusplus +#define YG_EXTERN_C_BEGIN extern "C" { +#define YG_EXTERN_C_END } +#else +#define YG_EXTERN_C_BEGIN +#define YG_EXTERN_C_END +#endif + +#if defined(__cplusplus) +#define YG_DEPRECATED(message) [[deprecated(message)]] +#elif defined(_MSC_VER) +#define YG_DEPRECATED(message) __declspec(deprecated(message)) +#else +#define YG_DEPRECATED(message) __attribute__((deprecated(message))) +#endif + +#ifdef _WINDLL +#define WIN_EXPORT __declspec(dllexport) +#else +#define WIN_EXPORT +#endif + +#ifndef YOGA_EXPORT +#ifdef _MSC_VER +#define YOGA_EXPORT +#else +#define YOGA_EXPORT __attribute__((visibility("default"))) +#endif +#endif + +#ifdef NS_ENUM +// Cannot use NSInteger as NSInteger has a different size than int (which is the +// default type of a enum). Therefor when linking the Yoga C library into obj-c +// the header is a mismatch for the Yoga ABI. +#define YG_ENUM_BEGIN(name) NS_ENUM(int, name) +#define YG_ENUM_END(name) +#else +#define YG_ENUM_BEGIN(name) enum name +#define YG_ENUM_END(name) name +#endif + +#ifdef __cplusplus +#define YG_DEFINE_ENUM_FLAG_OPERATORS(name) \ + extern "C++" { \ + constexpr inline name operator~(name a) { \ + return static_cast( \ + ~static_cast::type>(a)); \ + } \ + constexpr inline name operator|(name a, name b) { \ + return static_cast( \ + static_cast::type>(a) | \ + static_cast::type>(b)); \ + } \ + constexpr inline name operator&(name a, name b) { \ + return static_cast( \ + static_cast::type>(a) & \ + static_cast::type>(b)); \ + } \ + constexpr inline name operator^(name a, name b) { \ + return static_cast( \ + static_cast::type>(a) ^ \ + static_cast::type>(b)); \ + } \ + inline name& operator|=(name& a, name b) { \ + return reinterpret_cast( \ + reinterpret_cast::type&>(a) |= \ + static_cast::type>(b)); \ + } \ + inline name& operator&=(name& a, name b) { \ + return reinterpret_cast( \ + reinterpret_cast::type&>(a) &= \ + static_cast::type>(b)); \ + } \ + inline name& operator^=(name& a, name b) { \ + return reinterpret_cast( \ + reinterpret_cast::type&>(a) ^= \ + static_cast::type>(b)); \ + } \ + } +#else +#define YG_DEFINE_ENUM_FLAG_OPERATORS(name) +#endif + +#ifdef __cplusplus +namespace facebook { +namespace yoga { +namespace enums { + +template +constexpr int count(); // can't use `= delete` due to a defect in clang < 3.9 + +namespace detail { +template +constexpr int n() { + return sizeof...(xs); +} +} // namespace detail + +} // namespace enums +} // namespace yoga +} // namespace facebook +#endif + +#define YG_ENUM_DECL(NAME, ...) \ + typedef YG_ENUM_BEGIN(NAME){__VA_ARGS__} YG_ENUM_END(NAME); \ + WIN_EXPORT const char* NAME##ToString(NAME); + +#ifdef __cplusplus +#define YG_ENUM_SEQ_DECL(NAME, ...) \ + YG_ENUM_DECL(NAME, __VA_ARGS__) \ + YG_EXTERN_C_END \ + namespace facebook { \ + namespace yoga { \ + namespace enums { \ + template <> \ + constexpr int count() { \ + return detail::n<__VA_ARGS__>(); \ + } \ + } \ + } \ + } \ + YG_EXTERN_C_BEGIN +#else +#define YG_ENUM_SEQ_DECL YG_ENUM_DECL +#endif diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/YGValue.h b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/YGValue.h new file mode 100644 index 0000000..59f6f5e --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/YGValue.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include + +YG_EXTERN_C_BEGIN + +typedef struct YGValue { + float value; + YGUnit unit; +} YGValue; + +YOGA_EXPORT extern const YGValue YGValueAuto; +YOGA_EXPORT extern const YGValue YGValueUndefined; +YOGA_EXPORT extern const YGValue YGValueZero; + +YG_EXTERN_C_END + +#ifdef __cplusplus +#include +constexpr float YGUndefined = std::numeric_limits::quiet_NaN(); +#else +#include +#define YGUndefined NAN +#endif + +#ifdef __cplusplus +inline bool operator==(const YGValue& lhs, const YGValue& rhs) { + if (lhs.unit != rhs.unit) { + return false; + } + + switch (lhs.unit) { + case YGUnitUndefined: + case YGUnitAuto: + return true; + case YGUnitPoint: + case YGUnitPercent: + return lhs.value == rhs.value; + } + + return false; +} + +inline bool operator!=(const YGValue& lhs, const YGValue& rhs) { + return !(lhs == rhs); +} + +inline YGValue operator-(const YGValue& value) { + return {-value.value, value.unit}; +} +#endif diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/Yoga-umbrella.h b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/Yoga-umbrella.h new file mode 100644 index 0000000..acd8a09 --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/Yoga-umbrella.h @@ -0,0 +1,20 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "YGEnums.h" +#import "YGMacros.h" +#import "YGValue.h" +#import "Yoga.h" + +FOUNDATION_EXPORT double yogaVersionNumber; +FOUNDATION_EXPORT const unsigned char yogaVersionString[]; + diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/Yoga.h b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/Yoga.h new file mode 100644 index 0000000..de07aea --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Headers/Yoga.h @@ -0,0 +1,381 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +#ifndef __cplusplus +#include +#endif + +#include +#include +#include + +YG_EXTERN_C_BEGIN + +typedef struct YGSize { + float width; + float height; +} YGSize; + +typedef struct YGConfig* YGConfigRef; + +typedef struct YGNode* YGNodeRef; +typedef const struct YGNode* YGNodeConstRef; + +typedef YGSize (*YGMeasureFunc)( + YGNodeRef node, + float width, + YGMeasureMode widthMode, + float height, + YGMeasureMode heightMode); +typedef float (*YGBaselineFunc)(YGNodeRef node, float width, float height); +typedef void (*YGDirtiedFunc)(YGNodeRef node); +typedef void (*YGPrintFunc)(YGNodeRef node); +typedef void (*YGNodeCleanupFunc)(YGNodeRef node); +typedef int (*YGLogger)( + YGConfigRef config, + YGNodeRef node, + YGLogLevel level, + const char* format, + va_list args); +typedef YGNodeRef ( + *YGCloneNodeFunc)(YGNodeRef oldNode, YGNodeRef owner, int childIndex); + +// YGNode +WIN_EXPORT YGNodeRef YGNodeNew(void); +WIN_EXPORT YGNodeRef YGNodeNewWithConfig(YGConfigRef config); +WIN_EXPORT YGNodeRef YGNodeClone(YGNodeRef node); +WIN_EXPORT void YGNodeFree(YGNodeRef node); +WIN_EXPORT void YGNodeFreeRecursiveWithCleanupFunc( + YGNodeRef node, + YGNodeCleanupFunc cleanup); +WIN_EXPORT void YGNodeFreeRecursive(YGNodeRef node); +WIN_EXPORT void YGNodeReset(YGNodeRef node); + +WIN_EXPORT void YGNodeInsertChild( + YGNodeRef node, + YGNodeRef child, + uint32_t index); + +WIN_EXPORT void YGNodeSwapChild( + YGNodeRef node, + YGNodeRef child, + uint32_t index); + +WIN_EXPORT void YGNodeRemoveChild(YGNodeRef node, YGNodeRef child); +WIN_EXPORT void YGNodeRemoveAllChildren(YGNodeRef node); +WIN_EXPORT YGNodeRef YGNodeGetChild(YGNodeRef node, uint32_t index); +WIN_EXPORT YGNodeRef YGNodeGetOwner(YGNodeRef node); +WIN_EXPORT YGNodeRef YGNodeGetParent(YGNodeRef node); +WIN_EXPORT uint32_t YGNodeGetChildCount(YGNodeRef node); +WIN_EXPORT void YGNodeSetChildren( + YGNodeRef owner, + const YGNodeRef* children, + uint32_t count); + +WIN_EXPORT void YGNodeSetIsReferenceBaseline( + YGNodeRef node, + bool isReferenceBaseline); + +WIN_EXPORT bool YGNodeIsReferenceBaseline(YGNodeRef node); + +WIN_EXPORT void YGNodeCalculateLayout( + YGNodeRef node, + float availableWidth, + float availableHeight, + YGDirection ownerDirection); + +// Mark a node as dirty. Only valid for nodes with a custom measure function +// set. +// +// Yoga knows when to mark all other nodes as dirty but because nodes with +// measure functions depend on information not known to Yoga they must perform +// this dirty marking manually. +WIN_EXPORT void YGNodeMarkDirty(YGNodeRef node); + +// Marks the current node and all its descendants as dirty. +// +// Intended to be used for Yoga benchmarks. Don't use in production, as calling +// `YGCalculateLayout` will cause the recalculation of each and every node. +WIN_EXPORT void YGNodeMarkDirtyAndPropagateToDescendants(YGNodeRef node); + +WIN_EXPORT void YGNodePrint(YGNodeRef node, YGPrintOptions options); + +WIN_EXPORT bool YGFloatIsUndefined(float value); + +WIN_EXPORT bool YGNodeCanUseCachedMeasurement( + YGMeasureMode widthMode, + float width, + YGMeasureMode heightMode, + float height, + YGMeasureMode lastWidthMode, + float lastWidth, + YGMeasureMode lastHeightMode, + float lastHeight, + float lastComputedWidth, + float lastComputedHeight, + float marginRow, + float marginColumn, + YGConfigRef config); + +WIN_EXPORT void YGNodeCopyStyle(YGNodeRef dstNode, YGNodeRef srcNode); + +WIN_EXPORT void* YGNodeGetContext(YGNodeRef node); +WIN_EXPORT void YGNodeSetContext(YGNodeRef node, void* context); + +WIN_EXPORT YGConfigRef YGNodeGetConfig(YGNodeRef node); +WIN_EXPORT void YGNodeSetConfig(YGNodeRef node, YGConfigRef config); + +void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled); +bool YGNodeHasMeasureFunc(YGNodeRef node); +WIN_EXPORT void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc); +bool YGNodeHasBaselineFunc(YGNodeRef node); +void YGNodeSetBaselineFunc(YGNodeRef node, YGBaselineFunc baselineFunc); +YGDirtiedFunc YGNodeGetDirtiedFunc(YGNodeRef node); +void YGNodeSetDirtiedFunc(YGNodeRef node, YGDirtiedFunc dirtiedFunc); +void YGNodeSetPrintFunc(YGNodeRef node, YGPrintFunc printFunc); +WIN_EXPORT bool YGNodeGetHasNewLayout(YGNodeRef node); +WIN_EXPORT void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout); +YGNodeType YGNodeGetNodeType(YGNodeRef node); +void YGNodeSetNodeType(YGNodeRef node, YGNodeType nodeType); +WIN_EXPORT bool YGNodeIsDirty(YGNodeRef node); + +WIN_EXPORT void YGNodeStyleSetDirection(YGNodeRef node, YGDirection direction); +WIN_EXPORT YGDirection YGNodeStyleGetDirection(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexDirection( + YGNodeRef node, + YGFlexDirection flexDirection); +WIN_EXPORT YGFlexDirection YGNodeStyleGetFlexDirection(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetJustifyContent( + YGNodeRef node, + YGJustify justifyContent); +WIN_EXPORT YGJustify YGNodeStyleGetJustifyContent(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignContent( + YGNodeRef node, + YGAlign alignContent); +WIN_EXPORT YGAlign YGNodeStyleGetAlignContent(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignItems(YGNodeRef node, YGAlign alignItems); +WIN_EXPORT YGAlign YGNodeStyleGetAlignItems(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignSelf(YGNodeRef node, YGAlign alignSelf); +WIN_EXPORT YGAlign YGNodeStyleGetAlignSelf(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetPositionType( + YGNodeRef node, + YGPositionType positionType); +WIN_EXPORT YGPositionType YGNodeStyleGetPositionType(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexWrap(YGNodeRef node, YGWrap flexWrap); +WIN_EXPORT YGWrap YGNodeStyleGetFlexWrap(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetOverflow(YGNodeRef node, YGOverflow overflow); +WIN_EXPORT YGOverflow YGNodeStyleGetOverflow(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetDisplay(YGNodeRef node, YGDisplay display); +WIN_EXPORT YGDisplay YGNodeStyleGetDisplay(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlex(YGNodeRef node, float flex); +WIN_EXPORT float YGNodeStyleGetFlex(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexGrow(YGNodeRef node, float flexGrow); +WIN_EXPORT float YGNodeStyleGetFlexGrow(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexShrink(YGNodeRef node, float flexShrink); +WIN_EXPORT float YGNodeStyleGetFlexShrink(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexBasis(YGNodeRef node, float flexBasis); +WIN_EXPORT void YGNodeStyleSetFlexBasisPercent(YGNodeRef node, float flexBasis); +WIN_EXPORT void YGNodeStyleSetFlexBasisAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetFlexBasis(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetPosition( + YGNodeRef node, + YGEdge edge, + float position); +WIN_EXPORT void YGNodeStyleSetPositionPercent( + YGNodeRef node, + YGEdge edge, + float position); +WIN_EXPORT YGValue YGNodeStyleGetPosition(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetMargin(YGNodeRef node, YGEdge edge, float margin); +WIN_EXPORT void YGNodeStyleSetMarginPercent( + YGNodeRef node, + YGEdge edge, + float margin); +WIN_EXPORT void YGNodeStyleSetMarginAuto(YGNodeRef node, YGEdge edge); +WIN_EXPORT YGValue YGNodeStyleGetMargin(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetPadding( + YGNodeRef node, + YGEdge edge, + float padding); +WIN_EXPORT void YGNodeStyleSetPaddingPercent( + YGNodeRef node, + YGEdge edge, + float padding); +WIN_EXPORT YGValue YGNodeStyleGetPadding(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetBorder(YGNodeRef node, YGEdge edge, float border); +WIN_EXPORT float YGNodeStyleGetBorder(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetGap( + YGNodeRef node, + YGGutter gutter, + float gapLength); +WIN_EXPORT float YGNodeStyleGetGap(YGNodeConstRef node, YGGutter gutter); + +WIN_EXPORT void YGNodeStyleSetWidth(YGNodeRef node, float width); +WIN_EXPORT void YGNodeStyleSetWidthPercent(YGNodeRef node, float width); +WIN_EXPORT void YGNodeStyleSetWidthAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetHeight(YGNodeRef node, float height); +WIN_EXPORT void YGNodeStyleSetHeightPercent(YGNodeRef node, float height); +WIN_EXPORT void YGNodeStyleSetHeightAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetHeight(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMinWidth(YGNodeRef node, float minWidth); +WIN_EXPORT void YGNodeStyleSetMinWidthPercent(YGNodeRef node, float minWidth); +WIN_EXPORT YGValue YGNodeStyleGetMinWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMinHeight(YGNodeRef node, float minHeight); +WIN_EXPORT void YGNodeStyleSetMinHeightPercent(YGNodeRef node, float minHeight); +WIN_EXPORT YGValue YGNodeStyleGetMinHeight(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMaxWidth(YGNodeRef node, float maxWidth); +WIN_EXPORT void YGNodeStyleSetMaxWidthPercent(YGNodeRef node, float maxWidth); +WIN_EXPORT YGValue YGNodeStyleGetMaxWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMaxHeight(YGNodeRef node, float maxHeight); +WIN_EXPORT void YGNodeStyleSetMaxHeightPercent(YGNodeRef node, float maxHeight); +WIN_EXPORT YGValue YGNodeStyleGetMaxHeight(YGNodeConstRef node); + +// Yoga specific properties, not compatible with flexbox specification Aspect +// ratio control the size of the undefined dimension of a node. Aspect ratio is +// encoded as a floating point value width/height. e.g. A value of 2 leads to a +// node with a width twice the size of its height while a value of 0.5 gives the +// opposite effect. +// +// - On a node with a set width/height aspect ratio control the size of the +// unset dimension +// - On a node with a set flex basis aspect ratio controls the size of the node +// in the cross axis if unset +// - On a node with a measure function aspect ratio works as though the measure +// function measures the flex basis +// - On a node with flex grow/shrink aspect ratio controls the size of the node +// in the cross axis if unset +// - Aspect ratio takes min/max dimensions into account +WIN_EXPORT void YGNodeStyleSetAspectRatio(YGNodeRef node, float aspectRatio); +WIN_EXPORT float YGNodeStyleGetAspectRatio(YGNodeConstRef node); + +WIN_EXPORT float YGNodeLayoutGetLeft(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetTop(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetRight(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetBottom(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetWidth(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetHeight(YGNodeRef node); +WIN_EXPORT YGDirection YGNodeLayoutGetDirection(YGNodeRef node); +WIN_EXPORT bool YGNodeLayoutGetHadOverflow(YGNodeRef node); + +// Get the computed values for these nodes after performing layout. If they were +// set using point values then the returned value will be the same as +// YGNodeStyleGetXXX. However if they were set using a percentage value then the +// returned value is the computed value used during layout. +WIN_EXPORT float YGNodeLayoutGetMargin(YGNodeRef node, YGEdge edge); +WIN_EXPORT float YGNodeLayoutGetBorder(YGNodeRef node, YGEdge edge); +WIN_EXPORT float YGNodeLayoutGetPadding(YGNodeRef node, YGEdge edge); + +WIN_EXPORT void YGConfigSetLogger(YGConfigRef config, YGLogger logger); +WIN_EXPORT void YGAssert(bool condition, const char* message); +WIN_EXPORT void YGAssertWithNode( + YGNodeRef node, + bool condition, + const char* message); +WIN_EXPORT void YGAssertWithConfig( + YGConfigRef config, + bool condition, + const char* message); +// Set this to number of pixels in 1 point to round calculation results If you +// want to avoid rounding - set PointScaleFactor to 0 +WIN_EXPORT void YGConfigSetPointScaleFactor( + YGConfigRef config, + float pixelsInPoint); +WIN_EXPORT float YGConfigGetPointScaleFactor(YGConfigRef config); + +// Yoga previously had an error where containers would take the maximum space +// possible instead of the minimum like they are supposed to. In practice this +// resulted in implicit behaviour similar to align-self: stretch; Because this +// was such a long-standing bug we must allow legacy users to switch back to +// this behaviour. +WIN_EXPORT YG_DEPRECATED( + "Please use " + "\"YGConfigGetErrata()\"") bool YGConfigGetUseLegacyStretchBehaviour(YGConfigRef + config); +WIN_EXPORT +YG_DEPRECATED( + "\"YGConfigSetUseLegacyStretchBehaviour\" will be removed in the next " + "release. Usage should be replaced with \"YGConfigSetErrata(YGErrataAll)\" " + "to opt out of all future breaking conformance fixes, or " + "\"YGConfigSetErrata(YGErrataStretchFlexBasis)\" to opt out of the " + "specific conformance fix previously disabled by " + "\"UseLegacyStretchBehaviour\".") +void YGConfigSetUseLegacyStretchBehaviour( + YGConfigRef config, + bool useLegacyStretchBehaviour); + +// YGConfig +WIN_EXPORT YGConfigRef YGConfigNew(void); +WIN_EXPORT void YGConfigFree(YGConfigRef config); +WIN_EXPORT void YGConfigCopy(YGConfigRef dest, YGConfigRef src); +WIN_EXPORT int32_t YGConfigGetInstanceCount(void); + +WIN_EXPORT void YGConfigSetExperimentalFeatureEnabled( + YGConfigRef config, + YGExperimentalFeature feature, + bool enabled); +WIN_EXPORT bool YGConfigIsExperimentalFeatureEnabled( + YGConfigRef config, + YGExperimentalFeature feature); + +// Using the web defaults is the preferred configuration for new projects. Usage +// of non web defaults should be considered as legacy. +WIN_EXPORT void YGConfigSetUseWebDefaults(YGConfigRef config, bool enabled); +WIN_EXPORT bool YGConfigGetUseWebDefaults(YGConfigRef config); + +WIN_EXPORT void YGConfigSetCloneNodeFunc( + YGConfigRef config, + YGCloneNodeFunc callback); + +// Export only for C# +WIN_EXPORT YGConfigRef YGConfigGetDefault(void); + +WIN_EXPORT void YGConfigSetContext(YGConfigRef config, void* context); +WIN_EXPORT void* YGConfigGetContext(YGConfigRef config); + +WIN_EXPORT void YGConfigSetErrata(YGConfigRef config, YGErrata errata); +WIN_EXPORT YGErrata YGConfigGetErrata(YGConfigRef config); + +WIN_EXPORT float YGRoundValueToPixelGrid( + double value, + double pointScaleFactor, + bool forceCeil, + bool forceFloor); + +YG_EXTERN_C_END diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Info.plist b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Info.plist new file mode 100644 index 0000000..4b06ef5 Binary files /dev/null and b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Info.plist differ diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Modules/module.modulemap b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Modules/module.modulemap new file mode 100644 index 0000000..54ea792 --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module yoga { + umbrella header "Yoga-umbrella.h" + + export * + module * { export * } +} diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/yoga b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/yoga new file mode 100755 index 0000000..49da793 Binary files /dev/null and b/ios/xcframeworks/yoga.xcframework/ios-arm64/yoga.framework/yoga differ diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/YGEnums.h b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/YGEnums.h new file mode 100644 index 0000000..a502d39 --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/YGEnums.h @@ -0,0 +1,145 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// @generated by enums.py + +#pragma once +#include + +// clang-format off + + +YG_EXTERN_C_BEGIN + +YG_ENUM_SEQ_DECL( + YGAlign, + YGAlignAuto, + YGAlignFlexStart, + YGAlignCenter, + YGAlignFlexEnd, + YGAlignStretch, + YGAlignBaseline, + YGAlignSpaceBetween, + YGAlignSpaceAround) + +YG_ENUM_SEQ_DECL( + YGDimension, + YGDimensionWidth, + YGDimensionHeight) + +YG_ENUM_SEQ_DECL( + YGDirection, + YGDirectionInherit, + YGDirectionLTR, + YGDirectionRTL) + +YG_ENUM_SEQ_DECL( + YGDisplay, + YGDisplayFlex, + YGDisplayNone) + +YG_ENUM_SEQ_DECL( + YGEdge, + YGEdgeLeft, + YGEdgeTop, + YGEdgeRight, + YGEdgeBottom, + YGEdgeStart, + YGEdgeEnd, + YGEdgeHorizontal, + YGEdgeVertical, + YGEdgeAll) + +YG_ENUM_DECL( + YGErrata, + YGErrataNone = 0, + YGErrataStretchFlexBasis = 1, + YGErrataAll = 2147483647, + YGErrataClassic = 2147483646) +YG_DEFINE_ENUM_FLAG_OPERATORS(YGErrata) + +YG_ENUM_SEQ_DECL( + YGExperimentalFeature, + YGExperimentalFeatureWebFlexBasis, + YGExperimentalFeatureAbsolutePercentageAgainstPaddingEdge, + YGExperimentalFeatureFixJNILocalRefOverflows) + +YG_ENUM_SEQ_DECL( + YGFlexDirection, + YGFlexDirectionColumn, + YGFlexDirectionColumnReverse, + YGFlexDirectionRow, + YGFlexDirectionRowReverse) + +YG_ENUM_SEQ_DECL( + YGGutter, + YGGutterColumn, + YGGutterRow, + YGGutterAll) + +YG_ENUM_SEQ_DECL( + YGJustify, + YGJustifyFlexStart, + YGJustifyCenter, + YGJustifyFlexEnd, + YGJustifySpaceBetween, + YGJustifySpaceAround, + YGJustifySpaceEvenly) + +YG_ENUM_SEQ_DECL( + YGLogLevel, + YGLogLevelError, + YGLogLevelWarn, + YGLogLevelInfo, + YGLogLevelDebug, + YGLogLevelVerbose, + YGLogLevelFatal) + +YG_ENUM_SEQ_DECL( + YGMeasureMode, + YGMeasureModeUndefined, + YGMeasureModeExactly, + YGMeasureModeAtMost) + +YG_ENUM_SEQ_DECL( + YGNodeType, + YGNodeTypeDefault, + YGNodeTypeText) + +YG_ENUM_SEQ_DECL( + YGOverflow, + YGOverflowVisible, + YGOverflowHidden, + YGOverflowScroll) + +YG_ENUM_SEQ_DECL( + YGPositionType, + YGPositionTypeStatic, + YGPositionTypeRelative, + YGPositionTypeAbsolute) + +YG_ENUM_DECL( + YGPrintOptions, + YGPrintOptionsLayout = 1, + YGPrintOptionsStyle = 2, + YGPrintOptionsChildren = 4) +YG_DEFINE_ENUM_FLAG_OPERATORS(YGPrintOptions) + +YG_ENUM_SEQ_DECL( + YGUnit, + YGUnitUndefined, + YGUnitPoint, + YGUnitPercent, + YGUnitAuto) + +YG_ENUM_SEQ_DECL( + YGWrap, + YGWrapNoWrap, + YGWrapWrap, + YGWrapWrapReverse) + +YG_EXTERN_C_END diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/YGMacros.h b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/YGMacros.h new file mode 100644 index 0000000..cd13711 --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/YGMacros.h @@ -0,0 +1,138 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#ifdef __cplusplus +#include +#endif + +#ifdef __cplusplus +#define YG_EXTERN_C_BEGIN extern "C" { +#define YG_EXTERN_C_END } +#else +#define YG_EXTERN_C_BEGIN +#define YG_EXTERN_C_END +#endif + +#if defined(__cplusplus) +#define YG_DEPRECATED(message) [[deprecated(message)]] +#elif defined(_MSC_VER) +#define YG_DEPRECATED(message) __declspec(deprecated(message)) +#else +#define YG_DEPRECATED(message) __attribute__((deprecated(message))) +#endif + +#ifdef _WINDLL +#define WIN_EXPORT __declspec(dllexport) +#else +#define WIN_EXPORT +#endif + +#ifndef YOGA_EXPORT +#ifdef _MSC_VER +#define YOGA_EXPORT +#else +#define YOGA_EXPORT __attribute__((visibility("default"))) +#endif +#endif + +#ifdef NS_ENUM +// Cannot use NSInteger as NSInteger has a different size than int (which is the +// default type of a enum). Therefor when linking the Yoga C library into obj-c +// the header is a mismatch for the Yoga ABI. +#define YG_ENUM_BEGIN(name) NS_ENUM(int, name) +#define YG_ENUM_END(name) +#else +#define YG_ENUM_BEGIN(name) enum name +#define YG_ENUM_END(name) name +#endif + +#ifdef __cplusplus +#define YG_DEFINE_ENUM_FLAG_OPERATORS(name) \ + extern "C++" { \ + constexpr inline name operator~(name a) { \ + return static_cast( \ + ~static_cast::type>(a)); \ + } \ + constexpr inline name operator|(name a, name b) { \ + return static_cast( \ + static_cast::type>(a) | \ + static_cast::type>(b)); \ + } \ + constexpr inline name operator&(name a, name b) { \ + return static_cast( \ + static_cast::type>(a) & \ + static_cast::type>(b)); \ + } \ + constexpr inline name operator^(name a, name b) { \ + return static_cast( \ + static_cast::type>(a) ^ \ + static_cast::type>(b)); \ + } \ + inline name& operator|=(name& a, name b) { \ + return reinterpret_cast( \ + reinterpret_cast::type&>(a) |= \ + static_cast::type>(b)); \ + } \ + inline name& operator&=(name& a, name b) { \ + return reinterpret_cast( \ + reinterpret_cast::type&>(a) &= \ + static_cast::type>(b)); \ + } \ + inline name& operator^=(name& a, name b) { \ + return reinterpret_cast( \ + reinterpret_cast::type&>(a) ^= \ + static_cast::type>(b)); \ + } \ + } +#else +#define YG_DEFINE_ENUM_FLAG_OPERATORS(name) +#endif + +#ifdef __cplusplus +namespace facebook { +namespace yoga { +namespace enums { + +template +constexpr int count(); // can't use `= delete` due to a defect in clang < 3.9 + +namespace detail { +template +constexpr int n() { + return sizeof...(xs); +} +} // namespace detail + +} // namespace enums +} // namespace yoga +} // namespace facebook +#endif + +#define YG_ENUM_DECL(NAME, ...) \ + typedef YG_ENUM_BEGIN(NAME){__VA_ARGS__} YG_ENUM_END(NAME); \ + WIN_EXPORT const char* NAME##ToString(NAME); + +#ifdef __cplusplus +#define YG_ENUM_SEQ_DECL(NAME, ...) \ + YG_ENUM_DECL(NAME, __VA_ARGS__) \ + YG_EXTERN_C_END \ + namespace facebook { \ + namespace yoga { \ + namespace enums { \ + template <> \ + constexpr int count() { \ + return detail::n<__VA_ARGS__>(); \ + } \ + } \ + } \ + } \ + YG_EXTERN_C_BEGIN +#else +#define YG_ENUM_SEQ_DECL YG_ENUM_DECL +#endif diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/YGValue.h b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/YGValue.h new file mode 100644 index 0000000..59f6f5e --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/YGValue.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include + +YG_EXTERN_C_BEGIN + +typedef struct YGValue { + float value; + YGUnit unit; +} YGValue; + +YOGA_EXPORT extern const YGValue YGValueAuto; +YOGA_EXPORT extern const YGValue YGValueUndefined; +YOGA_EXPORT extern const YGValue YGValueZero; + +YG_EXTERN_C_END + +#ifdef __cplusplus +#include +constexpr float YGUndefined = std::numeric_limits::quiet_NaN(); +#else +#include +#define YGUndefined NAN +#endif + +#ifdef __cplusplus +inline bool operator==(const YGValue& lhs, const YGValue& rhs) { + if (lhs.unit != rhs.unit) { + return false; + } + + switch (lhs.unit) { + case YGUnitUndefined: + case YGUnitAuto: + return true; + case YGUnitPoint: + case YGUnitPercent: + return lhs.value == rhs.value; + } + + return false; +} + +inline bool operator!=(const YGValue& lhs, const YGValue& rhs) { + return !(lhs == rhs); +} + +inline YGValue operator-(const YGValue& value) { + return {-value.value, value.unit}; +} +#endif diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/Yoga-umbrella.h b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/Yoga-umbrella.h new file mode 100644 index 0000000..acd8a09 --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/Yoga-umbrella.h @@ -0,0 +1,20 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "YGEnums.h" +#import "YGMacros.h" +#import "YGValue.h" +#import "Yoga.h" + +FOUNDATION_EXPORT double yogaVersionNumber; +FOUNDATION_EXPORT const unsigned char yogaVersionString[]; + diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/Yoga.h b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/Yoga.h new file mode 100644 index 0000000..de07aea --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Headers/Yoga.h @@ -0,0 +1,381 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +#ifndef __cplusplus +#include +#endif + +#include +#include +#include + +YG_EXTERN_C_BEGIN + +typedef struct YGSize { + float width; + float height; +} YGSize; + +typedef struct YGConfig* YGConfigRef; + +typedef struct YGNode* YGNodeRef; +typedef const struct YGNode* YGNodeConstRef; + +typedef YGSize (*YGMeasureFunc)( + YGNodeRef node, + float width, + YGMeasureMode widthMode, + float height, + YGMeasureMode heightMode); +typedef float (*YGBaselineFunc)(YGNodeRef node, float width, float height); +typedef void (*YGDirtiedFunc)(YGNodeRef node); +typedef void (*YGPrintFunc)(YGNodeRef node); +typedef void (*YGNodeCleanupFunc)(YGNodeRef node); +typedef int (*YGLogger)( + YGConfigRef config, + YGNodeRef node, + YGLogLevel level, + const char* format, + va_list args); +typedef YGNodeRef ( + *YGCloneNodeFunc)(YGNodeRef oldNode, YGNodeRef owner, int childIndex); + +// YGNode +WIN_EXPORT YGNodeRef YGNodeNew(void); +WIN_EXPORT YGNodeRef YGNodeNewWithConfig(YGConfigRef config); +WIN_EXPORT YGNodeRef YGNodeClone(YGNodeRef node); +WIN_EXPORT void YGNodeFree(YGNodeRef node); +WIN_EXPORT void YGNodeFreeRecursiveWithCleanupFunc( + YGNodeRef node, + YGNodeCleanupFunc cleanup); +WIN_EXPORT void YGNodeFreeRecursive(YGNodeRef node); +WIN_EXPORT void YGNodeReset(YGNodeRef node); + +WIN_EXPORT void YGNodeInsertChild( + YGNodeRef node, + YGNodeRef child, + uint32_t index); + +WIN_EXPORT void YGNodeSwapChild( + YGNodeRef node, + YGNodeRef child, + uint32_t index); + +WIN_EXPORT void YGNodeRemoveChild(YGNodeRef node, YGNodeRef child); +WIN_EXPORT void YGNodeRemoveAllChildren(YGNodeRef node); +WIN_EXPORT YGNodeRef YGNodeGetChild(YGNodeRef node, uint32_t index); +WIN_EXPORT YGNodeRef YGNodeGetOwner(YGNodeRef node); +WIN_EXPORT YGNodeRef YGNodeGetParent(YGNodeRef node); +WIN_EXPORT uint32_t YGNodeGetChildCount(YGNodeRef node); +WIN_EXPORT void YGNodeSetChildren( + YGNodeRef owner, + const YGNodeRef* children, + uint32_t count); + +WIN_EXPORT void YGNodeSetIsReferenceBaseline( + YGNodeRef node, + bool isReferenceBaseline); + +WIN_EXPORT bool YGNodeIsReferenceBaseline(YGNodeRef node); + +WIN_EXPORT void YGNodeCalculateLayout( + YGNodeRef node, + float availableWidth, + float availableHeight, + YGDirection ownerDirection); + +// Mark a node as dirty. Only valid for nodes with a custom measure function +// set. +// +// Yoga knows when to mark all other nodes as dirty but because nodes with +// measure functions depend on information not known to Yoga they must perform +// this dirty marking manually. +WIN_EXPORT void YGNodeMarkDirty(YGNodeRef node); + +// Marks the current node and all its descendants as dirty. +// +// Intended to be used for Yoga benchmarks. Don't use in production, as calling +// `YGCalculateLayout` will cause the recalculation of each and every node. +WIN_EXPORT void YGNodeMarkDirtyAndPropagateToDescendants(YGNodeRef node); + +WIN_EXPORT void YGNodePrint(YGNodeRef node, YGPrintOptions options); + +WIN_EXPORT bool YGFloatIsUndefined(float value); + +WIN_EXPORT bool YGNodeCanUseCachedMeasurement( + YGMeasureMode widthMode, + float width, + YGMeasureMode heightMode, + float height, + YGMeasureMode lastWidthMode, + float lastWidth, + YGMeasureMode lastHeightMode, + float lastHeight, + float lastComputedWidth, + float lastComputedHeight, + float marginRow, + float marginColumn, + YGConfigRef config); + +WIN_EXPORT void YGNodeCopyStyle(YGNodeRef dstNode, YGNodeRef srcNode); + +WIN_EXPORT void* YGNodeGetContext(YGNodeRef node); +WIN_EXPORT void YGNodeSetContext(YGNodeRef node, void* context); + +WIN_EXPORT YGConfigRef YGNodeGetConfig(YGNodeRef node); +WIN_EXPORT void YGNodeSetConfig(YGNodeRef node, YGConfigRef config); + +void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled); +bool YGNodeHasMeasureFunc(YGNodeRef node); +WIN_EXPORT void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc); +bool YGNodeHasBaselineFunc(YGNodeRef node); +void YGNodeSetBaselineFunc(YGNodeRef node, YGBaselineFunc baselineFunc); +YGDirtiedFunc YGNodeGetDirtiedFunc(YGNodeRef node); +void YGNodeSetDirtiedFunc(YGNodeRef node, YGDirtiedFunc dirtiedFunc); +void YGNodeSetPrintFunc(YGNodeRef node, YGPrintFunc printFunc); +WIN_EXPORT bool YGNodeGetHasNewLayout(YGNodeRef node); +WIN_EXPORT void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout); +YGNodeType YGNodeGetNodeType(YGNodeRef node); +void YGNodeSetNodeType(YGNodeRef node, YGNodeType nodeType); +WIN_EXPORT bool YGNodeIsDirty(YGNodeRef node); + +WIN_EXPORT void YGNodeStyleSetDirection(YGNodeRef node, YGDirection direction); +WIN_EXPORT YGDirection YGNodeStyleGetDirection(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexDirection( + YGNodeRef node, + YGFlexDirection flexDirection); +WIN_EXPORT YGFlexDirection YGNodeStyleGetFlexDirection(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetJustifyContent( + YGNodeRef node, + YGJustify justifyContent); +WIN_EXPORT YGJustify YGNodeStyleGetJustifyContent(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignContent( + YGNodeRef node, + YGAlign alignContent); +WIN_EXPORT YGAlign YGNodeStyleGetAlignContent(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignItems(YGNodeRef node, YGAlign alignItems); +WIN_EXPORT YGAlign YGNodeStyleGetAlignItems(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetAlignSelf(YGNodeRef node, YGAlign alignSelf); +WIN_EXPORT YGAlign YGNodeStyleGetAlignSelf(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetPositionType( + YGNodeRef node, + YGPositionType positionType); +WIN_EXPORT YGPositionType YGNodeStyleGetPositionType(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexWrap(YGNodeRef node, YGWrap flexWrap); +WIN_EXPORT YGWrap YGNodeStyleGetFlexWrap(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetOverflow(YGNodeRef node, YGOverflow overflow); +WIN_EXPORT YGOverflow YGNodeStyleGetOverflow(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetDisplay(YGNodeRef node, YGDisplay display); +WIN_EXPORT YGDisplay YGNodeStyleGetDisplay(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlex(YGNodeRef node, float flex); +WIN_EXPORT float YGNodeStyleGetFlex(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexGrow(YGNodeRef node, float flexGrow); +WIN_EXPORT float YGNodeStyleGetFlexGrow(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexShrink(YGNodeRef node, float flexShrink); +WIN_EXPORT float YGNodeStyleGetFlexShrink(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetFlexBasis(YGNodeRef node, float flexBasis); +WIN_EXPORT void YGNodeStyleSetFlexBasisPercent(YGNodeRef node, float flexBasis); +WIN_EXPORT void YGNodeStyleSetFlexBasisAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetFlexBasis(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetPosition( + YGNodeRef node, + YGEdge edge, + float position); +WIN_EXPORT void YGNodeStyleSetPositionPercent( + YGNodeRef node, + YGEdge edge, + float position); +WIN_EXPORT YGValue YGNodeStyleGetPosition(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetMargin(YGNodeRef node, YGEdge edge, float margin); +WIN_EXPORT void YGNodeStyleSetMarginPercent( + YGNodeRef node, + YGEdge edge, + float margin); +WIN_EXPORT void YGNodeStyleSetMarginAuto(YGNodeRef node, YGEdge edge); +WIN_EXPORT YGValue YGNodeStyleGetMargin(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetPadding( + YGNodeRef node, + YGEdge edge, + float padding); +WIN_EXPORT void YGNodeStyleSetPaddingPercent( + YGNodeRef node, + YGEdge edge, + float padding); +WIN_EXPORT YGValue YGNodeStyleGetPadding(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetBorder(YGNodeRef node, YGEdge edge, float border); +WIN_EXPORT float YGNodeStyleGetBorder(YGNodeConstRef node, YGEdge edge); + +WIN_EXPORT void YGNodeStyleSetGap( + YGNodeRef node, + YGGutter gutter, + float gapLength); +WIN_EXPORT float YGNodeStyleGetGap(YGNodeConstRef node, YGGutter gutter); + +WIN_EXPORT void YGNodeStyleSetWidth(YGNodeRef node, float width); +WIN_EXPORT void YGNodeStyleSetWidthPercent(YGNodeRef node, float width); +WIN_EXPORT void YGNodeStyleSetWidthAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetHeight(YGNodeRef node, float height); +WIN_EXPORT void YGNodeStyleSetHeightPercent(YGNodeRef node, float height); +WIN_EXPORT void YGNodeStyleSetHeightAuto(YGNodeRef node); +WIN_EXPORT YGValue YGNodeStyleGetHeight(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMinWidth(YGNodeRef node, float minWidth); +WIN_EXPORT void YGNodeStyleSetMinWidthPercent(YGNodeRef node, float minWidth); +WIN_EXPORT YGValue YGNodeStyleGetMinWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMinHeight(YGNodeRef node, float minHeight); +WIN_EXPORT void YGNodeStyleSetMinHeightPercent(YGNodeRef node, float minHeight); +WIN_EXPORT YGValue YGNodeStyleGetMinHeight(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMaxWidth(YGNodeRef node, float maxWidth); +WIN_EXPORT void YGNodeStyleSetMaxWidthPercent(YGNodeRef node, float maxWidth); +WIN_EXPORT YGValue YGNodeStyleGetMaxWidth(YGNodeConstRef node); + +WIN_EXPORT void YGNodeStyleSetMaxHeight(YGNodeRef node, float maxHeight); +WIN_EXPORT void YGNodeStyleSetMaxHeightPercent(YGNodeRef node, float maxHeight); +WIN_EXPORT YGValue YGNodeStyleGetMaxHeight(YGNodeConstRef node); + +// Yoga specific properties, not compatible with flexbox specification Aspect +// ratio control the size of the undefined dimension of a node. Aspect ratio is +// encoded as a floating point value width/height. e.g. A value of 2 leads to a +// node with a width twice the size of its height while a value of 0.5 gives the +// opposite effect. +// +// - On a node with a set width/height aspect ratio control the size of the +// unset dimension +// - On a node with a set flex basis aspect ratio controls the size of the node +// in the cross axis if unset +// - On a node with a measure function aspect ratio works as though the measure +// function measures the flex basis +// - On a node with flex grow/shrink aspect ratio controls the size of the node +// in the cross axis if unset +// - Aspect ratio takes min/max dimensions into account +WIN_EXPORT void YGNodeStyleSetAspectRatio(YGNodeRef node, float aspectRatio); +WIN_EXPORT float YGNodeStyleGetAspectRatio(YGNodeConstRef node); + +WIN_EXPORT float YGNodeLayoutGetLeft(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetTop(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetRight(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetBottom(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetWidth(YGNodeRef node); +WIN_EXPORT float YGNodeLayoutGetHeight(YGNodeRef node); +WIN_EXPORT YGDirection YGNodeLayoutGetDirection(YGNodeRef node); +WIN_EXPORT bool YGNodeLayoutGetHadOverflow(YGNodeRef node); + +// Get the computed values for these nodes after performing layout. If they were +// set using point values then the returned value will be the same as +// YGNodeStyleGetXXX. However if they were set using a percentage value then the +// returned value is the computed value used during layout. +WIN_EXPORT float YGNodeLayoutGetMargin(YGNodeRef node, YGEdge edge); +WIN_EXPORT float YGNodeLayoutGetBorder(YGNodeRef node, YGEdge edge); +WIN_EXPORT float YGNodeLayoutGetPadding(YGNodeRef node, YGEdge edge); + +WIN_EXPORT void YGConfigSetLogger(YGConfigRef config, YGLogger logger); +WIN_EXPORT void YGAssert(bool condition, const char* message); +WIN_EXPORT void YGAssertWithNode( + YGNodeRef node, + bool condition, + const char* message); +WIN_EXPORT void YGAssertWithConfig( + YGConfigRef config, + bool condition, + const char* message); +// Set this to number of pixels in 1 point to round calculation results If you +// want to avoid rounding - set PointScaleFactor to 0 +WIN_EXPORT void YGConfigSetPointScaleFactor( + YGConfigRef config, + float pixelsInPoint); +WIN_EXPORT float YGConfigGetPointScaleFactor(YGConfigRef config); + +// Yoga previously had an error where containers would take the maximum space +// possible instead of the minimum like they are supposed to. In practice this +// resulted in implicit behaviour similar to align-self: stretch; Because this +// was such a long-standing bug we must allow legacy users to switch back to +// this behaviour. +WIN_EXPORT YG_DEPRECATED( + "Please use " + "\"YGConfigGetErrata()\"") bool YGConfigGetUseLegacyStretchBehaviour(YGConfigRef + config); +WIN_EXPORT +YG_DEPRECATED( + "\"YGConfigSetUseLegacyStretchBehaviour\" will be removed in the next " + "release. Usage should be replaced with \"YGConfigSetErrata(YGErrataAll)\" " + "to opt out of all future breaking conformance fixes, or " + "\"YGConfigSetErrata(YGErrataStretchFlexBasis)\" to opt out of the " + "specific conformance fix previously disabled by " + "\"UseLegacyStretchBehaviour\".") +void YGConfigSetUseLegacyStretchBehaviour( + YGConfigRef config, + bool useLegacyStretchBehaviour); + +// YGConfig +WIN_EXPORT YGConfigRef YGConfigNew(void); +WIN_EXPORT void YGConfigFree(YGConfigRef config); +WIN_EXPORT void YGConfigCopy(YGConfigRef dest, YGConfigRef src); +WIN_EXPORT int32_t YGConfigGetInstanceCount(void); + +WIN_EXPORT void YGConfigSetExperimentalFeatureEnabled( + YGConfigRef config, + YGExperimentalFeature feature, + bool enabled); +WIN_EXPORT bool YGConfigIsExperimentalFeatureEnabled( + YGConfigRef config, + YGExperimentalFeature feature); + +// Using the web defaults is the preferred configuration for new projects. Usage +// of non web defaults should be considered as legacy. +WIN_EXPORT void YGConfigSetUseWebDefaults(YGConfigRef config, bool enabled); +WIN_EXPORT bool YGConfigGetUseWebDefaults(YGConfigRef config); + +WIN_EXPORT void YGConfigSetCloneNodeFunc( + YGConfigRef config, + YGCloneNodeFunc callback); + +// Export only for C# +WIN_EXPORT YGConfigRef YGConfigGetDefault(void); + +WIN_EXPORT void YGConfigSetContext(YGConfigRef config, void* context); +WIN_EXPORT void* YGConfigGetContext(YGConfigRef config); + +WIN_EXPORT void YGConfigSetErrata(YGConfigRef config, YGErrata errata); +WIN_EXPORT YGErrata YGConfigGetErrata(YGConfigRef config); + +WIN_EXPORT float YGRoundValueToPixelGrid( + double value, + double pointScaleFactor, + bool forceCeil, + bool forceFloor); + +YG_EXTERN_C_END diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Info.plist b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Info.plist new file mode 100644 index 0000000..4d70250 Binary files /dev/null and b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Info.plist differ diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Modules/module.modulemap b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Modules/module.modulemap new file mode 100644 index 0000000..54ea792 --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module yoga { + umbrella header "Yoga-umbrella.h" + + export * + module * { export * } +} diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/_CodeSignature/CodeResources b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..ec34995 --- /dev/null +++ b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/_CodeSignature/CodeResources @@ -0,0 +1,168 @@ + + + + + files + + Headers/YGEnums.h + + c5JqkEoQ6H8Q/Ohs/4bBh0zkJA8= + + Headers/YGMacros.h + + h6Dhpng0PlLHMNuGaqU0NmU7yxc= + + Headers/YGValue.h + + UFncjV9hE4vYO6viPrdjvy+V1E0= + + Headers/Yoga-umbrella.h + + WtQYqYJXIlqxH52jb7MWu8Rj4Hw= + + Headers/Yoga.h + + gD3ZcxjoLW3KNN9bWqiKs26mq1M= + + Info.plist + + m1zoynzLjfABHX5Gchi0lVT9qr4= + + Modules/module.modulemap + + Lp8kS8jWbiQslSQp4oCMVlhhHtg= + + + files2 + + Headers/YGEnums.h + + hash2 + + 3mUCE9kZULNKqgHFDZV6FRk6Vy+X1vpVvXwZQt/Iqy0= + + + Headers/YGMacros.h + + hash2 + + rAfKNIe5dskP+4dHIlz8p9DekUAbwRJnenYW8MnoxAs= + + + Headers/YGValue.h + + hash2 + + 5UmF9hH75kiDhWu+Fyc9a92XWubpefsFkyWTJUHLpA8= + + + Headers/Yoga-umbrella.h + + hash2 + + 3KbI+dbSmPbhNMvaJrWa/b/Z65lBIUEW8N9Fe0JSyTs= + + + Headers/Yoga.h + + hash2 + + hBbuaAd0xSTvzXh4YLQEerDI5TFq1d8tswBJ0a10lx8= + + + Modules/module.modulemap + + hash2 + + ZGXIGlnl1zbIIt/jmWkkasFn8j7Yv4A9DVBXDQTcO4k= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/yoga b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/yoga new file mode 100755 index 0000000..2b41ab7 Binary files /dev/null and b/ios/xcframeworks/yoga.xcframework/ios-arm64_x86_64-simulator/yoga.framework/yoga differ