cocoapods-catalyst-validator 0.1.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (515) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -0
  3. data/Gemfile +5 -0
  4. data/Gemfile.lock +107 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +18 -0
  7. data/Rakefile +13 -0
  8. data/cocoapods-catalyst-validator.gemspec +23 -0
  9. data/examples/AExample/AExample/AExample.entitlements +10 -0
  10. data/examples/AExample/AExample/AppDelegate.h +14 -0
  11. data/examples/AExample/AExample/AppDelegate.m +40 -0
  12. data/examples/AExample/AExample/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  13. data/examples/AExample/AExample/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
  14. data/examples/AExample/AExample/Assets.xcassets/Contents.json +6 -0
  15. data/examples/AExample/AExample/Base.lproj/LaunchScreen.storyboard +25 -0
  16. data/examples/AExample/AExample/Base.lproj/Main.storyboard +24 -0
  17. data/examples/AExample/AExample/Info.plist +25 -0
  18. data/examples/AExample/AExample/SceneDelegate.h +15 -0
  19. data/examples/AExample/AExample/SceneDelegate.m +57 -0
  20. data/examples/AExample/AExample/ViewController.h +14 -0
  21. data/examples/AExample/AExample/ViewController.m +22 -0
  22. data/examples/AExample/AExample/main.m +18 -0
  23. data/examples/AExample/AExample.xcodeproj/project.pbxproj +664 -0
  24. data/examples/AExample/AExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  25. data/examples/AExample/AExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  26. data/examples/AExample/AExample.xcodeproj/project.xcworkspace/xcuserdata/xuzhongping.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  27. data/examples/AExample/AExample.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  28. data/examples/AExample/AExample.xcworkspace/contents.xcworkspacedata +10 -0
  29. data/examples/AExample/AExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  30. data/examples/AExample/AExample.xcworkspace/xcuserdata/xuzhongping.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  31. data/examples/AExample/AExampleCP/AppDelegate.h +14 -0
  32. data/examples/AExample/AExampleCP/AppDelegate.m +40 -0
  33. data/examples/AExample/AExampleCP/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  34. data/examples/AExample/AExampleCP/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
  35. data/examples/AExample/AExampleCP/Assets.xcassets/Contents.json +6 -0
  36. data/examples/AExample/AExampleCP/Base.lproj/LaunchScreen.storyboard +25 -0
  37. data/examples/AExample/AExampleCP/Base.lproj/Main.storyboard +24 -0
  38. data/examples/AExample/AExampleCP/Info.plist +25 -0
  39. data/examples/AExample/AExampleCP/SceneDelegate.h +15 -0
  40. data/examples/AExample/AExampleCP/SceneDelegate.m +57 -0
  41. data/examples/AExample/AExampleCP/ViewController.h +14 -0
  42. data/examples/AExample/AExampleCP/ViewController.m +22 -0
  43. data/examples/AExample/AExampleCP/main.m +18 -0
  44. data/examples/AExample/Podfile +24 -0
  45. data/examples/AExample/Podfile.lock +112 -0
  46. data/examples/AExample/Pods/Bugly/Bugly.framework/Bugly +0 -0
  47. data/examples/AExample/Pods/Bugly/Bugly.framework/Headers/Bugly.h +163 -0
  48. data/examples/AExample/Pods/Bugly/Bugly.framework/Headers/BuglyConfig.h +149 -0
  49. data/examples/AExample/Pods/Bugly/Bugly.framework/Headers/BuglyLog.h +78 -0
  50. data/examples/AExample/Pods/Bugly/Bugly.framework/Modules/module.modulemap +12 -0
  51. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/Info.plist +97 -0
  52. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  53. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
  54. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
  55. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
  56. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
  57. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
  58. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
  59. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
  60. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Info.plist +20 -0
  61. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Modules/module.modulemap +13 -0
  62. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  63. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
  64. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
  65. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
  66. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
  67. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
  68. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
  69. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
  70. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Info.plist +20 -0
  71. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Modules/module.modulemap +13 -0
  72. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  73. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
  74. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
  75. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
  76. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
  77. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
  78. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
  79. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
  80. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Info.plist +20 -0
  81. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Modules/module.modulemap +13 -0
  82. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  83. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
  84. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
  85. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
  86. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
  87. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
  88. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
  89. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
  90. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Info.plist +20 -0
  91. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Modules/module.modulemap +13 -0
  92. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  93. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
  94. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
  95. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
  96. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
  97. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
  98. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
  99. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
  100. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Info.plist +20 -0
  101. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Modules/module.modulemap +12 -0
  102. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
  103. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
  104. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
  105. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
  106. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
  107. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
  108. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
  109. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
  110. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Info.plist +20 -0
  111. data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Modules/module.modulemap +12 -0
  112. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.h +56 -0
  113. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m +62 -0
  114. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m +856 -0
  115. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.h +49 -0
  116. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.m +47 -0
  117. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.h +53 -0
  118. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m +79 -0
  119. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponent.m +65 -0
  120. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainer.m +214 -0
  121. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainerInternal.h +49 -0
  122. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m +28 -0
  123. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m +46 -0
  124. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfigurationInternal.h +29 -0
  125. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m +61 -0
  126. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRDependency.m +44 -0
  127. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.h +35 -0
  128. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.m +66 -0
  129. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRFirebaseUserAgent.h +36 -0
  130. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRFirebaseUserAgent.m +107 -0
  131. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRHeartbeatInfo.m +72 -0
  132. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m +174 -0
  133. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIROptions.m +498 -0
  134. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRVersion.m +32 -0
  135. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppInternal.h +153 -0
  136. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponent.h +91 -0
  137. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h +41 -0
  138. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentType.h +34 -0
  139. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h +35 -0
  140. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRDependency.h +45 -0
  141. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h +39 -0
  142. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h +44 -0
  143. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLogger.h +146 -0
  144. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h +115 -0
  145. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FirebaseCoreInternal.h +28 -0
  146. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRApp.h +127 -0
  147. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRConfiguration.h +45 -0
  148. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRLoggerLevel.h +38 -0
  149. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIROptions.h +126 -0
  150. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRVersion.h +25 -0
  151. data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FirebaseCore.h +21 -0
  152. data/examples/AExample/Pods/FirebaseCore/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h +61 -0
  153. data/examples/AExample/Pods/FirebaseCore/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h +34 -0
  154. data/examples/AExample/Pods/FirebaseCore/LICENSE +202 -0
  155. data/examples/AExample/Pods/FirebaseCore/README.md +319 -0
  156. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m +551 -0
  157. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c +60 -0
  158. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h +193 -0
  159. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Public/FIRCoreDiagnostics.h +18 -0
  160. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h +61 -0
  161. data/examples/AExample/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h +34 -0
  162. data/examples/AExample/Pods/FirebaseCoreDiagnostics/LICENSE +202 -0
  163. data/examples/AExample/Pods/FirebaseCoreDiagnostics/README.md +319 -0
  164. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRAppInternal.h +153 -0
  165. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponent.h +91 -0
  166. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentContainer.h +41 -0
  167. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentType.h +34 -0
  168. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h +35 -0
  169. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRDependency.h +45 -0
  170. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h +39 -0
  171. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLibrary.h +44 -0
  172. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLogger.h +146 -0
  173. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIROptionsInternal.h +115 -0
  174. data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FirebaseCoreInternal.h +28 -0
  175. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h +65 -0
  176. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.m +145 -0
  177. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h +53 -0
  178. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m +79 -0
  179. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m +282 -0
  180. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResult.m +30 -0
  181. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h +27 -0
  182. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.h +93 -0
  183. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.m +161 -0
  184. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h +52 -0
  185. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.m +50 -0
  186. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h +48 -0
  187. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.m +242 -0
  188. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h +36 -0
  189. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m +158 -0
  190. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h +62 -0
  191. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m +380 -0
  192. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h +53 -0
  193. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.m +142 -0
  194. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRCurrentDateProvider.h +27 -0
  195. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRCurrentDateProvider.m +23 -0
  196. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsBackoffController.h +54 -0
  197. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsBackoffController.m +132 -0
  198. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h +44 -0
  199. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m +531 -0
  200. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h +58 -0
  201. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.m +75 -0
  202. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h +35 -0
  203. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h +71 -0
  204. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m +126 -0
  205. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h +58 -0
  206. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.m +77 -0
  207. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h +51 -0
  208. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m +80 -0
  209. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Private/FirebaseInstallationsInternal.h +19 -0
  210. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallations.h +127 -0
  211. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallationsAuthTokenResult.h +33 -0
  212. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallationsErrors.h +34 -0
  213. data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FirebaseInstallations.h +19 -0
  214. data/examples/AExample/Pods/FirebaseInstallations/LICENSE +202 -0
  215. data/examples/AExample/Pods/FirebaseInstallations/README.md +319 -0
  216. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/Info.plist +97 -0
  217. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  218. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/Info.plist +20 -0
  219. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
  220. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  221. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/Info.plist +20 -0
  222. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
  223. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  224. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/Info.plist +20 -0
  225. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
  226. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  227. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/Info.plist +20 -0
  228. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
  229. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  230. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/Info.plist +20 -0
  231. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
  232. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
  233. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/Info.plist +20 -0
  234. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
  235. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/Info.plist +97 -0
  236. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  237. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
  238. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
  239. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  240. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
  241. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
  242. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  243. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
  244. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
  245. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  246. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
  247. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
  248. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  249. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
  250. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
  251. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
  252. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
  253. data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
  254. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTCompressionHelper.m +95 -0
  255. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTNanopbHelpers.m +270 -0
  256. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTUploadOperation.m +573 -0
  257. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTUploader.m +210 -0
  258. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCOREvent+GDTCCTSupport.m +240 -0
  259. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h +40 -0
  260. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h +128 -0
  261. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTUploadOperation.h +76 -0
  262. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTUploader.h +45 -0
  263. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c +128 -0
  264. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h +281 -0
  265. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h +51 -0
  266. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORAssert.m +36 -0
  267. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORClock.m +178 -0
  268. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m +55 -0
  269. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m +101 -0
  270. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREndpoints.m +92 -0
  271. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m +153 -0
  272. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage+Promises.m +104 -0
  273. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage.m +826 -0
  274. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m +119 -0
  275. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m +604 -0
  276. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m +125 -0
  277. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m +157 -0
  278. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorageEventSelector.m +39 -0
  279. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m +111 -0
  280. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m +92 -0
  281. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadBatch.m +30 -0
  282. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m +176 -0
  283. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORAssert.h +95 -0
  284. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORDirectorySizeTracker.h +66 -0
  285. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORLifecycle.h +63 -0
  286. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORPlatform.h +225 -0
  287. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORReachability.h +31 -0
  288. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORRegistrar.h +50 -0
  289. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORStorageEventSelector.h +61 -0
  290. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORStorageProtocol.h +171 -0
  291. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORUploader.h +59 -0
  292. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREndpoints_Private.h +27 -0
  293. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h +33 -0
  294. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage+Promises.h +28 -0
  295. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage.h +158 -0
  296. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h +30 -0
  297. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h +35 -0
  298. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h +57 -0
  299. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h +37 -0
  300. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h +39 -0
  301. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadBatch.h +37 -0
  302. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h +68 -0
  303. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORClock.h +66 -0
  304. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORConsoleLogger.h +144 -0
  305. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREndpoints.h +36 -0
  306. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREvent.h +87 -0
  307. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREventDataObject.h +36 -0
  308. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREventTransformer.h +38 -0
  309. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORTargets.h +40 -0
  310. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORTransport.h +92 -0
  311. data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GoogleDataTransport.h +24 -0
  312. data/examples/AExample/Pods/GoogleDataTransport/LICENSE +202 -0
  313. data/examples/AExample/Pods/GoogleDataTransport/README.md +231 -0
  314. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m +1070 -0
  315. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULSceneDelegateSwizzler.m +439 -0
  316. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h +55 -0
  317. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h +48 -0
  318. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULAppDelegateSwizzler.h +107 -0
  319. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULApplication.h +50 -0
  320. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULSceneDelegateSwizzler.h +76 -0
  321. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h +56 -0
  322. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorage.m +153 -0
  323. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorageUserDefaults.m +68 -0
  324. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m +103 -0
  325. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULAppEnvironmentUtil.h +60 -0
  326. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorable.h +40 -0
  327. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorage.h +54 -0
  328. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorageUserDefaults.h +51 -0
  329. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULKeychainStorage.h +79 -0
  330. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULKeychainUtils.h +61 -0
  331. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULSecureCoding.h +36 -0
  332. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULURLSessionDataResponse.h +31 -0
  333. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/NSURLSession+GULPromises.h +37 -0
  334. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainStorage.m +192 -0
  335. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainUtils.m +113 -0
  336. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/URLSessionPromiseWrapper/GULURLSessionDataResponse.m +30 -0
  337. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/URLSessionPromiseWrapper/NSURLSession+GULPromises.m +46 -0
  338. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m +333 -0
  339. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Logger/GULLogger.m +215 -0
  340. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Logger/Public/GoogleUtilities/GULLogger.h +159 -0
  341. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Logger/Public/GoogleUtilities/GULLoggerLevel.h +37 -0
  342. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m +153 -0
  343. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Public/GoogleUtilities/GULOriginalIMPConvenienceMacros.h +207 -0
  344. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Public/GoogleUtilities/GULSwizzler.h +71 -0
  345. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m +207 -0
  346. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/Public/GoogleUtilities/GULNSData+zlib.h +49 -0
  347. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m +101 -0
  348. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m +390 -0
  349. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m +41 -0
  350. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkInternal.h +24 -0
  351. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m +766 -0
  352. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULMutableDictionary.h +46 -0
  353. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetwork.h +87 -0
  354. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkConstants.h +71 -0
  355. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkLoggerProtocol.h +49 -0
  356. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkMessageCode.h +47 -0
  357. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkURLSession.h +62 -0
  358. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h +48 -0
  359. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m +263 -0
  360. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityMessageCode.h +29 -0
  361. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/Public/GoogleUtilities/GULReachabilityChecker.h +79 -0
  362. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/UserDefaults/GULUserDefaults.m +213 -0
  363. data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/UserDefaults/Public/GoogleUtilities/GULUserDefaults.h +110 -0
  364. data/examples/AExample/Pods/GoogleUtilities/LICENSE +247 -0
  365. data/examples/AExample/Pods/GoogleUtilities/README.md +189 -0
  366. data/examples/AExample/Pods/Manifest.lock +112 -0
  367. data/examples/AExample/Pods/Pods.xcodeproj/project.pbxproj +3670 -0
  368. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseAnalytics.xcscheme +58 -0
  369. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseCore.xcscheme +58 -0
  370. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseCoreDiagnostics.xcscheme +58 -0
  371. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseInstallations.xcscheme +58 -0
  372. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/GoogleAppMeasurement.xcscheme +58 -0
  373. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/GoogleDataTransport.xcscheme +58 -0
  374. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/GoogleUtilities.xcscheme +58 -0
  375. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/Pods-AExample-AExampleCP.xcscheme +58 -0
  376. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/Pods-AExample.xcscheme +58 -0
  377. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/PromisesObjC.xcscheme +58 -0
  378. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/nanopb.xcscheme +58 -0
  379. data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/xcschememanagement.plist +66 -0
  380. data/examples/AExample/Pods/PromisesObjC/LICENSE +202 -0
  381. data/examples/AExample/Pods/PromisesObjC/README.md +60 -0
  382. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+All.m +86 -0
  383. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Always.m +58 -0
  384. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Any.m +112 -0
  385. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Async.m +70 -0
  386. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Await.m +48 -0
  387. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Catch.m +55 -0
  388. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Delay.m +59 -0
  389. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Do.m +59 -0
  390. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Race.m +65 -0
  391. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Recover.m +54 -0
  392. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Reduce.m +61 -0
  393. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Retry.m +128 -0
  394. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m +55 -0
  395. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Then.m +50 -0
  396. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Timeout.m +64 -0
  397. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Validate.m +56 -0
  398. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Wrap.m +420 -0
  399. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m +299 -0
  400. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromiseError.m +19 -0
  401. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+All.h +63 -0
  402. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Always.h +54 -0
  403. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Any.h +69 -0
  404. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Async.h +60 -0
  405. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Await.h +32 -0
  406. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Catch.h +59 -0
  407. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Delay.h +59 -0
  408. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Do.h +55 -0
  409. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Race.h +62 -0
  410. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Recover.h +60 -0
  411. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Reduce.h +71 -0
  412. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Retry.h +165 -0
  413. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h +57 -0
  414. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Then.h +63 -0
  415. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Timeout.h +57 -0
  416. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Validate.h +60 -0
  417. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Wrap.h +316 -0
  418. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h +93 -0
  419. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromiseError.h +43 -0
  420. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromisePrivate.h +66 -0
  421. data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromises.h +32 -0
  422. data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks-input-files.xcfilelist +2 -0
  423. data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks-output-files.xcfilelist +1 -0
  424. data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks.sh +109 -0
  425. data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.debug.xcconfig +13 -0
  426. data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.release.xcconfig +13 -0
  427. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore-Info.plist +26 -0
  428. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore-dummy.m +5 -0
  429. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore-umbrella.h +22 -0
  430. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore.debug.xcconfig +16 -0
  431. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore.modulemap +6 -0
  432. data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore.release.xcconfig +16 -0
  433. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist +26 -0
  434. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-dummy.m +5 -0
  435. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-umbrella.h +17 -0
  436. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.debug.xcconfig +17 -0
  437. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.modulemap +6 -0
  438. data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.release.xcconfig +17 -0
  439. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist +26 -0
  440. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-dummy.m +5 -0
  441. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-umbrella.h +20 -0
  442. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.debug.xcconfig +15 -0
  443. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.modulemap +6 -0
  444. data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.release.xcconfig +15 -0
  445. data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks-input-files.xcfilelist +3 -0
  446. data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks-output-files.xcfilelist +2 -0
  447. data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks.sh +110 -0
  448. data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.debug.xcconfig +13 -0
  449. data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.release.xcconfig +13 -0
  450. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist +26 -0
  451. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-dummy.m +5 -0
  452. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-umbrella.h +25 -0
  453. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.debug.xcconfig +16 -0
  454. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.modulemap +6 -0
  455. data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.release.xcconfig +16 -0
  456. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist +26 -0
  457. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-dummy.m +5 -0
  458. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-umbrella.h +41 -0
  459. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.debug.xcconfig +15 -0
  460. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.modulemap +6 -0
  461. data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.release.xcconfig +15 -0
  462. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-Info.plist +26 -0
  463. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-acknowledgements.markdown +1316 -0
  464. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-acknowledgements.plist +1396 -0
  465. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-dummy.m +5 -0
  466. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Debug-input-files.xcfilelist +8 -0
  467. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Debug-output-files.xcfilelist +7 -0
  468. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Release-input-files.xcfilelist +8 -0
  469. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Release-output-files.xcfilelist +7 -0
  470. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks.sh +198 -0
  471. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-umbrella.h +16 -0
  472. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample.debug.xcconfig +12 -0
  473. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample.modulemap +6 -0
  474. data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample.release.xcconfig +12 -0
  475. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-Info.plist +26 -0
  476. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-acknowledgements.markdown +1316 -0
  477. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-acknowledgements.plist +1396 -0
  478. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-dummy.m +5 -0
  479. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Debug-input-files.xcfilelist +8 -0
  480. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Debug-output-files.xcfilelist +7 -0
  481. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Release-input-files.xcfilelist +8 -0
  482. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Release-output-files.xcfilelist +7 -0
  483. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks.sh +198 -0
  484. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-umbrella.h +16 -0
  485. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP.debug.xcconfig +12 -0
  486. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP.modulemap +6 -0
  487. data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP.release.xcconfig +12 -0
  488. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC-Info.plist +26 -0
  489. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC-dummy.m +5 -0
  490. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC-umbrella.h +36 -0
  491. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC.debug.xcconfig +12 -0
  492. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC.modulemap +6 -0
  493. data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC.release.xcconfig +12 -0
  494. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-Info.plist +26 -0
  495. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-dummy.m +5 -0
  496. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-prefix.pch +12 -0
  497. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-umbrella.h +26 -0
  498. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb.debug.xcconfig +11 -0
  499. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb.modulemap +6 -0
  500. data/examples/AExample/Pods/Target Support Files/nanopb/nanopb.release.xcconfig +11 -0
  501. data/examples/AExample/Pods/nanopb/LICENSE.txt +20 -0
  502. data/examples/AExample/Pods/nanopb/README.md +71 -0
  503. data/examples/AExample/Pods/nanopb/pb.h +599 -0
  504. data/examples/AExample/Pods/nanopb/pb_common.c +97 -0
  505. data/examples/AExample/Pods/nanopb/pb_common.h +42 -0
  506. data/examples/AExample/Pods/nanopb/pb_decode.c +1564 -0
  507. data/examples/AExample/Pods/nanopb/pb_decode.h +178 -0
  508. data/examples/AExample/Pods/nanopb/pb_encode.c +913 -0
  509. data/examples/AExample/Pods/nanopb/pb_encode.h +170 -0
  510. data/lib/cocoapods-catalyst-validator/cocoapods-catalyst-validator.rb +110 -0
  511. data/lib/cocoapods-catalyst-validator/gem_version.rb +3 -0
  512. data/lib/cocoapods_plugin.rb +3 -0
  513. data/spec/command/validator_spec.rb +12 -0
  514. data/spec/spec_helper.rb +50 -0
  515. metadata +601 -0
@@ -0,0 +1,1564 @@
1
+ /* pb_decode.c -- decode a protobuf using minimal resources
2
+ *
3
+ * 2011 Petteri Aimonen <jpa@kapsi.fi>
4
+ */
5
+
6
+ /* Use the GCC warn_unused_result attribute to check that all return values
7
+ * are propagated correctly. On other compilers and gcc before 3.4.0 just
8
+ * ignore the annotation.
9
+ */
10
+ #if !defined(__GNUC__) || ( __GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)
11
+ #define checkreturn
12
+ #else
13
+ #define checkreturn __attribute__((warn_unused_result))
14
+ #endif
15
+
16
+ #include "pb.h"
17
+ #include "pb_decode.h"
18
+ #include "pb_common.h"
19
+
20
+ /**************************************
21
+ * Declarations internal to this file *
22
+ **************************************/
23
+
24
+ typedef bool (*pb_decoder_t)(pb_istream_t *stream, const pb_field_t *field, void *dest) checkreturn;
25
+
26
+ static bool checkreturn buf_read(pb_istream_t *stream, pb_byte_t *buf, size_t count);
27
+ static bool checkreturn read_raw_value(pb_istream_t *stream, pb_wire_type_t wire_type, pb_byte_t *buf, size_t *size);
28
+ static bool checkreturn decode_static_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *iter);
29
+ static bool checkreturn decode_callback_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *iter);
30
+ static bool checkreturn decode_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *iter);
31
+ static void iter_from_extension(pb_field_iter_t *iter, pb_extension_t *extension);
32
+ static bool checkreturn default_extension_decoder(pb_istream_t *stream, pb_extension_t *extension, uint32_t tag, pb_wire_type_t wire_type);
33
+ static bool checkreturn decode_extension(pb_istream_t *stream, uint32_t tag, pb_wire_type_t wire_type, pb_field_iter_t *iter);
34
+ static bool checkreturn find_extension_field(pb_field_iter_t *iter);
35
+ static void pb_field_set_to_default(pb_field_iter_t *iter);
36
+ static void pb_message_set_to_defaults(const pb_field_t fields[], void *dest_struct);
37
+ static bool checkreturn pb_dec_bool(pb_istream_t *stream, const pb_field_t *field, void *dest);
38
+ static bool checkreturn pb_dec_varint(pb_istream_t *stream, const pb_field_t *field, void *dest);
39
+ static bool checkreturn pb_decode_varint32_eof(pb_istream_t *stream, uint32_t *dest, bool *eof);
40
+ static bool checkreturn pb_dec_uvarint(pb_istream_t *stream, const pb_field_t *field, void *dest);
41
+ static bool checkreturn pb_dec_svarint(pb_istream_t *stream, const pb_field_t *field, void *dest);
42
+ static bool checkreturn pb_dec_fixed32(pb_istream_t *stream, const pb_field_t *field, void *dest);
43
+ static bool checkreturn pb_dec_fixed64(pb_istream_t *stream, const pb_field_t *field, void *dest);
44
+ static bool checkreturn pb_dec_bytes(pb_istream_t *stream, const pb_field_t *field, void *dest);
45
+ static bool checkreturn pb_dec_string(pb_istream_t *stream, const pb_field_t *field, void *dest);
46
+ static bool checkreturn pb_dec_submessage(pb_istream_t *stream, const pb_field_t *field, void *dest);
47
+ static bool checkreturn pb_dec_fixed_length_bytes(pb_istream_t *stream, const pb_field_t *field, void *dest);
48
+ static bool checkreturn pb_skip_varint(pb_istream_t *stream);
49
+ static bool checkreturn pb_skip_string(pb_istream_t *stream);
50
+
51
+ #ifdef PB_ENABLE_MALLOC
52
+ static bool checkreturn allocate_field(pb_istream_t *stream, void *pData, size_t data_size, size_t array_size);
53
+ static bool checkreturn pb_release_union_field(pb_istream_t *stream, pb_field_iter_t *iter);
54
+ static void pb_release_single_field(const pb_field_iter_t *iter);
55
+ #endif
56
+
57
+ #ifdef PB_WITHOUT_64BIT
58
+ #define pb_int64_t int32_t
59
+ #define pb_uint64_t uint32_t
60
+ #else
61
+ #define pb_int64_t int64_t
62
+ #define pb_uint64_t uint64_t
63
+ #endif
64
+
65
+ /* --- Function pointers to field decoders ---
66
+ * Order in the array must match pb_action_t LTYPE numbering.
67
+ */
68
+ static const pb_decoder_t PB_DECODERS[PB_LTYPES_COUNT] = {
69
+ &pb_dec_bool,
70
+ &pb_dec_varint,
71
+ &pb_dec_uvarint,
72
+ &pb_dec_svarint,
73
+ &pb_dec_fixed32,
74
+ &pb_dec_fixed64,
75
+
76
+ &pb_dec_bytes,
77
+ &pb_dec_string,
78
+ &pb_dec_submessage,
79
+ NULL, /* extensions */
80
+ &pb_dec_fixed_length_bytes
81
+ };
82
+
83
+ /*******************************
84
+ * pb_istream_t implementation *
85
+ *******************************/
86
+
87
+ static bool checkreturn buf_read(pb_istream_t *stream, pb_byte_t *buf, size_t count)
88
+ {
89
+ size_t i;
90
+ const pb_byte_t *source = (const pb_byte_t*)stream->state;
91
+ stream->state = (pb_byte_t*)stream->state + count;
92
+
93
+ if (buf != NULL)
94
+ {
95
+ for (i = 0; i < count; i++)
96
+ buf[i] = source[i];
97
+ }
98
+
99
+ return true;
100
+ }
101
+
102
+ bool checkreturn pb_read(pb_istream_t *stream, pb_byte_t *buf, size_t count)
103
+ {
104
+ if (count == 0)
105
+ return true;
106
+
107
+ #ifndef PB_BUFFER_ONLY
108
+ if (buf == NULL && stream->callback != buf_read)
109
+ {
110
+ /* Skip input bytes */
111
+ pb_byte_t tmp[16];
112
+ while (count > 16)
113
+ {
114
+ if (!pb_read(stream, tmp, 16))
115
+ return false;
116
+
117
+ count -= 16;
118
+ }
119
+
120
+ return pb_read(stream, tmp, count);
121
+ }
122
+ #endif
123
+
124
+ if (stream->bytes_left < count)
125
+ PB_RETURN_ERROR(stream, "end-of-stream");
126
+
127
+ #ifndef PB_BUFFER_ONLY
128
+ if (!stream->callback(stream, buf, count))
129
+ PB_RETURN_ERROR(stream, "io error");
130
+ #else
131
+ if (!buf_read(stream, buf, count))
132
+ return false;
133
+ #endif
134
+
135
+ stream->bytes_left -= count;
136
+ return true;
137
+ }
138
+
139
+ /* Read a single byte from input stream. buf may not be NULL.
140
+ * This is an optimization for the varint decoding. */
141
+ static bool checkreturn pb_readbyte(pb_istream_t *stream, pb_byte_t *buf)
142
+ {
143
+ if (stream->bytes_left == 0)
144
+ PB_RETURN_ERROR(stream, "end-of-stream");
145
+
146
+ #ifndef PB_BUFFER_ONLY
147
+ if (!stream->callback(stream, buf, 1))
148
+ PB_RETURN_ERROR(stream, "io error");
149
+ #else
150
+ *buf = *(const pb_byte_t*)stream->state;
151
+ stream->state = (pb_byte_t*)stream->state + 1;
152
+ #endif
153
+
154
+ stream->bytes_left--;
155
+
156
+ return true;
157
+ }
158
+
159
+ pb_istream_t pb_istream_from_buffer(const pb_byte_t *buf, size_t bufsize)
160
+ {
161
+ pb_istream_t stream;
162
+ /* Cast away the const from buf without a compiler error. We are
163
+ * careful to use it only in a const manner in the callbacks.
164
+ */
165
+ union {
166
+ void *state;
167
+ const void *c_state;
168
+ } state;
169
+ #ifdef PB_BUFFER_ONLY
170
+ stream.callback = NULL;
171
+ #else
172
+ stream.callback = &buf_read;
173
+ #endif
174
+ state.c_state = buf;
175
+ stream.state = state.state;
176
+ stream.bytes_left = bufsize;
177
+ #ifndef PB_NO_ERRMSG
178
+ stream.errmsg = NULL;
179
+ #endif
180
+ return stream;
181
+ }
182
+
183
+ /********************
184
+ * Helper functions *
185
+ ********************/
186
+
187
+ static bool checkreturn pb_decode_varint32_eof(pb_istream_t *stream, uint32_t *dest, bool *eof)
188
+ {
189
+ pb_byte_t byte;
190
+ uint32_t result;
191
+
192
+ if (!pb_readbyte(stream, &byte))
193
+ {
194
+ if (stream->bytes_left == 0)
195
+ {
196
+ if (eof)
197
+ {
198
+ *eof = true;
199
+ }
200
+ }
201
+
202
+ return false;
203
+ }
204
+
205
+ if ((byte & 0x80) == 0)
206
+ {
207
+ /* Quick case, 1 byte value */
208
+ result = byte;
209
+ }
210
+ else
211
+ {
212
+ /* Multibyte case */
213
+ uint_fast8_t bitpos = 7;
214
+ result = byte & 0x7F;
215
+
216
+ do
217
+ {
218
+ if (!pb_readbyte(stream, &byte))
219
+ return false;
220
+
221
+ if (bitpos >= 32)
222
+ {
223
+ /* Note: The varint could have trailing 0x80 bytes, or 0xFF for negative. */
224
+ uint8_t sign_extension = (bitpos < 63) ? 0xFF : 0x01;
225
+
226
+ if ((byte & 0x7F) != 0x00 && ((result >> 31) == 0 || byte != sign_extension))
227
+ {
228
+ PB_RETURN_ERROR(stream, "varint overflow");
229
+ }
230
+ }
231
+ else
232
+ {
233
+ result |= (uint32_t)(byte & 0x7F) << bitpos;
234
+ }
235
+ bitpos = (uint_fast8_t)(bitpos + 7);
236
+ } while (byte & 0x80);
237
+
238
+ if (bitpos == 35 && (byte & 0x70) != 0)
239
+ {
240
+ /* The last byte was at bitpos=28, so only bottom 4 bits fit. */
241
+ PB_RETURN_ERROR(stream, "varint overflow");
242
+ }
243
+ }
244
+
245
+ *dest = result;
246
+ return true;
247
+ }
248
+
249
+ bool checkreturn pb_decode_varint32(pb_istream_t *stream, uint32_t *dest)
250
+ {
251
+ return pb_decode_varint32_eof(stream, dest, NULL);
252
+ }
253
+
254
+ #ifndef PB_WITHOUT_64BIT
255
+ bool checkreturn pb_decode_varint(pb_istream_t *stream, uint64_t *dest)
256
+ {
257
+ pb_byte_t byte;
258
+ uint_fast8_t bitpos = 0;
259
+ uint64_t result = 0;
260
+
261
+ do
262
+ {
263
+ if (bitpos >= 64)
264
+ PB_RETURN_ERROR(stream, "varint overflow");
265
+
266
+ if (!pb_readbyte(stream, &byte))
267
+ return false;
268
+
269
+ result |= (uint64_t)(byte & 0x7F) << bitpos;
270
+ bitpos = (uint_fast8_t)(bitpos + 7);
271
+ } while (byte & 0x80);
272
+
273
+ *dest = result;
274
+ return true;
275
+ }
276
+ #endif
277
+
278
+ bool checkreturn pb_skip_varint(pb_istream_t *stream)
279
+ {
280
+ pb_byte_t byte;
281
+ do
282
+ {
283
+ if (!pb_read(stream, &byte, 1))
284
+ return false;
285
+ } while (byte & 0x80);
286
+ return true;
287
+ }
288
+
289
+ bool checkreturn pb_skip_string(pb_istream_t *stream)
290
+ {
291
+ uint32_t length;
292
+ if (!pb_decode_varint32(stream, &length))
293
+ return false;
294
+
295
+ return pb_read(stream, NULL, length);
296
+ }
297
+
298
+ bool checkreturn pb_decode_tag(pb_istream_t *stream, pb_wire_type_t *wire_type, uint32_t *tag, bool *eof)
299
+ {
300
+ uint32_t temp;
301
+ *eof = false;
302
+ *wire_type = (pb_wire_type_t) 0;
303
+ *tag = 0;
304
+
305
+ if (!pb_decode_varint32_eof(stream, &temp, eof))
306
+ {
307
+ return false;
308
+ }
309
+
310
+ if (temp == 0)
311
+ {
312
+ *eof = true; /* Special feature: allow 0-terminated messages. */
313
+ return false;
314
+ }
315
+
316
+ *tag = temp >> 3;
317
+ *wire_type = (pb_wire_type_t)(temp & 7);
318
+ return true;
319
+ }
320
+
321
+ bool checkreturn pb_skip_field(pb_istream_t *stream, pb_wire_type_t wire_type)
322
+ {
323
+ switch (wire_type)
324
+ {
325
+ case PB_WT_VARINT: return pb_skip_varint(stream);
326
+ case PB_WT_64BIT: return pb_read(stream, NULL, 8);
327
+ case PB_WT_STRING: return pb_skip_string(stream);
328
+ case PB_WT_32BIT: return pb_read(stream, NULL, 4);
329
+ default: PB_RETURN_ERROR(stream, "invalid wire_type");
330
+ }
331
+ }
332
+
333
+ /* Read a raw value to buffer, for the purpose of passing it to callback as
334
+ * a substream. Size is maximum size on call, and actual size on return.
335
+ */
336
+ static bool checkreturn read_raw_value(pb_istream_t *stream, pb_wire_type_t wire_type, pb_byte_t *buf, size_t *size)
337
+ {
338
+ size_t max_size = *size;
339
+ switch (wire_type)
340
+ {
341
+ case PB_WT_VARINT:
342
+ *size = 0;
343
+ do
344
+ {
345
+ (*size)++;
346
+ if (*size > max_size) return false;
347
+ if (!pb_read(stream, buf, 1)) return false;
348
+ } while (*buf++ & 0x80);
349
+ return true;
350
+
351
+ case PB_WT_64BIT:
352
+ *size = 8;
353
+ return pb_read(stream, buf, 8);
354
+
355
+ case PB_WT_32BIT:
356
+ *size = 4;
357
+ return pb_read(stream, buf, 4);
358
+
359
+ case PB_WT_STRING:
360
+ /* Calling read_raw_value with a PB_WT_STRING is an error.
361
+ * Explicitly handle this case and fallthrough to default to avoid
362
+ * compiler warnings.
363
+ */
364
+
365
+ default: PB_RETURN_ERROR(stream, "invalid wire_type");
366
+ }
367
+ }
368
+
369
+ /* Decode string length from stream and return a substream with limited length.
370
+ * Remember to close the substream using pb_close_string_substream().
371
+ */
372
+ bool checkreturn pb_make_string_substream(pb_istream_t *stream, pb_istream_t *substream)
373
+ {
374
+ uint32_t size;
375
+ if (!pb_decode_varint32(stream, &size))
376
+ return false;
377
+
378
+ *substream = *stream;
379
+ if (substream->bytes_left < size)
380
+ PB_RETURN_ERROR(stream, "parent stream too short");
381
+
382
+ substream->bytes_left = size;
383
+ stream->bytes_left -= size;
384
+ return true;
385
+ }
386
+
387
+ bool checkreturn pb_close_string_substream(pb_istream_t *stream, pb_istream_t *substream)
388
+ {
389
+ if (substream->bytes_left) {
390
+ if (!pb_read(substream, NULL, substream->bytes_left))
391
+ return false;
392
+ }
393
+
394
+ stream->state = substream->state;
395
+
396
+ #ifndef PB_NO_ERRMSG
397
+ stream->errmsg = substream->errmsg;
398
+ #endif
399
+ return true;
400
+ }
401
+
402
+ /*************************
403
+ * Decode a single field *
404
+ *************************/
405
+
406
+ static bool checkreturn decode_static_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *iter)
407
+ {
408
+ pb_type_t type;
409
+ pb_decoder_t func;
410
+
411
+ type = iter->pos->type;
412
+ func = PB_DECODERS[PB_LTYPE(type)];
413
+
414
+ switch (PB_HTYPE(type))
415
+ {
416
+ case PB_HTYPE_REQUIRED:
417
+ return func(stream, iter->pos, iter->pData);
418
+
419
+ case PB_HTYPE_OPTIONAL:
420
+ if (iter->pSize != iter->pData)
421
+ *(bool*)iter->pSize = true;
422
+ return func(stream, iter->pos, iter->pData);
423
+
424
+ case PB_HTYPE_REPEATED:
425
+ if (wire_type == PB_WT_STRING
426
+ && PB_LTYPE(type) <= PB_LTYPE_LAST_PACKABLE)
427
+ {
428
+ /* Packed array */
429
+ bool status = true;
430
+ pb_size_t *size = (pb_size_t*)iter->pSize;
431
+
432
+ pb_istream_t substream;
433
+ if (!pb_make_string_substream(stream, &substream))
434
+ return false;
435
+
436
+ while (substream.bytes_left > 0 && *size < iter->pos->array_size)
437
+ {
438
+ void *pItem = (char*)iter->pData + iter->pos->data_size * (*size);
439
+ if (!func(&substream, iter->pos, pItem))
440
+ {
441
+ status = false;
442
+ break;
443
+ }
444
+ (*size)++;
445
+ }
446
+
447
+ if (substream.bytes_left != 0)
448
+ PB_RETURN_ERROR(stream, "array overflow");
449
+ if (!pb_close_string_substream(stream, &substream))
450
+ return false;
451
+
452
+ return status;
453
+ }
454
+ else
455
+ {
456
+ /* Repeated field */
457
+ pb_size_t *size = (pb_size_t*)iter->pSize;
458
+ char *pItem = (char*)iter->pData + iter->pos->data_size * (*size);
459
+
460
+ if ((*size)++ >= iter->pos->array_size)
461
+ PB_RETURN_ERROR(stream, "array overflow");
462
+
463
+ return func(stream, iter->pos, pItem);
464
+ }
465
+
466
+ case PB_HTYPE_ONEOF:
467
+ if (PB_LTYPE(type) == PB_LTYPE_SUBMESSAGE &&
468
+ *(pb_size_t*)iter->pSize != iter->pos->tag)
469
+ {
470
+ /* We memset to zero so that any callbacks are set to NULL.
471
+ * This is because the callbacks might otherwise have values
472
+ * from some other union field. */
473
+ memset(iter->pData, 0, iter->pos->data_size);
474
+ pb_message_set_to_defaults((const pb_field_t*)iter->pos->ptr, iter->pData);
475
+ }
476
+ *(pb_size_t*)iter->pSize = iter->pos->tag;
477
+
478
+ return func(stream, iter->pos, iter->pData);
479
+
480
+ default:
481
+ PB_RETURN_ERROR(stream, "invalid field type");
482
+ }
483
+ }
484
+
485
+ #ifdef PB_ENABLE_MALLOC
486
+ /* Allocate storage for the field and store the pointer at iter->pData.
487
+ * array_size is the number of entries to reserve in an array.
488
+ * Zero size is not allowed, use pb_free() for releasing.
489
+ */
490
+ static bool checkreturn allocate_field(pb_istream_t *stream, void *pData, size_t data_size, size_t array_size)
491
+ {
492
+ void *ptr = *(void**)pData;
493
+
494
+ if (data_size == 0 || array_size == 0)
495
+ PB_RETURN_ERROR(stream, "invalid size");
496
+
497
+ #ifdef __AVR__
498
+ /* Workaround for AVR libc bug 53284: http://savannah.nongnu.org/bugs/?53284
499
+ * Realloc to size of 1 byte can cause corruption of the malloc structures.
500
+ */
501
+ if (data_size == 1 && array_size == 1)
502
+ {
503
+ data_size = 2;
504
+ }
505
+ #endif
506
+
507
+ /* Check for multiplication overflows.
508
+ * This code avoids the costly division if the sizes are small enough.
509
+ * Multiplication is safe as long as only half of bits are set
510
+ * in either multiplicand.
511
+ */
512
+ {
513
+ const size_t check_limit = (size_t)1 << (sizeof(size_t) * 4);
514
+ if (data_size >= check_limit || array_size >= check_limit)
515
+ {
516
+ const size_t size_max = (size_t)-1;
517
+ if (size_max / array_size < data_size)
518
+ {
519
+ PB_RETURN_ERROR(stream, "size too large");
520
+ }
521
+ }
522
+ }
523
+
524
+ /* Allocate new or expand previous allocation */
525
+ /* Note: on failure the old pointer will remain in the structure,
526
+ * the message must be freed by caller also on error return. */
527
+ ptr = pb_realloc(ptr, array_size * data_size);
528
+ if (ptr == NULL)
529
+ PB_RETURN_ERROR(stream, "realloc failed");
530
+
531
+ *(void**)pData = ptr;
532
+ return true;
533
+ }
534
+
535
+ /* Clear a newly allocated item in case it contains a pointer, or is a submessage. */
536
+ static void initialize_pointer_field(void *pItem, pb_field_iter_t *iter)
537
+ {
538
+ if (PB_LTYPE(iter->pos->type) == PB_LTYPE_STRING ||
539
+ PB_LTYPE(iter->pos->type) == PB_LTYPE_BYTES)
540
+ {
541
+ *(void**)pItem = NULL;
542
+ }
543
+ else if (PB_LTYPE(iter->pos->type) == PB_LTYPE_SUBMESSAGE)
544
+ {
545
+ /* We memset to zero so that any callbacks are set to NULL.
546
+ * Then set any default values. */
547
+ memset(pItem, 0, iter->pos->data_size);
548
+ pb_message_set_to_defaults((const pb_field_t *) iter->pos->ptr, pItem);
549
+ }
550
+ }
551
+ #endif
552
+
553
+ static bool checkreturn decode_pointer_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *iter)
554
+ {
555
+ #ifndef PB_ENABLE_MALLOC
556
+ PB_UNUSED(wire_type);
557
+ PB_UNUSED(iter);
558
+ PB_RETURN_ERROR(stream, "no malloc support");
559
+ #else
560
+ pb_type_t type;
561
+ pb_decoder_t func;
562
+
563
+ type = iter->pos->type;
564
+ func = PB_DECODERS[PB_LTYPE(type)];
565
+
566
+ switch (PB_HTYPE(type))
567
+ {
568
+ case PB_HTYPE_REQUIRED:
569
+ case PB_HTYPE_OPTIONAL:
570
+ case PB_HTYPE_ONEOF:
571
+ if (PB_LTYPE(type) == PB_LTYPE_SUBMESSAGE &&
572
+ *(void**)iter->pData != NULL)
573
+ {
574
+ /* Duplicate field, have to release the old allocation first. */
575
+ pb_release_single_field(iter);
576
+ }
577
+
578
+ if (PB_HTYPE(type) == PB_HTYPE_ONEOF)
579
+ {
580
+ *(pb_size_t*)iter->pSize = iter->pos->tag;
581
+ }
582
+
583
+ if (PB_LTYPE(type) == PB_LTYPE_STRING ||
584
+ PB_LTYPE(type) == PB_LTYPE_BYTES)
585
+ {
586
+ return func(stream, iter->pos, iter->pData);
587
+ }
588
+ else
589
+ {
590
+ if (!allocate_field(stream, iter->pData, iter->pos->data_size, 1))
591
+ return false;
592
+
593
+ initialize_pointer_field(*(void**)iter->pData, iter);
594
+ return func(stream, iter->pos, *(void**)iter->pData);
595
+ }
596
+
597
+ case PB_HTYPE_REPEATED:
598
+ if (wire_type == PB_WT_STRING
599
+ && PB_LTYPE(type) <= PB_LTYPE_LAST_PACKABLE)
600
+ {
601
+ /* Packed array, multiple items come in at once. */
602
+ bool status = true;
603
+ pb_size_t *size = (pb_size_t*)iter->pSize;
604
+ size_t allocated_size = *size;
605
+ void *pItem;
606
+ pb_istream_t substream;
607
+
608
+ if (!pb_make_string_substream(stream, &substream))
609
+ return false;
610
+
611
+ while (substream.bytes_left)
612
+ {
613
+ if (*size == PB_SIZE_MAX)
614
+ {
615
+ #ifndef PB_NO_ERRMSG
616
+ stream->errmsg = "too many array entries";
617
+ #endif
618
+ status = false;
619
+ break;
620
+ }
621
+
622
+ if ((size_t)*size + 1 > allocated_size)
623
+ {
624
+ /* Allocate more storage. This tries to guess the
625
+ * number of remaining entries. Round the division
626
+ * upwards. */
627
+ size_t remain = (substream.bytes_left - 1) / iter->pos->data_size + 1;
628
+ if (remain < PB_SIZE_MAX - allocated_size)
629
+ allocated_size += remain;
630
+ else
631
+ allocated_size += 1;
632
+
633
+ if (!allocate_field(&substream, iter->pData, iter->pos->data_size, allocated_size))
634
+ {
635
+ status = false;
636
+ break;
637
+ }
638
+ }
639
+
640
+ /* Decode the array entry */
641
+ pItem = *(char**)iter->pData + iter->pos->data_size * (*size);
642
+ initialize_pointer_field(pItem, iter);
643
+ if (!func(&substream, iter->pos, pItem))
644
+ {
645
+ status = false;
646
+ break;
647
+ }
648
+
649
+ (*size)++;
650
+ }
651
+ if (!pb_close_string_substream(stream, &substream))
652
+ return false;
653
+
654
+ return status;
655
+ }
656
+ else
657
+ {
658
+ /* Normal repeated field, i.e. only one item at a time. */
659
+ pb_size_t *size = (pb_size_t*)iter->pSize;
660
+ void *pItem;
661
+
662
+ if (*size == PB_SIZE_MAX)
663
+ PB_RETURN_ERROR(stream, "too many array entries");
664
+
665
+ if (!allocate_field(stream, iter->pData, iter->pos->data_size, (size_t)(*size + 1)))
666
+ return false;
667
+
668
+ pItem = *(char**)iter->pData + iter->pos->data_size * (*size);
669
+ (*size)++;
670
+ initialize_pointer_field(pItem, iter);
671
+ return func(stream, iter->pos, pItem);
672
+ }
673
+
674
+ default:
675
+ PB_RETURN_ERROR(stream, "invalid field type");
676
+ }
677
+ #endif
678
+ }
679
+
680
+ static bool checkreturn decode_callback_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *iter)
681
+ {
682
+ pb_callback_t *pCallback = (pb_callback_t*)iter->pData;
683
+ #ifdef PB_OLD_CALLBACK_STYLE
684
+ void *arg;
685
+ #else
686
+ void **arg;
687
+ #endif
688
+
689
+ if (pCallback == NULL || pCallback->funcs.decode == NULL)
690
+ return pb_skip_field(stream, wire_type);
691
+
692
+ #ifdef PB_OLD_CALLBACK_STYLE
693
+ arg = pCallback->arg;
694
+ #else
695
+ arg = &(pCallback->arg);
696
+ #endif
697
+
698
+ if (wire_type == PB_WT_STRING)
699
+ {
700
+ pb_istream_t substream;
701
+
702
+ if (!pb_make_string_substream(stream, &substream))
703
+ return false;
704
+
705
+ do
706
+ {
707
+ if (!pCallback->funcs.decode(&substream, iter->pos, arg))
708
+ PB_RETURN_ERROR(stream, "callback failed");
709
+ } while (substream.bytes_left);
710
+
711
+ if (!pb_close_string_substream(stream, &substream))
712
+ return false;
713
+
714
+ return true;
715
+ }
716
+ else
717
+ {
718
+ /* Copy the single scalar value to stack.
719
+ * This is required so that we can limit the stream length,
720
+ * which in turn allows to use same callback for packed and
721
+ * not-packed fields. */
722
+ pb_istream_t substream;
723
+ pb_byte_t buffer[10];
724
+ size_t size = sizeof(buffer);
725
+
726
+ if (!read_raw_value(stream, wire_type, buffer, &size))
727
+ return false;
728
+ substream = pb_istream_from_buffer(buffer, size);
729
+
730
+ return pCallback->funcs.decode(&substream, iter->pos, arg);
731
+ }
732
+ }
733
+
734
+ static bool checkreturn decode_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *iter)
735
+ {
736
+ #ifdef PB_ENABLE_MALLOC
737
+ /* When decoding an oneof field, check if there is old data that must be
738
+ * released first. */
739
+ if (PB_HTYPE(iter->pos->type) == PB_HTYPE_ONEOF)
740
+ {
741
+ if (!pb_release_union_field(stream, iter))
742
+ return false;
743
+ }
744
+ #endif
745
+
746
+ switch (PB_ATYPE(iter->pos->type))
747
+ {
748
+ case PB_ATYPE_STATIC:
749
+ return decode_static_field(stream, wire_type, iter);
750
+
751
+ case PB_ATYPE_POINTER:
752
+ return decode_pointer_field(stream, wire_type, iter);
753
+
754
+ case PB_ATYPE_CALLBACK:
755
+ return decode_callback_field(stream, wire_type, iter);
756
+
757
+ default:
758
+ PB_RETURN_ERROR(stream, "invalid field type");
759
+ }
760
+ }
761
+
762
+ static void iter_from_extension(pb_field_iter_t *iter, pb_extension_t *extension)
763
+ {
764
+ /* Fake a field iterator for the extension field.
765
+ * It is not actually safe to advance this iterator, but decode_field
766
+ * will not even try to. */
767
+ const pb_field_t *field = (const pb_field_t*)extension->type->arg;
768
+ (void)pb_field_iter_begin(iter, field, extension->dest);
769
+ iter->pData = extension->dest;
770
+ iter->pSize = &extension->found;
771
+
772
+ if (PB_ATYPE(field->type) == PB_ATYPE_POINTER)
773
+ {
774
+ /* For pointer extensions, the pointer is stored directly
775
+ * in the extension structure. This avoids having an extra
776
+ * indirection. */
777
+ iter->pData = &extension->dest;
778
+ }
779
+ }
780
+
781
+ /* Default handler for extension fields. Expects a pb_field_t structure
782
+ * in extension->type->arg. */
783
+ static bool checkreturn default_extension_decoder(pb_istream_t *stream,
784
+ pb_extension_t *extension, uint32_t tag, pb_wire_type_t wire_type)
785
+ {
786
+ const pb_field_t *field = (const pb_field_t*)extension->type->arg;
787
+ pb_field_iter_t iter;
788
+
789
+ if (field->tag != tag)
790
+ return true;
791
+
792
+ iter_from_extension(&iter, extension);
793
+ extension->found = true;
794
+ return decode_field(stream, wire_type, &iter);
795
+ }
796
+
797
+ /* Try to decode an unknown field as an extension field. Tries each extension
798
+ * decoder in turn, until one of them handles the field or loop ends. */
799
+ static bool checkreturn decode_extension(pb_istream_t *stream,
800
+ uint32_t tag, pb_wire_type_t wire_type, pb_field_iter_t *iter)
801
+ {
802
+ pb_extension_t *extension = *(pb_extension_t* const *)iter->pData;
803
+ size_t pos = stream->bytes_left;
804
+
805
+ while (extension != NULL && pos == stream->bytes_left)
806
+ {
807
+ bool status;
808
+ if (extension->type->decode)
809
+ status = extension->type->decode(stream, extension, tag, wire_type);
810
+ else
811
+ status = default_extension_decoder(stream, extension, tag, wire_type);
812
+
813
+ if (!status)
814
+ return false;
815
+
816
+ extension = extension->next;
817
+ }
818
+
819
+ return true;
820
+ }
821
+
822
+ /* Step through the iterator until an extension field is found or until all
823
+ * entries have been checked. There can be only one extension field per
824
+ * message. Returns false if no extension field is found. */
825
+ static bool checkreturn find_extension_field(pb_field_iter_t *iter)
826
+ {
827
+ const pb_field_t *start = iter->pos;
828
+
829
+ do {
830
+ if (PB_LTYPE(iter->pos->type) == PB_LTYPE_EXTENSION)
831
+ return true;
832
+ (void)pb_field_iter_next(iter);
833
+ } while (iter->pos != start);
834
+
835
+ return false;
836
+ }
837
+
838
+ /* Initialize message fields to default values, recursively */
839
+ static void pb_field_set_to_default(pb_field_iter_t *iter)
840
+ {
841
+ pb_type_t type;
842
+ type = iter->pos->type;
843
+
844
+ if (PB_LTYPE(type) == PB_LTYPE_EXTENSION)
845
+ {
846
+ pb_extension_t *ext = *(pb_extension_t* const *)iter->pData;
847
+ while (ext != NULL)
848
+ {
849
+ pb_field_iter_t ext_iter;
850
+ ext->found = false;
851
+ iter_from_extension(&ext_iter, ext);
852
+ pb_field_set_to_default(&ext_iter);
853
+ ext = ext->next;
854
+ }
855
+ }
856
+ else if (PB_ATYPE(type) == PB_ATYPE_STATIC)
857
+ {
858
+ bool init_data = true;
859
+ if (PB_HTYPE(type) == PB_HTYPE_OPTIONAL && iter->pSize != iter->pData)
860
+ {
861
+ /* Set has_field to false. Still initialize the optional field
862
+ * itself also. */
863
+ *(bool*)iter->pSize = false;
864
+ }
865
+ else if (PB_HTYPE(type) == PB_HTYPE_REPEATED ||
866
+ PB_HTYPE(type) == PB_HTYPE_ONEOF)
867
+ {
868
+ /* REPEATED: Set array count to 0, no need to initialize contents.
869
+ ONEOF: Set which_field to 0. */
870
+ *(pb_size_t*)iter->pSize = 0;
871
+ init_data = false;
872
+ }
873
+
874
+ if (init_data)
875
+ {
876
+ if (PB_LTYPE(iter->pos->type) == PB_LTYPE_SUBMESSAGE)
877
+ {
878
+ /* Initialize submessage to defaults */
879
+ pb_message_set_to_defaults((const pb_field_t *) iter->pos->ptr, iter->pData);
880
+ }
881
+ else if (iter->pos->ptr != NULL)
882
+ {
883
+ /* Initialize to default value */
884
+ memcpy(iter->pData, iter->pos->ptr, iter->pos->data_size);
885
+ }
886
+ else
887
+ {
888
+ /* Initialize to zeros */
889
+ memset(iter->pData, 0, iter->pos->data_size);
890
+ }
891
+ }
892
+ }
893
+ else if (PB_ATYPE(type) == PB_ATYPE_POINTER)
894
+ {
895
+ /* Initialize the pointer to NULL. */
896
+ *(void**)iter->pData = NULL;
897
+
898
+ /* Initialize array count to 0. */
899
+ if (PB_HTYPE(type) == PB_HTYPE_REPEATED ||
900
+ PB_HTYPE(type) == PB_HTYPE_ONEOF)
901
+ {
902
+ *(pb_size_t*)iter->pSize = 0;
903
+ }
904
+ }
905
+ else if (PB_ATYPE(type) == PB_ATYPE_CALLBACK)
906
+ {
907
+ /* Don't overwrite callback */
908
+ }
909
+ }
910
+
911
+ static void pb_message_set_to_defaults(const pb_field_t fields[], void *dest_struct)
912
+ {
913
+ pb_field_iter_t iter;
914
+
915
+ if (!pb_field_iter_begin(&iter, fields, dest_struct))
916
+ return; /* Empty message type */
917
+
918
+ do
919
+ {
920
+ pb_field_set_to_default(&iter);
921
+ } while (pb_field_iter_next(&iter));
922
+ }
923
+
924
+ /*********************
925
+ * Decode all fields *
926
+ *********************/
927
+
928
+ bool checkreturn pb_decode_noinit(pb_istream_t *stream, const pb_field_t fields[], void *dest_struct)
929
+ {
930
+ uint32_t fields_seen[(PB_MAX_REQUIRED_FIELDS + 31) / 32] = {0, 0};
931
+ const uint32_t allbits = ~(uint32_t)0;
932
+ uint32_t extension_range_start = 0;
933
+ pb_field_iter_t iter;
934
+
935
+ /* 'fixed_count_field' and 'fixed_count_size' track position of a repeated fixed
936
+ * count field. This can only handle _one_ repeated fixed count field that
937
+ * is unpacked and unordered among other (non repeated fixed count) fields.
938
+ */
939
+ const pb_field_t *fixed_count_field = NULL;
940
+ pb_size_t fixed_count_size = 0;
941
+
942
+ /* Return value ignored, as empty message types will be correctly handled by
943
+ * pb_field_iter_find() anyway. */
944
+ (void)pb_field_iter_begin(&iter, fields, dest_struct);
945
+
946
+ while (stream->bytes_left)
947
+ {
948
+ uint32_t tag;
949
+ pb_wire_type_t wire_type;
950
+ bool eof;
951
+
952
+ if (!pb_decode_tag(stream, &wire_type, &tag, &eof))
953
+ {
954
+ if (eof)
955
+ break;
956
+ else
957
+ return false;
958
+ }
959
+
960
+ if (!pb_field_iter_find(&iter, tag))
961
+ {
962
+ /* No match found, check if it matches an extension. */
963
+ if (tag >= extension_range_start)
964
+ {
965
+ if (!find_extension_field(&iter))
966
+ extension_range_start = (uint32_t)-1;
967
+ else
968
+ extension_range_start = iter.pos->tag;
969
+
970
+ if (tag >= extension_range_start)
971
+ {
972
+ size_t pos = stream->bytes_left;
973
+
974
+ if (!decode_extension(stream, tag, wire_type, &iter))
975
+ return false;
976
+
977
+ if (pos != stream->bytes_left)
978
+ {
979
+ /* The field was handled */
980
+ continue;
981
+ }
982
+ }
983
+ }
984
+
985
+ /* No match found, skip data */
986
+ if (!pb_skip_field(stream, wire_type))
987
+ return false;
988
+ continue;
989
+ }
990
+
991
+ /* If a repeated fixed count field was found, get size from
992
+ * 'fixed_count_field' as there is no counter contained in the struct.
993
+ */
994
+ if (PB_HTYPE(iter.pos->type) == PB_HTYPE_REPEATED
995
+ && iter.pSize == iter.pData)
996
+ {
997
+ if (fixed_count_field != iter.pos) {
998
+ /* If the new fixed count field does not match the previous one,
999
+ * check that the previous one is NULL or that it finished
1000
+ * receiving all the expected data.
1001
+ */
1002
+ if (fixed_count_field != NULL &&
1003
+ fixed_count_size != fixed_count_field->array_size)
1004
+ {
1005
+ PB_RETURN_ERROR(stream, "wrong size for fixed count field");
1006
+ }
1007
+
1008
+ fixed_count_field = iter.pos;
1009
+ fixed_count_size = 0;
1010
+ }
1011
+
1012
+ iter.pSize = &fixed_count_size;
1013
+ }
1014
+
1015
+ if (PB_HTYPE(iter.pos->type) == PB_HTYPE_REQUIRED
1016
+ && iter.required_field_index < PB_MAX_REQUIRED_FIELDS)
1017
+ {
1018
+ uint32_t tmp = ((uint32_t)1 << (iter.required_field_index & 31));
1019
+ fields_seen[iter.required_field_index >> 5] |= tmp;
1020
+ }
1021
+
1022
+ if (!decode_field(stream, wire_type, &iter))
1023
+ return false;
1024
+ }
1025
+
1026
+ /* Check that all elements of the last decoded fixed count field were present. */
1027
+ if (fixed_count_field != NULL &&
1028
+ fixed_count_size != fixed_count_field->array_size)
1029
+ {
1030
+ PB_RETURN_ERROR(stream, "wrong size for fixed count field");
1031
+ }
1032
+
1033
+ /* Check that all required fields were present. */
1034
+ {
1035
+ /* First figure out the number of required fields by
1036
+ * seeking to the end of the field array. Usually we
1037
+ * are already close to end after decoding.
1038
+ */
1039
+ unsigned req_field_count;
1040
+ pb_type_t last_type;
1041
+ unsigned i;
1042
+ do {
1043
+ req_field_count = iter.required_field_index;
1044
+ last_type = iter.pos->type;
1045
+ } while (pb_field_iter_next(&iter));
1046
+
1047
+ /* Fixup if last field was also required. */
1048
+ if (PB_HTYPE(last_type) == PB_HTYPE_REQUIRED && iter.pos->tag != 0)
1049
+ req_field_count++;
1050
+
1051
+ if (req_field_count > PB_MAX_REQUIRED_FIELDS)
1052
+ req_field_count = PB_MAX_REQUIRED_FIELDS;
1053
+
1054
+ if (req_field_count > 0)
1055
+ {
1056
+ /* Check the whole words */
1057
+ for (i = 0; i < (req_field_count >> 5); i++)
1058
+ {
1059
+ if (fields_seen[i] != allbits)
1060
+ PB_RETURN_ERROR(stream, "missing required field");
1061
+ }
1062
+
1063
+ /* Check the remaining bits (if any) */
1064
+ if ((req_field_count & 31) != 0)
1065
+ {
1066
+ if (fields_seen[req_field_count >> 5] !=
1067
+ (allbits >> (32 - (req_field_count & 31))))
1068
+ {
1069
+ PB_RETURN_ERROR(stream, "missing required field");
1070
+ }
1071
+ }
1072
+ }
1073
+ }
1074
+
1075
+ return true;
1076
+ }
1077
+
1078
+ bool checkreturn pb_decode(pb_istream_t *stream, const pb_field_t fields[], void *dest_struct)
1079
+ {
1080
+ bool status;
1081
+ pb_message_set_to_defaults(fields, dest_struct);
1082
+ status = pb_decode_noinit(stream, fields, dest_struct);
1083
+
1084
+ #ifdef PB_ENABLE_MALLOC
1085
+ if (!status)
1086
+ pb_release(fields, dest_struct);
1087
+ #endif
1088
+
1089
+ return status;
1090
+ }
1091
+
1092
+ bool pb_decode_delimited_noinit(pb_istream_t *stream, const pb_field_t fields[], void *dest_struct)
1093
+ {
1094
+ pb_istream_t substream;
1095
+ bool status;
1096
+
1097
+ if (!pb_make_string_substream(stream, &substream))
1098
+ return false;
1099
+
1100
+ status = pb_decode_noinit(&substream, fields, dest_struct);
1101
+
1102
+ if (!pb_close_string_substream(stream, &substream))
1103
+ return false;
1104
+ return status;
1105
+ }
1106
+
1107
+ bool pb_decode_delimited(pb_istream_t *stream, const pb_field_t fields[], void *dest_struct)
1108
+ {
1109
+ pb_istream_t substream;
1110
+ bool status;
1111
+
1112
+ if (!pb_make_string_substream(stream, &substream))
1113
+ return false;
1114
+
1115
+ status = pb_decode(&substream, fields, dest_struct);
1116
+
1117
+ if (!pb_close_string_substream(stream, &substream))
1118
+ return false;
1119
+ return status;
1120
+ }
1121
+
1122
+ bool pb_decode_nullterminated(pb_istream_t *stream, const pb_field_t fields[], void *dest_struct)
1123
+ {
1124
+ /* This behaviour will be separated in nanopb-0.4.0, see issue #278. */
1125
+ return pb_decode(stream, fields, dest_struct);
1126
+ }
1127
+
1128
+ #ifdef PB_ENABLE_MALLOC
1129
+ /* Given an oneof field, if there has already been a field inside this oneof,
1130
+ * release it before overwriting with a different one. */
1131
+ static bool pb_release_union_field(pb_istream_t *stream, pb_field_iter_t *iter)
1132
+ {
1133
+ pb_size_t old_tag = *(pb_size_t*)iter->pSize; /* Previous which_ value */
1134
+ pb_size_t new_tag = iter->pos->tag; /* New which_ value */
1135
+
1136
+ if (old_tag == 0)
1137
+ return true; /* Ok, no old data in union */
1138
+
1139
+ if (old_tag == new_tag)
1140
+ return true; /* Ok, old data is of same type => merge */
1141
+
1142
+ /* Release old data. The find can fail if the message struct contains
1143
+ * invalid data. */
1144
+ if (!pb_field_iter_find(iter, old_tag))
1145
+ PB_RETURN_ERROR(stream, "invalid union tag");
1146
+
1147
+ pb_release_single_field(iter);
1148
+
1149
+ /* Restore iterator to where it should be.
1150
+ * This shouldn't fail unless the pb_field_t structure is corrupted. */
1151
+ if (!pb_field_iter_find(iter, new_tag))
1152
+ PB_RETURN_ERROR(stream, "iterator error");
1153
+
1154
+ if (PB_ATYPE(iter->pos->type) == PB_ATYPE_POINTER)
1155
+ {
1156
+ /* Initialize the pointer to NULL to make sure it is valid
1157
+ * even in case of error return. */
1158
+ *(void**)iter->pData = NULL;
1159
+ }
1160
+
1161
+ return true;
1162
+ }
1163
+
1164
+ static void pb_release_single_field(const pb_field_iter_t *iter)
1165
+ {
1166
+ pb_type_t type;
1167
+ type = iter->pos->type;
1168
+
1169
+ if (PB_HTYPE(type) == PB_HTYPE_ONEOF)
1170
+ {
1171
+ if (*(pb_size_t*)iter->pSize != iter->pos->tag)
1172
+ return; /* This is not the current field in the union */
1173
+ }
1174
+
1175
+ /* Release anything contained inside an extension or submsg.
1176
+ * This has to be done even if the submsg itself is statically
1177
+ * allocated. */
1178
+ if (PB_LTYPE(type) == PB_LTYPE_EXTENSION)
1179
+ {
1180
+ /* Release fields from all extensions in the linked list */
1181
+ pb_extension_t *ext = *(pb_extension_t**)iter->pData;
1182
+ while (ext != NULL)
1183
+ {
1184
+ pb_field_iter_t ext_iter;
1185
+ iter_from_extension(&ext_iter, ext);
1186
+ pb_release_single_field(&ext_iter);
1187
+ ext = ext->next;
1188
+ }
1189
+ }
1190
+ else if (PB_LTYPE(type) == PB_LTYPE_SUBMESSAGE && PB_ATYPE(type) != PB_ATYPE_CALLBACK)
1191
+ {
1192
+ /* Release fields in submessage or submsg array */
1193
+ void *pItem = iter->pData;
1194
+ pb_size_t count = 1;
1195
+
1196
+ if (PB_ATYPE(type) == PB_ATYPE_POINTER)
1197
+ {
1198
+ pItem = *(void**)iter->pData;
1199
+ }
1200
+
1201
+ if (PB_HTYPE(type) == PB_HTYPE_REPEATED)
1202
+ {
1203
+ if (PB_ATYPE(type) == PB_ATYPE_STATIC && iter->pSize == iter->pData) {
1204
+ /* No _count field so use size of the array */
1205
+ count = iter->pos->array_size;
1206
+ } else {
1207
+ count = *(pb_size_t*)iter->pSize;
1208
+ }
1209
+
1210
+ if (PB_ATYPE(type) == PB_ATYPE_STATIC && count > iter->pos->array_size)
1211
+ {
1212
+ /* Protect against corrupted _count fields */
1213
+ count = iter->pos->array_size;
1214
+ }
1215
+ }
1216
+
1217
+ if (pItem)
1218
+ {
1219
+ while (count--)
1220
+ {
1221
+ pb_release((const pb_field_t*)iter->pos->ptr, pItem);
1222
+ pItem = (char*)pItem + iter->pos->data_size;
1223
+ }
1224
+ }
1225
+ }
1226
+
1227
+ if (PB_ATYPE(type) == PB_ATYPE_POINTER)
1228
+ {
1229
+ if (PB_HTYPE(type) == PB_HTYPE_REPEATED &&
1230
+ (PB_LTYPE(type) == PB_LTYPE_STRING ||
1231
+ PB_LTYPE(type) == PB_LTYPE_BYTES))
1232
+ {
1233
+ /* Release entries in repeated string or bytes array */
1234
+ void **pItem = *(void***)iter->pData;
1235
+ pb_size_t count = *(pb_size_t*)iter->pSize;
1236
+ while (count--)
1237
+ {
1238
+ pb_free(*pItem);
1239
+ *pItem++ = NULL;
1240
+ }
1241
+ }
1242
+
1243
+ if (PB_HTYPE(type) == PB_HTYPE_REPEATED)
1244
+ {
1245
+ /* We are going to release the array, so set the size to 0 */
1246
+ *(pb_size_t*)iter->pSize = 0;
1247
+ }
1248
+
1249
+ /* Release main item */
1250
+ pb_free(*(void**)iter->pData);
1251
+ *(void**)iter->pData = NULL;
1252
+ }
1253
+ }
1254
+
1255
+ void pb_release(const pb_field_t fields[], void *dest_struct)
1256
+ {
1257
+ pb_field_iter_t iter;
1258
+
1259
+ if (!dest_struct)
1260
+ return; /* Ignore NULL pointers, similar to free() */
1261
+
1262
+ if (!pb_field_iter_begin(&iter, fields, dest_struct))
1263
+ return; /* Empty message type */
1264
+
1265
+ do
1266
+ {
1267
+ pb_release_single_field(&iter);
1268
+ } while (pb_field_iter_next(&iter));
1269
+ }
1270
+ #endif
1271
+
1272
+ /* Field decoders */
1273
+
1274
+ bool pb_decode_bool(pb_istream_t *stream, bool *dest)
1275
+ {
1276
+ return pb_dec_bool(stream, NULL, (void*)dest);
1277
+ }
1278
+
1279
+ bool pb_decode_svarint(pb_istream_t *stream, pb_int64_t *dest)
1280
+ {
1281
+ pb_uint64_t value;
1282
+ if (!pb_decode_varint(stream, &value))
1283
+ return false;
1284
+
1285
+ if (value & 1)
1286
+ *dest = (pb_int64_t)(~(value >> 1));
1287
+ else
1288
+ *dest = (pb_int64_t)(value >> 1);
1289
+
1290
+ return true;
1291
+ }
1292
+
1293
+ bool pb_decode_fixed32(pb_istream_t *stream, void *dest)
1294
+ {
1295
+ pb_byte_t bytes[4];
1296
+
1297
+ if (!pb_read(stream, bytes, 4))
1298
+ return false;
1299
+
1300
+ *(uint32_t*)dest = ((uint32_t)bytes[0] << 0) |
1301
+ ((uint32_t)bytes[1] << 8) |
1302
+ ((uint32_t)bytes[2] << 16) |
1303
+ ((uint32_t)bytes[3] << 24);
1304
+ return true;
1305
+ }
1306
+
1307
+ #ifndef PB_WITHOUT_64BIT
1308
+ bool pb_decode_fixed64(pb_istream_t *stream, void *dest)
1309
+ {
1310
+ pb_byte_t bytes[8];
1311
+
1312
+ if (!pb_read(stream, bytes, 8))
1313
+ return false;
1314
+
1315
+ *(uint64_t*)dest = ((uint64_t)bytes[0] << 0) |
1316
+ ((uint64_t)bytes[1] << 8) |
1317
+ ((uint64_t)bytes[2] << 16) |
1318
+ ((uint64_t)bytes[3] << 24) |
1319
+ ((uint64_t)bytes[4] << 32) |
1320
+ ((uint64_t)bytes[5] << 40) |
1321
+ ((uint64_t)bytes[6] << 48) |
1322
+ ((uint64_t)bytes[7] << 56);
1323
+
1324
+ return true;
1325
+ }
1326
+ #endif
1327
+
1328
+ static bool checkreturn pb_dec_bool(pb_istream_t *stream, const pb_field_t *field, void *dest)
1329
+ {
1330
+ uint32_t value;
1331
+ PB_UNUSED(field);
1332
+ if (!pb_decode_varint32(stream, &value))
1333
+ return false;
1334
+
1335
+ *(bool*)dest = (value != 0);
1336
+ return true;
1337
+ }
1338
+
1339
+ static bool checkreturn pb_dec_varint(pb_istream_t *stream, const pb_field_t *field, void *dest)
1340
+ {
1341
+ pb_uint64_t value;
1342
+ pb_int64_t svalue;
1343
+ pb_int64_t clamped;
1344
+ if (!pb_decode_varint(stream, &value))
1345
+ return false;
1346
+
1347
+ /* See issue 97: Google's C++ protobuf allows negative varint values to
1348
+ * be cast as int32_t, instead of the int64_t that should be used when
1349
+ * encoding. Previous nanopb versions had a bug in encoding. In order to
1350
+ * not break decoding of such messages, we cast <=32 bit fields to
1351
+ * int32_t first to get the sign correct.
1352
+ */
1353
+ if (field->data_size == sizeof(pb_int64_t))
1354
+ svalue = (pb_int64_t)value;
1355
+ else
1356
+ svalue = (int32_t)value;
1357
+
1358
+ /* Cast to the proper field size, while checking for overflows */
1359
+ if (field->data_size == sizeof(pb_int64_t))
1360
+ clamped = *(pb_int64_t*)dest = svalue;
1361
+ else if (field->data_size == sizeof(int32_t))
1362
+ clamped = *(int32_t*)dest = (int32_t)svalue;
1363
+ else if (field->data_size == sizeof(int_least16_t))
1364
+ clamped = *(int_least16_t*)dest = (int_least16_t)svalue;
1365
+ else if (field->data_size == sizeof(int_least8_t))
1366
+ clamped = *(int_least8_t*)dest = (int_least8_t)svalue;
1367
+ else
1368
+ PB_RETURN_ERROR(stream, "invalid data_size");
1369
+
1370
+ if (clamped != svalue)
1371
+ PB_RETURN_ERROR(stream, "integer too large");
1372
+
1373
+ return true;
1374
+ }
1375
+
1376
+ static bool checkreturn pb_dec_uvarint(pb_istream_t *stream, const pb_field_t *field, void *dest)
1377
+ {
1378
+ pb_uint64_t value, clamped;
1379
+ if (!pb_decode_varint(stream, &value))
1380
+ return false;
1381
+
1382
+ /* Cast to the proper field size, while checking for overflows */
1383
+ if (field->data_size == sizeof(pb_uint64_t))
1384
+ clamped = *(pb_uint64_t*)dest = value;
1385
+ else if (field->data_size == sizeof(uint32_t))
1386
+ clamped = *(uint32_t*)dest = (uint32_t)value;
1387
+ else if (field->data_size == sizeof(uint_least16_t))
1388
+ clamped = *(uint_least16_t*)dest = (uint_least16_t)value;
1389
+ else if (field->data_size == sizeof(uint_least8_t))
1390
+ clamped = *(uint_least8_t*)dest = (uint_least8_t)value;
1391
+ else
1392
+ PB_RETURN_ERROR(stream, "invalid data_size");
1393
+
1394
+ if (clamped != value)
1395
+ PB_RETURN_ERROR(stream, "integer too large");
1396
+
1397
+ return true;
1398
+ }
1399
+
1400
+ static bool checkreturn pb_dec_svarint(pb_istream_t *stream, const pb_field_t *field, void *dest)
1401
+ {
1402
+ pb_int64_t value, clamped;
1403
+ if (!pb_decode_svarint(stream, &value))
1404
+ return false;
1405
+
1406
+ /* Cast to the proper field size, while checking for overflows */
1407
+ if (field->data_size == sizeof(pb_int64_t))
1408
+ clamped = *(pb_int64_t*)dest = value;
1409
+ else if (field->data_size == sizeof(int32_t))
1410
+ clamped = *(int32_t*)dest = (int32_t)value;
1411
+ else if (field->data_size == sizeof(int_least16_t))
1412
+ clamped = *(int_least16_t*)dest = (int_least16_t)value;
1413
+ else if (field->data_size == sizeof(int_least8_t))
1414
+ clamped = *(int_least8_t*)dest = (int_least8_t)value;
1415
+ else
1416
+ PB_RETURN_ERROR(stream, "invalid data_size");
1417
+
1418
+ if (clamped != value)
1419
+ PB_RETURN_ERROR(stream, "integer too large");
1420
+
1421
+ return true;
1422
+ }
1423
+
1424
+ static bool checkreturn pb_dec_fixed32(pb_istream_t *stream, const pb_field_t *field, void *dest)
1425
+ {
1426
+ PB_UNUSED(field);
1427
+ return pb_decode_fixed32(stream, dest);
1428
+ }
1429
+
1430
+ static bool checkreturn pb_dec_fixed64(pb_istream_t *stream, const pb_field_t *field, void *dest)
1431
+ {
1432
+ PB_UNUSED(field);
1433
+ #ifndef PB_WITHOUT_64BIT
1434
+ return pb_decode_fixed64(stream, dest);
1435
+ #else
1436
+ PB_UNUSED(dest);
1437
+ PB_RETURN_ERROR(stream, "no 64bit support");
1438
+ #endif
1439
+ }
1440
+
1441
+ static bool checkreturn pb_dec_bytes(pb_istream_t *stream, const pb_field_t *field, void *dest)
1442
+ {
1443
+ uint32_t size;
1444
+ size_t alloc_size;
1445
+ pb_bytes_array_t *bdest;
1446
+
1447
+ if (!pb_decode_varint32(stream, &size))
1448
+ return false;
1449
+
1450
+ if (size > PB_SIZE_MAX)
1451
+ PB_RETURN_ERROR(stream, "bytes overflow");
1452
+
1453
+ alloc_size = PB_BYTES_ARRAY_T_ALLOCSIZE(size);
1454
+ if (size > alloc_size)
1455
+ PB_RETURN_ERROR(stream, "size too large");
1456
+
1457
+ if (PB_ATYPE(field->type) == PB_ATYPE_POINTER)
1458
+ {
1459
+ #ifndef PB_ENABLE_MALLOC
1460
+ PB_RETURN_ERROR(stream, "no malloc support");
1461
+ #else
1462
+ if (stream->bytes_left < size)
1463
+ PB_RETURN_ERROR(stream, "end-of-stream");
1464
+
1465
+ if (!allocate_field(stream, dest, alloc_size, 1))
1466
+ return false;
1467
+ bdest = *(pb_bytes_array_t**)dest;
1468
+ #endif
1469
+ }
1470
+ else
1471
+ {
1472
+ if (alloc_size > field->data_size)
1473
+ PB_RETURN_ERROR(stream, "bytes overflow");
1474
+ bdest = (pb_bytes_array_t*)dest;
1475
+ }
1476
+
1477
+ bdest->size = (pb_size_t)size;
1478
+ return pb_read(stream, bdest->bytes, size);
1479
+ }
1480
+
1481
+ static bool checkreturn pb_dec_string(pb_istream_t *stream, const pb_field_t *field, void *dest)
1482
+ {
1483
+ uint32_t size;
1484
+ size_t alloc_size;
1485
+ bool status;
1486
+ if (!pb_decode_varint32(stream, &size))
1487
+ return false;
1488
+
1489
+ /* Space for null terminator */
1490
+ alloc_size = size + 1;
1491
+
1492
+ if (alloc_size < size)
1493
+ PB_RETURN_ERROR(stream, "size too large");
1494
+
1495
+ if (PB_ATYPE(field->type) == PB_ATYPE_POINTER)
1496
+ {
1497
+ #ifndef PB_ENABLE_MALLOC
1498
+ PB_RETURN_ERROR(stream, "no malloc support");
1499
+ #else
1500
+ if (stream->bytes_left < size)
1501
+ PB_RETURN_ERROR(stream, "end-of-stream");
1502
+
1503
+ if (!allocate_field(stream, dest, alloc_size, 1))
1504
+ return false;
1505
+ dest = *(void**)dest;
1506
+ #endif
1507
+ }
1508
+ else
1509
+ {
1510
+ if (alloc_size > field->data_size)
1511
+ PB_RETURN_ERROR(stream, "string overflow");
1512
+ }
1513
+
1514
+ status = pb_read(stream, (pb_byte_t*)dest, size);
1515
+ *((pb_byte_t*)dest + size) = 0;
1516
+ return status;
1517
+ }
1518
+
1519
+ static bool checkreturn pb_dec_submessage(pb_istream_t *stream, const pb_field_t *field, void *dest)
1520
+ {
1521
+ bool status;
1522
+ pb_istream_t substream;
1523
+ const pb_field_t* submsg_fields = (const pb_field_t*)field->ptr;
1524
+
1525
+ if (!pb_make_string_substream(stream, &substream))
1526
+ return false;
1527
+
1528
+ if (field->ptr == NULL)
1529
+ PB_RETURN_ERROR(stream, "invalid field descriptor");
1530
+
1531
+ /* New array entries need to be initialized, while required and optional
1532
+ * submessages have already been initialized in the top-level pb_decode. */
1533
+ if (PB_HTYPE(field->type) == PB_HTYPE_REPEATED)
1534
+ status = pb_decode(&substream, submsg_fields, dest);
1535
+ else
1536
+ status = pb_decode_noinit(&substream, submsg_fields, dest);
1537
+
1538
+ if (!pb_close_string_substream(stream, &substream))
1539
+ return false;
1540
+ return status;
1541
+ }
1542
+
1543
+ static bool checkreturn pb_dec_fixed_length_bytes(pb_istream_t *stream, const pb_field_t *field, void *dest)
1544
+ {
1545
+ uint32_t size;
1546
+
1547
+ if (!pb_decode_varint32(stream, &size))
1548
+ return false;
1549
+
1550
+ if (size > PB_SIZE_MAX)
1551
+ PB_RETURN_ERROR(stream, "bytes overflow");
1552
+
1553
+ if (size == 0)
1554
+ {
1555
+ /* As a special case, treat empty bytes string as all zeros for fixed_length_bytes. */
1556
+ memset(dest, 0, field->data_size);
1557
+ return true;
1558
+ }
1559
+
1560
+ if (size != field->data_size)
1561
+ PB_RETURN_ERROR(stream, "incorrect fixed length bytes size");
1562
+
1563
+ return pb_read(stream, (pb_byte_t*)dest, field->data_size);
1564
+ }