changeset 363:3b0545d4d479

Fixed enums in designated interfaces
author Max Samukha <maxter@maxter.com>
date Thu, 10 Jun 2010 00:57:32 +0300
parents bcbfffef4f9e
children a084e2df3776
files CMakeLists.txt generator/dgenerator.cpp
diffstat 2 files changed, 18 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Wed Jun 09 16:37:24 2010 +0300
+++ b/CMakeLists.txt	Thu Jun 10 00:57:32 2010 +0300
@@ -138,13 +138,11 @@
 ## CPack.
 ##--------------------------------------------
 set(CPACK_PACKAGE_VERSION_PATCH 1)
-set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "QtD is a D binding to the Qt application and UI framework.
-This package installs binding and static library for qt port on D programming language.
-")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "QtD is a D binding to the Qt application and UI framework.")
 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/changelog.txt")
 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/license.txt")
 set(CPACK_PACKAGE_VENDOR "QtD team")
-set(CPACK_PACKAGE_CONTACT "e@mail.ru" )
+set(CPACK_PACKAGE_CONTACT "e@mail.ru")
 SET(CPACK_PACKAGE_VERSION "0.1")
 set(CPACK_PACKAGE_INSTALL_DIRECTORY "qtd ${CPACK_PACKAGE_VERSION}")
 set(CPACK_PACKAGE_FILE_NAME "qtd-${CPACK_PACKAGE_VERSION}")
@@ -428,7 +426,7 @@
         get_filename_component(name ${d_source} NAME_WE)
         regex_safe_string(cbd_safe_tmp ${CMAKE_CURRENT_BINARY_DIR})
         regex_safe_string(csd_safe_tmp ${CMAKE_CURRENT_SOURCE_DIR})
-        regex_safe_string(ver_safe_tmp ${CMAKE_CURRENT_SOURCE_DIR}/qt/d${D_VERSION})
+        regex_safe_string(ver_safe_tmp ${CMAKE_CURRENT_SOURCE_DIR}/d${D_VERSION})
         set(regexp_str_tmp "(${ver_safe_tmp}/|${cbd_safe_tmp}/|${csd_safe_tmp}/|)(.+)")
         string(REGEX REPLACE ${regexp_str_tmp} "\\2" ins_path "${path}")
         install(FILES ${d_source} DESTINATION include/d/${ins_path} COMPONENT qtd RENAME ${name}.di)
@@ -442,9 +440,12 @@
         set(cpp_method STATIC)
     endif(CPP_SHARED)
     add_library(cpp_${package} ${cpp_method} ${cpp_sources})
-    set_property(TARGET cpp_${package} PROPERTY RUNTIME_OUTPUT_DIRECTORY lib)
-    set_property(TARGET cpp_${package} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles)
-    set_property(TARGET cpp_${package} PROPERTY COMPILE_DEFINITIONS QTD_${package_upper})
+    set_target_properties(cpp_${package} PROPERTIES
+        RUNTIME_OUTPUT_DIRECTORY lib
+        ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles
+        LINK_FLAGS -Wl,-enable-auto-import
+        COMPILE_DEFINITIONS QTD_${package_upper}
+    )
 
     set(link_cpp ${link_cpp} ${QT_QT${package_upper}_LIBRARY})
     if(CPP_SHARED)
@@ -524,7 +525,7 @@
     endforeach(depend ${required})
     add_dependencies(allpackages ${package})
 
-    ## TODO: Do we need generating of *.di files?
+    ## TODO: Do we need to generate *.di files?
     if(GENERATE_DI_FILES)
         regexseafestring(cbd_safe ${CMAKE_BINARY_DIR})
         regexseafestring(csd_safe ${CMAKE_SOURCE_DIR})
--- a/generator/dgenerator.cpp	Wed Jun 09 16:37:24 2010 +0300
+++ b/generator/dgenerator.cpp	Thu Jun 10 00:57:32 2010 +0300
@@ -148,7 +148,14 @@
             if (option & EnumAsInts)
                 s = "int";
             else
-                s = d_type->typeEntry()->qualifiedTargetLangName();
+            {
+                // Hack around forward-referencing the implementing class in an interface.
+                if (context->typeEntry()->designatedInterface() && d_type->typeEntry()->javaQualifier() == context->name())
+                    s = d_type->name();
+                else
+                    s = d_type->typeEntry()->qualifiedTargetLangName();
+            }
+
         }
     } else if (d_type->isFlags()) { // qtd2 begin
         if (d_type->isFlags() && ((FlagsTypeEntry *)d_type->typeEntry())->forceInteger()) {