├── .gitignore ├── CMakeLists.txt ├── CONTRIBUTORS ├── LICENSE ├── Makefile ├── README.md ├── cmake └── ios.toolchain.cmake ├── common.gypi ├── deps └── java │ ├── CREDITS.md │ ├── jsr305-3.0.0.jar │ └── test │ ├── hamcrest-core-1.3.jar │ └── junit-4.11.jar ├── example-with-packages └── textsort │ └── generated-src │ └── objc │ └── TXSTextboxListener+Private.mm ├── example ├── Makefile ├── README.md ├── android │ ├── .gitignore │ ├── .idea │ │ ├── .name │ │ ├── compiler.xml │ │ ├── copyright │ │ │ └── profiles_settings.xml │ │ ├── encodings.xml │ │ ├── gradle.xml │ │ ├── misc.xml │ │ ├── modules.xml │ │ └── vcs.xml │ ├── android.iml │ ├── app │ │ ├── .gitignore │ │ ├── app.iml │ │ ├── build.gradle │ │ ├── jni │ │ │ ├── Android.mk │ │ │ └── Application.mk │ │ ├── proguard-rules.pro │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── drawable-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── drawable-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── drawable-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ │ └── values │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── example.djinni ├── example.yaml ├── generated-src │ ├── cpp │ │ ├── item_list.hpp │ │ ├── sort_items.hpp │ │ ├── sort_order.hpp │ │ └── textbox_listener.hpp │ ├── java │ │ └── com │ │ │ └── dropbox │ │ │ └── textsort │ │ │ ├── ItemList.java │ │ │ ├── SortItems.java │ │ │ ├── SortOrder.java │ │ │ └── TextboxListener.java │ ├── jni │ │ ├── NativeItemList.cpp │ │ ├── NativeItemList.hpp │ │ ├── NativeSortItems.cpp │ │ ├── NativeSortItems.hpp │ │ ├── NativeSortOrder.hpp │ │ ├── NativeTextboxListener.cpp │ │ └── NativeTextboxListener.hpp │ └── objc │ │ ├── TXSItemList+Private.h │ │ ├── TXSItemList+Private.mm │ │ ├── TXSItemList.h │ │ ├── TXSItemList.mm │ │ ├── TXSSortItems+Private.h │ │ ├── TXSSortItems+Private.mm │ │ ├── TXSSortItems.h │ │ ├── TXSSortOrder+Private.h │ │ ├── TXSSortOrder.h │ │ ├── TXSTextboxListener+Private.h │ │ ├── TXSTextboxListener+Private.mm │ │ ├── TXSTextboxListener.h │ │ └── TextSort-Bridging-Header.h ├── glob.py ├── handwritten-src │ ├── cpp │ │ ├── sort_items_impl.cpp │ │ └── sort_items_impl.hpp │ ├── java │ │ └── com │ │ │ └── dropbox │ │ │ └── textsort │ │ │ ├── MainActivity.java │ │ │ └── TextboxListenerImpl.java │ ├── objc │ │ ├── TXSAppDelegate.h │ │ ├── TXSAppDelegate.m │ │ ├── TXSTextboxListenerImpl.h │ │ ├── TXSTextboxListenerImpl.m │ │ ├── TXSViewController.h │ │ ├── TXSViewController.m │ │ └── main.mm │ └── swift │ │ └── TXSTextboxListenerDebugableImpl.swift ├── libtextsort.gyp ├── local.properties.sample ├── localhost │ ├── .gitignore │ ├── CMakeLists.txt │ ├── Dockerfile │ ├── README.md │ ├── build.xml │ ├── handwritten-src │ │ └── java │ │ │ └── com │ │ │ └── dropbox │ │ │ └── textsort │ │ │ └── SortTest.java │ └── run_in_docker.sh ├── objc │ ├── TextSort.xcodeproj │ │ ├── .gitignore │ │ ├── project.pbxproj │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── TextSort.xcscheme │ ├── TextSort.xcworkspace │ │ ├── .gitignore │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── TextSort │ │ ├── Base.lproj │ │ └── Main_iPhone.storyboard │ │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── LaunchImage.launchimage │ │ │ └── Contents.json │ │ ├── TextSort-Info.plist │ │ ├── TextSort-Prefix.pch │ │ └── en.lproj │ │ └── InfoPlist.strings └── run_djinni.sh ├── extension-libs ├── extension-libs.iml ├── jni-exceptions │ └── custom_exception_type.cpp └── platform-threads │ ├── android │ └── com │ │ └── dropbox │ │ └── djinni │ │ └── extension_libs │ │ └── platform_threads │ │ └── AndroidPlatformThreads.java │ ├── cpp │ └── platform_threads_impl.hpp │ ├── djinni │ └── platform-threads.djinni │ ├── java │ └── com │ │ └── dropbox │ │ └── djinni │ │ └── extension_libs │ │ └── platform_threads │ │ └── JavaPlatformThreads.java │ ├── objc │ ├── DJIObjCPlatformThreads.h │ └── DJIObjCPlatformThreads.m │ └── platform-threads.gyp ├── intellij-plugin ├── .gitignore ├── META-INF │ └── plugin.xml ├── README.md ├── djinni.iml ├── gen │ └── com │ │ └── dropbox │ │ └── djinni │ │ └── ideaplugin │ │ ├── parser │ │ ├── DjinniParser.java │ │ └── YamlParser.java │ │ └── psi │ │ ├── DjinniBasicType.java │ │ ├── DjinniConstMember.java │ │ ├── DjinniConstNamedValue.java │ │ ├── DjinniConstRecordMemberElement.java │ │ ├── DjinniConstReference.java │ │ ├── DjinniConstValue.java │ │ ├── DjinniDerivingParam.java │ │ ├── DjinniDerivingParamList.java │ │ ├── DjinniEnumMember.java │ │ ├── DjinniEnumTypeVariant.java │ │ ├── DjinniEnumValue.java │ │ ├── DjinniExternStatement.java │ │ ├── DjinniGenerator.java │ │ ├── DjinniGenericBasicType.java │ │ ├── DjinniGenericBasicTypeDualParameter.java │ │ ├── DjinniGenericBasicTypeSingleParameter.java │ │ ├── DjinniImportStatement.java │ │ ├── DjinniInterfaceFunctionParam.java │ │ ├── DjinniInterfaceFunctionParamList.java │ │ ├── DjinniInterfaceMember.java │ │ ├── DjinniInterfaceMemberFunction.java │ │ ├── DjinniInterfaceTypeVariant.java │ │ ├── DjinniPredefinedType.java │ │ ├── DjinniRecordMember.java │ │ ├── DjinniRecordMemberVariable.java │ │ ├── DjinniRecordTypeVariant.java │ │ ├── DjinniTypeDefinition.java │ │ ├── DjinniTypeReference.java │ │ ├── DjinniTypes.java │ │ ├── DjinniVisitor.java │ │ ├── YamlEntry.java │ │ ├── YamlLhs.java │ │ ├── YamlRhs.java │ │ ├── YamlTypes.java │ │ ├── YamlVisitor.java │ │ └── impl │ │ ├── DjinniBasicTypeImpl.java │ │ ├── DjinniConstMemberImpl.java │ │ ├── DjinniConstNamedValueImpl.java │ │ ├── DjinniConstRecordMemberElementImpl.java │ │ ├── DjinniConstReferenceImpl.java │ │ ├── DjinniConstValueImpl.java │ │ ├── DjinniDerivingParamImpl.java │ │ ├── DjinniDerivingParamListImpl.java │ │ ├── DjinniEnumMemberImpl.java │ │ ├── DjinniEnumTypeVariantImpl.java │ │ ├── DjinniEnumValueImpl.java │ │ ├── DjinniExternStatementImpl.java │ │ ├── DjinniGeneratorImpl.java │ │ ├── DjinniGenericBasicTypeDualParameterImpl.java │ │ ├── DjinniGenericBasicTypeImpl.java │ │ ├── DjinniGenericBasicTypeSingleParameterImpl.java │ │ ├── DjinniImportStatementImpl.java │ │ ├── DjinniInterfaceFunctionParamImpl.java │ │ ├── DjinniInterfaceFunctionParamListImpl.java │ │ ├── DjinniInterfaceMemberFunctionImpl.java │ │ ├── DjinniInterfaceMemberImpl.java │ │ ├── DjinniInterfaceTypeVariantImpl.java │ │ ├── DjinniPredefinedTypeImpl.java │ │ ├── DjinniRecordMemberImpl.java │ │ ├── DjinniRecordMemberVariableImpl.java │ │ ├── DjinniRecordTypeVariantImpl.java │ │ ├── DjinniTypeDefinitionImpl.java │ │ ├── DjinniTypeReferenceImpl.java │ │ ├── YamlEntryImpl.java │ │ ├── YamlLhsImpl.java │ │ └── YamlRhsImpl.java └── src │ └── com │ └── dropbox │ └── djinni │ ├── ideaplugin │ ├── Djinni.bnf │ ├── DjinniAnnotator.java │ ├── DjinniBlock.java │ ├── DjinniBraceMatcher.java │ ├── DjinniChooseByNameContributor.java │ ├── DjinniColorSettingsPage.java │ ├── DjinniCommenter.java │ ├── DjinniCompletionContributor.java │ ├── DjinniCreateTypeDefinitionQuickFix.java │ ├── DjinniExternReference.java │ ├── DjinniFileType.java │ ├── DjinniFileTypeFactory.java │ ├── DjinniFindUsagesProvider.java │ ├── DjinniFoldingBuilder.java │ ├── DjinniFormattingModelBuilder.java │ ├── DjinniIcons.java │ ├── DjinniImportReference.java │ ├── DjinniLanguage.java │ ├── DjinniLexerAdapter.java │ ├── DjinniParserDefinition.java │ ├── DjinniReference.java │ ├── DjinniReferenceContributor.java │ ├── DjinniStructureViewElement.java │ ├── DjinniStructureViewFactory.java │ ├── DjinniStructureViewModel.java │ ├── DjinniSyntaxHighlighter.java │ ├── DjinniSyntaxHighlighterFactory.java │ ├── DjinniUtil.java │ ├── DjinniValueReference.java │ ├── YamlFileType.java │ ├── YamlLanguage.java │ ├── YamlLexer.flex │ ├── YamlLexer.java │ ├── YamlLexerAdapter.java │ ├── YamlParserDefinition.java │ ├── _DjinniLexer.flex │ ├── _DjinniLexer.java │ ├── psi │ │ ├── DjinniElementFactory.java │ │ ├── DjinniElementType.java │ │ ├── DjinniFile.java │ │ ├── DjinniNamedElement.java │ │ ├── DjinniTokenType.java │ │ ├── YamlElementType.java │ │ ├── YamlFile.java │ │ ├── YamlTokenType.java │ │ └── impl │ │ │ ├── DjinniImportStatementBaseImpl.java │ │ │ ├── DjinniNamedElementImpl.java │ │ │ ├── DjinniPsiImplUtil.java │ │ │ ├── DjinniReferenceImpl.java │ │ │ └── YamlPsiImplUtil.java │ └── yaml.bnf │ └── resources │ └── djinni.png ├── src ├── .gitignore ├── .idea │ ├── .name │ ├── compiler.xml │ ├── copyright │ │ └── profiles_settings.xml │ ├── encodings.xml │ ├── highlighting.xml │ ├── inspectionProfiles │ │ ├── Project_Default.xml │ │ └── profiles_settings.xml │ ├── libraries │ │ ├── SBT__com_github_scopt_scopt_2_11_3_2_0_jar.xml │ │ ├── SBT__org_scala_lang_modules_scala_parser_combinators_2_11_1_0_1_jar.xml │ │ ├── SBT__org_scala_lang_scala_library_2_11_0_jar.xml │ │ └── SBT__org_yaml_snakeyaml_1_15_jar.xml │ ├── misc.xml │ ├── modules.xml │ ├── modules │ │ ├── src-build.iml │ │ └── src.iml │ ├── runConfigurations │ │ ├── djinni_Main__Example_.xml │ │ └── djinni_Main__Test_Suite_.xml │ ├── sbt.xml │ ├── scala_compiler.xml │ ├── uiDesigner.xml │ └── vcs.xml ├── ReadMe.txt ├── build ├── build.sbt ├── project │ ├── build.properties │ └── plugins.sbt ├── run ├── run-assume-built ├── source │ ├── BaseObjcGenerator.scala │ ├── CppGenerator.scala │ ├── CppMarshal.scala │ ├── JNIGenerator.scala │ ├── JNIMarshal.scala │ ├── JavaGenerator.scala │ ├── JavaMarshal.scala │ ├── Main.scala │ ├── Marshal.scala │ ├── ObjcGenerator.scala │ ├── ObjcMarshal.scala │ ├── ObjcppGenerator.scala │ ├── ObjcppMarshal.scala │ ├── SwiftBridgingHeaderGenerator.scala │ ├── YamlGenerator.scala │ ├── ast.scala │ ├── generator.scala │ ├── meta.scala │ ├── parser.scala │ ├── resolver.scala │ ├── syntax.scala │ └── writer.scala └── support │ ├── sbt │ ├── sbt-launch.jar │ ├── sbt.resolvers.properties │ └── sbt.security.policy ├── support-lib ├── .gitignore ├── djinni_common.hpp ├── ios-build-support-lib.sh ├── java │ └── com │ │ └── dropbox │ │ └── djinni │ │ └── NativeLibLoader.java ├── jni │ ├── Marshal.hpp │ ├── djinni_main.cpp │ ├── djinni_support.cpp │ └── djinni_support.hpp ├── objc │ ├── DJICppWrapperCache+Private.h │ ├── DJIError.h │ ├── DJIError.mm │ ├── DJIMarshal+Private.h │ ├── DJIObjcWrapperCache+Private.h │ └── DJIProxyCaches.mm ├── proxy_cache_impl.hpp ├── proxy_cache_interface.hpp ├── support-lib.iml └── support_lib.gyp ├── test-suite ├── Makefile ├── README.md ├── djinni-packages │ └── package1 │ │ └── generated-src │ │ └── objc │ │ └── DBInnerClass+Private.mm ├── djinni │ ├── all.djinni │ ├── client_interface.djinni │ ├── common.djinni │ ├── constant_enum.djinni │ ├── constants.djinni │ ├── derivings.djinni │ ├── enum.djinni │ ├── enum_flags.djinni │ ├── exception.djinni │ ├── extended_record.djinni │ ├── map.djinni │ ├── multiple_inheritance.djinni │ ├── nested_collection.djinni │ ├── parcelable.djinni │ ├── primitive_list.djinni │ ├── primtypes.djinni │ ├── relative_paths.djinni │ ├── set.djinni │ ├── single_language_interfaces.djinni │ ├── test.djinni │ ├── user_token.djinni │ ├── varnames.djinni │ ├── vendor │ │ └── third-party │ │ │ ├── date.djinni │ │ │ ├── date.yaml │ │ │ ├── duration.djinni │ │ │ └── duration.yaml │ ├── wchar_test.djinni │ └── yaml-test.djinni ├── generated-src │ ├── cpp │ │ ├── Conflict.hpp │ │ ├── _varname_interface_.hpp │ │ ├── _varname_record_.hpp │ │ ├── access_flags.hpp │ │ ├── assorted_primitives.cpp │ │ ├── assorted_primitives.hpp │ │ ├── client_interface.hpp │ │ ├── client_returned_record.hpp │ │ ├── color.hpp │ │ ├── conflict_user.hpp │ │ ├── constant_enum.hpp │ │ ├── constant_interface_with_enum.cpp │ │ ├── constant_interface_with_enum.hpp │ │ ├── constant_record.hpp │ │ ├── constant_with_enum.cpp │ │ ├── constant_with_enum.hpp │ │ ├── constants.cpp │ │ ├── constants.hpp │ │ ├── constants_interface.cpp │ │ ├── constants_interface.hpp │ │ ├── cpp_exception.hpp │ │ ├── date_record.cpp │ │ ├── date_record.hpp │ │ ├── empty_flags.hpp │ │ ├── empty_record.hpp │ │ ├── enum_usage_interface.hpp │ │ ├── enum_usage_record.hpp │ │ ├── extended_record_base.cpp │ │ ├── extended_record_base.hpp │ │ ├── extern_interface_1.hpp │ │ ├── extern_interface_2.hpp │ │ ├── extern_record_with_derivings.cpp │ │ ├── extern_record_with_derivings.hpp │ │ ├── first_listener.hpp │ │ ├── flag_roundtrip.hpp │ │ ├── interface_using_extended_record.cpp │ │ ├── interface_using_extended_record.hpp │ │ ├── java_only_listener.hpp │ │ ├── listener_caller.hpp │ │ ├── map_date_record.hpp │ │ ├── map_list_record.hpp │ │ ├── map_record.hpp │ │ ├── nested_collection.hpp │ │ ├── objc_only_listener.hpp │ │ ├── parcelable_list.hpp │ │ ├── parcelable_list_map_set.hpp │ │ ├── parcelable_list_set.hpp │ │ ├── parcelable_map.hpp │ │ ├── parcelable_map_list.hpp │ │ ├── parcelable_map_set.hpp │ │ ├── parcelable_optional_list.hpp │ │ ├── parcelable_optional_map.hpp │ │ ├── parcelable_optional_set.hpp │ │ ├── parcelable_primitives.hpp │ │ ├── parcelable_set.hpp │ │ ├── primitive_list.hpp │ │ ├── record_using_extended_record.cpp │ │ ├── record_using_extended_record.hpp │ │ ├── record_with_derivings.cpp │ │ ├── record_with_derivings.hpp │ │ ├── record_with_duration_and_derivings.cpp │ │ ├── record_with_duration_and_derivings.hpp │ │ ├── record_with_flags.hpp │ │ ├── record_with_nested_derivings.cpp │ │ ├── record_with_nested_derivings.hpp │ │ ├── return_one.hpp │ │ ├── return_two.hpp │ │ ├── reverse_client_interface.hpp │ │ ├── sample_interface.hpp │ │ ├── second_listener.hpp │ │ ├── set_record.hpp │ │ ├── test_duration.hpp │ │ ├── test_helpers.hpp │ │ ├── test_optional_extern_interface_record.hpp │ │ ├── user_token.hpp │ │ ├── uses_single_language_listeners.hpp │ │ ├── wchar_test_helpers.hpp │ │ └── wchar_test_rec.hpp │ ├── inFileList.txt │ ├── java │ │ └── com │ │ │ └── dropbox │ │ │ └── djinni │ │ │ └── test │ │ │ ├── AccessFlags.java │ │ │ ├── AssortedPrimitives.java │ │ │ ├── ClientInterface.java │ │ │ ├── ClientReturnedRecord.java │ │ │ ├── Color.java │ │ │ ├── Conflict.java │ │ │ ├── ConflictUser.java │ │ │ ├── ConstantEnum.java │ │ │ ├── ConstantInterfaceWithEnum.java │ │ │ ├── ConstantRecord.java │ │ │ ├── ConstantWithEnum.java │ │ │ ├── Constants.java │ │ │ ├── ConstantsInterface.java │ │ │ ├── CppException.java │ │ │ ├── DateRecord.java │ │ │ ├── EmptyFlags.java │ │ │ ├── EmptyRecord.java │ │ │ ├── EnumUsageInterface.java │ │ │ ├── EnumUsageRecord.java │ │ │ ├── ExtendedRecord.java │ │ │ ├── ExternInterface1.java │ │ │ ├── ExternInterface2.java │ │ │ ├── ExternRecordWithDerivings.java │ │ │ ├── FirstListener.java │ │ │ ├── FlagRoundtrip.java │ │ │ ├── InterfaceUsingExtendedRecord.java │ │ │ ├── JavaOnlyListener.java │ │ │ ├── ListenerCaller.java │ │ │ ├── MapDateRecord.java │ │ │ ├── MapListRecord.java │ │ │ ├── MapRecord.java │ │ │ ├── NestedCollection.java │ │ │ ├── ObjcOnlyListener.java │ │ │ ├── ParcelableList.java │ │ │ ├── ParcelableListMapSet.java │ │ │ ├── ParcelableListSet.java │ │ │ ├── ParcelableMap.java │ │ │ ├── ParcelableMapList.java │ │ │ ├── ParcelableMapSet.java │ │ │ ├── ParcelableOptionalList.java │ │ │ ├── ParcelableOptionalMap.java │ │ │ ├── ParcelableOptionalSet.java │ │ │ ├── ParcelablePrimitives.java │ │ │ ├── ParcelableSet.java │ │ │ ├── PrimitiveList.java │ │ │ ├── RecordUsingExtendedRecord.java │ │ │ ├── RecordWithDerivings.java │ │ │ ├── RecordWithDurationAndDerivings.java │ │ │ ├── RecordWithFlags.java │ │ │ ├── RecordWithNestedDerivings.java │ │ │ ├── ReturnOne.java │ │ │ ├── ReturnTwo.java │ │ │ ├── ReverseClientInterface.java │ │ │ ├── SampleInterface.java │ │ │ ├── SecondListener.java │ │ │ ├── SetRecord.java │ │ │ ├── TestDuration.java │ │ │ ├── TestHelpers.java │ │ │ ├── TestOptionalExternInterfaceRecord.java │ │ │ ├── UserToken.java │ │ │ ├── UsesSingleLanguageListeners.java │ │ │ ├── VarnameInterface.java │ │ │ ├── VarnameRecord.java │ │ │ ├── WcharTestHelpers.java │ │ │ └── WcharTestRec.java │ ├── jni │ │ ├── NativeAccessFlags.hpp │ │ ├── NativeAssortedPrimitives.cpp │ │ ├── NativeAssortedPrimitives.hpp │ │ ├── NativeClientInterface.cpp │ │ ├── NativeClientInterface.hpp │ │ ├── NativeClientReturnedRecord.cpp │ │ ├── NativeClientReturnedRecord.hpp │ │ ├── NativeColor.hpp │ │ ├── NativeConflict.cpp │ │ ├── NativeConflict.hpp │ │ ├── NativeConflictUser.cpp │ │ ├── NativeConflictUser.hpp │ │ ├── NativeConstantEnum.hpp │ │ ├── NativeConstantInterfaceWithEnum.cpp │ │ ├── NativeConstantInterfaceWithEnum.hpp │ │ ├── NativeConstantRecord.cpp │ │ ├── NativeConstantRecord.hpp │ │ ├── NativeConstantWithEnum.cpp │ │ ├── NativeConstantWithEnum.hpp │ │ ├── NativeConstants.cpp │ │ ├── NativeConstants.hpp │ │ ├── NativeConstantsInterface.cpp │ │ ├── NativeConstantsInterface.hpp │ │ ├── NativeCppException.cpp │ │ ├── NativeCppException.hpp │ │ ├── NativeDateRecord.cpp │ │ ├── NativeDateRecord.hpp │ │ ├── NativeEmptyFlags.hpp │ │ ├── NativeEmptyRecord.cpp │ │ ├── NativeEmptyRecord.hpp │ │ ├── NativeEnumUsageInterface.cpp │ │ ├── NativeEnumUsageInterface.hpp │ │ ├── NativeEnumUsageRecord.cpp │ │ ├── NativeEnumUsageRecord.hpp │ │ ├── NativeExtendedRecord.cpp │ │ ├── NativeExtendedRecord.hpp │ │ ├── NativeExternInterface1.cpp │ │ ├── NativeExternInterface1.hpp │ │ ├── NativeExternInterface2.cpp │ │ ├── NativeExternInterface2.hpp │ │ ├── NativeExternRecordWithDerivings.cpp │ │ ├── NativeExternRecordWithDerivings.hpp │ │ ├── NativeFirstListener.cpp │ │ ├── NativeFirstListener.hpp │ │ ├── NativeFlagRoundtrip.cpp │ │ ├── NativeFlagRoundtrip.hpp │ │ ├── NativeInterfaceUsingExtendedRecord.cpp │ │ ├── NativeInterfaceUsingExtendedRecord.hpp │ │ ├── NativeJavaOnlyListener.cpp │ │ ├── NativeJavaOnlyListener.hpp │ │ ├── NativeListenerCaller.cpp │ │ ├── NativeListenerCaller.hpp │ │ ├── NativeMapDateRecord.cpp │ │ ├── NativeMapDateRecord.hpp │ │ ├── NativeMapListRecord.cpp │ │ ├── NativeMapListRecord.hpp │ │ ├── NativeMapRecord.cpp │ │ ├── NativeMapRecord.hpp │ │ ├── NativeNestedCollection.cpp │ │ ├── NativeNestedCollection.hpp │ │ ├── NativeObjcOnlyListener.cpp │ │ ├── NativeObjcOnlyListener.hpp │ │ ├── NativeParcelableList.cpp │ │ ├── NativeParcelableList.hpp │ │ ├── NativeParcelableListMapSet.cpp │ │ ├── NativeParcelableListMapSet.hpp │ │ ├── NativeParcelableListSet.cpp │ │ ├── NativeParcelableListSet.hpp │ │ ├── NativeParcelableMap.cpp │ │ ├── NativeParcelableMap.hpp │ │ ├── NativeParcelableMapList.cpp │ │ ├── NativeParcelableMapList.hpp │ │ ├── NativeParcelableMapSet.cpp │ │ ├── NativeParcelableMapSet.hpp │ │ ├── NativeParcelableOptionalList.cpp │ │ ├── NativeParcelableOptionalList.hpp │ │ ├── NativeParcelableOptionalMap.cpp │ │ ├── NativeParcelableOptionalMap.hpp │ │ ├── NativeParcelableOptionalSet.cpp │ │ ├── NativeParcelableOptionalSet.hpp │ │ ├── NativeParcelablePrimitives.cpp │ │ ├── NativeParcelablePrimitives.hpp │ │ ├── NativeParcelableSet.cpp │ │ ├── NativeParcelableSet.hpp │ │ ├── NativePrimitiveList.cpp │ │ ├── NativePrimitiveList.hpp │ │ ├── NativeRecordUsingExtendedRecord.cpp │ │ ├── NativeRecordUsingExtendedRecord.hpp │ │ ├── NativeRecordWithDerivings.cpp │ │ ├── NativeRecordWithDerivings.hpp │ │ ├── NativeRecordWithDurationAndDerivings.cpp │ │ ├── NativeRecordWithDurationAndDerivings.hpp │ │ ├── NativeRecordWithFlags.cpp │ │ ├── NativeRecordWithFlags.hpp │ │ ├── NativeRecordWithNestedDerivings.cpp │ │ ├── NativeRecordWithNestedDerivings.hpp │ │ ├── NativeReturnOne.cpp │ │ ├── NativeReturnOne.hpp │ │ ├── NativeReturnTwo.cpp │ │ ├── NativeReturnTwo.hpp │ │ ├── NativeReverseClientInterface.cpp │ │ ├── NativeReverseClientInterface.hpp │ │ ├── NativeSampleInterface.cpp │ │ ├── NativeSampleInterface.hpp │ │ ├── NativeSecondListener.cpp │ │ ├── NativeSecondListener.hpp │ │ ├── NativeSetRecord.cpp │ │ ├── NativeSetRecord.hpp │ │ ├── NativeTestDuration.cpp │ │ ├── NativeTestDuration.hpp │ │ ├── NativeTestHelpers.cpp │ │ ├── NativeTestHelpers.hpp │ │ ├── NativeTestOptionalExternInterfaceRecord.cpp │ │ ├── NativeTestOptionalExternInterfaceRecord.hpp │ │ ├── NativeUserToken.cpp │ │ ├── NativeUserToken.hpp │ │ ├── NativeUsesSingleLanguageListeners.cpp │ │ ├── NativeUsesSingleLanguageListeners.hpp │ │ ├── NativeVarnameInterface.cpp │ │ ├── NativeVarnameInterface.hpp │ │ ├── NativeVarnameRecord.cpp │ │ ├── NativeVarnameRecord.hpp │ │ ├── NativeWcharTestHelpers.cpp │ │ ├── NativeWcharTestHelpers.hpp │ │ ├── NativeWcharTestRec.cpp │ │ └── NativeWcharTestRec.hpp │ ├── objc │ │ ├── DBAccessFlags+Private.h │ │ ├── DBAccessFlags.h │ │ ├── DBAssortedPrimitives+Private.h │ │ ├── DBAssortedPrimitives+Private.mm │ │ ├── DBAssortedPrimitives.h │ │ ├── DBAssortedPrimitives.mm │ │ ├── DBClientInterface+Private.h │ │ ├── DBClientInterface+Private.mm │ │ ├── DBClientInterface.h │ │ ├── DBClientReturnedRecord+Private.h │ │ ├── DBClientReturnedRecord+Private.mm │ │ ├── DBClientReturnedRecord.h │ │ ├── DBClientReturnedRecord.mm │ │ ├── DBColor+Private.h │ │ ├── DBColor.h │ │ ├── DBConflict+Private.h │ │ ├── DBConflict+Private.mm │ │ ├── DBConflict.h │ │ ├── DBConflictUser+Private.h │ │ ├── DBConflictUser+Private.mm │ │ ├── DBConflictUser.h │ │ ├── DBConstantEnum+Private.h │ │ ├── DBConstantEnum.h │ │ ├── DBConstantInterfaceWithEnum+Private.h │ │ ├── DBConstantInterfaceWithEnum+Private.mm │ │ ├── DBConstantInterfaceWithEnum.h │ │ ├── DBConstantInterfaceWithEnum.mm │ │ ├── DBConstantRecord+Private.h │ │ ├── DBConstantRecord+Private.mm │ │ ├── DBConstantRecord.h │ │ ├── DBConstantRecord.mm │ │ ├── DBConstantWithEnum+Private.h │ │ ├── DBConstantWithEnum+Private.mm │ │ ├── DBConstantWithEnum.h │ │ ├── DBConstantWithEnum.mm │ │ ├── DBConstants+Private.h │ │ ├── DBConstants+Private.mm │ │ ├── DBConstants.h │ │ ├── DBConstants.mm │ │ ├── DBConstantsInterface+Private.h │ │ ├── DBConstantsInterface+Private.mm │ │ ├── DBConstantsInterface.h │ │ ├── DBConstantsInterface.mm │ │ ├── DBCppException+Private.h │ │ ├── DBCppException+Private.mm │ │ ├── DBCppException.h │ │ ├── DBDateRecord+Private.h │ │ ├── DBDateRecord+Private.mm │ │ ├── DBDateRecord.h │ │ ├── DBDateRecord.mm │ │ ├── DBEmptyFlags+Private.h │ │ ├── DBEmptyFlags.h │ │ ├── DBEmptyRecord+Private.h │ │ ├── DBEmptyRecord+Private.mm │ │ ├── DBEmptyRecord.h │ │ ├── DBEmptyRecord.mm │ │ ├── DBEnumUsageInterface+Private.h │ │ ├── DBEnumUsageInterface+Private.mm │ │ ├── DBEnumUsageInterface.h │ │ ├── DBEnumUsageRecord+Private.h │ │ ├── DBEnumUsageRecord+Private.mm │ │ ├── DBEnumUsageRecord.h │ │ ├── DBEnumUsageRecord.mm │ │ ├── DBExtendedRecord+Private.h │ │ ├── DBExtendedRecord+Private.mm │ │ ├── DBExtendedRecord.h │ │ ├── DBExtendedRecord.mm │ │ ├── DBExternInterface1+Private.h │ │ ├── DBExternInterface1+Private.mm │ │ ├── DBExternInterface1.h │ │ ├── DBExternInterface2+Private.h │ │ ├── DBExternInterface2+Private.mm │ │ ├── DBExternInterface2.h │ │ ├── DBExternRecordWithDerivings+Private.h │ │ ├── DBExternRecordWithDerivings+Private.mm │ │ ├── DBExternRecordWithDerivings.h │ │ ├── DBExternRecordWithDerivings.mm │ │ ├── DBFirstListener+Private.h │ │ ├── DBFirstListener+Private.mm │ │ ├── DBFirstListener.h │ │ ├── DBFlagRoundtrip+Private.h │ │ ├── DBFlagRoundtrip+Private.mm │ │ ├── DBFlagRoundtrip.h │ │ ├── DBInterfaceUsingExtendedRecord+Private.h │ │ ├── DBInterfaceUsingExtendedRecord+Private.mm │ │ ├── DBInterfaceUsingExtendedRecord.h │ │ ├── DBInterfaceUsingExtendedRecord.mm │ │ ├── DBJavaOnlyListener+Private.h │ │ ├── DBJavaOnlyListener+Private.mm │ │ ├── DBJavaOnlyListener.h │ │ ├── DBListenerCaller+Private.h │ │ ├── DBListenerCaller+Private.mm │ │ ├── DBListenerCaller.h │ │ ├── DBMapDateRecord+Private.h │ │ ├── DBMapDateRecord+Private.mm │ │ ├── DBMapDateRecord.h │ │ ├── DBMapDateRecord.mm │ │ ├── DBMapListRecord+Private.h │ │ ├── DBMapListRecord+Private.mm │ │ ├── DBMapListRecord.h │ │ ├── DBMapListRecord.mm │ │ ├── DBMapRecord+Private.h │ │ ├── DBMapRecord+Private.mm │ │ ├── DBMapRecord.h │ │ ├── DBMapRecord.mm │ │ ├── DBNestedCollection+Private.h │ │ ├── DBNestedCollection+Private.mm │ │ ├── DBNestedCollection.h │ │ ├── DBNestedCollection.mm │ │ ├── DBObjcOnlyListener+Private.h │ │ ├── DBObjcOnlyListener+Private.mm │ │ ├── DBObjcOnlyListener.h │ │ ├── DBParcelableList+Private.h │ │ ├── DBParcelableList+Private.mm │ │ ├── DBParcelableList.h │ │ ├── DBParcelableList.mm │ │ ├── DBParcelableListMapSet+Private.h │ │ ├── DBParcelableListMapSet+Private.mm │ │ ├── DBParcelableListMapSet.h │ │ ├── DBParcelableListMapSet.mm │ │ ├── DBParcelableListSet+Private.h │ │ ├── DBParcelableListSet+Private.mm │ │ ├── DBParcelableListSet.h │ │ ├── DBParcelableListSet.mm │ │ ├── DBParcelableMap+Private.h │ │ ├── DBParcelableMap+Private.mm │ │ ├── DBParcelableMap.h │ │ ├── DBParcelableMap.mm │ │ ├── DBParcelableMapList+Private.h │ │ ├── DBParcelableMapList+Private.mm │ │ ├── DBParcelableMapList.h │ │ ├── DBParcelableMapList.mm │ │ ├── DBParcelableMapSet+Private.h │ │ ├── DBParcelableMapSet+Private.mm │ │ ├── DBParcelableMapSet.h │ │ ├── DBParcelableMapSet.mm │ │ ├── DBParcelableOptionalList+Private.h │ │ ├── DBParcelableOptionalList+Private.mm │ │ ├── DBParcelableOptionalList.h │ │ ├── DBParcelableOptionalList.mm │ │ ├── DBParcelableOptionalMap+Private.h │ │ ├── DBParcelableOptionalMap+Private.mm │ │ ├── DBParcelableOptionalMap.h │ │ ├── DBParcelableOptionalMap.mm │ │ ├── DBParcelableOptionalSet+Private.h │ │ ├── DBParcelableOptionalSet+Private.mm │ │ ├── DBParcelableOptionalSet.h │ │ ├── DBParcelableOptionalSet.mm │ │ ├── DBParcelablePrimitives+Private.h │ │ ├── DBParcelablePrimitives+Private.mm │ │ ├── DBParcelablePrimitives.h │ │ ├── DBParcelablePrimitives.mm │ │ ├── DBParcelableSet+Private.h │ │ ├── DBParcelableSet+Private.mm │ │ ├── DBParcelableSet.h │ │ ├── DBParcelableSet.mm │ │ ├── DBPrimitiveList+Private.h │ │ ├── DBPrimitiveList+Private.mm │ │ ├── DBPrimitiveList.h │ │ ├── DBPrimitiveList.mm │ │ ├── DBRecordUsingExtendedRecord+Private.h │ │ ├── DBRecordUsingExtendedRecord+Private.mm │ │ ├── DBRecordUsingExtendedRecord.h │ │ ├── DBRecordUsingExtendedRecord.mm │ │ ├── DBRecordWithDerivings+Private.h │ │ ├── DBRecordWithDerivings+Private.mm │ │ ├── DBRecordWithDerivings.h │ │ ├── DBRecordWithDerivings.mm │ │ ├── DBRecordWithDurationAndDerivings+Private.h │ │ ├── DBRecordWithDurationAndDerivings+Private.mm │ │ ├── DBRecordWithDurationAndDerivings.h │ │ ├── DBRecordWithDurationAndDerivings.mm │ │ ├── DBRecordWithFlags+Private.h │ │ ├── DBRecordWithFlags+Private.mm │ │ ├── DBRecordWithFlags.h │ │ ├── DBRecordWithFlags.mm │ │ ├── DBRecordWithNestedDerivings+Private.h │ │ ├── DBRecordWithNestedDerivings+Private.mm │ │ ├── DBRecordWithNestedDerivings.h │ │ ├── DBRecordWithNestedDerivings.mm │ │ ├── DBReturnOne+Private.h │ │ ├── DBReturnOne+Private.mm │ │ ├── DBReturnOne.h │ │ ├── DBReturnTwo+Private.h │ │ ├── DBReturnTwo+Private.mm │ │ ├── DBReturnTwo.h │ │ ├── DBReverseClientInterface+Private.h │ │ ├── DBReverseClientInterface+Private.mm │ │ ├── DBReverseClientInterface.h │ │ ├── DBSampleInterface+Private.h │ │ ├── DBSampleInterface+Private.mm │ │ ├── DBSampleInterface.h │ │ ├── DBSecondListener+Private.h │ │ ├── DBSecondListener+Private.mm │ │ ├── DBSecondListener.h │ │ ├── DBSetRecord+Private.h │ │ ├── DBSetRecord+Private.mm │ │ ├── DBSetRecord.h │ │ ├── DBSetRecord.mm │ │ ├── DBTestDuration+Private.h │ │ ├── DBTestDuration+Private.mm │ │ ├── DBTestDuration.h │ │ ├── DBTestHelpers+Private.h │ │ ├── DBTestHelpers+Private.mm │ │ ├── DBTestHelpers.h │ │ ├── DBTestOptionalExternInterfaceRecord+Private.h │ │ ├── DBTestOptionalExternInterfaceRecord+Private.mm │ │ ├── DBTestOptionalExternInterfaceRecord.h │ │ ├── DBTestOptionalExternInterfaceRecord.mm │ │ ├── DBUserToken+Private.h │ │ ├── DBUserToken+Private.mm │ │ ├── DBUserToken.h │ │ ├── DBUsesSingleLanguageListeners+Private.h │ │ ├── DBUsesSingleLanguageListeners+Private.mm │ │ ├── DBUsesSingleLanguageListeners.h │ │ ├── DBVarnameInterface+Private.h │ │ ├── DBVarnameInterface+Private.mm │ │ ├── DBVarnameInterface.h │ │ ├── DBVarnameRecord+Private.h │ │ ├── DBVarnameRecord+Private.mm │ │ ├── DBVarnameRecord.h │ │ ├── DBVarnameRecord.mm │ │ ├── DBWcharTestHelpers+Private.h │ │ ├── DBWcharTestHelpers+Private.mm │ │ ├── DBWcharTestHelpers.h │ │ ├── DBWcharTestRec+Private.h │ │ ├── DBWcharTestRec+Private.mm │ │ ├── DBWcharTestRec.h │ │ └── DBWcharTestRec.mm │ └── outFileList.txt ├── handwritten-src │ ├── cpp │ │ ├── Duration-jni.hpp │ │ ├── Duration-objc.hpp │ │ ├── ListenerCaller.cpp │ │ ├── TranslateDuration.cpp │ │ ├── cpp_exception_impl.cpp │ │ ├── cpp_exception_impl.hpp │ │ ├── extended_record.cpp │ │ ├── extended_record.hpp │ │ ├── flag_roundtrip.cpp │ │ ├── optional.hpp │ │ ├── return_one_two.cpp │ │ ├── reverse_client_interface_impl.cpp │ │ ├── reverse_client_interface_impl.hpp │ │ ├── test_helpers.cpp │ │ └── wchar_test_helpers.cpp │ ├── java │ │ ├── android │ │ │ └── os │ │ │ │ ├── Parcel.java │ │ │ │ └── Parcelable.java │ │ └── com │ │ │ └── dropbox │ │ │ └── djinni │ │ │ └── test │ │ │ ├── AllTests.java │ │ │ ├── AndroidParcelableTest.java │ │ │ ├── ClientInterfaceImpl.java │ │ │ ├── ClientInterfaceTest.java │ │ │ ├── CppExceptionTest.java │ │ │ ├── DurationTest.java │ │ │ ├── EnumTest.java │ │ │ ├── MapRecordTest.java │ │ │ ├── MockRecordTest.java │ │ │ ├── NestedCollectionTest.java │ │ │ ├── PrimitiveListTest.java │ │ │ ├── PrimitivesTest.java │ │ │ ├── RecordWithDerivingsTest.java │ │ │ ├── SetRecordTest.java │ │ │ ├── TokenTest.java │ │ │ └── WcharTest.java │ └── objc │ │ ├── impl │ │ ├── DBClientInterfaceImpl.h │ │ └── DBClientInterfaceImpl.mm │ │ └── tests │ │ ├── DBClientInterfaceTests.mm │ │ ├── DBConstantTests.mm │ │ ├── DBCppExceptionTests.mm │ │ ├── DBDateRecordTests.mm │ │ ├── DBDurationTests.m │ │ ├── DBFlagsTests.mm │ │ ├── DBMapRecordTests.mm │ │ ├── DBMultipleInheritanceTests.m │ │ ├── DBNestedCollectionTests.mm │ │ ├── DBPrimitiveListTests.mm │ │ ├── DBPrimitivesTests.m │ │ ├── DBRecordWithDerivingsCppTests.mm │ │ ├── DBRecordWithDerivingsObjcTests.mm │ │ ├── DBSetRecordTests.mm │ │ ├── DBTokenTests.mm │ │ ├── DBWcharTests.m │ │ ├── DjinniObjcTestTests-Info.plist │ │ └── en.lproj │ │ └── InfoPlist.strings ├── java │ ├── .gitignore │ ├── CMakeLists.txt │ ├── build.xml │ └── docker │ │ ├── README.md │ │ ├── build_and_run_tests.sh │ │ ├── centos_6 │ │ └── Dockerfile │ │ ├── debian_jessie │ │ └── Dockerfile │ │ ├── fedora_24 │ │ └── Dockerfile │ │ ├── run_dockerized_test.sh │ │ ├── ubuntu_trusty │ │ └── Dockerfile │ │ └── ubuntu_utopic │ │ └── Dockerfile ├── objc │ └── DjinniObjcTest.xcodeproj │ │ ├── project.pbxproj │ │ └── xcshareddata │ │ └── xcschemes │ │ └── DjinniObjcTest.xcscheme ├── run_djinni.sh └── test-suite.iml └── tools └── format_whitespace /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | **/.idea/workspace.xml 4 | **/.idea/tasks.xml 5 | 6 | # android makefiles 7 | GypAndroid.mk 8 | support/*.target.mk 9 | *.target.mk 10 | GypAndroid.mk 11 | 12 | # gyp 13 | deps/gyp 14 | 15 | # android build artifacts 16 | libs/ 17 | obj/ 18 | 19 | # ios build artifacts 20 | build/ 21 | build_ios/ 22 | 23 | # xcode stuff 24 | project.xcworkspace 25 | *.xccheckout 26 | DerivedData 27 | *.xcuserdatad/ 28 | 29 | # djinni output directories 30 | djinni-output-temp/ 31 | 32 | # intellij-plugin build artifact 33 | intellij-plugin/djinni.jar 34 | 35 | # profiling output 36 | callgrind.out.* 37 | -------------------------------------------------------------------------------- /CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | The following is a partial list of individuals or corporations 2 | who have identified their contributions to the djinni project. 3 | 4 | The complete list of contributors can be identified through 5 | Git history. 6 | 7 | - Google Inc. 8 | - Microsoft Corp. 9 | 10 | -------------------------------------------------------------------------------- /deps/java/jsr305-3.0.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/deps/java/jsr305-3.0.0.jar -------------------------------------------------------------------------------- /deps/java/test/hamcrest-core-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/deps/java/test/hamcrest-core-1.3.jar -------------------------------------------------------------------------------- /deps/java/test/junit-4.11.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/deps/java/test/junit-4.11.jar -------------------------------------------------------------------------------- /example/Makefile: -------------------------------------------------------------------------------- 1 | all: android ios localhost 2 | 3 | android: example.djinni 4 | @make -C .. GypAndroid.mk 5 | 6 | ios: example.djinni 7 | @make -C .. ./build_ios/example/libtextsort.xcodeproj 8 | 9 | localhost: example.djinni 10 | cd localhost && ant compile jar run 11 | 12 | .PHONY: android ios localhost 13 | -------------------------------------------------------------------------------- /example/android/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | -------------------------------------------------------------------------------- /example/android/.idea/.name: -------------------------------------------------------------------------------- 1 | TextSort -------------------------------------------------------------------------------- /example/android/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4"> 3 | <component name="CompilerConfiguration"> 4 | <option name="DEFAULT_COMPILER" value="Javac" /> 5 | <resourceExtensions /> 6 | <wildcardResourcePatterns> 7 | <entry name="!?*.java" /> 8 | <entry name="!?*.form" /> 9 | <entry name="!?*.class" /> 10 | <entry name="!?*.groovy" /> 11 | <entry name="!?*.scala" /> 12 | <entry name="!?*.flex" /> 13 | <entry name="!?*.kt" /> 14 | <entry name="!?*.clj" /> 15 | </wildcardResourcePatterns> 16 | <annotationProcessing> 17 | <profile default="true" name="Default" enabled="false"> 18 | <processorPath useClasspath="true" /> 19 | </profile> 20 | </annotationProcessing> 21 | </component> 22 | </project> 23 | 24 | -------------------------------------------------------------------------------- /example/android/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | <component name="CopyrightManager"> 2 | <settings default="" /> 3 | </component> -------------------------------------------------------------------------------- /example/android/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4"> 3 | <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" /> 4 | </project> 5 | 6 | -------------------------------------------------------------------------------- /example/android/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4"> 3 | <component name="GradleSettings"> 4 | <option name="linkedExternalProjectsSettings"> 5 | <GradleProjectSettings> 6 | <option name="distributionType" value="DEFAULT_WRAPPED" /> 7 | <option name="externalProjectPath" value="$PROJECT_DIRquot; /> 8 | <option name="modules"> 9 | <set> 10 | <option value="$PROJECT_DIRquot; /> 11 | <option value="$PROJECT_DIR$/app" /> 12 | </set> 13 | </option> 14 | </GradleProjectSettings> 15 | </option> 16 | </component> 17 | </project> 18 | 19 | -------------------------------------------------------------------------------- /example/android/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4"> 3 | <component name="EntryPointsManager"> 4 | <entry_points version="2.0" /> 5 | </component> 6 | <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="JDK" project-jdk-type="JavaSDK"> 7 | <output url="file://$PROJECT_DIR$/build/classes" /> 8 | </component> 9 | </project> 10 | 11 | -------------------------------------------------------------------------------- /example/android/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4"> 3 | <component name="ProjectModuleManager"> 4 | <modules> 5 | <module fileurl="file://$PROJECT_DIR$/android.iml" filepath="$PROJECT_DIR$/android.iml" /> 6 | <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> 7 | </modules> 8 | </component> 9 | </project> 10 | 11 | -------------------------------------------------------------------------------- /example/android/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4"> 3 | <component name="VcsDirectoryMappings"> 4 | <mapping directory="" vcs="" /> 5 | </component> 6 | </project> 7 | 8 | -------------------------------------------------------------------------------- /example/android/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /example/android/app/jni/Android.mk: -------------------------------------------------------------------------------- 1 | # always force this build to re-run its dependencies 2 | FORCE_GYP := $(shell make -C ../../../ GypAndroid.mk) 3 | include ../../../GypAndroid.mk 4 | -------------------------------------------------------------------------------- /example/android/app/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # Android makefile for textsort shared lib, jni wrapper around libtextsort C API 2 | 3 | APP_ABI := all 4 | APP_OPTIM := release 5 | # Android NDK: android-8 is unsupported. Using minimum supported version android-16. 6 | APP_PLATFORM := android-16 7 | # Android NDK: Invalid NDK_TOOLCHAIN_VERSION value: 4.9. GCC is no longer supported. See https://android.googlesource.com/platform/ndk/+/master/docs/ClangMigration.md. 8 | # Android NDK: APP_STL gnustl_static is no longer supported. Please switch to either c++_static or c++_shared. See https://developer.android.com/ndk/guides/cpp-support.html for more information. 9 | APP_STL := c++_static 10 | APP_BUILD_SCRIPT := jni/Android.mk 11 | APP_MODULES := libtextsort_jni 12 | -------------------------------------------------------------------------------- /example/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Applications/Android Studio.app/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /example/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 | package="com.dropbox.textsort" > 4 | 5 | <application 6 | android:allowBackup="true" 7 | android:icon="@drawable/ic_launcher" 8 | android:label="@string/app_name" 9 | android:theme="@style/AppTheme" > 10 | <activity 11 | android:name=".MainActivity" 12 | android:label="@string/app_name" > 13 | <intent-filter> 14 | <action android:name="android.intent.action.MAIN" /> 15 | 16 | <category android:name="android.intent.category.LAUNCHER" /> 17 | </intent-filter> 18 | </activity> 19 | </application> 20 | 21 | </manifest> 22 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/example/android/app/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/example/android/app/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/example/android/app/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/example/android/app/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | <resources> 2 | <!-- Example customization of dimensions originally defined in res/values/dimens.xml 3 | (such as screen margins) for screens with more than 820dp of available width. This 4 | would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> 5 | <dimen name="activity_horizontal_margin">64dp</dimen> 6 | </resources> 7 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | <resources> 2 | <!-- Default screen margins, per the Android Design guidelines. --> 3 | <dimen name="activity_horizontal_margin">16dp</dimen> 4 | <dimen name="activity_vertical_margin">16dp</dimen> 5 | </resources> 6 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <resources> 3 | 4 | <string name="app_name">TextSort</string> 5 | <string name="hello_world">Hello world!</string> 6 | <string name="action_settings">Settings</string> 7 | 8 | </resources> 9 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | <resources> 2 | 3 | <!-- Base application theme. --> 4 | <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> 5 | <!-- Customize your theme here. --> 6 | </style> 7 | 8 | </resources> 9 | -------------------------------------------------------------------------------- /example/android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | google() 6 | jcenter() 7 | } 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.3.2' 10 | 11 | // NOTE: Do not place your application dependencies here; they belong 12 | // in the individual module build.gradle files 13 | } 14 | } 15 | 16 | allprojects { 17 | repositories { 18 | google() 19 | jcenter() 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /example/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/example/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip 6 | -------------------------------------------------------------------------------- /example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /example/example.djinni: -------------------------------------------------------------------------------- 1 | item_list = record { 2 | items: list<string>; 3 | } 4 | 5 | sort_order = enum { 6 | ascending; 7 | descending; 8 | random; 9 | } 10 | 11 | sort_items = interface +c { 12 | # For the iOS / Android demo 13 | sort(order: sort_order, items: item_list); 14 | static create_with_listener(listener: textbox_listener): sort_items; 15 | 16 | # For the localhost / command-line demo 17 | static run_sort(items: item_list): item_list; 18 | } 19 | 20 | textbox_listener = interface +j +o { 21 | update(items: item_list); 22 | } 23 | -------------------------------------------------------------------------------- /example/generated-src/cpp/item_list.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | #include <utility> 8 | #include <vector> 9 | 10 | namespace textsort { 11 | 12 | struct ItemList final { 13 | std::vector<std::string> items; 14 | 15 | ItemList(std::vector<std::string> items_) 16 | : items(std::move(items_)) 17 | {} 18 | }; 19 | 20 | } // namespace textsort 21 | -------------------------------------------------------------------------------- /example/generated-src/cpp/sort_items.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #pragma once 5 | 6 | #include <memory> 7 | 8 | namespace textsort { 9 | 10 | class TextboxListener; 11 | enum class sort_order; 12 | struct ItemList; 13 | 14 | class SortItems { 15 | public: 16 | virtual ~SortItems() {} 17 | 18 | /** For the iOS / Android demo */ 19 | virtual void sort(sort_order order, const ItemList & items) = 0; 20 | 21 | static std::shared_ptr<SortItems> create_with_listener(const std::shared_ptr<TextboxListener> & listener); 22 | 23 | /** For the localhost / command-line demo */ 24 | static ItemList run_sort(const ItemList & items); 25 | }; 26 | 27 | } // namespace textsort 28 | -------------------------------------------------------------------------------- /example/generated-src/cpp/sort_order.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #pragma once 5 | 6 | #include <functional> 7 | 8 | namespace textsort { 9 | 10 | enum class sort_order : int { 11 | ASCENDING, 12 | DESCENDING, 13 | RANDOM, 14 | }; 15 | 16 | } // namespace textsort 17 | 18 | namespace std { 19 | 20 | template <> 21 | struct hash<::textsort::sort_order> { 22 | size_t operator()(::textsort::sort_order type) const { 23 | return std::hash<int>()(static_cast<int>(type)); 24 | } 25 | }; 26 | 27 | } // namespace std 28 | -------------------------------------------------------------------------------- /example/generated-src/cpp/textbox_listener.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #pragma once 5 | 6 | namespace textsort { 7 | 8 | struct ItemList; 9 | 10 | class TextboxListener { 11 | public: 12 | virtual ~TextboxListener() {} 13 | 14 | virtual void update(const ItemList & items) = 0; 15 | }; 16 | 17 | } // namespace textsort 18 | -------------------------------------------------------------------------------- /example/generated-src/java/com/dropbox/textsort/ItemList.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | package com.dropbox.textsort; 5 | 6 | import java.util.ArrayList; 7 | import javax.annotation.CheckForNull; 8 | import javax.annotation.Nonnull; 9 | 10 | /*package*/ final class ItemList { 11 | 12 | 13 | /*package*/ final ArrayList<String> mItems; 14 | 15 | public ItemList( 16 | @Nonnull ArrayList<String> items) { 17 | this.mItems = items; 18 | } 19 | 20 | @Nonnull 21 | public ArrayList<String> getItems() { 22 | return mItems; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "ItemList{" + 28 | "mItems=" + mItems + 29 | "}"; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /example/generated-src/java/com/dropbox/textsort/SortOrder.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | package com.dropbox.textsort; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | /*package*/ enum SortOrder { 10 | ASCENDING, 11 | DESCENDING, 12 | RANDOM, 13 | ; 14 | } 15 | -------------------------------------------------------------------------------- /example/generated-src/java/com/dropbox/textsort/TextboxListener.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | package com.dropbox.textsort; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | /*package*/ interface TextboxListener { 10 | public void update(@Nonnull ItemList items); 11 | } 12 | -------------------------------------------------------------------------------- /example/generated-src/objc/TXSItemList+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #import "TXSItemList.h" 5 | #include "item_list.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class TXSItemList; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ItemList 14 | { 15 | using CppType = ::textsort::ItemList; 16 | using ObjcType = TXSItemList*; 17 | 18 | using Boxed = ItemList; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /example/generated-src/objc/TXSItemList+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #import "TXSItemList+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto ItemList::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::List<::djinni::String>::toCpp(obj.items)}; 14 | } 15 | 16 | auto ItemList::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[TXSItemList alloc] initWithItems:(::djinni::List<::djinni::String>::fromCpp(cpp.items))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /example/generated-src/objc/TXSItemList.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface TXSItemList : NSObject 7 | - (nonnull instancetype)initWithItems:(nonnull NSArray<NSString *> *)items; 8 | + (nonnull instancetype)itemListWithItems:(nonnull NSArray<NSString *> *)items; 9 | 10 | @property (nonatomic, readonly, nonnull) NSArray<NSString *> * items; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /example/generated-src/objc/TXSItemList.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #import "TXSItemList.h" 5 | 6 | 7 | @implementation TXSItemList 8 | 9 | - (nonnull instancetype)initWithItems:(nonnull NSArray<NSString *> *)items 10 | { 11 | if (self = [super init]) { 12 | _items = [items copy]; 13 | } 14 | return self; 15 | } 16 | 17 | + (nonnull instancetype)itemListWithItems:(nonnull NSArray<NSString *> *)items 18 | { 19 | return [(TXSItemList*)[self alloc] initWithItems:items]; 20 | } 21 | 22 | - (NSString *)description 23 | { 24 | return [NSString stringWithFormat:@"<%@ %p items:%@>", self.class, (void *)self, self.items]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /example/generated-src/objc/TXSSortItems.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #import "TXSItemList.h" 5 | #import "TXSSortOrder.h" 6 | #import <Foundation/Foundation.h> 7 | @class TXSSortItems; 8 | @protocol TXSTextboxListener; 9 | 10 | 11 | @interface TXSSortItems : NSObject 12 | 13 | /** For the iOS / Android demo */ 14 | - (void)sort:(TXSSortOrder)order 15 | items:(nonnull TXSItemList *)items; 16 | 17 | + (nullable TXSSortItems *)createWithListener:(nullable id<TXSTextboxListener>)listener; 18 | 19 | /** For the localhost / command-line demo */ 20 | + (nonnull TXSItemList *)runSort:(nonnull TXSItemList *)items; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /example/generated-src/objc/TXSSortOrder+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #include "sort_order.hpp" 5 | #import "DJIMarshal+Private.h" 6 | 7 | -------------------------------------------------------------------------------- /example/generated-src/objc/TXSSortOrder.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | typedef NS_ENUM(NSInteger, TXSSortOrder) 7 | { 8 | TXSSortOrderAscending, 9 | TXSSortOrderDescending, 10 | TXSSortOrderRandom, 11 | }; 12 | -------------------------------------------------------------------------------- /example/generated-src/objc/TXSTextboxListener.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from example.djinni 3 | 4 | #import "TXSItemList.h" 5 | #import <Foundation/Foundation.h> 6 | 7 | 8 | @protocol TXSTextboxListener 9 | 10 | - (void)update:(nonnull TXSItemList *)items; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /example/generated-src/objc/TextSort-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni 3 | 4 | // TextSort_Bridging_Header.h 5 | // TextSort_Bridging_Header 6 | 7 | #import <Foundation/Foundation.h> 8 | 9 | //! Project version number for TextSortBridgingHeader. 10 | FOUNDATION_EXPORT double TextSortBridgingHeaderVersionNumber; 11 | 12 | //! Project version string for TextSortBridgingHeader. 13 | FOUNDATION_EXPORT const unsigned char TextSortBridgingHeaderVersionString[]; 14 | 15 | #import "TXSItemList.h" 16 | #import "TXSSortOrder.h" 17 | #import "TXSSortItems.h" 18 | #import "TXSTextboxListener.h" 19 | -------------------------------------------------------------------------------- /example/glob.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # a helper for gyp to do file globbing cross platform 3 | # Usage: python glob.py root_dir pattern [pattern...] 4 | 5 | from __future__ import print_function 6 | 7 | import fnmatch 8 | import os 9 | import sys 10 | 11 | root_dir = sys.argv[1] 12 | patterns = sys.argv[2:] 13 | 14 | for (dirpath, dirnames, files) in os.walk(root_dir): 15 | for f in files: 16 | match = False 17 | for pattern in patterns: 18 | match = match or fnmatch.fnmatch(f, pattern) 19 | if match: 20 | print(os.path.join(dirpath, f)) 21 | -------------------------------------------------------------------------------- /example/handwritten-src/cpp/sort_items_impl.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "sort_items.hpp" 4 | #include "textbox_listener.hpp" 5 | 6 | namespace textsort { 7 | 8 | class SortItemsImpl : public SortItems { 9 | 10 | public: 11 | SortItemsImpl(const std::shared_ptr<TextboxListener> & listener); 12 | virtual void sort(sort_order order, const ItemList & items) override; 13 | 14 | private: 15 | std::shared_ptr<TextboxListener> m_listener; 16 | 17 | }; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /example/handwritten-src/java/com/dropbox/textsort/TextboxListenerImpl.java: -------------------------------------------------------------------------------- 1 | package com.dropbox.textsort; 2 | 3 | import android.widget.EditText; 4 | 5 | import java.util.ArrayList; 6 | 7 | public class TextboxListenerImpl implements TextboxListener { 8 | 9 | private EditText mTextArea; 10 | 11 | public TextboxListenerImpl(EditText textArea) { 12 | this.mTextArea = textArea; 13 | } 14 | 15 | @Override 16 | public void update(ItemList items) { 17 | ArrayList<String> list = items.getItems(); 18 | StringBuilder builder = new StringBuilder(); 19 | for (String str : list) { 20 | builder.append(str); 21 | builder.append("\n"); 22 | } 23 | mTextArea.setText(builder); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /example/handwritten-src/objc/TXSAppDelegate.h: -------------------------------------------------------------------------------- 1 | #import <UIKit/UIKit.h> 2 | 3 | @interface TXSAppDelegate : UIResponder <UIApplicationDelegate> 4 | 5 | @property (strong, nonatomic) UIWindow *window; 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /example/handwritten-src/objc/TXSTextboxListenerImpl.h: -------------------------------------------------------------------------------- 1 | #import "TXSTextboxListener.h" 2 | #import <Foundation/Foundation.h> 3 | 4 | @interface TXSTextboxListenerImpl : NSObject <TXSTextboxListener> 5 | 6 | - (id)initWithUITextView:(UITextView *)textView; 7 | 8 | @end 9 | -------------------------------------------------------------------------------- /example/handwritten-src/objc/TXSTextboxListenerImpl.m: -------------------------------------------------------------------------------- 1 | #import "TXSTextboxListenerImpl.h" 2 | #import "TXSItemList.h" 3 | 4 | @implementation TXSTextboxListenerImpl { 5 | UITextView * _textView; 6 | } 7 | 8 | - (id)initWithUITextView:(UITextView *)textView 9 | { 10 | if (self = [super init]) { 11 | _textView = textView; 12 | } 13 | return self; 14 | } 15 | 16 | - (void)update:(TXSItemList *)items 17 | { 18 | NSString *str = [items.items componentsJoinedByString:@"\n"]; 19 | _textView.text = str; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /example/handwritten-src/objc/TXSViewController.h: -------------------------------------------------------------------------------- 1 | #import <UIKit/UIKit.h> 2 | 3 | @interface TXSViewController : UIViewController 4 | 5 | @end 6 | -------------------------------------------------------------------------------- /example/handwritten-src/objc/main.mm: -------------------------------------------------------------------------------- 1 | #import <UIKit/UIKit.h> 2 | 3 | #import "TXSAppDelegate.h" 4 | 5 | int main(int argc, char * argv[]) 6 | { 7 | @autoreleasepool { 8 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([TXSAppDelegate class])); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /example/handwritten-src/swift/TXSTextboxListenerDebugableImpl.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | final class TXSTextboxListenerDebugableImpl : NSObject, TXSTextboxListener { 4 | private var textView: UITextView 5 | 6 | @available(*, unavailable) 7 | override init() { 8 | fatalError("Unsupported") 9 | } 10 | 11 | @objc(initWithUITextView:) 12 | init(textView: UITextView) { 13 | self.textView = textView 14 | } 15 | 16 | func update(_ items: TXSItemList) { 17 | let string = items.items.joined(separator: "\n") 18 | print("TXSTextboxListenerDebugableImpl -> update \n\(string)") 19 | textView.text = string 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /example/local.properties.sample: -------------------------------------------------------------------------------- 1 | ndk.dir=<path-to-ndk> 2 | -------------------------------------------------------------------------------- /example/localhost/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | -------------------------------------------------------------------------------- /example/localhost/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:vivid 2 | 3 | RUN apt-get update 4 | RUN apt-get -y install git build-essential clang cmake 5 | 6 | RUN apt-get install -y openjdk-8-jdk ant 7 | 8 | ENV CXX clang++ 9 | 10 | # Select Java 8 11 | RUN update-java-alternatives -s java-1.8.0-openjdk-amd64 12 | RUN rm /usr/lib/jvm/default-java 13 | RUN ln -s /usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/default-java 14 | 15 | -------------------------------------------------------------------------------- /example/localhost/run_in_docker.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | set -eux 3 | 4 | # Build docker container 5 | docker build -t djinni-demo . 6 | 7 | djinni_root=`cd ../../; pwd` 8 | 9 | # Run! 10 | if [ $# -eq 0 ]; then 11 | docker run --rm -it -v $djinni_root:/opt/djinni -w /opt/djinni djinni-demo bash 12 | else 13 | docker run --rm -v $djinni_root:/opt/djinni -w /opt/djinni/example/localhost djinni-demo $@ 14 | fi 15 | 16 | -------------------------------------------------------------------------------- /example/objc/TextSort.xcodeproj/.gitignore: -------------------------------------------------------------------------------- 1 | xcuserdata/ 2 | -------------------------------------------------------------------------------- /example/objc/TextSort.xcworkspace/.gitignore: -------------------------------------------------------------------------------- 1 | xcuserdata/ 2 | -------------------------------------------------------------------------------- /example/objc/TextSort.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <Workspace 3 | version = "1.0"> 4 | <FileRef 5 | location = "group:TextSort.xcodeproj"> 6 | </FileRef> 7 | <FileRef 8 | location = "group:../../build_ios/example/libtextsort.xcodeproj"> 9 | </FileRef> 10 | <FileRef 11 | location = "group:../../build_ios/support-lib/support_lib.xcodeproj"> 12 | </FileRef> 13 | </Workspace> 14 | -------------------------------------------------------------------------------- /example/objc/TextSort.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 | <plist version="1.0"> 4 | <dict> 5 | <key>IDEDidComputeMac32BitWarning</key> 6 | <true/> 7 | </dict> 8 | </plist> 9 | -------------------------------------------------------------------------------- /example/objc/TextSort/TextSort-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import <Availability.h> 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import <UIKit/UIKit.h> 15 | #import <Foundation/Foundation.h> 16 | #endif 17 | -------------------------------------------------------------------------------- /example/objc/TextSort/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /extension-libs/extension-libs.iml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <module type="WEB_MODULE" version="4"> 3 | <component name="NewModuleRootManager" inherit-compiler-output="true"> 4 | <exclude-output /> 5 | <content url="file://$MODULE_DIRquot; /> 6 | <orderEntry type="inheritedJdk" /> 7 | <orderEntry type="sourceFolder" forTests="false" /> 8 | </component> 9 | </module> -------------------------------------------------------------------------------- /intellij-plugin/.gitignore: -------------------------------------------------------------------------------- 1 | out/ 2 | *~ 3 | resources/META-INF -------------------------------------------------------------------------------- /intellij-plugin/djinni.iml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <module type="PLUGIN_MODULE" version="4"> 3 | <component name="DevKit.ModuleBuildProperties" url="file://$MODULE_DIR$/META-INF/plugin.xml" /> 4 | <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="true"> 5 | <exclude-output /> 6 | <content url="file://$MODULE_DIRquot;> 7 | <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> 8 | <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" /> 9 | </content> 10 | <orderEntry type="jdk" jdkName="IntelliJ IDEA SDK" jdkType="IDEA JDK" /> 11 | <orderEntry type="sourceFolder" forTests="false" /> 12 | </component> 13 | </module> -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniBasicType.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniBasicType extends PsiElement { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniConstMember.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniConstMember extends PsiElement { 9 | 10 | @NotNull 11 | DjinniConstNamedValue getConstNamedValue(); 12 | 13 | @NotNull 14 | DjinniConstValue getConstValue(); 15 | 16 | @NotNull 17 | DjinniTypeReference getTypeReference(); 18 | 19 | @NotNull 20 | PsiElement getColon(); 21 | 22 | @NotNull 23 | PsiElement getEq(); 24 | 25 | @NotNull 26 | PsiElement getSemicolon(); 27 | 28 | @NotNull 29 | PsiElement getConst(); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniConstNamedValue.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniConstNamedValue extends DjinniNamedElement { 9 | 10 | @NotNull 11 | PsiElement getIdentifier(); 12 | 13 | String getName(); 14 | 15 | PsiElement setName(String newName); 16 | 17 | @Nullable 18 | PsiElement getNameIdentifier(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniConstRecordMemberElement.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniConstRecordMemberElement extends PsiElement { 9 | 10 | @NotNull 11 | DjinniConstValue getConstValue(); 12 | 13 | @NotNull 14 | PsiElement getEq(); 15 | 16 | @NotNull 17 | PsiElement getIdentifier(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniConstReference.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniConstReference extends DjinniNamedElement { 9 | 10 | @NotNull 11 | PsiElement getIdentifier(); 12 | 13 | String getName(); 14 | 15 | PsiElement setName(String newName); 16 | 17 | @Nullable 18 | PsiElement getNameIdentifier(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniConstValue.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniConstValue extends PsiElement { 9 | 10 | @NotNull 11 | List<DjinniConstRecordMemberElement> getConstRecordMemberElementList(); 12 | 13 | @Nullable 14 | DjinniConstReference getConstReference(); 15 | 16 | @Nullable 17 | PsiElement getLeftBlockBrace(); 18 | 19 | @Nullable 20 | PsiElement getRightBlockBrace(); 21 | 22 | @Nullable 23 | PsiElement getNumberLiteral(); 24 | 25 | @Nullable 26 | PsiElement getStringLiteral(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniDerivingParam.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniDerivingParam extends PsiElement { 9 | 10 | @Nullable 11 | PsiElement getEqKeyword(); 12 | 13 | @Nullable 14 | PsiElement getOrd(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniDerivingParamList.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniDerivingParamList extends PsiElement { 9 | 10 | @NotNull 11 | DjinniDerivingParam getDerivingParam(); 12 | 13 | @Nullable 14 | DjinniDerivingParamList getDerivingParamList(); 15 | 16 | @Nullable 17 | PsiElement getListSeparator(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniEnumMember.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniEnumMember extends PsiElement { 9 | 10 | @NotNull 11 | DjinniEnumValue getEnumValue(); 12 | 13 | @NotNull 14 | PsiElement getSemicolon(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniEnumTypeVariant.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniEnumTypeVariant extends PsiElement { 9 | 10 | @NotNull 11 | PsiElement getEnum(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniEnumValue.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniEnumValue extends DjinniNamedElement { 9 | 10 | @NotNull 11 | PsiElement getIdentifier(); 12 | 13 | String getName(); 14 | 15 | PsiElement setName(String newName); 16 | 17 | @Nullable 18 | PsiElement getNameIdentifier(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniExternStatement.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | import com.intellij.psi.PsiNamedElement; 8 | import com.intellij.openapi.util.TextRange; 9 | 10 | public interface DjinniExternStatement extends PsiNamedElement { 11 | 12 | @NotNull 13 | PsiElement getAt(); 14 | 15 | @NotNull 16 | PsiElement getExtern(); 17 | 18 | @NotNull 19 | PsiElement getStringLiteral(); 20 | 21 | @NotNull 22 | String getName(); 23 | 24 | PsiElement setName(String newName); 25 | 26 | TextRange getRangeOfPath(); 27 | 28 | @NotNull 29 | String getPath(); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniGenerator.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniGenerator extends PsiElement { 9 | 10 | @NotNull 11 | PsiElement getPlus(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniGenericBasicType.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniGenericBasicType extends PsiElement { 9 | 10 | @Nullable 11 | DjinniGenericBasicTypeDualParameter getGenericBasicTypeDualParameter(); 12 | 13 | @Nullable 14 | DjinniGenericBasicTypeSingleParameter getGenericBasicTypeSingleParameter(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniGenericBasicTypeDualParameter.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniGenericBasicTypeDualParameter extends PsiElement { 9 | 10 | @NotNull 11 | List<DjinniTypeReference> getTypeReferenceList(); 12 | 13 | @NotNull 14 | PsiElement getLeftGenericsBrace(); 15 | 16 | @NotNull 17 | PsiElement getListSeparator(); 18 | 19 | @NotNull 20 | PsiElement getRightGenericsBrace(); 21 | 22 | @NotNull 23 | PsiElement getMap(); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniGenericBasicTypeSingleParameter.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniGenericBasicTypeSingleParameter extends PsiElement { 9 | 10 | @NotNull 11 | DjinniTypeReference getTypeReference(); 12 | 13 | @NotNull 14 | PsiElement getLeftGenericsBrace(); 15 | 16 | @NotNull 17 | PsiElement getRightGenericsBrace(); 18 | 19 | @Nullable 20 | PsiElement getList(); 21 | 22 | @Nullable 23 | PsiElement getOptional(); 24 | 25 | @Nullable 26 | PsiElement getSet(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniImportStatement.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | import com.intellij.psi.PsiNamedElement; 8 | import com.intellij.openapi.util.TextRange; 9 | 10 | public interface DjinniImportStatement extends PsiNamedElement { 11 | 12 | @NotNull 13 | PsiElement getAt(); 14 | 15 | @NotNull 16 | PsiElement getImport(); 17 | 18 | @NotNull 19 | PsiElement getStringLiteral(); 20 | 21 | @NotNull 22 | String getName(); 23 | 24 | PsiElement setName(String newName); 25 | 26 | TextRange getRangeOfPath(); 27 | 28 | @NotNull 29 | String getPath(); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniInterfaceFunctionParam.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniInterfaceFunctionParam extends PsiElement { 9 | 10 | @NotNull 11 | DjinniTypeReference getTypeReference(); 12 | 13 | @NotNull 14 | PsiElement getColon(); 15 | 16 | @NotNull 17 | PsiElement getIdentifier(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniInterfaceFunctionParamList.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniInterfaceFunctionParamList extends PsiElement { 9 | 10 | @NotNull 11 | DjinniInterfaceFunctionParam getInterfaceFunctionParam(); 12 | 13 | @Nullable 14 | DjinniInterfaceFunctionParamList getInterfaceFunctionParamList(); 15 | 16 | @Nullable 17 | PsiElement getListSeparator(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniInterfaceMember.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniInterfaceMember extends PsiElement { 9 | 10 | @Nullable 11 | DjinniConstMember getConstMember(); 12 | 13 | @Nullable 14 | DjinniInterfaceMemberFunction getInterfaceMemberFunction(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniInterfaceTypeVariant.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniInterfaceTypeVariant extends PsiElement { 9 | 10 | @NotNull 11 | List<DjinniGenerator> getGeneratorList(); 12 | 13 | @NotNull 14 | PsiElement getInterface(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniPredefinedType.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniPredefinedType extends PsiElement { 9 | 10 | @Nullable 11 | DjinniBasicType getBasicType(); 12 | 13 | @Nullable 14 | DjinniGenericBasicType getGenericBasicType(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniRecordMember.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniRecordMember extends PsiElement { 9 | 10 | @Nullable 11 | DjinniConstMember getConstMember(); 12 | 13 | @Nullable 14 | DjinniRecordMemberVariable getRecordMemberVariable(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniRecordMemberVariable.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniRecordMemberVariable extends PsiElement { 9 | 10 | @NotNull 11 | DjinniTypeReference getTypeReference(); 12 | 13 | @NotNull 14 | PsiElement getColon(); 15 | 16 | @NotNull 17 | PsiElement getSemicolon(); 18 | 19 | @NotNull 20 | PsiElement getIdentifier(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniRecordTypeVariant.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniRecordTypeVariant extends PsiElement { 9 | 10 | @NotNull 11 | List<DjinniGenerator> getGeneratorList(); 12 | 13 | @NotNull 14 | PsiElement getRecord(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/DjinniTypeReference.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface DjinniTypeReference extends DjinniNamedElement { 9 | 10 | @Nullable 11 | DjinniPredefinedType getPredefinedType(); 12 | 13 | @Nullable 14 | PsiElement getIdentifier(); 15 | 16 | String getName(); 17 | 18 | PsiElement setName(String newName); 19 | 20 | @Nullable 21 | PsiElement getNameIdentifier(); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/YamlEntry.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface YamlEntry extends PsiElement { 9 | 10 | @Nullable 11 | YamlLhs getLhs(); 12 | 13 | @Nullable 14 | YamlRhs getRhs(); 15 | 16 | @Nullable 17 | PsiElement getSeparator(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/YamlLhs.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public interface YamlLhs extends PsiElement { 9 | 10 | @NotNull 11 | PsiElement getKey(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/YamlRhs.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import java.util.List; 5 | import org.jetbrains.annotations.*; 6 | import com.intellij.psi.PsiElement; 7 | import com.intellij.navigation.ItemPresentation; 8 | 9 | public interface YamlRhs extends PsiElement { 10 | 11 | @NotNull 12 | PsiElement getValue(); 13 | 14 | String getName(); 15 | 16 | ItemPresentation getPresentation(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /intellij-plugin/gen/com/dropbox/djinni/ideaplugin/psi/YamlVisitor.java: -------------------------------------------------------------------------------- 1 | // This is a generated file. Not intended for manual editing. 2 | package com.dropbox.djinni.ideaplugin.psi; 3 | 4 | import org.jetbrains.annotations.*; 5 | import com.intellij.psi.PsiElementVisitor; 6 | import com.intellij.psi.PsiElement; 7 | 8 | public class YamlVisitor extends PsiElementVisitor { 9 | 10 | public void visitEntry(@NotNull YamlEntry o) { 11 | visitPsiElement(o); 12 | } 13 | 14 | public void visitLhs(@NotNull YamlLhs o) { 15 | visitPsiElement(o); 16 | } 17 | 18 | public void visitRhs(@NotNull YamlRhs o) { 19 | visitPsiElement(o); 20 | } 21 | 22 | public void visitPsiElement(@NotNull PsiElement o) { 23 | visitElement(o); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /intellij-plugin/src/com/dropbox/djinni/resources/djinni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/intellij-plugin/src/com/dropbox/djinni/resources/djinni.png -------------------------------------------------------------------------------- /src/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /project/project 3 | /project/target 4 | /test/result 5 | /classes 6 | -------------------------------------------------------------------------------- /src/.idea/.name: -------------------------------------------------------------------------------- 1 | djinni 2 | -------------------------------------------------------------------------------- /src/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4"> 3 | <component name="CompilerConfiguration"> 4 | <option name="DEFAULT_COMPILER" value="Javac" /> 5 | <resourceExtensions /> 6 | <wildcardResourcePatterns> 7 | <entry name="!?*.java" /> 8 | <entry name="!?*.form" /> 9 | <entry name="!?*.class" /> 10 | <entry name="!?*.groovy" /> 11 | <entry name="!?*.scala" /> 12 | <entry name="!?*.flex" /> 13 | <entry name="!?*.kt" /> 14 | <entry name="!?*.clj" /> 15 | </wildcardResourcePatterns> 16 | <annotationProcessing> 17 | <profile default="true" name="Default" enabled="false"> 18 | <processorPath useClasspath="true" /> 19 | </profile> 20 | </annotationProcessing> 21 | </component> 22 | </project> 23 | 24 | -------------------------------------------------------------------------------- /src/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | <component name="CopyrightManager"> 2 | <settings default="" /> 3 | </component> -------------------------------------------------------------------------------- /src/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4"> 3 | <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false"> 4 | <file url="PROJECT" charset="UTF-8" /> 5 | </component> 6 | </project> -------------------------------------------------------------------------------- /src/.idea/highlighting.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4" /> -------------------------------------------------------------------------------- /src/.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | <component name="InspectionProjectProfileManager"> 2 | <settings> 3 | <option name="PROJECT_PROFILE" value="Project Default" /> 4 | <option name="USE_PROJECT_PROFILE" value="true" /> 5 | <version value="1.0" /> 6 | </settings> 7 | </component> -------------------------------------------------------------------------------- /src/.idea/libraries/SBT__com_github_scopt_scopt_2_11_3_2_0_jar.xml: -------------------------------------------------------------------------------- 1 | <component name="libraryTable"> 2 | <library name="SBT: com.github.scopt:scopt_2.11:3.2.0:jar"> 3 | <CLASSES> 4 | <root url="jar://$USER_HOME$/.ivy2/cache/com.github.scopt/scopt_2.11/jars/scopt_2.11-3.2.0.jar!/" /> 5 | </CLASSES> 6 | <JAVADOC /> 7 | <SOURCES /> 8 | </library> 9 | </component> -------------------------------------------------------------------------------- /src/.idea/libraries/SBT__org_scala_lang_modules_scala_parser_combinators_2_11_1_0_1_jar.xml: -------------------------------------------------------------------------------- 1 | <component name="libraryTable"> 2 | <library name="SBT: org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1:jar"> 3 | <CLASSES> 4 | <root url="jar://$USER_HOME$/.ivy2/cache/org.scala-lang.modules/scala-parser-combinators_2.11/bundles/scala-parser-combinators_2.11-1.0.1.jar!/" /> 5 | </CLASSES> 6 | <JAVADOC /> 7 | <SOURCES /> 8 | </library> 9 | </component> -------------------------------------------------------------------------------- /src/.idea/libraries/SBT__org_yaml_snakeyaml_1_15_jar.xml: -------------------------------------------------------------------------------- 1 | <component name="libraryTable"> 2 | <library name="SBT: org.yaml:snakeyaml:1.15:jar"> 3 | <CLASSES> 4 | <root url="jar://$USER_HOME$/.ivy2/cache/org.yaml/snakeyaml/bundles/snakeyaml-1.15.jar!/" /> 5 | </CLASSES> 6 | <JAVADOC /> 7 | <SOURCES /> 8 | </library> 9 | </component> -------------------------------------------------------------------------------- /src/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4"> 3 | <component name="EntryPointsManager"> 4 | <entry_points version="2.0" /> 5 | </component> 6 | <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> 7 | <output url="file://$PROJECT_DIR$/classes" /> 8 | </component> 9 | </project> -------------------------------------------------------------------------------- /src/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project version="4"> 3 | <component name="VcsDirectoryMappings"> 4 | <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> 5 | </component> 6 | </project> -------------------------------------------------------------------------------- /src/build.sbt: -------------------------------------------------------------------------------- 1 | import com.typesafe.sbt.SbtStartScript 2 | 3 | scalaVersion := "2.11.12" 4 | 5 | libraryDependencies ++= Seq( 6 | "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.1", 7 | "org.yaml" % "snakeyaml" % "1.15" 8 | ) 9 | 10 | scalaSource in Compile := baseDirectory.value / "source" 11 | 12 | sourcesInBase := false 13 | 14 | // 143 chars is the filename length limit in eCryptfs, commonly used in linux distros to encrypt homedirs. 15 | // Make scala respect that limit via max-classfile-name, or compilation fails. 16 | scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature", "-Xmax-classfile-name", "143") 17 | 18 | libraryDependencies += "com.github.scopt" %% "scopt" % "3.2.0" 19 | 20 | Seq(SbtStartScript.startScriptForClassesSettings: _*) 21 | -------------------------------------------------------------------------------- /src/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=0.13.17 2 | -------------------------------------------------------------------------------- /src/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | addSbtPlugin("com.typesafe.sbt" % "sbt-start-script" % "0.10.0") 2 | 3 | addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5") -------------------------------------------------------------------------------- /src/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | set -eu 3 | 4 | # Locate the script file. Cross symlinks if necessary. 5 | loc="$0" 6 | while [ -h "$loc" ]; do 7 | ls=`ls -ld "$loc"` 8 | link=`expr "$ls" : '.*-> \(.*\)#39;` 9 | if expr "$link" : '/.*' > /dev/null; then 10 | loc="$link" # Absolute link 11 | else 12 | loc="`dirname "$loc"`/$link" # Relative link 13 | fi 14 | done 15 | base_dir=$(cd "`dirname "$loc"`" > /dev/null && pwd) 16 | 17 | "$base_dir/build" 18 | 19 | # Determine os version and choose correspondent .sh or .bat file accordingly. 20 | os_version="`uname -a`" 21 | 22 | if [[ $os_version == *"MINGW"* ]] || [[ $os_version == *"MSYS_NT"* ]]; then 23 | cmd //C "$base_dir/target/start.bat" "$@" 24 | else 25 | exec "$base_dir/target/start" "$@" 26 | fi 27 | -------------------------------------------------------------------------------- /src/run-assume-built: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | set -eu 3 | 4 | # Locate the script file. Cross symlinks if necessary. 5 | loc="$0" 6 | while [ -h "$loc" ]; do 7 | ls=`ls -ld "$loc"` 8 | link=`expr "$ls" : '.*-> \(.*\)#39;` 9 | if expr "$link" : '/.*' > /dev/null; then 10 | loc="$link" # Absolute link 11 | else 12 | loc="`dirname "$loc"`/$link" # Relative link 13 | fi 14 | done 15 | base_dir=$(cd "`dirname "$loc"`" > /dev/null && pwd) 16 | 17 | exec "$base_dir/target/start" "$@" 18 | -------------------------------------------------------------------------------- /src/support/sbt-launch.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/src/support/sbt-launch.jar -------------------------------------------------------------------------------- /src/support/sbt.resolvers.properties: -------------------------------------------------------------------------------- 1 | [repositories] 2 | local 3 | ssl-typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly 4 | ssl-maven-central: https://repo1.maven.org/maven2 5 | ssl-sbt-plugins: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/,[organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext] 6 | -------------------------------------------------------------------------------- /src/support/sbt.security.policy: -------------------------------------------------------------------------------- 1 | // This is not intended to be an air-tight security policy against an adversarial 2 | // program. SBT is our friend. We're just trying to catch cases where we misconfigure 3 | // SBT and it ends up trying to use a non-SSL host. 4 | 5 | grant { 6 | permission java.net.SocketPermission "*:443", "connect,resolve"; 7 | 8 | permission java.io.FilePermission "<<ALL FILES>>", "read,write,execute,delete"; 9 | permission java.util.PropertyPermission "*", "read,write"; 10 | permission java.lang.RuntimePermission "*"; 11 | permission java.lang.reflect.ReflectPermission "*"; 12 | permission java.security.SecurityPermission "*"; 13 | permission java.net.NetPermission "*"; 14 | permission javax.net.ssl.SSLPermission "*"; 15 | }; 16 | -------------------------------------------------------------------------------- /support-lib/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dropbox/djinni/4f3aa6971b2b539cfadec4df2243a268651c4de3/support-lib/.gitignore -------------------------------------------------------------------------------- /support-lib/support-lib.iml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <module type="JAVA_MODULE" version="4"> 3 | <component name="NewModuleRootManager" inherit-compiler-output="true"> 4 | <exclude-output /> 5 | <content url="file://$MODULE_DIRquot;> 6 | <sourceFolder url="file://$MODULE_DIR$/java" isTestSource="false" /> 7 | </content> 8 | <orderEntry type="inheritedJdk" /> 9 | <orderEntry type="sourceFolder" forTests="false" /> 10 | </component> 11 | </module> -------------------------------------------------------------------------------- /test-suite/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all djinni objc clean_objc java clean_java linux_docker clean 2 | 3 | all: objc java 4 | 5 | djinni: 6 | ./run_djinni.sh 7 | 8 | objc: djinni 9 | cd objc; xcodebuild -sdk iphonesimulator -project DjinniObjcTest.xcodeproj -scheme DjinniObjcTest test -destination 'platform=iOS Simulator,name=iPhone 7,OS=latest' 10 | 11 | clean_objc: 12 | cd objc && xcodebuild -sdk iphonesimulator -project DjinniObjcTest.xcodeproj -scheme DjinniObjcTest clean 13 | 14 | java: djinni 15 | cd java && ant compile test 16 | 17 | clean_java: 18 | cd java && ant clean 19 | 20 | linux_docker: djinni 21 | cd ..; ./test-suite/java/docker/run_dockerized_test.sh 22 | 23 | clean: clean_objc clean_java 24 | -------------------------------------------------------------------------------- /test-suite/djinni/all.djinni: -------------------------------------------------------------------------------- 1 | @import "common.djinni" 2 | 3 | @import "enum_flags.djinni" 4 | @import "constant_enum.djinni" 5 | 6 | @import "vendor/third-party/date.djinni" 7 | @import "third-party/duration.djinni" 8 | -------------------------------------------------------------------------------- /test-suite/djinni/common.djinni: -------------------------------------------------------------------------------- 1 | @import "set.djinni" 2 | @import "derivings.djinni" 3 | @import "nested_collection.djinni" 4 | @import "map.djinni" 5 | @import "primitive_list.djinni" 6 | @import "exception.djinni" 7 | @import "client_interface.djinni" 8 | @import "enum.djinni" 9 | @import "user_token.djinni" 10 | @import "test.djinni" 11 | @import "primtypes.djinni" 12 | @import "constants.djinni" 13 | @import "multiple_inheritance.djinni" 14 | @import "single_language_interfaces.djinni" 15 | @import "extended_record.djinni" 16 | @import "varnames.djinni" 17 | @import "relative_paths.djinni" 18 | @import "parcelable.djinni" 19 | -------------------------------------------------------------------------------- /test-suite/djinni/constant_enum.djinni: -------------------------------------------------------------------------------- 1 | # enum for use in constants 2 | constant_enum = enum { 3 | some_value; 4 | some_other_value; 5 | } 6 | 7 | # Record containing enum constant 8 | constant_with_enum = record { 9 | const const_enum: constant_enum = constant_enum::some_value; 10 | } deriving (parcelable) 11 | 12 | # Interface containing enum constant 13 | constant_interface_with_enum = interface +c { 14 | const const_enum: constant_enum = constant_enum::some_value; 15 | } 16 | -------------------------------------------------------------------------------- /test-suite/djinni/derivings.djinni: -------------------------------------------------------------------------------- 1 | record_with_derivings = record { 2 | eight: i8; 3 | sixteen: i16; 4 | thirtytwo: i32; 5 | sixtyfour: i64; 6 | fthirtytwo: f32; 7 | fsixtyfour: f64; 8 | d: date; 9 | s: string; 10 | } deriving (eq, ord, parcelable) 11 | 12 | record_with_nested_derivings = record { 13 | key: i32; 14 | rec: record_with_derivings; 15 | } deriving (eq, ord, parcelable) 16 | -------------------------------------------------------------------------------- /test-suite/djinni/enum_flags.djinni: -------------------------------------------------------------------------------- 1 | access_flags = flags { 2 | nobody = none; 3 | owner_read; 4 | owner_write; 5 | owner_execute; 6 | group_read; 7 | group_write; 8 | group_execute; 9 | system_read; 10 | system_write; 11 | system_execute; 12 | everybody = all; 13 | } 14 | 15 | empty_flags = flags { 16 | none = none; 17 | all = all; 18 | } 19 | 20 | flag_roundtrip = interface +c { 21 | static roundtrip_access(flag: access_flags): access_flags; 22 | static roundtrip_empty(flag: empty_flags): empty_flags; 23 | static roundtrip_access_boxed(flag: optional<access_flags>): optional<access_flags>; 24 | static roundtrip_empty_boxed(flag: optional<empty_flags>): optional<empty_flags>; 25 | } 26 | 27 | record_with_flags = record { 28 | access: access_flags; 29 | } deriving (parcelable) 30 | -------------------------------------------------------------------------------- /test-suite/djinni/exception.djinni: -------------------------------------------------------------------------------- 1 | cpp_exception = interface +c { 2 | throw_an_exception(): i32; 3 | static get(): cpp_exception; 4 | } 5 | -------------------------------------------------------------------------------- /test-suite/djinni/extended_record.djinni: -------------------------------------------------------------------------------- 1 | # Extended record 2 | extended_record = record +c { 3 | foo: bool; 4 | const extended_record_const: extended_record = { foo = true }; 5 | } 6 | 7 | record_using_extended_record = record { 8 | er: extended_record; 9 | const cr: record_using_extended_record = {er = { foo = false } }; 10 | } 11 | 12 | interface_using_extended_record = interface +c { 13 | meth(er: extended_record): extended_record; 14 | const cr: record_using_extended_record = {er = { foo = false } }; 15 | } 16 | -------------------------------------------------------------------------------- /test-suite/djinni/map.djinni: -------------------------------------------------------------------------------- 1 | map_record = record { 2 | map: map<string, i64>; 3 | imap: map<i32, i32>; 4 | } deriving (parcelable) 5 | 6 | map_list_record = record { 7 | map_list: list<map<string, i64>>; 8 | } deriving (parcelable) 9 | -------------------------------------------------------------------------------- /test-suite/djinni/nested_collection.djinni: -------------------------------------------------------------------------------- 1 | nested_collection = record { 2 | set_list : list<set<string>>; 3 | } deriving(parcelable) 4 | -------------------------------------------------------------------------------- /test-suite/djinni/primitive_list.djinni: -------------------------------------------------------------------------------- 1 | primitive_list = record { 2 | list: list<i64>; 3 | } deriving (parcelable) 4 | -------------------------------------------------------------------------------- /test-suite/djinni/primtypes.djinni: -------------------------------------------------------------------------------- 1 | assorted_primitives = record { 2 | b: bool; 3 | eight: i8; 4 | sixteen: i16; 5 | thirtytwo: i32; 6 | sixtyfour: i64; 7 | fthirtytwo: f32; 8 | fsixtyfour: f64; 9 | 10 | o_b: optional<bool>; 11 | o_eight: optional<i8>; 12 | o_sixteen: optional<i16>; 13 | o_thirtytwo: optional<i32>; 14 | o_sixtyfour: optional<i64>; 15 | o_fthirtytwo: optional<f32>; 16 | o_fsixtyfour: optional<f64>; 17 | } deriving (eq, parcelable) 18 | -------------------------------------------------------------------------------- /test-suite/djinni/relative_paths.djinni: -------------------------------------------------------------------------------- 1 | @import "./varnames.djinni" 2 | @import "../djinni/varnames.djinni" 3 | -------------------------------------------------------------------------------- /test-suite/djinni/set.djinni: -------------------------------------------------------------------------------- 1 | set_record = record { 2 | set: set<string>; 3 | iset: set<i32>; 4 | } deriving (parcelable) 5 | -------------------------------------------------------------------------------- /test-suite/djinni/single_language_interfaces.djinni: -------------------------------------------------------------------------------- 1 | objc_only_listener = interface +o {} 2 | java_only_listener = interface +j {} 3 | 4 | # Generating and compiling this makes sure other languages don't break 5 | # on references to interfaces they don't need. 6 | uses_single_language_listeners = interface +o +j +c { 7 | callForObjC(l: objc_only_listener); 8 | returnForObjC(): objc_only_listener; 9 | callForJava(l: java_only_listener); 10 | returnForJava(): java_only_listener; 11 | } 12 | -------------------------------------------------------------------------------- /test-suite/djinni/user_token.djinni: -------------------------------------------------------------------------------- 1 | user_token = interface +c +j +o { 2 | whoami() : string; 3 | } 4 | -------------------------------------------------------------------------------- /test-suite/djinni/varnames.djinni: -------------------------------------------------------------------------------- 1 | # Underscore is used as a separator in Djinni names, so we don't really 2 | # anticipate it to be used as a prefix/suffix. Some name styles behave 3 | # badly when it is. However this test case ensures we at least don't crash. 4 | _varname_record_ = record { 5 | _field_: i8; 6 | } 7 | 8 | _varname_interface_ = interface +c { 9 | # We should also rewrite parameter names in docstrings. 10 | # _r_arg_ should be rewritten. 11 | # _i_arg_ should not. 12 | _rmethod_(_r_arg_: _varname_record_): _varname_record_; 13 | _imethod_(_i_arg_: _varname_interface_): _varname_interface_; 14 | } 15 | -------------------------------------------------------------------------------- /test-suite/djinni/vendor/third-party/date.djinni: -------------------------------------------------------------------------------- 1 | @extern "date.yaml" 2 | 3 | date_record = record { 4 | created_at: extern_date; 5 | } deriving(eq, ord, parcelable) 6 | 7 | map_date_record = record { 8 | dates_by_id: map<string, extern_date>; 9 | } 10 | -------------------------------------------------------------------------------- /test-suite/djinni/wchar_test.djinni: -------------------------------------------------------------------------------- 1 | wchar_test_rec = record { 2 | s: string; 3 | } 4 | 5 | wchar_test_helpers = interface +c { 6 | static get_record() : wchar_test_rec; 7 | static get_string() : string; 8 | static check_string(str: string) : bool; 9 | static check_record(rec: wchar_test_rec) : bool; 10 | } 11 | -------------------------------------------------------------------------------- /test-suite/djinni/yaml-test.djinni: -------------------------------------------------------------------------------- 1 | @extern "yaml-test.yaml" 2 | 3 | # This file tests YAML dumped by Djinni can be parsed back in 4 | 5 | extern_record_with_derivings = record 6 | { 7 | member: test_record_with_derivings; 8 | e: test_color; 9 | } deriving(eq, ord, parcelable) 10 | 11 | extern_interface_1 = interface +c 12 | { 13 | foo(i: test_client_interface): test_client_returned_record; 14 | } 15 | 16 | extern_interface_2 = interface +j +o 17 | { 18 | foo(i: test_test_helpers): extern_record_with_derivings; 19 | } 20 | 21 | test_optional_extern_interface_record = record 22 | { 23 | sample_interface: optional<test_sample_interface>; 24 | } -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/Conflict.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #pragma once 5 | 6 | namespace testsuite { 7 | 8 | /** 9 | * Test for conflict of method name with an interface name. 10 | * See the comments about scopeSymbols in CppMarshal.scala for more info. 11 | */ 12 | class Conflict { 13 | public: 14 | virtual ~Conflict() {} 15 | }; 16 | 17 | } // namespace testsuite 18 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/_varname_interface_.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from varnames.djinni 3 | 4 | #pragma once 5 | 6 | #include <memory> 7 | 8 | namespace testsuite { 9 | 10 | struct VarnameRecord; 11 | 12 | class VarnameInterface { 13 | public: 14 | virtual ~VarnameInterface() {} 15 | 16 | /** 17 | * We should also rewrite parameter names in docstrings. 18 | * _r_arg_ should be rewritten. 19 | * _i_arg_ should not. 20 | */ 21 | virtual VarnameRecord _rmethod_(const VarnameRecord & _r_arg_) = 0; 22 | 23 | virtual std::shared_ptr<VarnameInterface> _imethod_(const std::shared_ptr<VarnameInterface> & _i_arg_) = 0; 24 | }; 25 | 26 | } // namespace testsuite 27 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/_varname_record_.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from varnames.djinni 3 | 4 | #pragma once 5 | 6 | #include <cstdint> 7 | #include <utility> 8 | 9 | namespace testsuite { 10 | 11 | /** 12 | * Underscore is used as a separator in Djinni names, so we don't really 13 | * anticipate it to be used as a prefix/suffix. Some name styles behave 14 | * badly when it is. However this test case ensures we at least don't crash. 15 | */ 16 | struct VarnameRecord final { 17 | int8_t _field_; 18 | 19 | VarnameRecord(int8_t _field__) 20 | : _field_(std::move(_field__)) 21 | {} 22 | }; 23 | 24 | } // namespace testsuite 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/conflict_user.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #pragma once 5 | 6 | #include <memory> 7 | #include <unordered_set> 8 | 9 | namespace testsuite { 10 | 11 | class Conflict; 12 | 13 | class ConflictUser { 14 | public: 15 | virtual ~ConflictUser() {} 16 | 17 | virtual std::shared_ptr<::testsuite::Conflict> Conflict() = 0; 18 | 19 | virtual bool conflict_arg(const std::unordered_set<std::shared_ptr<::testsuite::Conflict>> & cs) = 0; 20 | }; 21 | 22 | } // namespace testsuite 23 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/constant_enum.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #pragma once 5 | 6 | #include <functional> 7 | 8 | namespace testsuite { 9 | 10 | enum class constant_enum : int { 11 | SOME_VALUE, 12 | SOME_OTHER_VALUE, 13 | }; 14 | 15 | } // namespace testsuite 16 | 17 | namespace std { 18 | 19 | template <> 20 | struct hash<::testsuite::constant_enum> { 21 | size_t operator()(::testsuite::constant_enum type) const { 22 | return std::hash<int>()(static_cast<int>(type)); 23 | } 24 | }; 25 | 26 | } // namespace std 27 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/constant_interface_with_enum.cpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #include "constant_interface_with_enum.hpp" // my header 5 | #include "constant_enum.hpp" 6 | 7 | namespace testsuite { 8 | 9 | constant_enum const ConstantInterfaceWithEnum::CONST_ENUM = constant_enum::SOME_VALUE; 10 | 11 | } // namespace testsuite 12 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/constant_interface_with_enum.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #pragma once 5 | 6 | namespace testsuite { 7 | 8 | enum class constant_enum; 9 | 10 | /** Interface containing enum constant */ 11 | class ConstantInterfaceWithEnum { 12 | public: 13 | virtual ~ConstantInterfaceWithEnum() {} 14 | 15 | static constant_enum const CONST_ENUM; 16 | }; 17 | 18 | } // namespace testsuite 19 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/constant_record.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constants.djinni 3 | 4 | #pragma once 5 | 6 | #include <cstdint> 7 | #include <string> 8 | #include <utility> 9 | 10 | namespace testsuite { 11 | 12 | /** Record for use in constants */ 13 | struct ConstantRecord final { 14 | int32_t some_integer; 15 | std::string some_string; 16 | 17 | ConstantRecord(int32_t some_integer_, 18 | std::string some_string_) 19 | : some_integer(std::move(some_integer_)) 20 | , some_string(std::move(some_string_)) 21 | {} 22 | }; 23 | 24 | } // namespace testsuite 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/constant_with_enum.cpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #include "constant_with_enum.hpp" // my header 5 | 6 | namespace testsuite { 7 | 8 | constant_enum const ConstantWithEnum::CONST_ENUM = constant_enum::SOME_VALUE; 9 | 10 | } // namespace testsuite 11 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/constant_with_enum.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #pragma once 5 | 6 | #include "constant_enum.hpp" 7 | #include <utility> 8 | 9 | namespace testsuite { 10 | 11 | /** Record containing enum constant */ 12 | struct ConstantWithEnum final { 13 | 14 | static constant_enum const CONST_ENUM; 15 | }; 16 | 17 | } // namespace testsuite 18 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/cpp_exception.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from exception.djinni 3 | 4 | #pragma once 5 | 6 | #include <cstdint> 7 | #include <memory> 8 | 9 | namespace testsuite { 10 | 11 | class CppException { 12 | public: 13 | virtual ~CppException() {} 14 | 15 | virtual int32_t throw_an_exception() = 0; 16 | 17 | static std::shared_ptr<CppException> get(); 18 | }; 19 | 20 | } // namespace testsuite 21 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/empty_record.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #pragma once 5 | 6 | #include <utility> 7 | 8 | namespace testsuite { 9 | 10 | /** 11 | * Empty record 12 | * (Second line of multi-line documentation. 13 | * Indented third line of multi-line documentation.) 14 | */ 15 | struct EmptyRecord final { 16 | }; 17 | 18 | } // namespace testsuite 19 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/extended_record_base.cpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #include "extended_record_base.hpp" // my header 5 | #include "../../handwritten-src/cpp/extended_record.hpp" 6 | 7 | namespace testsuite { 8 | 9 | ExtendedRecord const ExtendedRecordBase::EXTENDED_RECORD_CONST = ExtendedRecord( 10 | true /* foo */ ); 11 | 12 | } // namespace testsuite 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/extern_interface_1.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from yaml-test.djinni 3 | 4 | #pragma once 5 | 6 | #include "client_interface.hpp" 7 | #include "client_returned_record.hpp" 8 | #include <memory> 9 | 10 | class ExternInterface1 { 11 | public: 12 | virtual ~ExternInterface1() {} 13 | 14 | virtual ::testsuite::ClientReturnedRecord foo(const std::shared_ptr<::testsuite::ClientInterface> & i) = 0; 15 | }; 16 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/extern_interface_2.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from yaml-test.djinni 3 | 4 | #pragma once 5 | 6 | #include "test_helpers.hpp" 7 | #include <memory> 8 | 9 | struct ExternRecordWithDerivings; 10 | 11 | class ExternInterface2 { 12 | public: 13 | virtual ~ExternInterface2() {} 14 | 15 | virtual ExternRecordWithDerivings foo(const std::shared_ptr<::testsuite::TestHelpers> & i) = 0; 16 | }; 17 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/first_listener.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #pragma once 5 | 6 | namespace testsuite { 7 | 8 | /** Used for ObjC multiple inheritance tests */ 9 | class FirstListener { 10 | public: 11 | virtual ~FirstListener() {} 12 | 13 | virtual void first() = 0; 14 | }; 15 | 16 | } // namespace testsuite 17 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/interface_using_extended_record.cpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #include "interface_using_extended_record.hpp" // my header 5 | #include "../../handwritten-src/cpp/extended_record.hpp" 6 | #include "record_using_extended_record.hpp" 7 | 8 | namespace testsuite { 9 | 10 | RecordUsingExtendedRecord const InterfaceUsingExtendedRecord::CR = RecordUsingExtendedRecord( 11 | ExtendedRecord( 12 | false /* foo */ ) /* er */ ); 13 | 14 | } // namespace testsuite 15 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/interface_using_extended_record.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #pragma once 5 | 6 | namespace testsuite { 7 | 8 | struct ExtendedRecord; 9 | struct RecordUsingExtendedRecord; 10 | 11 | class InterfaceUsingExtendedRecord { 12 | public: 13 | virtual ~InterfaceUsingExtendedRecord() {} 14 | 15 | static RecordUsingExtendedRecord const CR; 16 | 17 | virtual ExtendedRecord meth(const ExtendedRecord & er) = 0; 18 | }; 19 | 20 | } // namespace testsuite 21 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/java_only_listener.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from single_language_interfaces.djinni 3 | 4 | #pragma once 5 | 6 | namespace testsuite { 7 | 8 | class JavaOnlyListener { 9 | public: 10 | virtual ~JavaOnlyListener() {} 11 | }; 12 | 13 | } // namespace testsuite 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/map_date_record.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from date.djinni 3 | 4 | #pragma once 5 | 6 | #include <chrono> 7 | #include <string> 8 | #include <unordered_map> 9 | #include <utility> 10 | 11 | namespace testsuite { 12 | 13 | struct MapDateRecord final { 14 | std::unordered_map<std::string, std::chrono::system_clock::time_point> dates_by_id; 15 | 16 | MapDateRecord(std::unordered_map<std::string, std::chrono::system_clock::time_point> dates_by_id_) 17 | : dates_by_id(std::move(dates_by_id_)) 18 | {} 19 | }; 20 | 21 | } // namespace testsuite 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/map_list_record.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from map.djinni 3 | 4 | #pragma once 5 | 6 | #include <cstdint> 7 | #include <string> 8 | #include <unordered_map> 9 | #include <utility> 10 | #include <vector> 11 | 12 | namespace testsuite { 13 | 14 | struct MapListRecord final { 15 | std::vector<std::unordered_map<std::string, int64_t>> map_list; 16 | 17 | MapListRecord(std::vector<std::unordered_map<std::string, int64_t>> map_list_) 18 | : map_list(std::move(map_list_)) 19 | {} 20 | }; 21 | 22 | } // namespace testsuite 23 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/map_record.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from map.djinni 3 | 4 | #pragma once 5 | 6 | #include <cstdint> 7 | #include <string> 8 | #include <unordered_map> 9 | #include <utility> 10 | 11 | namespace testsuite { 12 | 13 | struct MapRecord final { 14 | std::unordered_map<std::string, int64_t> map; 15 | std::unordered_map<int32_t, int32_t> imap; 16 | 17 | MapRecord(std::unordered_map<std::string, int64_t> map_, 18 | std::unordered_map<int32_t, int32_t> imap_) 19 | : map(std::move(map_)) 20 | , imap(std::move(imap_)) 21 | {} 22 | }; 23 | 24 | } // namespace testsuite 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/nested_collection.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from nested_collection.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | #include <unordered_set> 8 | #include <utility> 9 | #include <vector> 10 | 11 | namespace testsuite { 12 | 13 | struct NestedCollection final { 14 | std::vector<std::unordered_set<std::string>> set_list; 15 | 16 | NestedCollection(std::vector<std::unordered_set<std::string>> set_list_) 17 | : set_list(std::move(set_list_)) 18 | {} 19 | }; 20 | 21 | } // namespace testsuite 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/objc_only_listener.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from single_language_interfaces.djinni 3 | 4 | #pragma once 5 | 6 | namespace testsuite { 7 | 8 | class ObjcOnlyListener { 9 | public: 10 | virtual ~ObjcOnlyListener() {} 11 | }; 12 | 13 | } // namespace testsuite 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/parcelable_list.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | #include <utility> 8 | #include <vector> 9 | 10 | namespace testsuite { 11 | 12 | struct ParcelableList final { 13 | std::vector<std::string> l; 14 | 15 | ParcelableList(std::vector<std::string> l_) 16 | : l(std::move(l_)) 17 | {} 18 | }; 19 | 20 | } // namespace testsuite 21 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/parcelable_list_map_set.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | #include <unordered_map> 8 | #include <unordered_set> 9 | #include <utility> 10 | #include <vector> 11 | 12 | namespace testsuite { 13 | 14 | struct ParcelableListMapSet final { 15 | std::vector<std::unordered_map<std::string, std::unordered_set<std::string>>> list_map_set; 16 | 17 | ParcelableListMapSet(std::vector<std::unordered_map<std::string, std::unordered_set<std::string>>> list_map_set_) 18 | : list_map_set(std::move(list_map_set_)) 19 | {} 20 | }; 21 | 22 | } // namespace testsuite 23 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/parcelable_list_set.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | #include <unordered_set> 8 | #include <utility> 9 | #include <vector> 10 | 11 | namespace testsuite { 12 | 13 | struct ParcelableListSet final { 14 | std::vector<std::unordered_set<std::string>> list_set; 15 | 16 | ParcelableListSet(std::vector<std::unordered_set<std::string>> list_set_) 17 | : list_set(std::move(list_set_)) 18 | {} 19 | }; 20 | 21 | } // namespace testsuite 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/parcelable_map.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | #include <unordered_map> 8 | #include <utility> 9 | 10 | namespace testsuite { 11 | 12 | struct ParcelableMap final { 13 | std::unordered_map<std::string, std::string> m; 14 | 15 | ParcelableMap(std::unordered_map<std::string, std::string> m_) 16 | : m(std::move(m_)) 17 | {} 18 | }; 19 | 20 | } // namespace testsuite 21 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/parcelable_map_list.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | #include <unordered_map> 8 | #include <utility> 9 | #include <vector> 10 | 11 | namespace testsuite { 12 | 13 | struct ParcelableMapList final { 14 | std::unordered_map<std::string, std::vector<std::string>> map_set; 15 | 16 | ParcelableMapList(std::unordered_map<std::string, std::vector<std::string>> map_set_) 17 | : map_set(std::move(map_set_)) 18 | {} 19 | }; 20 | 21 | } // namespace testsuite 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/parcelable_map_set.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | #include <unordered_map> 8 | #include <unordered_set> 9 | #include <utility> 10 | 11 | namespace testsuite { 12 | 13 | struct ParcelableMapSet final { 14 | std::unordered_map<std::string, std::unordered_set<std::string>> map_set; 15 | 16 | ParcelableMapSet(std::unordered_map<std::string, std::unordered_set<std::string>> map_set_) 17 | : map_set(std::move(map_set_)) 18 | {} 19 | }; 20 | 21 | } // namespace testsuite 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/parcelable_optional_list.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #pragma once 5 | 6 | #include "../../handwritten-src/cpp/optional.hpp" 7 | #include <string> 8 | #include <utility> 9 | #include <vector> 10 | 11 | namespace testsuite { 12 | 13 | struct ParcelableOptionalList final { 14 | std::experimental::optional<std::vector<std::string>> optional_set; 15 | 16 | ParcelableOptionalList(std::experimental::optional<std::vector<std::string>> optional_set_) 17 | : optional_set(std::move(optional_set_)) 18 | {} 19 | }; 20 | 21 | } // namespace testsuite 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/parcelable_optional_map.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #pragma once 5 | 6 | #include "../../handwritten-src/cpp/optional.hpp" 7 | #include <string> 8 | #include <unordered_map> 9 | #include <unordered_set> 10 | #include <utility> 11 | 12 | namespace testsuite { 13 | 14 | struct ParcelableOptionalMap final { 15 | std::experimental::optional<std::unordered_map<std::string, std::unordered_set<std::string>>> optional_set; 16 | 17 | ParcelableOptionalMap(std::experimental::optional<std::unordered_map<std::string, std::unordered_set<std::string>>> optional_set_) 18 | : optional_set(std::move(optional_set_)) 19 | {} 20 | }; 21 | 22 | } // namespace testsuite 23 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/parcelable_optional_set.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #pragma once 5 | 6 | #include "../../handwritten-src/cpp/optional.hpp" 7 | #include <string> 8 | #include <unordered_set> 9 | #include <utility> 10 | 11 | namespace testsuite { 12 | 13 | struct ParcelableOptionalSet final { 14 | std::experimental::optional<std::unordered_set<std::string>> optional_set; 15 | 16 | ParcelableOptionalSet(std::experimental::optional<std::unordered_set<std::string>> optional_set_) 17 | : optional_set(std::move(optional_set_)) 18 | {} 19 | }; 20 | 21 | } // namespace testsuite 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/parcelable_set.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | #include <unordered_set> 8 | #include <utility> 9 | 10 | namespace testsuite { 11 | 12 | struct ParcelableSet final { 13 | std::unordered_set<std::string> set; 14 | 15 | ParcelableSet(std::unordered_set<std::string> set_) 16 | : set(std::move(set_)) 17 | {} 18 | }; 19 | 20 | } // namespace testsuite 21 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/primitive_list.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from primitive_list.djinni 3 | 4 | #pragma once 5 | 6 | #include <cstdint> 7 | #include <utility> 8 | #include <vector> 9 | 10 | namespace testsuite { 11 | 12 | struct PrimitiveList final { 13 | std::vector<int64_t> list; 14 | 15 | PrimitiveList(std::vector<int64_t> list_) 16 | : list(std::move(list_)) 17 | {} 18 | }; 19 | 20 | } // namespace testsuite 21 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/record_using_extended_record.cpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #include "record_using_extended_record.hpp" // my header 5 | 6 | namespace testsuite { 7 | 8 | RecordUsingExtendedRecord const RecordUsingExtendedRecord::CR = RecordUsingExtendedRecord( 9 | ExtendedRecord( 10 | false /* foo */ ) /* er */ ); 11 | 12 | } // namespace testsuite 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/record_using_extended_record.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #pragma once 5 | 6 | #include "../../handwritten-src/cpp/extended_record.hpp" 7 | #include <utility> 8 | 9 | namespace testsuite { 10 | 11 | struct RecordUsingExtendedRecord final { 12 | 13 | static RecordUsingExtendedRecord const CR; 14 | ExtendedRecord er; 15 | 16 | RecordUsingExtendedRecord(ExtendedRecord er_) 17 | : er(std::move(er_)) 18 | {} 19 | }; 20 | 21 | } // namespace testsuite 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/record_with_flags.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | #pragma once 5 | 6 | #include "access_flags.hpp" 7 | #include <utility> 8 | 9 | namespace testsuite { 10 | 11 | struct RecordWithFlags final { 12 | access_flags access; 13 | 14 | RecordWithFlags(access_flags access_) 15 | : access(std::move(access_)) 16 | {} 17 | }; 18 | 19 | } // namespace testsuite 20 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/return_one.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #pragma once 5 | 6 | #include <cstdint> 7 | #include <memory> 8 | 9 | namespace testsuite { 10 | 11 | /** Used for C++ multiple inheritance tests */ 12 | class ReturnOne { 13 | public: 14 | virtual ~ReturnOne() {} 15 | 16 | static std::shared_ptr<ReturnOne> get_instance(); 17 | 18 | virtual int8_t return_one() = 0; 19 | }; 20 | 21 | } // namespace testsuite 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/return_two.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #pragma once 5 | 6 | #include <cstdint> 7 | #include <memory> 8 | 9 | namespace testsuite { 10 | 11 | /** Used for C++ multiple inheritance tests */ 12 | class ReturnTwo { 13 | public: 14 | virtual ~ReturnTwo() {} 15 | 16 | static std::shared_ptr<ReturnTwo> get_instance(); 17 | 18 | virtual int8_t return_two() = 0; 19 | }; 20 | 21 | } // namespace testsuite 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/reverse_client_interface.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from client_interface.djinni 3 | 4 | #pragma once 5 | 6 | #include "../../handwritten-src/cpp/optional.hpp" 7 | #include <memory> 8 | #include <string> 9 | 10 | namespace testsuite { 11 | 12 | class ReverseClientInterface { 13 | public: 14 | virtual ~ReverseClientInterface() {} 15 | 16 | virtual std::string return_str() const = 0; 17 | 18 | virtual std::string meth_taking_interface(const std::shared_ptr<ReverseClientInterface> & i) = 0; 19 | 20 | virtual std::string meth_taking_optional_interface(const std::shared_ptr<ReverseClientInterface> & i) = 0; 21 | 22 | static std::shared_ptr<ReverseClientInterface> create(); 23 | }; 24 | 25 | } // namespace testsuite 26 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/sample_interface.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #pragma once 5 | 6 | namespace testsuite { 7 | 8 | /** 9 | * we need to test optional interface 10 | * this one will be used 11 | */ 12 | class SampleInterface { 13 | public: 14 | virtual ~SampleInterface() {} 15 | }; 16 | 17 | } // namespace testsuite 18 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/second_listener.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #pragma once 5 | 6 | namespace testsuite { 7 | 8 | /** Used for ObjC multiple inheritance tests */ 9 | class SecondListener { 10 | public: 11 | virtual ~SecondListener() {} 12 | 13 | virtual void second() = 0; 14 | }; 15 | 16 | } // namespace testsuite 17 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/set_record.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from set.djinni 3 | 4 | #pragma once 5 | 6 | #include <cstdint> 7 | #include <string> 8 | #include <unordered_set> 9 | #include <utility> 10 | 11 | namespace testsuite { 12 | 13 | struct SetRecord final { 14 | std::unordered_set<std::string> set; 15 | std::unordered_set<int32_t> iset; 16 | 17 | SetRecord(std::unordered_set<std::string> set_, 18 | std::unordered_set<int32_t> iset_) 19 | : set(std::move(set_)) 20 | , iset(std::move(iset_)) 21 | {} 22 | }; 23 | 24 | } // namespace testsuite 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/test_optional_extern_interface_record.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from yaml-test.djinni 3 | 4 | #pragma once 5 | 6 | #include "../../handwritten-src/cpp/optional.hpp" 7 | #include "sample_interface.hpp" 8 | #include <memory> 9 | #include <utility> 10 | 11 | struct TestOptionalExternInterfaceRecord final { 12 | std::shared_ptr<::testsuite::SampleInterface> sample_interface; 13 | 14 | TestOptionalExternInterfaceRecord(std::shared_ptr<::testsuite::SampleInterface> sample_interface_) 15 | : sample_interface(std::move(sample_interface_)) 16 | {} 17 | }; 18 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/user_token.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from user_token.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | 8 | namespace testsuite { 9 | 10 | class UserToken { 11 | public: 12 | virtual ~UserToken() {} 13 | 14 | virtual std::string whoami() = 0; 15 | }; 16 | 17 | } // namespace testsuite 18 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/wchar_test_helpers.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from wchar_test.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | 8 | namespace testsuite { 9 | 10 | struct WcharTestRec; 11 | 12 | class WcharTestHelpers { 13 | public: 14 | virtual ~WcharTestHelpers() {} 15 | 16 | static WcharTestRec get_record(); 17 | 18 | static std::wstring get_string(); 19 | 20 | static bool check_string(const std::wstring & str); 21 | 22 | static bool check_record(const WcharTestRec & rec); 23 | }; 24 | 25 | } // namespace testsuite 26 | -------------------------------------------------------------------------------- /test-suite/generated-src/cpp/wchar_test_rec.hpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from wchar_test.djinni 3 | 4 | #pragma once 5 | 6 | #include <string> 7 | #include <utility> 8 | 9 | namespace testsuite { 10 | 11 | struct WcharTestRec final { 12 | std::wstring s; 13 | 14 | WcharTestRec(std::wstring s_) 15 | : s(std::move(s_)) 16 | {} 17 | }; 18 | 19 | } // namespace testsuite 20 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/AccessFlags.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | public enum AccessFlags { 10 | OWNER_READ, 11 | OWNER_WRITE, 12 | OWNER_EXECUTE, 13 | GROUP_READ, 14 | GROUP_WRITE, 15 | GROUP_EXECUTE, 16 | SYSTEM_READ, 17 | SYSTEM_WRITE, 18 | SYSTEM_EXECUTE, 19 | ; 20 | } 21 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/Color.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | public enum Color { 10 | RED, 11 | ORANGE, 12 | YELLOW, 13 | GREEN, 14 | BLUE, 15 | /** 16 | * "It is customary to list indigo as a color lying between blue and violet, but it has 17 | * never seemed to me that indigo is worth the dignity of being considered a separate 18 | * color. To my eyes it seems merely deep blue." --Isaac Asimov 19 | */ 20 | INDIGO, 21 | VIOLET, 22 | ; 23 | } 24 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/ConstantEnum.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | /** enum for use in constants */ 10 | public enum ConstantEnum { 11 | SOME_VALUE, 12 | SOME_OTHER_VALUE, 13 | ; 14 | } 15 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/EmptyFlags.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | public enum EmptyFlags { 10 | ; 11 | } 12 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/EmptyRecord.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | /** 10 | * Empty record 11 | * (Second line of multi-line documentation. 12 | * Indented third line of multi-line documentation.) 13 | */ 14 | public class EmptyRecord { 15 | 16 | 17 | public EmptyRecord( 18 | ) { 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return "EmptyRecord{" + 24 | "}"; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/ExternInterface2.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from yaml-test.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | public interface ExternInterface2 { 7 | public ExternRecordWithDerivings foo(com.dropbox.djinni.test.TestHelpers i); 8 | } 9 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/FirstListener.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | /** Used for ObjC multiple inheritance tests */ 10 | public interface FirstListener { 11 | public void first(); 12 | } 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/JavaOnlyListener.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from single_language_interfaces.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | public interface JavaOnlyListener { 10 | } 11 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/ObjcOnlyListener.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from single_language_interfaces.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | public interface ObjcOnlyListener { 10 | } 11 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/SecondListener.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | /** Used for ObjC multiple inheritance tests */ 10 | public interface SecondListener { 11 | public void second(); 12 | } 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/java/com/dropbox/djinni/test/WcharTestRec.java: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from wchar_test.djinni 3 | 4 | package com.dropbox.djinni.test; 5 | 6 | import javax.annotation.CheckForNull; 7 | import javax.annotation.Nonnull; 8 | 9 | public class WcharTestRec { 10 | 11 | 12 | /*package*/ final String mS; 13 | 14 | public WcharTestRec( 15 | @Nonnull String s) { 16 | this.mS = s; 17 | } 18 | 19 | @Nonnull 20 | public String getS() { 21 | return mS; 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return "WcharTestRec{" + 27 | "mS=" + mS + 28 | "}"; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /test-suite/generated-src/jni/NativeFirstListener.cpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #include "NativeFirstListener.hpp" // my header 5 | 6 | namespace djinni_generated { 7 | 8 | NativeFirstListener::NativeFirstListener() : ::djinni::JniInterface<::testsuite::FirstListener, NativeFirstListener>() {} 9 | 10 | NativeFirstListener::~NativeFirstListener() = default; 11 | 12 | 13 | } // namespace djinni_generated 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/jni/NativeJavaOnlyListener.cpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from single_language_interfaces.djinni 3 | 4 | #include "NativeJavaOnlyListener.hpp" // my header 5 | 6 | namespace djinni_generated { 7 | 8 | NativeJavaOnlyListener::NativeJavaOnlyListener() : ::djinni::JniInterface<::testsuite::JavaOnlyListener, NativeJavaOnlyListener>() {} 9 | 10 | NativeJavaOnlyListener::~NativeJavaOnlyListener() = default; 11 | 12 | NativeJavaOnlyListener::JavaProxy::JavaProxy(JniType j) : Handle(::djinni::jniGetThreadEnv(), j) { } 13 | 14 | NativeJavaOnlyListener::JavaProxy::~JavaProxy() = default; 15 | 16 | 17 | } // namespace djinni_generated 18 | -------------------------------------------------------------------------------- /test-suite/generated-src/jni/NativeObjcOnlyListener.cpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from single_language_interfaces.djinni 3 | 4 | #include "NativeObjcOnlyListener.hpp" // my header 5 | 6 | namespace djinni_generated { 7 | 8 | NativeObjcOnlyListener::NativeObjcOnlyListener() : ::djinni::JniInterface<::testsuite::ObjcOnlyListener, NativeObjcOnlyListener>() {} 9 | 10 | NativeObjcOnlyListener::~NativeObjcOnlyListener() = default; 11 | 12 | 13 | } // namespace djinni_generated 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/jni/NativeSecondListener.cpp: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #include "NativeSecondListener.hpp" // my header 5 | 6 | namespace djinni_generated { 7 | 8 | NativeSecondListener::NativeSecondListener() : ::djinni::JniInterface<::testsuite::SecondListener, NativeSecondListener>() {} 9 | 10 | NativeSecondListener::~NativeSecondListener() = default; 11 | 12 | 13 | } // namespace djinni_generated 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBAccessFlags+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | #include "access_flags.hpp" 5 | #import "DJIMarshal+Private.h" 6 | 7 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBAssortedPrimitives+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from primtypes.djinni 3 | 4 | #import "DBAssortedPrimitives.h" 5 | #include "assorted_primitives.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBAssortedPrimitives; 10 | 11 | namespace djinni_generated { 12 | 13 | struct AssortedPrimitives 14 | { 15 | using CppType = ::testsuite::AssortedPrimitives; 16 | using ObjcType = DBAssortedPrimitives*; 17 | 18 | using Boxed = AssortedPrimitives; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBClientReturnedRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from client_interface.djinni 3 | 4 | #import "DBClientReturnedRecord.h" 5 | #include "client_returned_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBClientReturnedRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ClientReturnedRecord 14 | { 15 | using CppType = ::testsuite::ClientReturnedRecord; 16 | using ObjcType = DBClientReturnedRecord*; 17 | 18 | using Boxed = ClientReturnedRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBColor+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum.djinni 3 | 4 | #include "color.hpp" 5 | #import "DJIMarshal+Private.h" 6 | 7 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBColor.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | typedef NS_ENUM(NSInteger, DBColor) 7 | { 8 | DBColorRed, 9 | DBColorOrange, 10 | DBColorYellow, 11 | DBColorGreen, 12 | DBColorBlue, 13 | /** 14 | * "It is customary to list indigo as a color lying between blue and violet, but it has 15 | * never seemed to me that indigo is worth the dignity of being considered a separate 16 | * color. To my eyes it seems merely deep blue." --Isaac Asimov 17 | */ 18 | DBColorIndigo, 19 | DBColorViolet, 20 | }; 21 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConflict.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | 7 | /** 8 | * Test for conflict of method name with an interface name. 9 | * See the comments about scopeSymbols in CppMarshal.scala for more info. 10 | */ 11 | @interface DBConflict : NSObject 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConflictUser.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | @class DBConflict; 6 | 7 | 8 | @interface DBConflictUser : NSObject 9 | 10 | - (nullable DBConflict *)Conflict; 11 | 12 | - (BOOL)conflictArg:(nonnull NSSet<DBConflict *> *)cs; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantEnum+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #include "constant_enum.hpp" 5 | #import "DJIMarshal+Private.h" 6 | 7 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantEnum.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | /** enum for use in constants */ 7 | typedef NS_ENUM(NSInteger, DBConstantEnum) 8 | { 9 | DBConstantEnumSomeValue, 10 | DBConstantEnumSomeOtherValue, 11 | }; 12 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantInterfaceWithEnum.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #import "DBConstantEnum.h" 5 | #import <Foundation/Foundation.h> 6 | 7 | 8 | /** Interface containing enum constant */ 9 | @interface DBConstantInterfaceWithEnum : NSObject 10 | 11 | + (DBConstantEnum)constEnum; 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantInterfaceWithEnum.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #import "DBConstantInterfaceWithEnum.h" 5 | 6 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constants.djinni 3 | 4 | #import "DBConstantRecord.h" 5 | #include "constant_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBConstantRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ConstantRecord 14 | { 15 | using CppType = ::testsuite::ConstantRecord; 16 | using ObjcType = DBConstantRecord*; 17 | 18 | using Boxed = ConstantRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constants.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | /** Record for use in constants */ 7 | @interface DBConstantRecord : NSObject 8 | - (nonnull instancetype)initWithSomeInteger:(int32_t)someInteger 9 | someString:(nonnull NSString *)someString; 10 | + (nonnull instancetype)constantRecordWithSomeInteger:(int32_t)someInteger 11 | someString:(nonnull NSString *)someString; 12 | 13 | @property (nonatomic, readonly) int32_t someInteger; 14 | 15 | @property (nonatomic, readonly, nonnull) NSString * someString; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantWithEnum+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #import "DBConstantWithEnum.h" 5 | #include "constant_with_enum.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBConstantWithEnum; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ConstantWithEnum 14 | { 15 | using CppType = ::testsuite::ConstantWithEnum; 16 | using ObjcType = DBConstantWithEnum*; 17 | 18 | using Boxed = ConstantWithEnum; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantWithEnum+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #import "DBConstantWithEnum+Private.h" 5 | #import "DBConstantEnum+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto ConstantWithEnum::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | (void)obj; // Suppress warnings in relase builds for empty records 14 | return {}; 15 | } 16 | 17 | auto ConstantWithEnum::fromCpp(const CppType& cpp) -> ObjcType 18 | { 19 | (void)cpp; // Suppress warnings in relase builds for empty records 20 | return [[DBConstantWithEnum alloc] init]; 21 | } 22 | 23 | } // namespace djinni_generated 24 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantWithEnum.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #import "DBConstantEnum.h" 5 | #import <Foundation/Foundation.h> 6 | 7 | /** Record containing enum constant */ 8 | @interface DBConstantWithEnum : NSObject 9 | - (nonnull instancetype)init; 10 | + (nonnull instancetype)constantWithEnum; 11 | 12 | + (DBConstantEnum)constEnum; 13 | @end 14 | 15 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantWithEnum.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constant_enum.djinni 3 | 4 | #import "DBConstantWithEnum.h" 5 | 6 | 7 | @implementation DBConstantWithEnum 8 | 9 | - (nonnull instancetype)init 10 | { 11 | if (self = [super init]) { 12 | } 13 | return self; 14 | } 15 | 16 | + (nonnull instancetype)constantWithEnum 17 | { 18 | return [(DBConstantWithEnum*)[self alloc] init]; 19 | } 20 | 21 | + (DBConstantEnum)constEnum 22 | { 23 | static DBConstantEnum const s_constEnum = DBConstantEnumSomeValue; 24 | return s_constEnum; 25 | } 26 | 27 | - (NSString *)description 28 | { 29 | return [NSString stringWithFormat:@"<%@ %p>", self.class, (void *)self]; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstants+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constants.djinni 3 | 4 | #import "DBConstants.h" 5 | #include "constants.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBConstants; 10 | 11 | namespace djinni_generated { 12 | 13 | struct Constants 14 | { 15 | using CppType = ::testsuite::Constants; 16 | using ObjcType = DBConstants*; 17 | 18 | using Boxed = Constants; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstants+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constants.djinni 3 | 4 | #import "DBConstants+Private.h" 5 | #import "DBConstantRecord+Private.h" 6 | #import "DJIMarshal+Private.h" 7 | #include <cassert> 8 | 9 | namespace djinni_generated { 10 | 11 | auto Constants::toCpp(ObjcType obj) -> CppType 12 | { 13 | assert(obj); 14 | (void)obj; // Suppress warnings in relase builds for empty records 15 | return {}; 16 | } 17 | 18 | auto Constants::fromCpp(const CppType& cpp) -> ObjcType 19 | { 20 | (void)cpp; // Suppress warnings in relase builds for empty records 21 | return [[DBConstants alloc] init]; 22 | } 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBConstantsInterface.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from constants.djinni 3 | 4 | #import "DBConstantsInterface.h" 5 | 6 | 7 | BOOL const DBConstantsInterfaceBoolConstant = YES; 8 | 9 | int8_t const DBConstantsInterfaceI8Constant = 1; 10 | 11 | int16_t const DBConstantsInterfaceI16Constant = 2; 12 | 13 | int32_t const DBConstantsInterfaceI32Constant = 3; 14 | 15 | int64_t const DBConstantsInterfaceI64Constant = 4; 16 | 17 | float const DBConstantsInterfaceF32Constant = 5.0f; 18 | 19 | double const DBConstantsInterfaceF64Constant = 5.0; 20 | 21 | NSString * __nonnull const DBConstantsInterfaceStringConstant = @"string-constant"; 22 | 23 | NSString * __nullable const DBConstantsInterfaceOptStringConstant = @"string-constant"; 24 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBCppException.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from exception.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | @class DBCppException; 6 | 7 | 8 | @interface DBCppException : NSObject 9 | 10 | - (int32_t)throwAnException; 11 | 12 | + (nullable DBCppException *)get; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBDateRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from date.djinni 3 | 4 | #import "DBDateRecord.h" 5 | #include "date_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBDateRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct DateRecord 14 | { 15 | using CppType = ::testsuite::DateRecord; 16 | using ObjcType = DBDateRecord*; 17 | 18 | using Boxed = DateRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBDateRecord+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from date.djinni 3 | 4 | #import "DBDateRecord+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto DateRecord::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::Date::toCpp(obj.createdAt)}; 14 | } 15 | 16 | auto DateRecord::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBDateRecord alloc] initWithCreatedAt:(::djinni::Date::fromCpp(cpp.created_at))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBDateRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from date.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBDateRecord : NSObject 7 | - (nonnull instancetype)initWithCreatedAt:(nonnull NSDate *)createdAt; 8 | + (nonnull instancetype)dateRecordWithCreatedAt:(nonnull NSDate *)createdAt; 9 | 10 | @property (nonatomic, readonly, nonnull) NSDate * createdAt; 11 | 12 | - (NSComparisonResult)compare:(nonnull DBDateRecord *)other; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBEmptyFlags+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | #include "empty_flags.hpp" 5 | #import "DJIMarshal+Private.h" 6 | 7 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBEmptyFlags.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | typedef NS_OPTIONS(NSUInteger, DBEmptyFlags) 7 | { 8 | DBEmptyFlagsNone = 0, 9 | DBEmptyFlagsAll = 0, 10 | }; 11 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBEmptyRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #import "DBEmptyRecord.h" 5 | #include "empty_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBEmptyRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct EmptyRecord 14 | { 15 | using CppType = ::testsuite::EmptyRecord; 16 | using ObjcType = DBEmptyRecord*; 17 | 18 | using Boxed = EmptyRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBEmptyRecord+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #import "DBEmptyRecord+Private.h" 5 | #include <cassert> 6 | 7 | namespace djinni_generated { 8 | 9 | auto EmptyRecord::toCpp(ObjcType obj) -> CppType 10 | { 11 | assert(obj); 12 | (void)obj; // Suppress warnings in relase builds for empty records 13 | return {}; 14 | } 15 | 16 | auto EmptyRecord::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | (void)cpp; // Suppress warnings in relase builds for empty records 19 | return [[DBEmptyRecord alloc] init]; 20 | } 21 | 22 | } // namespace djinni_generated 23 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBEmptyRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | /** 7 | * Empty record 8 | * (Second line of multi-line documentation. 9 | * Indented third line of multi-line documentation.) 10 | */ 11 | @interface DBEmptyRecord : NSObject 12 | - (nonnull instancetype)init; 13 | + (nonnull instancetype)emptyRecord; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBEmptyRecord.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #import "DBEmptyRecord.h" 5 | 6 | 7 | @implementation DBEmptyRecord 8 | 9 | - (nonnull instancetype)init 10 | { 11 | if (self = [super init]) { 12 | } 13 | return self; 14 | } 15 | 16 | + (nonnull instancetype)emptyRecord 17 | { 18 | return [(DBEmptyRecord*)[self alloc] init]; 19 | } 20 | 21 | - (NSString *)description 22 | { 23 | return [NSString stringWithFormat:@"<%@ %p>", self.class, (void *)self]; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBEnumUsageInterface.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum.djinni 3 | 4 | #import "DBColor.h" 5 | #import <Foundation/Foundation.h> 6 | 7 | 8 | @protocol DBEnumUsageInterface 9 | 10 | - (DBColor)e:(DBColor)e; 11 | 12 | - (nullable NSNumber *)o:(nullable NSNumber *)o; 13 | 14 | - (nonnull NSArray<NSNumber *> *)l:(nonnull NSArray<NSNumber *> *)l; 15 | 16 | - (nonnull NSSet<NSNumber *> *)s:(nonnull NSSet<NSNumber *> *)s; 17 | 18 | - (nonnull NSDictionary<NSNumber *, NSNumber *> *)m:(nonnull NSDictionary<NSNumber *, NSNumber *> *)m; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBEnumUsageRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum.djinni 3 | 4 | #import "DBEnumUsageRecord.h" 5 | #include "enum_usage_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBEnumUsageRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct EnumUsageRecord 14 | { 15 | using CppType = ::testsuite::EnumUsageRecord; 16 | using ObjcType = DBEnumUsageRecord*; 17 | 18 | using Boxed = EnumUsageRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBExtendedRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #import "DBExtendedRecord.h" 5 | #include "../../handwritten-src/cpp/extended_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBExtendedRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ExtendedRecord 14 | { 15 | using CppType = ::testsuite::ExtendedRecord; 16 | using ObjcType = DBExtendedRecord*; 17 | 18 | using Boxed = ExtendedRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBExtendedRecord+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #import "DBExtendedRecord+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto ExtendedRecord::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::Bool::toCpp(obj.foo)}; 14 | } 15 | 16 | auto ExtendedRecord::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBExtendedRecord alloc] initWithFoo:(::djinni::Bool::fromCpp(cpp.foo))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBExtendedRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #import "DBExtendedRecord.h" 5 | #import <Foundation/Foundation.h> 6 | 7 | /** Extended record */ 8 | @interface DBExtendedRecord : NSObject 9 | - (nonnull instancetype)initWithFoo:(BOOL)foo; 10 | + (nonnull instancetype)extendedRecordWithFoo:(BOOL)foo; 11 | 12 | + (DBExtendedRecord * __nonnull)extendedRecordConst; 13 | @property (nonatomic, readonly) BOOL foo; 14 | 15 | @end 16 | 17 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBExternInterface1.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from yaml-test.djinni 3 | 4 | #import "DBClientInterface.h" 5 | #import "DBClientReturnedRecord.h" 6 | #import <Foundation/Foundation.h> 7 | 8 | 9 | @interface DBExternInterface1 : NSObject 10 | 11 | - (nonnull DBClientReturnedRecord *)foo:(nullable id<DBClientInterface>)i; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBExternInterface2.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from yaml-test.djinni 3 | 4 | #import "DBExternRecordWithDerivings.h" 5 | #import "DBTestHelpers.h" 6 | #import <Foundation/Foundation.h> 7 | 8 | 9 | @protocol DBExternInterface2 10 | 11 | - (nonnull DBExternRecordWithDerivings *)foo:(nullable DBTestHelpers *)i; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBExternRecordWithDerivings+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from yaml-test.djinni 3 | 4 | #import "DBExternRecordWithDerivings.h" 5 | #include "extern_record_with_derivings.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBExternRecordWithDerivings; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ExternRecordWithDerivings 14 | { 15 | using CppType = ::ExternRecordWithDerivings; 16 | using ObjcType = DBExternRecordWithDerivings*; 17 | 18 | using Boxed = ExternRecordWithDerivings; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBFirstListener.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | 7 | /** Used for ObjC multiple inheritance tests */ 8 | @protocol DBFirstListener 9 | 10 | - (void)first; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBFlagRoundtrip.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | #import "DBAccessFlags.h" 5 | #import "DBEmptyFlags.h" 6 | #import <Foundation/Foundation.h> 7 | 8 | 9 | @interface DBFlagRoundtrip : NSObject 10 | 11 | + (DBAccessFlags)roundtripAccess:(DBAccessFlags)flag; 12 | 13 | + (DBEmptyFlags)roundtripEmpty:(DBEmptyFlags)flag; 14 | 15 | + (nullable NSNumber *)roundtripAccessBoxed:(nullable NSNumber *)flag; 16 | 17 | + (nullable NSNumber *)roundtripEmptyBoxed:(nullable NSNumber *)flag; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBInterfaceUsingExtendedRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #import "DBExtendedRecord.h" 5 | #import "DBRecordUsingExtendedRecord.h" 6 | #import <Foundation/Foundation.h> 7 | 8 | 9 | @interface DBInterfaceUsingExtendedRecord : NSObject 10 | 11 | - (nonnull DBExtendedRecord *)meth:(nonnull DBExtendedRecord *)er; 12 | 13 | + (DBRecordUsingExtendedRecord * __nonnull)cr; 14 | @end 15 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBInterfaceUsingExtendedRecord.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #import "DBInterfaceUsingExtendedRecord.h" 5 | 6 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBJavaOnlyListener.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from single_language_interfaces.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | 7 | @interface DBJavaOnlyListener : NSObject 8 | 9 | @end 10 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBListenerCaller.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | @class DBListenerCaller; 6 | @protocol DBFirstListener; 7 | @protocol DBSecondListener; 8 | 9 | 10 | /** 11 | * Tester for the ability to call two interfaces which might be 12 | * implemented on the same object. That's not relevant in all 13 | * languages, due to the details of multiple inheritance and object 14 | * comparison. 15 | */ 16 | @interface DBListenerCaller : NSObject 17 | 18 | + (nullable DBListenerCaller *)init:(nullable id<DBFirstListener>)firstL 19 | secondL:(nullable id<DBSecondListener>)secondL; 20 | 21 | - (void)callFirst; 22 | 23 | - (void)callSecond; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBMapDateRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from date.djinni 3 | 4 | #import "DBMapDateRecord.h" 5 | #include "map_date_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBMapDateRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct MapDateRecord 14 | { 15 | using CppType = ::testsuite::MapDateRecord; 16 | using ObjcType = DBMapDateRecord*; 17 | 18 | using Boxed = MapDateRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBMapDateRecord+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from date.djinni 3 | 4 | #import "DBMapDateRecord+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto MapDateRecord::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::Map<::djinni::String, ::djinni::Date>::toCpp(obj.datesById)}; 14 | } 15 | 16 | auto MapDateRecord::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBMapDateRecord alloc] initWithDatesById:(::djinni::Map<::djinni::String, ::djinni::Date>::fromCpp(cpp.dates_by_id))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBMapDateRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from date.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBMapDateRecord : NSObject 7 | - (nonnull instancetype)initWithDatesById:(nonnull NSDictionary<NSString *, NSDate *> *)datesById; 8 | + (nonnull instancetype)mapDateRecordWithDatesById:(nonnull NSDictionary<NSString *, NSDate *> *)datesById; 9 | 10 | @property (nonatomic, readonly, nonnull) NSDictionary<NSString *, NSDate *> * datesById; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBMapListRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from map.djinni 3 | 4 | #import "DBMapListRecord.h" 5 | #include "map_list_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBMapListRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct MapListRecord 14 | { 15 | using CppType = ::testsuite::MapListRecord; 16 | using ObjcType = DBMapListRecord*; 17 | 18 | using Boxed = MapListRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBMapListRecord+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from map.djinni 3 | 4 | #import "DBMapListRecord+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto MapListRecord::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::List<::djinni::Map<::djinni::String, ::djinni::I64>>::toCpp(obj.mapList)}; 14 | } 15 | 16 | auto MapListRecord::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBMapListRecord alloc] initWithMapList:(::djinni::List<::djinni::Map<::djinni::String, ::djinni::I64>>::fromCpp(cpp.map_list))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBMapListRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from map.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBMapListRecord : NSObject 7 | - (nonnull instancetype)initWithMapList:(nonnull NSArray<NSDictionary<NSString *, NSNumber *> *> *)mapList; 8 | + (nonnull instancetype)mapListRecordWithMapList:(nonnull NSArray<NSDictionary<NSString *, NSNumber *> *> *)mapList; 9 | 10 | @property (nonatomic, readonly, nonnull) NSArray<NSDictionary<NSString *, NSNumber *> *> * mapList; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBMapRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from map.djinni 3 | 4 | #import "DBMapRecord.h" 5 | #include "map_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBMapRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct MapRecord 14 | { 15 | using CppType = ::testsuite::MapRecord; 16 | using ObjcType = DBMapRecord*; 17 | 18 | using Boxed = MapRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBMapRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from map.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBMapRecord : NSObject 7 | - (nonnull instancetype)initWithMap:(nonnull NSDictionary<NSString *, NSNumber *> *)map 8 | imap:(nonnull NSDictionary<NSNumber *, NSNumber *> *)imap; 9 | + (nonnull instancetype)mapRecordWithMap:(nonnull NSDictionary<NSString *, NSNumber *> *)map 10 | imap:(nonnull NSDictionary<NSNumber *, NSNumber *> *)imap; 11 | 12 | @property (nonatomic, readonly, nonnull) NSDictionary<NSString *, NSNumber *> * map; 13 | 14 | @property (nonatomic, readonly, nonnull) NSDictionary<NSNumber *, NSNumber *> * imap; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBNestedCollection+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from nested_collection.djinni 3 | 4 | #import "DBNestedCollection.h" 5 | #include "nested_collection.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBNestedCollection; 10 | 11 | namespace djinni_generated { 12 | 13 | struct NestedCollection 14 | { 15 | using CppType = ::testsuite::NestedCollection; 16 | using ObjcType = DBNestedCollection*; 17 | 18 | using Boxed = NestedCollection; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBNestedCollection+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from nested_collection.djinni 3 | 4 | #import "DBNestedCollection+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto NestedCollection::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::List<::djinni::Set<::djinni::String>>::toCpp(obj.setList)}; 14 | } 15 | 16 | auto NestedCollection::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBNestedCollection alloc] initWithSetList:(::djinni::List<::djinni::Set<::djinni::String>>::fromCpp(cpp.set_list))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBNestedCollection.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from nested_collection.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBNestedCollection : NSObject 7 | - (nonnull instancetype)initWithSetList:(nonnull NSArray<NSSet<NSString *> *> *)setList; 8 | + (nonnull instancetype)nestedCollectionWithSetList:(nonnull NSArray<NSSet<NSString *> *> *)setList; 9 | 10 | @property (nonatomic, readonly, nonnull) NSArray<NSSet<NSString *> *> * setList; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBNestedCollection.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from nested_collection.djinni 3 | 4 | #import "DBNestedCollection.h" 5 | 6 | 7 | @implementation DBNestedCollection 8 | 9 | - (nonnull instancetype)initWithSetList:(nonnull NSArray<NSSet<NSString *> *> *)setList 10 | { 11 | if (self = [super init]) { 12 | _setList = [setList copy]; 13 | } 14 | return self; 15 | } 16 | 17 | + (nonnull instancetype)nestedCollectionWithSetList:(nonnull NSArray<NSSet<NSString *> *> *)setList 18 | { 19 | return [(DBNestedCollection*)[self alloc] initWithSetList:setList]; 20 | } 21 | 22 | - (NSString *)description 23 | { 24 | return [NSString stringWithFormat:@"<%@ %p setList:%@>", self.class, (void *)self, self.setList]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBObjcOnlyListener.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from single_language_interfaces.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | 7 | @protocol DBObjcOnlyListener 8 | 9 | @end 10 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableList+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableList.h" 5 | #include "parcelable_list.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelableList; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelableList 14 | { 15 | using CppType = ::testsuite::ParcelableList; 16 | using ObjcType = DBParcelableList*; 17 | 18 | using Boxed = ParcelableList; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableList+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableList+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto ParcelableList::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::List<::djinni::String>::toCpp(obj.l)}; 14 | } 15 | 16 | auto ParcelableList::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBParcelableList alloc] initWithL:(::djinni::List<::djinni::String>::fromCpp(cpp.l))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableList.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBParcelableList : NSObject 7 | - (nonnull instancetype)initWithL:(nonnull NSArray<NSString *> *)l; 8 | + (nonnull instancetype)parcelableListWithL:(nonnull NSArray<NSString *> *)l; 9 | 10 | @property (nonatomic, readonly, nonnull) NSArray<NSString *> * l; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableList.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableList.h" 5 | 6 | 7 | @implementation DBParcelableList 8 | 9 | - (nonnull instancetype)initWithL:(nonnull NSArray<NSString *> *)l 10 | { 11 | if (self = [super init]) { 12 | _l = [l copy]; 13 | } 14 | return self; 15 | } 16 | 17 | + (nonnull instancetype)parcelableListWithL:(nonnull NSArray<NSString *> *)l 18 | { 19 | return [(DBParcelableList*)[self alloc] initWithL:l]; 20 | } 21 | 22 | - (NSString *)description 23 | { 24 | return [NSString stringWithFormat:@"<%@ %p l:%@>", self.class, (void *)self, self.l]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableListMapSet+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableListMapSet.h" 5 | #include "parcelable_list_map_set.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelableListMapSet; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelableListMapSet 14 | { 15 | using CppType = ::testsuite::ParcelableListMapSet; 16 | using ObjcType = DBParcelableListMapSet*; 17 | 18 | using Boxed = ParcelableListMapSet; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableListMapSet.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBParcelableListMapSet : NSObject 7 | - (nonnull instancetype)initWithListMapSet:(nonnull NSArray<NSDictionary<NSString *, NSSet<NSString *> *> *> *)listMapSet; 8 | + (nonnull instancetype)parcelableListMapSetWithListMapSet:(nonnull NSArray<NSDictionary<NSString *, NSSet<NSString *> *> *> *)listMapSet; 9 | 10 | @property (nonatomic, readonly, nonnull) NSArray<NSDictionary<NSString *, NSSet<NSString *> *> *> * listMapSet; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableListSet+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableListSet.h" 5 | #include "parcelable_list_set.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelableListSet; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelableListSet 14 | { 15 | using CppType = ::testsuite::ParcelableListSet; 16 | using ObjcType = DBParcelableListSet*; 17 | 18 | using Boxed = ParcelableListSet; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableListSet+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableListSet+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto ParcelableListSet::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::List<::djinni::Set<::djinni::String>>::toCpp(obj.listSet)}; 14 | } 15 | 16 | auto ParcelableListSet::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBParcelableListSet alloc] initWithListSet:(::djinni::List<::djinni::Set<::djinni::String>>::fromCpp(cpp.list_set))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableListSet.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBParcelableListSet : NSObject 7 | - (nonnull instancetype)initWithListSet:(nonnull NSArray<NSSet<NSString *> *> *)listSet; 8 | + (nonnull instancetype)parcelableListSetWithListSet:(nonnull NSArray<NSSet<NSString *> *> *)listSet; 9 | 10 | @property (nonatomic, readonly, nonnull) NSArray<NSSet<NSString *> *> * listSet; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableListSet.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableListSet.h" 5 | 6 | 7 | @implementation DBParcelableListSet 8 | 9 | - (nonnull instancetype)initWithListSet:(nonnull NSArray<NSSet<NSString *> *> *)listSet 10 | { 11 | if (self = [super init]) { 12 | _listSet = [listSet copy]; 13 | } 14 | return self; 15 | } 16 | 17 | + (nonnull instancetype)parcelableListSetWithListSet:(nonnull NSArray<NSSet<NSString *> *> *)listSet 18 | { 19 | return [(DBParcelableListSet*)[self alloc] initWithListSet:listSet]; 20 | } 21 | 22 | - (NSString *)description 23 | { 24 | return [NSString stringWithFormat:@"<%@ %p listSet:%@>", self.class, (void *)self, self.listSet]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableMap+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableMap.h" 5 | #include "parcelable_map.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelableMap; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelableMap 14 | { 15 | using CppType = ::testsuite::ParcelableMap; 16 | using ObjcType = DBParcelableMap*; 17 | 18 | using Boxed = ParcelableMap; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableMap+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableMap+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto ParcelableMap::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::Map<::djinni::String, ::djinni::String>::toCpp(obj.m)}; 14 | } 15 | 16 | auto ParcelableMap::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBParcelableMap alloc] initWithM:(::djinni::Map<::djinni::String, ::djinni::String>::fromCpp(cpp.m))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableMap.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBParcelableMap : NSObject 7 | - (nonnull instancetype)initWithM:(nonnull NSDictionary<NSString *, NSString *> *)m; 8 | + (nonnull instancetype)parcelableMapWithM:(nonnull NSDictionary<NSString *, NSString *> *)m; 9 | 10 | @property (nonatomic, readonly, nonnull) NSDictionary<NSString *, NSString *> * m; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableMap.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableMap.h" 5 | 6 | 7 | @implementation DBParcelableMap 8 | 9 | - (nonnull instancetype)initWithM:(nonnull NSDictionary<NSString *, NSString *> *)m 10 | { 11 | if (self = [super init]) { 12 | _m = [m copy]; 13 | } 14 | return self; 15 | } 16 | 17 | + (nonnull instancetype)parcelableMapWithM:(nonnull NSDictionary<NSString *, NSString *> *)m 18 | { 19 | return [(DBParcelableMap*)[self alloc] initWithM:m]; 20 | } 21 | 22 | - (NSString *)description 23 | { 24 | return [NSString stringWithFormat:@"<%@ %p m:%@>", self.class, (void *)self, self.m]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableMapList+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableMapList.h" 5 | #include "parcelable_map_list.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelableMapList; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelableMapList 14 | { 15 | using CppType = ::testsuite::ParcelableMapList; 16 | using ObjcType = DBParcelableMapList*; 17 | 18 | using Boxed = ParcelableMapList; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableMapList+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableMapList+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto ParcelableMapList::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::Map<::djinni::String, ::djinni::List<::djinni::String>>::toCpp(obj.mapSet)}; 14 | } 15 | 16 | auto ParcelableMapList::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBParcelableMapList alloc] initWithMapSet:(::djinni::Map<::djinni::String, ::djinni::List<::djinni::String>>::fromCpp(cpp.map_set))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableMapList.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBParcelableMapList : NSObject 7 | - (nonnull instancetype)initWithMapSet:(nonnull NSDictionary<NSString *, NSArray<NSString *> *> *)mapSet; 8 | + (nonnull instancetype)parcelableMapListWithMapSet:(nonnull NSDictionary<NSString *, NSArray<NSString *> *> *)mapSet; 9 | 10 | @property (nonatomic, readonly, nonnull) NSDictionary<NSString *, NSArray<NSString *> *> * mapSet; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableMapSet+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableMapSet.h" 5 | #include "parcelable_map_set.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelableMapSet; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelableMapSet 14 | { 15 | using CppType = ::testsuite::ParcelableMapSet; 16 | using ObjcType = DBParcelableMapSet*; 17 | 18 | using Boxed = ParcelableMapSet; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableMapSet+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableMapSet+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto ParcelableMapSet::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::Map<::djinni::String, ::djinni::Set<::djinni::String>>::toCpp(obj.mapSet)}; 14 | } 15 | 16 | auto ParcelableMapSet::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBParcelableMapSet alloc] initWithMapSet:(::djinni::Map<::djinni::String, ::djinni::Set<::djinni::String>>::fromCpp(cpp.map_set))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableMapSet.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBParcelableMapSet : NSObject 7 | - (nonnull instancetype)initWithMapSet:(nonnull NSDictionary<NSString *, NSSet<NSString *> *> *)mapSet; 8 | + (nonnull instancetype)parcelableMapSetWithMapSet:(nonnull NSDictionary<NSString *, NSSet<NSString *> *> *)mapSet; 9 | 10 | @property (nonatomic, readonly, nonnull) NSDictionary<NSString *, NSSet<NSString *> *> * mapSet; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableOptionalList+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableOptionalList.h" 5 | #include "parcelable_optional_list.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelableOptionalList; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelableOptionalList 14 | { 15 | using CppType = ::testsuite::ParcelableOptionalList; 16 | using ObjcType = DBParcelableOptionalList*; 17 | 18 | using Boxed = ParcelableOptionalList; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableOptionalList.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBParcelableOptionalList : NSObject 7 | - (nonnull instancetype)initWithOptionalSet:(nullable NSArray<NSString *> *)optionalSet; 8 | + (nonnull instancetype)parcelableOptionalListWithOptionalSet:(nullable NSArray<NSString *> *)optionalSet; 9 | 10 | @property (nonatomic, readonly, nullable) NSArray<NSString *> * optionalSet; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableOptionalMap+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableOptionalMap.h" 5 | #include "parcelable_optional_map.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelableOptionalMap; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelableOptionalMap 14 | { 15 | using CppType = ::testsuite::ParcelableOptionalMap; 16 | using ObjcType = DBParcelableOptionalMap*; 17 | 18 | using Boxed = ParcelableOptionalMap; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableOptionalMap.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBParcelableOptionalMap : NSObject 7 | - (nonnull instancetype)initWithOptionalSet:(nullable NSDictionary<NSString *, NSSet<NSString *> *> *)optionalSet; 8 | + (nonnull instancetype)parcelableOptionalMapWithOptionalSet:(nullable NSDictionary<NSString *, NSSet<NSString *> *> *)optionalSet; 9 | 10 | @property (nonatomic, readonly, nullable) NSDictionary<NSString *, NSSet<NSString *> *> * optionalSet; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableOptionalSet+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableOptionalSet.h" 5 | #include "parcelable_optional_set.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelableOptionalSet; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelableOptionalSet 14 | { 15 | using CppType = ::testsuite::ParcelableOptionalSet; 16 | using ObjcType = DBParcelableOptionalSet*; 17 | 18 | using Boxed = ParcelableOptionalSet; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableOptionalSet.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBParcelableOptionalSet : NSObject 7 | - (nonnull instancetype)initWithOptionalSet:(nullable NSSet<NSString *> *)optionalSet; 8 | + (nonnull instancetype)parcelableOptionalSetWithOptionalSet:(nullable NSSet<NSString *> *)optionalSet; 9 | 10 | @property (nonatomic, readonly, nullable) NSSet<NSString *> * optionalSet; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelablePrimitives+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelablePrimitives.h" 5 | #include "parcelable_primitives.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelablePrimitives; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelablePrimitives 14 | { 15 | using CppType = ::testsuite::ParcelablePrimitives; 16 | using ObjcType = DBParcelablePrimitives*; 17 | 18 | using Boxed = ParcelablePrimitives; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableSet+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableSet.h" 5 | #include "parcelable_set.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBParcelableSet; 10 | 11 | namespace djinni_generated { 12 | 13 | struct ParcelableSet 14 | { 15 | using CppType = ::testsuite::ParcelableSet; 16 | using ObjcType = DBParcelableSet*; 17 | 18 | using Boxed = ParcelableSet; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableSet+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableSet+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto ParcelableSet::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::Set<::djinni::String>::toCpp(obj.set)}; 14 | } 15 | 16 | auto ParcelableSet::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBParcelableSet alloc] initWithSet:(::djinni::Set<::djinni::String>::fromCpp(cpp.set))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableSet.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBParcelableSet : NSObject 7 | - (nonnull instancetype)initWithSet:(nonnull NSSet<NSString *> *)set; 8 | + (nonnull instancetype)parcelableSetWithSet:(nonnull NSSet<NSString *> *)set; 9 | 10 | @property (nonatomic, readonly, nonnull) NSSet<NSString *> * set; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBParcelableSet.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from parcelable.djinni 3 | 4 | #import "DBParcelableSet.h" 5 | 6 | 7 | @implementation DBParcelableSet 8 | 9 | - (nonnull instancetype)initWithSet:(nonnull NSSet<NSString *> *)set 10 | { 11 | if (self = [super init]) { 12 | _set = [set copy]; 13 | } 14 | return self; 15 | } 16 | 17 | + (nonnull instancetype)parcelableSetWithSet:(nonnull NSSet<NSString *> *)set 18 | { 19 | return [(DBParcelableSet*)[self alloc] initWithSet:set]; 20 | } 21 | 22 | - (NSString *)description 23 | { 24 | return [NSString stringWithFormat:@"<%@ %p set:%@>", self.class, (void *)self, self.set]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBPrimitiveList+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from primitive_list.djinni 3 | 4 | #import "DBPrimitiveList.h" 5 | #include "primitive_list.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBPrimitiveList; 10 | 11 | namespace djinni_generated { 12 | 13 | struct PrimitiveList 14 | { 15 | using CppType = ::testsuite::PrimitiveList; 16 | using ObjcType = DBPrimitiveList*; 17 | 18 | using Boxed = PrimitiveList; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBPrimitiveList+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from primitive_list.djinni 3 | 4 | #import "DBPrimitiveList+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto PrimitiveList::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::List<::djinni::I64>::toCpp(obj.list)}; 14 | } 15 | 16 | auto PrimitiveList::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBPrimitiveList alloc] initWithList:(::djinni::List<::djinni::I64>::fromCpp(cpp.list))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBPrimitiveList.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from primitive_list.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBPrimitiveList : NSObject 7 | - (nonnull instancetype)initWithList:(nonnull NSArray<NSNumber *> *)list; 8 | + (nonnull instancetype)primitiveListWithList:(nonnull NSArray<NSNumber *> *)list; 9 | 10 | @property (nonatomic, readonly, nonnull) NSArray<NSNumber *> * list; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBPrimitiveList.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from primitive_list.djinni 3 | 4 | #import "DBPrimitiveList.h" 5 | 6 | 7 | @implementation DBPrimitiveList 8 | 9 | - (nonnull instancetype)initWithList:(nonnull NSArray<NSNumber *> *)list 10 | { 11 | if (self = [super init]) { 12 | _list = [list copy]; 13 | } 14 | return self; 15 | } 16 | 17 | + (nonnull instancetype)primitiveListWithList:(nonnull NSArray<NSNumber *> *)list 18 | { 19 | return [(DBPrimitiveList*)[self alloc] initWithList:list]; 20 | } 21 | 22 | - (NSString *)description 23 | { 24 | return [NSString stringWithFormat:@"<%@ %p list:%@>", self.class, (void *)self, self.list]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordUsingExtendedRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #import "DBRecordUsingExtendedRecord.h" 5 | #include "record_using_extended_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBRecordUsingExtendedRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct RecordUsingExtendedRecord 14 | { 15 | using CppType = ::testsuite::RecordUsingExtendedRecord; 16 | using ObjcType = DBRecordUsingExtendedRecord*; 17 | 18 | using Boxed = RecordUsingExtendedRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordUsingExtendedRecord+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #import "DBRecordUsingExtendedRecord+Private.h" 5 | #import "DBExtendedRecord+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto RecordUsingExtendedRecord::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni_generated::ExtendedRecord::toCpp(obj.er)}; 14 | } 15 | 16 | auto RecordUsingExtendedRecord::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBRecordUsingExtendedRecord alloc] initWithEr:(::djinni_generated::ExtendedRecord::fromCpp(cpp.er))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordUsingExtendedRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from extended_record.djinni 3 | 4 | #import "DBExtendedRecord.h" 5 | #import "DBRecordUsingExtendedRecord.h" 6 | #import <Foundation/Foundation.h> 7 | 8 | @interface DBRecordUsingExtendedRecord : NSObject 9 | - (nonnull instancetype)initWithEr:(nonnull DBExtendedRecord *)er; 10 | + (nonnull instancetype)recordUsingExtendedRecordWithEr:(nonnull DBExtendedRecord *)er; 11 | 12 | + (DBRecordUsingExtendedRecord * __nonnull)cr; 13 | @property (nonatomic, readonly, nonnull) DBExtendedRecord * er; 14 | 15 | @end 16 | 17 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordWithDerivings+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from derivings.djinni 3 | 4 | #import "DBRecordWithDerivings.h" 5 | #include "record_with_derivings.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBRecordWithDerivings; 10 | 11 | namespace djinni_generated { 12 | 13 | struct RecordWithDerivings 14 | { 15 | using CppType = ::testsuite::RecordWithDerivings; 16 | using ObjcType = DBRecordWithDerivings*; 17 | 18 | using Boxed = RecordWithDerivings; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordWithDurationAndDerivings.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from duration.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBRecordWithDurationAndDerivings : NSObject 7 | - (nonnull instancetype)initWithDt:(NSTimeInterval)dt; 8 | + (nonnull instancetype)recordWithDurationAndDerivingsWithDt:(NSTimeInterval)dt; 9 | 10 | @property (nonatomic, readonly) NSTimeInterval dt; 11 | 12 | - (NSComparisonResult)compare:(nonnull DBRecordWithDurationAndDerivings *)other; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordWithFlags+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | #import "DBRecordWithFlags.h" 5 | #include "record_with_flags.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBRecordWithFlags; 10 | 11 | namespace djinni_generated { 12 | 13 | struct RecordWithFlags 14 | { 15 | using CppType = ::testsuite::RecordWithFlags; 16 | using ObjcType = DBRecordWithFlags*; 17 | 18 | using Boxed = RecordWithFlags; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordWithFlags+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | #import "DBRecordWithFlags+Private.h" 5 | #import "DBAccessFlags+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto RecordWithFlags::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::Enum<::testsuite::access_flags, DBAccessFlags>::toCpp(obj.access)}; 14 | } 15 | 16 | auto RecordWithFlags::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBRecordWithFlags alloc] initWithAccess:(::djinni::Enum<::testsuite::access_flags, DBAccessFlags>::fromCpp(cpp.access))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordWithFlags.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | #import "DBAccessFlags.h" 5 | #import <Foundation/Foundation.h> 6 | 7 | @interface DBRecordWithFlags : NSObject 8 | - (nonnull instancetype)initWithAccess:(DBAccessFlags)access; 9 | + (nonnull instancetype)recordWithFlagsWithAccess:(DBAccessFlags)access; 10 | 11 | @property (nonatomic, readonly) DBAccessFlags access; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordWithFlags.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from enum_flags.djinni 3 | 4 | #import "DBRecordWithFlags.h" 5 | 6 | 7 | @implementation DBRecordWithFlags 8 | 9 | - (nonnull instancetype)initWithAccess:(DBAccessFlags)access 10 | { 11 | if (self = [super init]) { 12 | _access = access; 13 | } 14 | return self; 15 | } 16 | 17 | + (nonnull instancetype)recordWithFlagsWithAccess:(DBAccessFlags)access 18 | { 19 | return [(DBRecordWithFlags*)[self alloc] initWithAccess:access]; 20 | } 21 | 22 | - (NSString *)description 23 | { 24 | return [NSString stringWithFormat:@"<%@ %p access:%@>", self.class, (void *)self, @(self.access)]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordWithNestedDerivings+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from derivings.djinni 3 | 4 | #import "DBRecordWithNestedDerivings.h" 5 | #include "record_with_nested_derivings.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBRecordWithNestedDerivings; 10 | 11 | namespace djinni_generated { 12 | 13 | struct RecordWithNestedDerivings 14 | { 15 | using CppType = ::testsuite::RecordWithNestedDerivings; 16 | using ObjcType = DBRecordWithNestedDerivings*; 17 | 18 | using Boxed = RecordWithNestedDerivings; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBRecordWithNestedDerivings.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from derivings.djinni 3 | 4 | #import "DBRecordWithDerivings.h" 5 | #import <Foundation/Foundation.h> 6 | 7 | @interface DBRecordWithNestedDerivings : NSObject 8 | - (nonnull instancetype)initWithKey:(int32_t)key 9 | rec:(nonnull DBRecordWithDerivings *)rec; 10 | + (nonnull instancetype)recordWithNestedDerivingsWithKey:(int32_t)key 11 | rec:(nonnull DBRecordWithDerivings *)rec; 12 | 13 | @property (nonatomic, readonly) int32_t key; 14 | 15 | @property (nonatomic, readonly, nonnull) DBRecordWithDerivings * rec; 16 | 17 | - (NSComparisonResult)compare:(nonnull DBRecordWithNestedDerivings *)other; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBReturnOne.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | @class DBReturnOne; 6 | 7 | 8 | /** Used for C++ multiple inheritance tests */ 9 | @interface DBReturnOne : NSObject 10 | 11 | + (nullable DBReturnOne *)getInstance; 12 | 13 | - (int8_t)returnOne; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBReturnTwo.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | @class DBReturnTwo; 6 | 7 | 8 | /** Used for C++ multiple inheritance tests */ 9 | @interface DBReturnTwo : NSObject 10 | 11 | + (nullable DBReturnTwo *)getInstance; 12 | 13 | - (int8_t)returnTwo; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBReverseClientInterface.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from client_interface.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | @class DBReverseClientInterface; 6 | 7 | 8 | @interface DBReverseClientInterface : NSObject 9 | 10 | - (nonnull NSString *)returnStr; 11 | 12 | - (nonnull NSString *)methTakingInterface:(nullable DBReverseClientInterface *)i; 13 | 14 | - (nonnull NSString *)methTakingOptionalInterface:(nullable DBReverseClientInterface *)i; 15 | 16 | + (nullable DBReverseClientInterface *)create; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBSampleInterface.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from test.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | 7 | /** 8 | * we need to test optional interface 9 | * this one will be used 10 | */ 11 | @interface DBSampleInterface : NSObject 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBSecondListener.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from multiple_inheritance.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | 7 | /** Used for ObjC multiple inheritance tests */ 8 | @protocol DBSecondListener 9 | 10 | - (void)second; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBSetRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from set.djinni 3 | 4 | #import "DBSetRecord.h" 5 | #include "set_record.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBSetRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct SetRecord 14 | { 15 | using CppType = ::testsuite::SetRecord; 16 | using ObjcType = DBSetRecord*; 17 | 18 | using Boxed = SetRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBSetRecord+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from set.djinni 3 | 4 | #import "DBSetRecord+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto SetRecord::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::Set<::djinni::String>::toCpp(obj.set), 14 | ::djinni::Set<::djinni::I32>::toCpp(obj.iset)}; 15 | } 16 | 17 | auto SetRecord::fromCpp(const CppType& cpp) -> ObjcType 18 | { 19 | return [[DBSetRecord alloc] initWithSet:(::djinni::Set<::djinni::String>::fromCpp(cpp.set)) 20 | iset:(::djinni::Set<::djinni::I32>::fromCpp(cpp.iset))]; 21 | } 22 | 23 | } // namespace djinni_generated 24 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBSetRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from set.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBSetRecord : NSObject 7 | - (nonnull instancetype)initWithSet:(nonnull NSSet<NSString *> *)set 8 | iset:(nonnull NSSet<NSNumber *> *)iset; 9 | + (nonnull instancetype)setRecordWithSet:(nonnull NSSet<NSString *> *)set 10 | iset:(nonnull NSSet<NSNumber *> *)iset; 11 | 12 | @property (nonatomic, readonly, nonnull) NSSet<NSString *> * set; 13 | 14 | @property (nonatomic, readonly, nonnull) NSSet<NSNumber *> * iset; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBTestOptionalExternInterfaceRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from yaml-test.djinni 3 | 4 | #import "DBSampleInterface.h" 5 | #import <Foundation/Foundation.h> 6 | 7 | @interface DBTestOptionalExternInterfaceRecord : NSObject 8 | - (nonnull instancetype)initWithSampleInterface:(nullable DBSampleInterface *)sampleInterface; 9 | + (nonnull instancetype)testOptionalExternInterfaceRecordWithSampleInterface:(nullable DBSampleInterface *)sampleInterface; 10 | 11 | @property (nonatomic, readonly, nullable) DBSampleInterface * sampleInterface; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBUserToken.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from user_token.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | 7 | @protocol DBUserToken 8 | 9 | - (nonnull NSString *)whoami; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBUsesSingleLanguageListeners.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from single_language_interfaces.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | @class DBJavaOnlyListener; 6 | @protocol DBObjcOnlyListener; 7 | 8 | 9 | /** 10 | * Generating and compiling this makes sure other languages don't break 11 | * on references to interfaces they don't need. 12 | */ 13 | @protocol DBUsesSingleLanguageListeners 14 | 15 | - (void)callForObjC:(nullable id<DBObjcOnlyListener>)l; 16 | 17 | - (nullable id<DBObjcOnlyListener>)returnForObjC; 18 | 19 | - (void)callForJava:(nullable DBJavaOnlyListener *)l; 20 | 21 | - (nullable DBJavaOnlyListener *)returnForJava; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBVarnameInterface.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from varnames.djinni 3 | 4 | #import "DBVarnameRecord.h" 5 | #import <Foundation/Foundation.h> 6 | @class DBVarnameInterface; 7 | 8 | 9 | @interface DBVarnameInterface : NSObject 10 | 11 | /** 12 | * We should also rewrite parameter names in docstrings. 13 | * RArg should be rewritten. 14 | * _i_arg_ should not. 15 | */ 16 | - (nonnull DBVarnameRecord *)Rmethod:(nonnull DBVarnameRecord *)RArg; 17 | 18 | - (nullable DBVarnameInterface *)Imethod:(nullable DBVarnameInterface *)IArg; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBVarnameRecord+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from varnames.djinni 3 | 4 | #import "DBVarnameRecord.h" 5 | #include "_varname_record_.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBVarnameRecord; 10 | 11 | namespace djinni_generated { 12 | 13 | struct VarnameRecord 14 | { 15 | using CppType = ::testsuite::VarnameRecord; 16 | using ObjcType = DBVarnameRecord*; 17 | 18 | using Boxed = VarnameRecord; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBVarnameRecord+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from varnames.djinni 3 | 4 | #import "DBVarnameRecord+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto VarnameRecord::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::I8::toCpp(obj.Field)}; 14 | } 15 | 16 | auto VarnameRecord::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBVarnameRecord alloc] initWithField:(::djinni::I8::fromCpp(cpp._field_))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBVarnameRecord.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from varnames.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | /** 7 | * Underscore is used as a separator in Djinni names, so we don't really 8 | * anticipate it to be used as a prefix/suffix. Some name styles behave 9 | * badly when it is. However this test case ensures we at least don't crash. 10 | */ 11 | @interface DBVarnameRecord : NSObject 12 | - (nonnull instancetype)initWithField:(int8_t)Field; 13 | + (nonnull instancetype)VarnameRecordWithField:(int8_t)Field; 14 | 15 | @property (nonatomic, readonly) int8_t Field; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBVarnameRecord.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from varnames.djinni 3 | 4 | #import "DBVarnameRecord.h" 5 | 6 | 7 | @implementation DBVarnameRecord 8 | 9 | - (nonnull instancetype)initWithField:(int8_t)Field 10 | { 11 | if (self = [super init]) { 12 | _Field = Field; 13 | } 14 | return self; 15 | } 16 | 17 | + (nonnull instancetype)VarnameRecordWithField:(int8_t)Field 18 | { 19 | return [(DBVarnameRecord*)[self alloc] initWithField:Field]; 20 | } 21 | 22 | - (NSString *)description 23 | { 24 | return [NSString stringWithFormat:@"<%@ %p Field:%@>", self.class, (void *)self, @(self.Field)]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBWcharTestHelpers.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from wchar_test.djinni 3 | 4 | #import "DBWcharTestRec.h" 5 | #import <Foundation/Foundation.h> 6 | 7 | 8 | @interface DBWcharTestHelpers : NSObject 9 | 10 | + (nonnull DBWcharTestRec *)getRecord; 11 | 12 | + (nonnull NSString *)getString; 13 | 14 | + (BOOL)checkString:(nonnull NSString *)str; 15 | 16 | + (BOOL)checkRecord:(nonnull DBWcharTestRec *)rec; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBWcharTestRec+Private.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from wchar_test.djinni 3 | 4 | #import "DBWcharTestRec.h" 5 | #include "wchar_test_rec.hpp" 6 | 7 | static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); 8 | 9 | @class DBWcharTestRec; 10 | 11 | namespace djinni_generated { 12 | 13 | struct WcharTestRec 14 | { 15 | using CppType = ::testsuite::WcharTestRec; 16 | using ObjcType = DBWcharTestRec*; 17 | 18 | using Boxed = WcharTestRec; 19 | 20 | static CppType toCpp(ObjcType objc); 21 | static ObjcType fromCpp(const CppType& cpp); 22 | }; 23 | 24 | } // namespace djinni_generated 25 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBWcharTestRec+Private.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from wchar_test.djinni 3 | 4 | #import "DBWcharTestRec+Private.h" 5 | #import "DJIMarshal+Private.h" 6 | #include <cassert> 7 | 8 | namespace djinni_generated { 9 | 10 | auto WcharTestRec::toCpp(ObjcType obj) -> CppType 11 | { 12 | assert(obj); 13 | return {::djinni::WString::toCpp(obj.s)}; 14 | } 15 | 16 | auto WcharTestRec::fromCpp(const CppType& cpp) -> ObjcType 17 | { 18 | return [[DBWcharTestRec alloc] initWithS:(::djinni::WString::fromCpp(cpp.s))]; 19 | } 20 | 21 | } // namespace djinni_generated 22 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBWcharTestRec.h: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from wchar_test.djinni 3 | 4 | #import <Foundation/Foundation.h> 5 | 6 | @interface DBWcharTestRec : NSObject 7 | - (nonnull instancetype)initWithS:(nonnull NSString *)s; 8 | + (nonnull instancetype)wcharTestRecWithS:(nonnull NSString *)s; 9 | 10 | @property (nonatomic, readonly, nonnull) NSString * s; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /test-suite/generated-src/objc/DBWcharTestRec.mm: -------------------------------------------------------------------------------- 1 | // AUTOGENERATED FILE - DO NOT MODIFY! 2 | // This file generated by Djinni from wchar_test.djinni 3 | 4 | #import "DBWcharTestRec.h" 5 | 6 | 7 | @implementation DBWcharTestRec 8 | 9 | - (nonnull instancetype)initWithS:(nonnull NSString *)s 10 | { 11 | if (self = [super init]) { 12 | _s = [s copy]; 13 | } 14 | return self; 15 | } 16 | 17 | + (nonnull instancetype)wcharTestRecWithS:(nonnull NSString *)s 18 | { 19 | return [(DBWcharTestRec*)[self alloc] initWithS:s]; 20 | } 21 | 22 | - (NSString *)description 23 | { 24 | return [NSString stringWithFormat:@"<%@ %p s:%@>", self.class, (void *)self, self.s]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/cpp/cpp_exception_impl.cpp: -------------------------------------------------------------------------------- 1 | #include "cpp_exception_impl.hpp" 2 | #include <exception> 3 | 4 | namespace testsuite { 5 | 6 | int32_t CppExceptionImpl::throw_an_exception() { 7 | throw ExampleException(); 8 | } 9 | 10 | std::shared_ptr<CppException> CppException::get() { 11 | return std::make_shared<CppExceptionImpl>(); 12 | } 13 | 14 | } // namespace testsuite 15 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/cpp/cpp_exception_impl.hpp: -------------------------------------------------------------------------------- 1 | #include "cpp_exception.hpp" 2 | #include <exception> 3 | 4 | namespace testsuite { 5 | 6 | class ExampleException: public std::exception { 7 | virtual const char* what() const throw() { 8 | return "Exception Thrown"; 9 | } 10 | }; 11 | 12 | extern ExampleException EXAMPLE_EXCEPTION; 13 | 14 | class CppExceptionImpl : public CppException { 15 | public: 16 | CppExceptionImpl() {} 17 | virtual ~CppExceptionImpl() {} 18 | 19 | virtual int32_t throw_an_exception () override; 20 | }; 21 | 22 | } // namespace testsuite 23 | 24 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/cpp/extended_record.cpp: -------------------------------------------------------------------------------- 1 | #include "extended_record.hpp" 2 | 3 | // Validate these generated headers are compilable. 4 | #include "record_using_extended_record.hpp" 5 | #include "interface_using_extended_record.hpp" 6 | 7 | using namespace testsuite; 8 | 9 | ExtendedRecord::ExtendedRecord() : ExtendedRecordBase(true) {} 10 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/cpp/extended_record.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "extended_record_base.hpp" 4 | 5 | namespace testsuite { 6 | 7 | struct ExtendedRecord : public ExtendedRecordBase 8 | { 9 | using ExtendedRecordBase::ExtendedRecordBase; 10 | 11 | ExtendedRecord(); 12 | }; 13 | } -------------------------------------------------------------------------------- /test-suite/handwritten-src/cpp/flag_roundtrip.cpp: -------------------------------------------------------------------------------- 1 | #include "flag_roundtrip.hpp" 2 | 3 | using namespace testsuite; 4 | 5 | access_flags FlagRoundtrip::roundtrip_access(access_flags flag) { 6 | return flag; 7 | } 8 | 9 | empty_flags FlagRoundtrip::roundtrip_empty(empty_flags flag) { 10 | return flag; 11 | } 12 | 13 | std::experimental::optional<access_flags> FlagRoundtrip::roundtrip_access_boxed(std::experimental::optional<access_flags> flag) { 14 | return flag; 15 | } 16 | 17 | std::experimental::optional<empty_flags> FlagRoundtrip::roundtrip_empty_boxed(std::experimental::optional<empty_flags> flag) { 18 | return flag; 19 | } 20 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/cpp/return_one_two.cpp: -------------------------------------------------------------------------------- 1 | #include "return_one.hpp" 2 | #include "return_two.hpp" 3 | 4 | namespace testsuite { 5 | 6 | class ReturnOneTwo : public ReturnOne, public ReturnTwo { 7 | public: 8 | static std::shared_ptr<ReturnOneTwo> shared_instance() { 9 | static auto instance = std::make_shared<ReturnOneTwo>(); 10 | return instance; 11 | } 12 | 13 | int8_t return_one() override { return 1; } 14 | int8_t return_two() override { return 2; } 15 | }; 16 | 17 | std::shared_ptr<ReturnOne> ReturnOne::get_instance() { 18 | return ReturnOneTwo::shared_instance(); 19 | } 20 | 21 | std::shared_ptr<ReturnTwo> ReturnTwo::get_instance() { 22 | return ReturnOneTwo::shared_instance(); 23 | } 24 | 25 | } // namespace testsuite 26 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/cpp/reverse_client_interface_impl.hpp: -------------------------------------------------------------------------------- 1 | #include "reverse_client_interface.hpp" 2 | 3 | namespace testsuite { 4 | 5 | class ReverseClientInterfaceImpl : public ReverseClientInterface { 6 | public: 7 | ReverseClientInterfaceImpl() {} 8 | virtual ~ReverseClientInterfaceImpl() {} 9 | 10 | virtual std::string return_str() const override; 11 | 12 | virtual std::string meth_taking_interface(const std::shared_ptr<ReverseClientInterface> & i) override; 13 | 14 | virtual std::string meth_taking_optional_interface(const std::shared_ptr<ReverseClientInterface> & i) override; 15 | 16 | static std::shared_ptr<ReverseClientInterface> create(); 17 | }; 18 | 19 | } // namespace testsuite 20 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/java/com/dropbox/djinni/test/CppExceptionTest.java: -------------------------------------------------------------------------------- 1 | package com.dropbox.djinni.test; 2 | 3 | import junit.framework.TestCase; 4 | 5 | public class CppExceptionTest extends TestCase { 6 | 7 | private CppException cppInterface; 8 | 9 | @Override 10 | protected void setUp() { 11 | cppInterface = CppException.get(); 12 | } 13 | 14 | public void testCppException() { 15 | String thrown = null; 16 | try { 17 | cppInterface.throwAnException(); 18 | } catch (RuntimeException e) { 19 | thrown = e.getMessage(); 20 | } 21 | assertEquals("Exception Thrown", thrown); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/java/com/dropbox/djinni/test/MockRecordTest.java: -------------------------------------------------------------------------------- 1 | package com.dropbox.djinni.test; 2 | 3 | import junit.framework.TestCase; 4 | 5 | class MockConstants extends Constants { 6 | @Override 7 | public String toString() { 8 | return "MockConstants{}"; 9 | } 10 | } 11 | 12 | public class MockRecordTest extends TestCase { 13 | 14 | public void testMockConstants() { 15 | Constants mock = new MockConstants(); 16 | assertEquals("The toString() method should be overridden.", "MockConstants{}", mock.toString()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/java/com/dropbox/djinni/test/PrimitivesTest.java: -------------------------------------------------------------------------------- 1 | package com.dropbox.djinni.test; 2 | 3 | import junit.framework.TestCase; 4 | 5 | public class PrimitivesTest extends TestCase { 6 | 7 | public void testPrimitives() { 8 | AssortedPrimitives p = new AssortedPrimitives(true, (byte)123, (short)20000, 1000000000, 1234567890123456789L, 1.23f, 1.23d, 9 | true, (byte)123, (short)20000, 1000000000, 1234567890123456789L, 1.23f, 1.23d); 10 | assertEquals(p, TestHelpers.assortedPrimitivesId(p)); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/java/com/dropbox/djinni/test/WcharTest.java: -------------------------------------------------------------------------------- 1 | package com.dropbox.djinni.test; 2 | 3 | import junit.framework.TestCase; 4 | 5 | public class WcharTest extends TestCase { 6 | 7 | private static final String STR1 = "some string with unicode \u0000, \u263A, \uD83D\uDCA9 symbols"; 8 | private static final String STR2 = "another string with unicode \u263B, \uD83D\uDCA8 symbols"; 9 | 10 | public void test() { 11 | assertEquals(WcharTestHelpers.getRecord().getS(), STR1); 12 | assertEquals(WcharTestHelpers.getString(), STR2); 13 | assertEquals(WcharTestHelpers.checkString(STR2), true); 14 | assertEquals(WcharTestHelpers.checkRecord(new WcharTestRec(STR1)), true); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/objc/impl/DBClientInterfaceImpl.h: -------------------------------------------------------------------------------- 1 | #import "DBClientInterface.h" 2 | #import <Foundation/Foundation.h> 3 | 4 | @interface DBClientInterfaceImpl : NSObject <DBClientInterface> 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/objc/tests/DBConstantTests.mm: -------------------------------------------------------------------------------- 1 | #import "DBConstants.h" 2 | 3 | #import <XCTest/XCTest.h> 4 | 5 | @interface DBConstantTests : XCTestCase 6 | 7 | @end 8 | 9 | @implementation DBConstantTests 10 | 11 | - (void)methodThatTakesString:(__unused NSString *)string 12 | { 13 | } 14 | 15 | - (void)testCallingMethodThatTakesStringWithConstant 16 | { 17 | [self methodThatTakesString:DBConstantsStringConstant]; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/objc/tests/DjinniObjcTestTests-Info.plist: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 | <plist version="1.0"> 4 | <dict> 5 | <key>CFBundleDevelopmentRegion</key> 6 | <string>en</string> 7 | <key>CFBundleExecutable</key> 8 | <string>${EXECUTABLE_NAME}</string> 9 | <key>CFBundleIdentifier</key> 10 | <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> 11 | <key>CFBundleInfoDictionaryVersion</key> 12 | <string>6.0</string> 13 | <key>CFBundlePackageType</key> 14 | <string>BNDL</string> 15 | <key>CFBundleShortVersionString</key> 16 | <string>1.0</string> 17 | <key>CFBundleSignature</key> 18 | <string>????</string> 19 | <key>CFBundleVersion</key> 20 | <string>1</string> 21 | </dict> 22 | </plist> 23 | -------------------------------------------------------------------------------- /test-suite/handwritten-src/objc/tests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /test-suite/java/.gitignore: -------------------------------------------------------------------------------- 1 | classes/ 2 | build/ 3 | *.dylib 4 | *.dSYM 5 | -------------------------------------------------------------------------------- /test-suite/java/docker/build_and_run_tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Build and run djinni tests. Intended to be run 4 | # from inside a Docker container 5 | 6 | set -e 7 | set -x 8 | 9 | cd /opt/djinni/test-suite/java 10 | ant -v clean compile test 11 | ant -v jar run-jar 12 | ant clean 13 | 14 | -------------------------------------------------------------------------------- /test-suite/java/docker/debian_jessie/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | 3 | # Use Java 8 backport 4 | RUN echo "deb http://http.debian.net/debian jessie-backports main" >> /etc/apt/sources.list 5 | 6 | RUN apt-get update 7 | 8 | RUN apt-get -y install build-essential clang llvm cmake 9 | RUN apt-get install -y -t jessie-backports ca-certificates-java 10 | RUN apt-get install -y openjdk-8-jdk ant 11 | 12 | # Select Java 8 13 | RUN update-java-alternatives -s java-1.8.0-openjdk-amd64 14 | RUN rm -f /usr/lib/jvm/default-java 15 | RUN ln -s /usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/default-java 16 | 17 | ENV CXX clang++ 18 | 19 | VOLUME /opt/djinni 20 | CMD /opt/djinni/test-suite/java/docker/build_and_run_tests.sh 21 | 22 | -------------------------------------------------------------------------------- /test-suite/java/docker/fedora_24/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM fedora:24 2 | 3 | # Get Java 8 (64-bit) 4 | RUN dnf install -y java-1.8.0-openjdk-devel 5 | 6 | # Get other build utils 7 | RUN dnf install -y cmake wget tar make gcc-c++ 8 | 9 | # Select Java 8 10 | RUN echo 1 | update-alternatives --config java 11 | RUN echo 1 | update-alternatives --config javac 12 | 13 | # Get modern ant 14 | RUN yum install -y ant 15 | ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk 16 | 17 | VOLUME /opt/djinni 18 | CMD /opt/djinni/test-suite/java/docker/build_and_run_tests.sh 19 | 20 | -------------------------------------------------------------------------------- /test-suite/java/docker/ubuntu_utopic/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:utopic-20150625 2 | 3 | RUN apt-get update 4 | RUN apt-get -y install build-essential clang cmake 5 | 6 | RUN apt-get install -y openjdk-8-jdk ant 7 | 8 | ENV CXX clang++ 9 | 10 | # Select Java 8 11 | RUN update-java-alternatives -s java-1.8.0-openjdk-amd64 12 | RUN rm /usr/lib/jvm/default-java 13 | RUN ln -s /usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/default-java 14 | 15 | VOLUME /opt/djinni 16 | CMD /opt/djinni/test-suite/java/docker/build_and_run_tests.sh 17 | 18 | --------------------------------------------------------------------------------