THRIFT-2835 Add possibility to distribute generators separately from thrift core, and load them dynamically
Deploy headers needed to build plugins
Restructure source tree to match lib and to make sure headers are
deployed to INCLUDE_DIR/thrift.
This closes #368 and closes #1039
diff --git a/.gitignore b/.gitignore
index 94e8519..9a0e275 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,28 +48,28 @@
/autoscan.log
/autoscan-*.log
/compiler/cpp/test/plugin/t_cpp_generator.cc
-/compiler/cpp/src/plugin/plugin_constants.cpp
-/compiler/cpp/src/plugin/plugin_constants.h
-/compiler/cpp/src/plugin/plugin_types.cpp
-/compiler/cpp/src/plugin/plugin_types.h
+/compiler/cpp/src/thrift/plugin/plugin_constants.cpp
+/compiler/cpp/src/thrift/plugin/plugin_constants.h
+/compiler/cpp/src/thrift/plugin/plugin_types.cpp
+/compiler/cpp/src/thrift/plugin/plugin_types.h
/compiler/cpp/test/*test
/compiler/cpp/test/thrift-gen-*
-/compiler/cpp/src/thrift-bootstrap
-/compiler/cpp/src/plugin/gen.stamp
+/compiler/cpp/src/thrift/thrift-bootstrap
+/compiler/cpp/src/thrift/plugin/gen.stamp
/compiler/cpp/Debug
/compiler/cpp/Release
-/compiler/cpp/src/libparse.a
-/compiler/cpp/src/thriftl.cc
-/compiler/cpp/src/thrifty.cc
-/compiler/cpp/src/thrifty.hh
-/compiler/cpp/src/windows/version.h
+/compiler/cpp/src/thrift/libparse.a
+/compiler/cpp/src/thrift/thriftl.cc
+/compiler/cpp/src/thrift/thrifty.cc
+/compiler/cpp/src/thrift/thrifty.hh
+/compiler/cpp/src/thrift/windows/version.h
/compiler/cpp/thrift
/compiler/cpp/thriftl.cc
/compiler/cpp/thrifty.cc
/compiler/cpp/lex.yythriftl.cc
/compiler/cpp/thrifty.h
/compiler/cpp/thrifty.hh
-/compiler/cpp/src/version.h
+/compiler/cpp/src/thrift/version.h
/config.*
/configure
/configure.lineno
diff --git a/compiler/cpp/CMakeLists.txt b/compiler/cpp/CMakeLists.txt
index 48cadbc..2d9529a 100644
--- a/compiler/cpp/CMakeLists.txt
+++ b/compiler/cpp/CMakeLists.txt
@@ -19,52 +19,52 @@
# Windows has a different header
if(MSVC)
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/windows/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/thrift/windows/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/thrift/version.h)
else()
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/thrift/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/thrift/version.h)
endif()
find_package(FLEX REQUIRED)
find_package(BISON REQUIRED)
# Create flex and bison files and build the lib parse static library
-BISON_TARGET(thrifty ${CMAKE_CURRENT_SOURCE_DIR}/src/thrifty.yy ${CMAKE_CURRENT_BINARY_DIR}/thrifty.cc)
-FLEX_TARGET(thriftl ${CMAKE_CURRENT_SOURCE_DIR}/src/thriftl.ll ${CMAKE_CURRENT_BINARY_DIR}/thriftl.cc)
+BISON_TARGET(thrifty ${CMAKE_CURRENT_SOURCE_DIR}/src/thrift/thrifty.yy ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.cc)
+FLEX_TARGET(thriftl ${CMAKE_CURRENT_SOURCE_DIR}/src/thrift/thriftl.ll ${CMAKE_CURRENT_BINARY_DIR}/thrift/thriftl.cc)
ADD_FLEX_BISON_DEPENDENCY(thriftl thrifty)
# HACK: Work around the fact that bison crates a .hh file but we need a .h file
-add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/thrifty.h
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/thrifty.hh ${CMAKE_CURRENT_BINARY_DIR}/thrifty.h
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/thrifty.hh
+add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.hh ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.h
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.hh
)
set(libparse_SOURCES
- ${CMAKE_CURRENT_BINARY_DIR}/thrifty.cc
- ${CMAKE_CURRENT_BINARY_DIR}/thriftl.cc
- ${CMAKE_CURRENT_BINARY_DIR}/thrifty.h
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.cc
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/thriftl.cc
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.h
)
add_library(libparse STATIC ${libparse_SOURCES})
# Create the thrift compiler
set(compiler_core
- src/common.cc
- src/generate/t_generator.cc
- src/parse/t_typedef.cc
- src/parse/parse.cc
- ${CMAKE_CURRENT_BINARY_DIR}/version.h
+ src/thrift/common.cc
+ src/thrift/generate/t_generator.cc
+ src/thrift/parse/t_typedef.cc
+ src/thrift/parse/parse.cc
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/version.h
)
set(thrift-compiler_SOURCES
- src/main.cc
- src/audit/t_audit.cpp
+ src/thrift/main.cc
+ src/thrift/audit/t_audit.cpp
)
# This macro adds an option THRIFT_COMPILER_${NAME}
# that allows enabling or disabling certain languages
macro(THRIFT_ADD_COMPILER name description initial)
string(TOUPPER "THRIFT_COMPILER_${name}" enabler)
- set(src "src/generate/t_${name}_generator.cc")
+ set(src "src/thrift/generate/t_${name}_generator.cc")
option(${enabler} ${description} ${initial})
if(${enabler})
list(APPEND thrift-compiler_SOURCES ${src})
@@ -112,25 +112,25 @@
if(${WITH_PLUGIN})
add_executable(thrift-bootstrap ${compiler_core}
- src/main.cc
- src/audit/t_audit.cpp
- src/generate/t_cpp_generator.cc
+ src/thrift/main.cc
+ src/thrift/audit/t_audit.cpp
+ src/thrift/generate/t_cpp_generator.cc
)
target_link_libraries(thrift-bootstrap libparse)
set(PLUGIN_GEN_SOURCES
- ${CMAKE_CURRENT_BINARY_DIR}/plugin/plugin_types.h
- ${CMAKE_CURRENT_BINARY_DIR}/plugin/plugin_types.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/plugin/plugin_constants.h
- ${CMAKE_CURRENT_BINARY_DIR}/plugin/plugin_constants.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/plugin/plugin_types.h
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/plugin/plugin_types.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/plugin/plugin_constants.h
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/plugin/plugin_constants.cpp
)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/plugin)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/thrift/plugin)
add_custom_command(OUTPUT ${PLUGIN_GEN_SOURCES}
- DEPENDS thrift-bootstrap src/plugin/plugin.thrift
+ DEPENDS thrift-bootstrap src/thrift/plugin/plugin.thrift
COMMAND thrift-bootstrap -gen cpp
- -out ${CMAKE_CURRENT_BINARY_DIR}/plugin
- ${CMAKE_CURRENT_SOURCE_DIR}/src/plugin/plugin.thrift
+ -out ${CMAKE_CURRENT_BINARY_DIR}/thrift/plugin
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/thrift/plugin/plugin.thrift
)
include_directories(../../lib/cpp/src)
@@ -139,9 +139,9 @@
ADD_LIBRARY_THRIFT(thriftc
${compiler_core}
${PLUGIN_GEN_SOURCES}
- src/logging.cc
- src/plugin/plugin_output.cc
- src/plugin/plugin.cc
+ src/thrift/logging.cc
+ src/thrift/plugin/plugin_output.cc
+ src/thrift/plugin/plugin.cc
)
TARGET_INCLUDE_DIRECTORIES_THRIFT(thriftc PUBLIC ${Boost_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES_THRIFT_AGAINST_THRIFT_LIBRARY(thriftc thrift PUBLIC)
@@ -155,6 +155,63 @@
install(TARGETS thrift-compiler DESTINATION "${BIN_INSTALL_DIR}")
+if(${WITH_PLUGIN})
+ # Install the headers
+ install(FILES
+ "src/thrift/common.h"
+ "src/thrift/globals.h"
+ "src/thrift/logging.h"
+ "src/thrift/main.h"
+ "src/thrift/platform.h"
+ DESTINATION "${INCLUDE_INSTALL_DIR}/thrift")
+ install(FILES
+ "src/thrift/audit/t_audit.h"
+ DESTINATION "${INCLUDE_INSTALL_DIR}/thrift/audit")
+ install(FILES
+ "src/thrift/generate/t_generator.h"
+ "src/thrift/generate/t_generator_registry.h"
+ "src/thrift/generate/t_html_generator.h"
+ "src/thrift/generate/t_oop_generator.h"
+ DESTINATION "${INCLUDE_INSTALL_DIR}/thrift/generate")
+ install(FILES
+ "src/thrift/parse/t_base_type.h"
+ "src/thrift/parse/t_const.h"
+ "src/thrift/parse/t_const_value.h"
+ "src/thrift/parse/t_container.h"
+ "src/thrift/parse/t_doc.h"
+ "src/thrift/parse/t_enum.h"
+ "src/thrift/parse/t_enum_value.h"
+ "src/thrift/parse/t_field.h"
+ "src/thrift/parse/t_function.h"
+ "src/thrift/parse/t_list.h"
+ "src/thrift/parse/t_map.h"
+ "src/thrift/parse/t_program.h"
+ "src/thrift/parse/t_scope.h"
+ "src/thrift/parse/t_service.h"
+ "src/thrift/parse/t_set.h"
+ "src/thrift/parse/t_struct.h"
+ "src/thrift/parse/t_typedef.h"
+ "src/thrift/parse/t_type.h"
+ DESTINATION "${INCLUDE_INSTALL_DIR}/thrift/parse")
+ install(FILES
+ "src/thrift/plugin/plugin.h"
+ "src/thrift/plugin/plugin_output.h"
+ "src/thrift/plugin/type_util.h"
+ DESTINATION "${INCLUDE_INSTALL_DIR}/thrift/plugin")
+if(MSVC)
+ install(FILES
+ "src/thrift/windows/config.h"
+ DESTINATION "${INCLUDE_INSTALL_DIR}/thrift/windows")
+ install(FILES
+ "${CMAKE_BINARY_DIR}/compiler/cpp/thrift/windows/version.h"
+ DESTINATION "${INCLUDE_INSTALL_DIR}/thrift/windows")
+else()
+ install(FILES
+ "${CMAKE_BINARY_DIR}/compiler/cpp/thrift/version.h"
+ DESTINATION "${INCLUDE_INSTALL_DIR}/thrift")
+endif()
+endif()
+
if(BUILD_TESTING)
add_subdirectory(test)
endif()
diff --git a/compiler/cpp/Makefile.am b/compiler/cpp/Makefile.am
index f7a7171..9d830d7 100644
--- a/compiler/cpp/Makefile.am
+++ b/compiler/cpp/Makefile.am
@@ -23,12 +23,12 @@
AUTOMAKE_OPTIONS = subdir-objects
-# Note on why we have src and src/plugin directories:
+# Note on why we have src/thrift and src/thrift/plugin directories:
# Since Automake supports only one set of BUILT_SOURCES per file and does not allow
# SUBDIRS built before BUILT_SOURCES, we end up separate Makefile.am for each source
# code generation, i.e. lex-yacc and Thrift, to achieve stable parallel make.
-SUBDIRS = src src/plugin .
+SUBDIRS = src src/thrift/plugin .
if WITH_TESTS
SUBDIRS += test
endif
@@ -37,82 +37,82 @@
thrift_OBJDIR = obj
-plugin_gen = src/plugin/plugin_types.h \
- src/plugin/plugin_types.cpp \
- src/plugin/plugin_constants.h \
- src/plugin/plugin_constants.cpp
+plugin_gen = src/thrift/plugin/plugin_types.h \
+ src/thrift/plugin/plugin_types.cpp \
+ src/thrift/plugin/plugin_constants.h \
+ src/thrift/plugin/plugin_constants.cpp
-compiler_core = src/common.h \
- src/common.cc \
- src/generate/t_generator.cc \
- src/generate/t_generator_registry.h \
- src/globals.h \
- src/platform.h \
- src/logging.h \
- src/parse/t_doc.h \
- src/parse/t_type.h \
- src/parse/t_base_type.h \
- src/parse/t_enum.h \
- src/parse/t_enum_value.h \
- src/parse/t_typedef.h \
- src/parse/t_typedef.cc \
- src/parse/t_container.h \
- src/parse/t_list.h \
- src/parse/t_set.h \
- src/parse/t_map.h \
- src/parse/t_struct.h \
- src/parse/t_field.h \
- src/parse/t_service.h \
- src/parse/t_function.h \
- src/parse/t_program.h \
- src/parse/t_scope.h \
- src/parse/t_const.h \
- src/parse/t_const_value.h \
- src/parse/parse.cc \
- src/generate/t_generator.h \
- src/generate/t_oop_generator.h \
- src/generate/t_html_generator.h \
- src/windows/config.h \
- src/windows/version.h
+compiler_core = src/thrift/common.h \
+ src/thrift/common.cc \
+ src/thrift/generate/t_generator.cc \
+ src/thrift/generate/t_generator_registry.h \
+ src/thrift/globals.h \
+ src/thrift/platform.h \
+ src/thrift/logging.h \
+ src/thrift/parse/t_doc.h \
+ src/thrift/parse/t_type.h \
+ src/thrift/parse/t_base_type.h \
+ src/thrift/parse/t_enum.h \
+ src/thrift/parse/t_enum_value.h \
+ src/thrift/parse/t_typedef.h \
+ src/thrift/parse/t_typedef.cc \
+ src/thrift/parse/t_container.h \
+ src/thrift/parse/t_list.h \
+ src/thrift/parse/t_set.h \
+ src/thrift/parse/t_map.h \
+ src/thrift/parse/t_struct.h \
+ src/thrift/parse/t_field.h \
+ src/thrift/parse/t_service.h \
+ src/thrift/parse/t_function.h \
+ src/thrift/parse/t_program.h \
+ src/thrift/parse/t_scope.h \
+ src/thrift/parse/t_const.h \
+ src/thrift/parse/t_const_value.h \
+ src/thrift/parse/parse.cc \
+ src/thrift/generate/t_generator.h \
+ src/thrift/generate/t_oop_generator.h \
+ src/thrift/generate/t_html_generator.h \
+ src/thrift/windows/config.h \
+ src/thrift/windows/version.h
-thrift_SOURCES = src/main.h \
- src/main.cc \
- src/audit/t_audit.cpp \
- src/audit/t_audit.h
+thrift_SOURCES = src/thrift/main.h \
+ src/thrift/main.cc \
+ src/thrift/audit/t_audit.cpp \
+ src/thrift/audit/t_audit.h
# Specific client generator source
-thrift_SOURCES += src/generate/t_c_glib_generator.cc \
- src/generate/t_cpp_generator.cc \
- src/generate/t_java_generator.cc \
- src/generate/t_json_generator.cc \
- src/generate/t_as3_generator.cc \
- src/generate/t_dart_generator.cc \
- src/generate/t_haxe_generator.cc \
- src/generate/t_csharp_generator.cc \
- src/generate/t_py_generator.cc \
- src/generate/t_rb_generator.cc \
- src/generate/t_perl_generator.cc \
- src/generate/t_php_generator.cc \
- src/generate/t_erl_generator.cc \
- src/generate/t_cocoa_generator.cc \
- src/generate/t_swift_generator.cc \
- src/generate/t_st_generator.cc \
- src/generate/t_ocaml_generator.cc \
- src/generate/t_hs_generator.cc \
- src/generate/t_xsd_generator.cc \
- src/generate/t_xml_generator.cc \
- src/generate/t_html_generator.cc \
- src/generate/t_js_generator.cc \
- src/generate/t_javame_generator.cc \
- src/generate/t_delphi_generator.cc \
- src/generate/t_go_generator.cc \
- src/generate/t_gv_generator.cc \
- src/generate/t_d_generator.cc \
- src/generate/t_lua_generator.cc
+thrift_SOURCES += src/thrift/generate/t_c_glib_generator.cc \
+ src/thrift/generate/t_cpp_generator.cc \
+ src/thrift/generate/t_java_generator.cc \
+ src/thrift/generate/t_json_generator.cc \
+ src/thrift/generate/t_as3_generator.cc \
+ src/thrift/generate/t_dart_generator.cc \
+ src/thrift/generate/t_haxe_generator.cc \
+ src/thrift/generate/t_csharp_generator.cc \
+ src/thrift/generate/t_py_generator.cc \
+ src/thrift/generate/t_rb_generator.cc \
+ src/thrift/generate/t_perl_generator.cc \
+ src/thrift/generate/t_php_generator.cc \
+ src/thrift/generate/t_erl_generator.cc \
+ src/thrift/generate/t_cocoa_generator.cc \
+ src/thrift/generate/t_swift_generator.cc \
+ src/thrift/generate/t_st_generator.cc \
+ src/thrift/generate/t_ocaml_generator.cc \
+ src/thrift/generate/t_hs_generator.cc \
+ src/thrift/generate/t_xsd_generator.cc \
+ src/thrift/generate/t_xml_generator.cc \
+ src/thrift/generate/t_html_generator.cc \
+ src/thrift/generate/t_js_generator.cc \
+ src/thrift/generate/t_javame_generator.cc \
+ src/thrift/generate/t_delphi_generator.cc \
+ src/thrift/generate/t_go_generator.cc \
+ src/thrift/generate/t_gv_generator.cc \
+ src/thrift/generate/t_d_generator.cc \
+ src/thrift/generate/t_lua_generator.cc
thrift_CPPFLAGS = -I$(srcdir)/src
thrift_CXXFLAGS = -Wall -Wextra -pedantic
-thrift_LDADD = @LEXLIB@ src/libparse.a
+thrift_LDADD = @LEXLIB@ src/thrift/libparse.a
if !WITH_PLUGIN
thrift_SOURCES += $(compiler_core)
@@ -125,18 +125,64 @@
nodist_libthriftc_la_SOURCES = $(plugin_gen)
libthriftc_la_SOURCES = $(compiler_core) \
- src/plugin/type_util.h \
- src/plugin/plugin.h \
- src/plugin/plugin.cc \
- src/plugin/plugin_output.h \
- src/plugin/plugin_output.cc \
- src/plugin/plugin.thrift \
- src/logging.cc
+ src/thrift/plugin/type_util.h \
+ src/thrift/plugin/plugin.h \
+ src/thrift/plugin/plugin.cc \
+ src/thrift/plugin/plugin_output.h \
+ src/thrift/plugin/plugin_output.cc \
+ src/thrift/plugin/plugin.thrift \
+ src/thrift/logging.cc
libthriftc_la_CPPFLAGS = -I$(srcdir)/src -Isrc -I$(top_builddir)/lib/cpp/src -DTHRIFT_ENABLE_PLUGIN=1
libthriftc_la_CXXFLAGS = -Wall -Wextra -pedantic
libthriftc_la_LIBADD = $(top_builddir)/lib/cpp/libthrift.la
+
+include_thriftdir = $(includedir)/thrift
+include_thrift_HEADERS = src/thrift/common.h \
+ src/thrift/globals.h \
+ src/thrift/logging.h \
+ src/thrift/main.h \
+ src/thrift/platform.h \
+ src/thrift/version.h
+
+include_auditdir = $(include_thriftdir)/windows
+include_audit_HEADERS = src/thrift/audit/t_audit.h
+
+include_generatedir = $(include_thriftdir)/generate
+include_generate_HEADERS = src/thrift/generate/t_generator.h \
+ src/thrift/generate/t_generator_registry.h \
+ src/thrift/generate/t_oop_generator.h \
+ src/thrift/generate/t_html_generator.h
+
+include_parsedir = $(include_thriftdir)/parse
+include_parse_HEADERS = src/thrift/parse/t_service.h \
+ src/thrift/parse/t_program.h \
+ src/thrift/parse/t_field.h \
+ src/thrift/parse/t_scope.h \
+ src/thrift/parse/t_typedef.h \
+ src/thrift/parse/t_set.h \
+ src/thrift/parse/t_const_value.h \
+ src/thrift/parse/t_enum_value.h \
+ src/thrift/parse/t_const.h \
+ src/thrift/parse/t_list.h \
+ src/thrift/parse/t_map.h \
+ src/thrift/parse/t_container.h \
+ src/thrift/parse/t_base_type.h \
+ src/thrift/parse/t_enum.h \
+ src/thrift/parse/t_function.h \
+ src/thrift/parse/t_type.h \
+ src/thrift/parse/t_doc.h \
+ src/thrift/parse/t_struct.h
+
+include_plugindir = $(include_thriftdir)/plugin
+include_plugin_HEADERS = src/thrift/plugin/plugin.h \
+ src/thrift/plugin/type_util.h \
+ src/thrift/plugin/plugin_output.h
+
+include_windowsdir = $(include_thriftdir)/windows
+include_windows_HEADERS = src/thrift/windows/version.h \
+ src/thrift/windows/config.h
endif
WINDOWS_DIST = \
@@ -153,7 +199,7 @@
clean-local:
$(RM) version.h windows/version.h $(plugin_gen)
-src/main.cc: src/version.h
+src/thrift/main.cc: src/thrift/version.h
style-local:
- $(CPPSTYLE_CMD)
+ $(CPPSTYLE_CMD)
diff --git a/compiler/cpp/src/Makefile.am b/compiler/cpp/src/Makefile.am
index e2fae70..f1863d5 100644
--- a/compiler/cpp/src/Makefile.am
+++ b/compiler/cpp/src/Makefile.am
@@ -25,63 +25,63 @@
AM_YFLAGS = -d
-BUILT_SOURCES = thrifty.cc
+BUILT_SOURCES = thrift/thrifty.cc
-noinst_LIBRARIES = libparse.a
+noinst_LIBRARIES = thrift/libparse.a
-libparse_a_CPPFLAGS = -I$(srcdir)
-libparse_a_CXXFLAGS = -Wall -Wno-sign-compare -Wno-unused
+thrift_libparse_a_CPPFLAGS = -I$(srcdir)
+thrift_libparse_a_CXXFLAGS = -Wall -Wno-sign-compare -Wno-unused
-libparse_a_SOURCES = thrifty.yy \
- thriftl.ll
+thrift_libparse_a_SOURCES = thrift/thrifty.yy \
+ thrift/thriftl.ll
clean-local:
- $(RM) thriftl.cc thrifty.cc thrifty.h thrifty.hh
+ $(RM) thrift/thriftl.cc thrift/thrifty.cc thrift/thrifty.h thrift/thrifty.hh
if WITH_PLUGIN
-noinst_PROGRAMS = thrift-bootstrap
+noinst_PROGRAMS = thrift/thrift-bootstrap
-thrift_bootstrap_SOURCES = \
- common.h \
- common.cc \
- audit/t_audit.h \
- audit/t_audit.cpp \
- generate/t_generator.cc \
- generate/t_generator_registry.h \
- globals.h \
- platform.h \
- logging.h \
- parse/t_doc.h \
- parse/t_type.h \
- parse/t_base_type.h \
- parse/t_enum.h \
- parse/t_enum_value.h \
- parse/t_typedef.h \
- parse/t_typedef.cc \
- parse/t_container.h \
- parse/t_list.h \
- parse/t_set.h \
- parse/t_map.h \
- parse/t_struct.h \
- parse/t_field.h \
- parse/t_service.h \
- parse/t_function.h \
- parse/t_program.h \
- parse/t_scope.h \
- parse/t_const.h \
- parse/t_const_value.h \
- parse/parse.cc \
- generate/t_generator.h \
- generate/t_oop_generator.h \
- generate/t_html_generator.h \
- windows/config.h \
- windows/version.h \
- generate/t_cpp_generator.cc \
- main.h \
- main.cc
+thrift_thrift_bootstrap_SOURCES = \
+ thrift/common.h \
+ thrift/common.cc \
+ thrift/audit/t_audit.h \
+ thrift/audit/t_audit.cpp \
+ thrift/generate/t_generator.cc \
+ thrift/generate/t_generator_registry.h \
+ thrift/globals.h \
+ thrift/platform.h \
+ thrift/logging.h \
+ thrift/parse/t_doc.h \
+ thrift/parse/t_type.h \
+ thrift/parse/t_base_type.h \
+ thrift/parse/t_enum.h \
+ thrift/parse/t_enum_value.h \
+ thrift/parse/t_typedef.h \
+ thrift/parse/t_typedef.cc \
+ thrift/parse/t_container.h \
+ thrift/parse/t_list.h \
+ thrift/parse/t_set.h \
+ thrift/parse/t_map.h \
+ thrift/parse/t_struct.h \
+ thrift/parse/t_field.h \
+ thrift/parse/t_service.h \
+ thrift/parse/t_function.h \
+ thrift/parse/t_program.h \
+ thrift/parse/t_scope.h \
+ thrift/parse/t_const.h \
+ thrift/parse/t_const_value.h \
+ thrift/parse/parse.cc \
+ thrift/generate/t_generator.h \
+ thrift/generate/t_oop_generator.h \
+ thrift/generate/t_html_generator.h \
+ thrift/windows/config.h \
+ thrift/windows/version.h \
+ thrift/generate/t_cpp_generator.cc \
+ thrift/main.h \
+ thrift/main.cc
main.cc: version.h
-thrift_bootstrap_CXXFLAGS = -Wall -Wextra -pedantic
-thrift_bootstrap_LDADD = @LEXLIB@ libparse.a
+thrift_thrift_bootstrap_CXXFLAGS = -Wall -Wextra -pedantic
+thrift_thrift_bootstrap_LDADD = @LEXLIB@ thrift/libparse.a
endif
diff --git a/compiler/cpp/src/audit/t_audit.cpp b/compiler/cpp/src/thrift/audit/t_audit.cpp
similarity index 97%
rename from compiler/cpp/src/audit/t_audit.cpp
rename to compiler/cpp/src/thrift/audit/t_audit.cpp
index afcbd5e..1386f3b 100644
--- a/compiler/cpp/src/audit/t_audit.cpp
+++ b/compiler/cpp/src/thrift/audit/t_audit.cpp
@@ -12,16 +12,16 @@
#include <limits.h>
// Careful: must include globals first for extern definitions
-#include "globals.h"
+#include "thrift/globals.h"
-#include "parse/t_program.h"
-#include "parse/t_scope.h"
-#include "parse/t_const.h"
-#include "parse/t_field.h"
+#include "thrift/parse/t_program.h"
+#include "thrift/parse/t_scope.h"
+#include "thrift/parse/t_const.h"
+#include "thrift/parse/t_field.h"
-#include "version.h"
+#include "thrift/version.h"
-#include "t_audit.h"
+#include "thrift/audit/t_audit.h"
extern int g_warn;
extern std::string g_curpath;
@@ -85,7 +85,7 @@
if(enumName != newEnumValue->get_name())
{
thrift_audit_warning(1, "Name of the value %d changed in enum %s\n", enumValue, oldEnum->get_name().c_str());
- }
+ }
}
else
{
@@ -125,7 +125,7 @@
bool compare_type(t_type* newType, t_type* oldType)
{
//Comparing names of two types will work when the newType and oldType are basic types or structs or enums.
- //However, when they are containers, get_name() returns empty for which we have to compare the type of
+ //However, when they are containers, get_name() returns empty for which we have to compare the type of
//their elements as well.
if((newType->get_name()).empty() && (oldType->get_name()).empty())
{
@@ -150,7 +150,7 @@
{
t_type* newElementType = ((t_set*)newType)->get_elem_type();
t_type* oldElementType = ((t_set*)oldType)->get_elem_type();
- return compare_type(newElementType, oldElementType);
+ return compare_type(newElementType, oldElementType);
}
else
{
@@ -170,7 +170,7 @@
bool compare_pair(std::pair<t_const_value*, t_const_value*> newMapPair, std::pair<t_const_value*, t_const_value*> oldMapPair)
{
return compare_defaults(newMapPair.first, oldMapPair.first) && compare_defaults(newMapPair.second, oldMapPair.second);
-}
+}
// This function returns 'true' if the default values are same. Returns false if they are different.
bool compare_defaults(t_const_value* newStructDefault, t_const_value* oldStructDefault)
@@ -259,7 +259,7 @@
std::vector<t_field*>::const_iterator newStructMemberIt = newStructMembersInIdOrder.begin();
// Since we have the struct members in their ID order, comparing their IDs can be done by traversing the two member
- // lists together.
+ // lists together.
while(!(oldStructMemberIt == oldStructMembersInIdOrder.end() && newStructMemberIt == newStructMembersInIdOrder.end()))
{
if(newStructMemberIt == newStructMembersInIdOrder.end() && oldStructMemberIt != oldStructMembersInIdOrder.end())
@@ -462,5 +462,3 @@
}
}
}
-
-
diff --git a/compiler/cpp/src/audit/t_audit.h b/compiler/cpp/src/thrift/audit/t_audit.h
similarity index 100%
rename from compiler/cpp/src/audit/t_audit.h
rename to compiler/cpp/src/thrift/audit/t_audit.h
diff --git a/compiler/cpp/src/common.cc b/compiler/cpp/src/thrift/common.cc
similarity index 96%
rename from compiler/cpp/src/common.cc
rename to compiler/cpp/src/thrift/common.cc
index 6e11bb2..3a2b9d3 100644
--- a/compiler/cpp/src/common.cc
+++ b/compiler/cpp/src/thrift/common.cc
@@ -17,8 +17,8 @@
* under the License.
*/
-#include "common.h"
-#include "parse/t_base_type.h"
+#include "thrift/common.h"
+#include "thrift/parse/t_base_type.h"
t_type* g_type_void;
t_type* g_type_string;
diff --git a/compiler/cpp/src/common.h b/compiler/cpp/src/thrift/common.h
similarity index 97%
rename from compiler/cpp/src/common.h
rename to compiler/cpp/src/thrift/common.h
index ab7c423..6948846 100644
--- a/compiler/cpp/src/common.h
+++ b/compiler/cpp/src/thrift/common.h
@@ -20,7 +20,7 @@
#ifndef T_COMMON_H
#define T_COMMON_H
-#include "parse/t_type.h"
+#include "thrift/parse/t_type.h"
/**
* Global types for the parser to be able to reference
diff --git a/compiler/cpp/src/generate/t_as3_generator.cc b/compiler/cpp/src/thrift/generate/t_as3_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_as3_generator.cc
rename to compiler/cpp/src/thrift/generate/t_as3_generator.cc
index 67beaf6..5ae3f91 100644
--- a/compiler/cpp/src/generate/t_as3_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_as3_generator.cc
@@ -27,8 +27,8 @@
#include <sys/stat.h>
#include <stdexcept>
-#include "platform.h"
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -57,7 +57,7 @@
if( iter->first.compare("bindable") == 0) {
bindable_ = true;
} else {
- throw "unknown option as3:" + iter->first;
+ throw "unknown option as3:" + iter->first;
}
}
diff --git a/compiler/cpp/src/generate/t_c_glib_generator.cc b/compiler/cpp/src/thrift/generate/t_c_glib_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_c_glib_generator.cc
rename to compiler/cpp/src/thrift/generate/t_c_glib_generator.cc
index 3a3fe54..7d4e4f0 100644
--- a/compiler/cpp/src/generate/t_c_glib_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_c_glib_generator.cc
@@ -29,8 +29,8 @@
#include <ctype.h>
-#include "platform.h"
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -65,7 +65,7 @@
/* no options yet */
for( iter = parsed_options.begin(); iter != parsed_options.end(); ++iter) {
- throw "unknown option c_glib:" + iter->first;
+ throw "unknown option c_glib:" + iter->first;
}
/* set the namespace */
diff --git a/compiler/cpp/src/generate/t_cocoa_generator.cc b/compiler/cpp/src/thrift/generate/t_cocoa_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_cocoa_generator.cc
rename to compiler/cpp/src/thrift/generate/t_cocoa_generator.cc
index 794fb44..eba94c0 100644
--- a/compiler/cpp/src/generate/t_cocoa_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_cocoa_generator.cc
@@ -25,8 +25,8 @@
#include <stdlib.h>
#include <sys/stat.h>
#include <sstream>
-#include "t_oop_generator.h"
-#include "platform.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ostream;
@@ -72,7 +72,7 @@
} else if( iter->first.compare("pods") == 0) {
pods_ = true;
} else {
- throw "unknown option cocoa:" + iter->first;
+ throw "unknown option cocoa:" + iter->first;
}
}
@@ -292,7 +292,7 @@
f_impl_ << cocoa_imports() << cocoa_thrift_imports() << "#import \"" << f_header_name << "\""
<< endl << endl;
-
+
error_constant_ = 60000;
}
@@ -335,9 +335,9 @@
}
includes << endl;
}
-
+
includes << endl;
-
+
if (promise_kit_) {
includes << "#import ";
if (pods_) {
@@ -356,7 +356,7 @@
<< capitalize(other_includes[i]->get_name())
<< ".h\"" << endl;
}
-
+
includes << endl;
return includes.str();
@@ -444,7 +444,7 @@
const_interface << "FOUNDATION_EXPORT NSString *" << cocoa_prefix_ << capitalize(program_name_) << "ErrorDomain;" << endl
<< endl;
-
+
bool needs_class = false;
@@ -460,12 +460,12 @@
needs_class = true;
}
}
-
-
+
+
string constants_class_name = cocoa_prefix_ + capitalize(program_name_) + "Constants";
if (needs_class) {
-
+
const_interface << endl;
const_interface << "@interface " << constants_class_name << " : NSObject ";
@@ -487,7 +487,7 @@
// this gets spit into the header file in ::close_generator
constants_declarations_ = const_interface.str();
-
+
f_impl_ << "NSString *" << cocoa_prefix_ << capitalize(program_name_) << "ErrorDomain = "
<< "@\"" << cocoa_prefix_ << capitalize(program_name_) << "ErrorDomain\";" << endl << endl;
@@ -571,14 +571,14 @@
void t_cocoa_generator::generate_cocoa_struct_interface(ofstream& out,
t_struct* tstruct,
bool is_exception) {
-
+
if (is_exception) {
out << "enum {" << endl
<< " " << cocoa_prefix_ << capitalize(program_name_) << "Error" << tstruct->get_name() << " = -" << error_constant_++ << endl
<< "};" << endl
<< endl;
}
-
+
out << "@interface " << cocoa_prefix_ << tstruct->get_name() << " : ";
if (is_exception) {
@@ -587,7 +587,7 @@
out << "NSObject ";
}
out << "<TBase, NSCoding, NSCopying> " << endl;
-
+
out << endl;
// properties
@@ -601,7 +601,7 @@
out << endl;
}
}
-
+
out << endl;
// initializer for all fields
@@ -647,14 +647,14 @@
indent(out) << "- (instancetype) initWithCoder: (NSCoder *) decoder" << endl;
scope_up(out);
-
+
if (is_exception) {
// NSExceptions conform to NSCoding, so we can call super
indent(out) << "self = [super initWithCoder: decoder];" << endl;
} else {
indent(out) << "self = [super init];" << endl;
}
-
+
indent(out) << "if (self) ";
scope_up(out);
@@ -701,7 +701,7 @@
out << indent() << "_" << (*m_iter)->get_name() << "IsSet = YES;" << endl;
scope_down(out);
}
-
+
scope_down(out);
out << indent() << "return self;" << endl;
@@ -719,7 +719,7 @@
indent(out) << "- (void) encodeWithCoder: (NSCoder *) encoder" << endl;
scope_up(out);
-
+
if (is_exception) {
// NSExceptions conform to NSCoding, so we can call super
out << indent() << "[super encodeWithCoder: encoder];" << endl;
@@ -783,16 +783,16 @@
void t_cocoa_generator::generate_cocoa_struct_copy_method(ofstream& out, t_struct* tstruct, bool is_exception) {
out << indent() << "- (instancetype) copyWithZone:(NSZone *)zone" << endl;
scope_up(out);
-
+
if (is_exception) {
out << indent() << type_name(tstruct) << " val = [" << cocoa_prefix_ << tstruct->get_name() << " errorWithDomain: self.domain code: self.code userInfo: self.userInfo];" << endl;
} else {
out << indent() << type_name(tstruct) << " val = [" << cocoa_prefix_ << tstruct->get_name() << " new];" << endl;
}
-
+
const vector<t_field*>& members = tstruct->get_members();
vector<t_field*>::const_iterator m_iter;
-
+
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
t_type* t = get_true_type((*m_iter)->get_type());
out << indent() << "if (_" << (*m_iter)->get_name() << "IsSet)" << endl;
@@ -805,9 +805,9 @@
out << endl;
scope_down(out);
}
-
+
out << indent() << "return val;" << endl;
-
+
scope_down(out);
out << endl;
}
@@ -878,7 +878,7 @@
if (!members.empty()) {
indent(out) << class_name << " *other = (" << class_name << " *)anObject;" << endl;
-
+
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
t_type* t = get_true_type((*m_iter)->get_type());
string name = (*m_iter)->get_name();
@@ -969,7 +969,7 @@
} else {
out << indent() << "self = [super init];" << endl;
}
-
+
indent(out) << "if (self)";
scope_up(out);
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
@@ -1069,7 +1069,7 @@
out << indent() << " NSLog(@\"%s: field ID %i has unexpected type %i. Skipping.\", "
"__PRETTY_FUNCTION__, (int)fieldID, (int)fieldType);" << endl;
}
-
+
out << indent() << " if (![TProtocolUtil skipType: fieldType onProtocol: inProtocol error: __thriftError]) return NO;" << endl;
out << indent() << "}" << endl << indent() << "break;" << endl;
indent_down();
@@ -1083,7 +1083,7 @@
}
out << indent() << " if (![TProtocolUtil skipType: fieldType onProtocol: inProtocol error: __thriftError]) return NO;" << endl;
-
+
out << indent() << " break;" << endl;
scope_down(out);
@@ -1101,7 +1101,7 @@
}
indent(out) << "return YES;" << endl;
-
+
indent_down();
out << indent() << "}" << endl << endl;
}
@@ -1150,7 +1150,7 @@
<< indent() << "if (![outProtocol writeStructEnd: __thriftError]) return NO;" << endl;
indent(out) << "return YES;" << endl;
-
+
indent_down();
out << indent() << "}" << endl << endl;
}
@@ -1214,7 +1214,7 @@
<< endl;
indent(out) << "return YES;" << endl;
-
+
indent_down();
out << indent() << "}" << endl << endl;
}
@@ -1299,7 +1299,7 @@
* @param tstruct The struct definition
*/
void t_cocoa_generator::generate_cocoa_struct_description(ofstream& out, t_struct* tstruct) {
-
+
// Allow use of debugDescription so the app can add description via a cateogory/extension
if (debug_descriptions_) {
out << indent() << "- (NSString *) debugDescription {" << endl;
@@ -1362,11 +1362,11 @@
vector<t_function*> functions = tservice->get_functions();
vector<t_function*>::iterator f_iter;
for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
-
+
t_struct* ts = (*f_iter)->get_arglist();
-
+
string qname = function_args_helper_struct_type(tservice, *f_iter);
-
+
t_struct qname_ts = t_struct(ts->get_program(), qname);
const vector<t_field*>& members = ts->get_members();
@@ -1374,7 +1374,7 @@
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
qname_ts.append(*m_iter);
}
-
+
generate_cocoa_struct_interface(f_impl_, &qname_ts, false);
generate_cocoa_struct_implementation(f_impl_, &qname_ts, false, false);
generate_function_helpers(tservice, *f_iter);
@@ -1534,7 +1534,7 @@
// Open function
indent(out) << "- (BOOL) send_" << tfunction->get_name() << argument_list(tfunction->get_arglist(), needs_protocol ? "outProtocol" : "", true) << endl;
scope_up(out);
-
+
// Serialize the request
out << indent() << "if (![outProtocol writeMessageBeginWithName: @\"" << funname << "\""
<< (tfunction->is_oneway() ? " type: TMessageTypeONEWAY" : " type: TMessageTypeCALL")
@@ -1582,7 +1582,7 @@
t_function* tfunction,
bool needs_protocol) {
-
+
// Open function
indent(out) << "- (BOOL) recv_" << tfunction->get_name();
if (!tfunction->get_returntype()->is_void()) {
@@ -1668,7 +1668,7 @@
void t_cocoa_generator::generate_cocoa_service_client_send_function_invocation(
ofstream& out,
t_function* tfunction) {
-
+
t_struct* arg_struct = tfunction->get_arglist();
const vector<t_field*>& fields = arg_struct->get_members();
vector<t_field*>::const_iterator fld_iter;
@@ -1699,7 +1699,7 @@
ofstream& out,
t_function* tfunction,
string failureBlockName) {
-
+
t_struct* arg_struct = tfunction->get_arglist();
const vector<t_field*>& fields = arg_struct->get_members();
vector<t_field*>::const_iterator fld_iter;
@@ -1732,9 +1732,9 @@
*/
void t_cocoa_generator::generate_cocoa_service_client_implementation(ofstream& out,
t_service* tservice) {
-
+
string name = cocoa_prefix_ + tservice->get_name() + "Client";
-
+
out << "@interface " << name << " () ";
scope_up(out);
out << endl;
@@ -1744,7 +1744,7 @@
scope_down(out);
out << endl;
out << "@end" << endl << endl;
-
+
out << "@implementation " << name << endl;
// initializers
@@ -1816,7 +1816,7 @@
*/
void t_cocoa_generator::generate_cocoa_service_client_async_implementation(ofstream& out,
t_service* tservice) {
-
+
string name = cocoa_prefix_ + tservice->get_name() + "ClientAsync";
out << "@interface " << name << " () ";
@@ -1828,8 +1828,8 @@
scope_down(out);
out << endl;
out << "@end" << endl << endl;
-
-
+
+
out << "@implementation " << name << endl
<< endl << "- (id) initWithProtocolFactory: (id <TProtocolFactory>) aProtocolFactory "
"transportFactory: (id <TAsyncTransportFactory>) aTransportFactory;" << endl;
@@ -1858,12 +1858,12 @@
// Open function
indent(out) << "- " << async_function_signature(*f_iter, false) << endl;
scope_up(out);
-
+
out << indent() << "NSError *thriftError;" << endl
<< indent() << "id<TAsyncTransport> transport = [transportFactory newTransport];" << endl
<< indent() << "id<TProtocol> protocol = [protocolFactory newProtocolOnTransport:transport];" << endl
<< endl;
-
+
generate_cocoa_service_client_send_async_function_invocation(out, *f_iter, "failureBlock");
out << indent() << "[transport flushWithCompletion:^{" << endl;
@@ -1871,7 +1871,7 @@
if (!(*f_iter)->is_oneway()) {
out << indent() << "NSError *thriftError;" << endl;
-
+
if (!(*f_iter)->get_returntype()->is_void()) {
out << indent() << type_name((*f_iter)->get_returntype()) << " result;" << endl;
}
@@ -1885,7 +1885,7 @@
<< indent() << "return;" << endl;
scope_down(out);
}
-
+
out << indent() << "responseBlock(";
if (!(*f_iter)->is_oneway() && !(*f_iter)->get_returntype()->is_void()) {
out << "result";
@@ -1893,35 +1893,35 @@
out << ");" << endl;
indent_down();
-
+
out << indent() << "} failure:failureBlock];" << endl;
-
+
scope_down(out);
out << endl;
-
+
// Promise function
if (promise_kit_) {
-
+
indent(out) << "- " << promise_function_signature(*f_iter) << endl;
scope_up(out);
-
+
out << indent() << "return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolver) {" << endl;
indent_up();
-
+
out << indent() << "NSError *thriftError;" << endl
<< indent() << "id<TAsyncTransport> transport = [transportFactory newTransport];" << endl
<< indent() << "id<TProtocol> protocol = [protocolFactory newProtocolOnTransport:transport];" << endl
<< endl;
-
+
generate_cocoa_service_client_send_async_function_invocation(out, *f_iter, "resolver");
-
+
out << indent() << "[transport flushWithCompletion:^{" << endl;
indent_up();
-
+
if (!(*f_iter)->is_oneway()) {
out << indent() << "NSError *thriftError;" << endl;
-
+
if (!(*f_iter)->get_returntype()->is_void()) {
out << indent() << type_name((*f_iter)->get_returntype()) << " result;" << endl;
}
@@ -1935,7 +1935,7 @@
<< indent() << "return;" << endl;
scope_down(out);
}
-
+
out << indent() << "resolver(";
if ((*f_iter)->is_oneway() || (*f_iter)->get_returntype()->is_void()) {
out << "@YES";
@@ -1945,24 +1945,24 @@
out << "@(result)";
}
out << ");" << endl;
-
+
indent_down();
-
+
out << indent() << "} failure:^(NSError *error) {" << endl;
indent_up();
out << indent() << "resolver(error);" << endl;
indent_down();
out << indent() << "}];" << endl;
-
+
indent_down();
out << indent() << "}];" << endl;
-
+
scope_down(out);
-
+
out << endl;
-
+
}
-
+
}
out << "@end" << endl << endl;
@@ -1976,18 +1976,18 @@
*/
void t_cocoa_generator::generate_cocoa_service_server_implementation(ofstream& out,
t_service* tservice) {
-
+
string name = cocoa_prefix_ + tservice->get_name() + "Processor";
-
+
out << "@interface " << name << " () ";
-
+
scope_up(out);
out << indent() << "id <" << cocoa_prefix_ << tservice->get_name() << "> service;" << endl;
out << indent() << "NSDictionary * methodMap;" << endl;
scope_down(out);
-
+
out << "@end" << endl << endl;
-
+
out << "@implementation " << name << endl;
// initializer
@@ -2125,7 +2125,7 @@
if (!(*f_iter)->get_returntype()->is_void()) {
out << indent() << "[result setSuccess: " << unbox((*f_iter)->get_returntype(), "serviceResult") << "];" << endl;
}
-
+
// write out the result if not oneway
if (!(*f_iter)->is_oneway()) {
out << indent() << "if (![outProtocol writeMessageBeginWithName: @\"" << funname << "\"" << endl;
@@ -2340,7 +2340,7 @@
break;
}
}
-
+
// do nothing
return field_name;
}
@@ -2627,17 +2627,17 @@
/**
* Returns an Objective-C type name for container types
- *
+ *
* @param ttype the type
*/
string t_cocoa_generator::element_type_name(t_type* etype) {
-
+
t_type* ttype = etype->get_true_type();
-
+
if (etype->is_typedef() && type_can_be_null(ttype)) {
return type_name(etype);
}
-
+
string result;
if (ttype->is_base_type()) {
t_base_type* tbase = (t_base_type*)ttype;
@@ -2655,7 +2655,7 @@
break;
}
} else if (ttype->is_enum()) {
- result = "NSNumber *";
+ result = "NSNumber *";
} else if (ttype->is_map()) {
t_map *map = (t_map *)ttype;
result = "NSDictionary<" + element_type_name(map->get_key_type()) + ", " + element_type_name(map->get_val_type()) + "> *";
@@ -2668,7 +2668,7 @@
} else if (ttype->is_struct() || ttype->is_xception()) {
result = cocoa_prefix_ + ttype->get_name() + " *";
}
-
+
return result;
}
@@ -3010,16 +3010,16 @@
string t_cocoa_generator::declare_property(t_field* tfield) {
std::ostringstream render;
render << "@property (";
-
+
if (type_can_be_null(tfield->get_type())) {
render << "strong, ";
} else {
render << "assign, ";
}
-
+
render << "nonatomic) " << type_name(tfield->get_type(), false, true) << " "
<< tfield->get_name() << ";";
-
+
// Check if the property name is an Objective-C return +1 count signal
if ((tfield->get_name().length() >= 3 && tfield->get_name().substr(0,3) == "new") ||
(tfield->get_name().length() >= 6 && tfield->get_name().substr(0,6) == "create") ||
@@ -3030,7 +3030,7 @@
render << "- (" + type_name(tfield->get_type()) + ") " + decapitalize(tfield->get_name()) + " __attribute__((objc_method_family(none)));";
}
}
-
+
return render.str();
}
@@ -3241,7 +3241,7 @@
*/
string t_cocoa_generator::format_cast_for_type(t_type* type) {
type = get_true_type(type);
-
+
if (type->is_base_type()) {
t_base_type::t_base tbase = ((t_base_type*)type)->get_base();
switch (tbase) {
@@ -3273,7 +3273,7 @@
} else if (type->is_list()) {
return ""; // "%@";
}
-
+
throw "INVALID TYPE IN format_cast_for_type: " + type->get_name();
}
diff --git a/compiler/cpp/src/generate/t_cpp_generator.cc b/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_cpp_generator.cc
rename to compiler/cpp/src/thrift/generate/t_cpp_generator.cc
index 6c04899..cbe8da2 100644
--- a/compiler/cpp/src/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
@@ -31,8 +31,8 @@
#include <sys/stat.h>
-#include "platform.h"
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -81,7 +81,7 @@
} else if( iter->first.compare("moveable_types") == 0) {
gen_moveable_ = true;
} else {
- throw "unknown option cpp:" + iter->first;
+ throw "unknown option cpp:" + iter->first;
}
}
@@ -2320,10 +2320,10 @@
<< "boost::shared_ptr< ::apache::thrift::transport::TMemoryBuffer> otrans_;"
<< endl;
}
- f_header_ <<
- indent() << prot_ptr << " piprot_;" << endl <<
- indent() << prot_ptr << " poprot_;" << endl <<
- indent() << protocol_type << "* iprot_;" << endl <<
+ f_header_ <<
+ indent() << prot_ptr << " piprot_;" << endl <<
+ indent() << prot_ptr << " poprot_;" << endl <<
+ indent() << protocol_type << "* iprot_;" << endl <<
indent() << protocol_type << "* oprot_;" << endl;
if (style == "Concurrent") {
@@ -2438,7 +2438,7 @@
}
}
// Serialize the request
- out <<
+ out <<
indent() << "int32_t cseqid = " << cseqidVal << ";" << endl;
if(style == "Concurrent") {
out <<
@@ -2449,10 +2449,10 @@
indent() << _this << "otrans_->resetBuffer();" << endl;
}
out <<
- indent() << _this << "oprot_->writeMessageBegin(\"" <<
- (*f_iter)->get_name() <<
- "\", ::apache::thrift::protocol::" << ((*f_iter)->is_oneway() ? "T_ONEWAY" : "T_CALL") <<
- ", cseqid);" << endl << endl <<
+ indent() << _this << "oprot_->writeMessageBegin(\"" <<
+ (*f_iter)->get_name() <<
+ "\", ::apache::thrift::protocol::" << ((*f_iter)->is_oneway() ? "T_ONEWAY" : "T_CALL") <<
+ ", cseqid);" << endl << endl <<
indent() << argsname << " args;" << endl;
for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
@@ -2498,9 +2498,9 @@
indent(out) << function_signature(&recv_function, "", scope) << endl;
scope_up(out);
- out << endl <<
- indent() << "int32_t rseqid = 0;" << endl <<
- indent() << "std::string fname;" << endl <<
+ out << endl <<
+ indent() << "int32_t rseqid = 0;" << endl <<
+ indent() << "std::string fname;" << endl <<
indent() << "::apache::thrift::protocol::TMessageType mtype;" << endl;
if(style == "Concurrent") {
out <<
@@ -2529,10 +2529,10 @@
indent_up();
}
out <<
- indent() << "if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {" << endl <<
- indent() << " ::apache::thrift::TApplicationException x;" << endl <<
- indent() << " x.read(" << _this << "iprot_);" << endl <<
- indent() << " " << _this << "iprot_->readMessageEnd();" << endl <<
+ indent() << "if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {" << endl <<
+ indent() << " ::apache::thrift::TApplicationException x;" << endl <<
+ indent() << " x.read(" << _this << "iprot_);" << endl <<
+ indent() << " " << _this << "iprot_->readMessageEnd();" << endl <<
indent() << " " << _this << "iprot_->getTransport()->readEnd();" << endl;
if (style == "Cob" && !gen_no_client_completion_) {
out << indent() << " completed = true;" << endl << indent() << " completed__(true);"
@@ -2541,22 +2541,22 @@
if (style == "Concurrent") {
out << indent() << " sentry.commit();" << endl;
}
- out <<
- indent() << " throw x;" << endl <<
- indent() << "}" << endl <<
- indent() << "if (mtype != ::apache::thrift::protocol::T_REPLY) {" << endl <<
- indent() << " " << _this << "iprot_->skip(" << "::apache::thrift::protocol::T_STRUCT);" << endl <<
- indent() << " " << _this << "iprot_->readMessageEnd();" << endl <<
+ out <<
+ indent() << " throw x;" << endl <<
+ indent() << "}" << endl <<
+ indent() << "if (mtype != ::apache::thrift::protocol::T_REPLY) {" << endl <<
+ indent() << " " << _this << "iprot_->skip(" << "::apache::thrift::protocol::T_STRUCT);" << endl <<
+ indent() << " " << _this << "iprot_->readMessageEnd();" << endl <<
indent() << " " << _this << "iprot_->getTransport()->readEnd();" << endl;
if (style == "Cob" && !gen_no_client_completion_) {
out << indent() << " completed = true;" << endl << indent() << " completed__(false);"
<< endl;
}
- out <<
- indent() << "}" << endl <<
- indent() << "if (fname.compare(\"" << (*f_iter)->get_name() << "\") != 0) {" << endl <<
- indent() << " " << _this << "iprot_->skip(" << "::apache::thrift::protocol::T_STRUCT);" << endl <<
- indent() << " " << _this << "iprot_->readMessageEnd();" << endl <<
+ out <<
+ indent() << "}" << endl <<
+ indent() << "if (fname.compare(\"" << (*f_iter)->get_name() << "\") != 0) {" << endl <<
+ indent() << " " << _this << "iprot_->skip(" << "::apache::thrift::protocol::T_STRUCT);" << endl <<
+ indent() << " " << _this << "iprot_->readMessageEnd();" << endl <<
indent() << " " << _this << "iprot_->getTransport()->readEnd();" << endl;
if (style == "Cob" && !gen_no_client_completion_) {
out << indent() << " completed = true;" << endl << indent() << " completed__(false);"
@@ -2589,7 +2589,7 @@
// Careful, only look for _result if not a void function
if (!(*f_iter)->get_returntype()->is_void()) {
if (is_complex_type((*f_iter)->get_returntype())) {
- out <<
+ out <<
indent() << "if (result.__isset.success) {" << endl;
out <<
indent() << " // _return pointer has now been filled" << endl;
@@ -2600,8 +2600,8 @@
if (style == "Concurrent") {
out << indent() << " sentry.commit();" << endl;
}
- out <<
- indent() << " return;" << endl <<
+ out <<
+ indent() << " return;" << endl <<
indent() << "}" << endl;
} else {
out << indent() << "if (result.__isset.success) {" << endl;
diff --git a/compiler/cpp/src/generate/t_csharp_generator.cc b/compiler/cpp/src/thrift/generate/t_csharp_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_csharp_generator.cc
rename to compiler/cpp/src/thrift/generate/t_csharp_generator.cc
index d356f26..ae3c48b 100644
--- a/compiler/cpp/src/generate/t_csharp_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_csharp_generator.cc
@@ -33,8 +33,8 @@
#include <sys/stat.h>
#include <sstream>
-#include "platform.h"
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -83,7 +83,7 @@
wcf_ = true;
wcf_namespace_ = iter->second;
} else {
- throw "unknown option csharp:" + iter->first;
+ throw "unknown option csharp:" + iter->first;
}
}
@@ -268,7 +268,7 @@
namespace_dir_ = subdir;
init_keywords();
-
+
while( ! member_mapping_scopes.empty()) {
cleanup_member_name_mapping( member_mapping_scopes.back().scope_member);
}
@@ -1005,7 +1005,7 @@
void t_csharp_generator::generate_csharp_struct_writer(ofstream& out, t_struct* tstruct) {
out << indent() << "public void Write(TProtocol oprot) {" << endl;
indent_up();
-
+
out << indent() << "oprot.IncrementRecursionDepth();" << endl;
out << indent() << "try" << endl;
scope_up(out);
@@ -1061,7 +1061,7 @@
scope_down(out);
indent_down();
-
+
indent(out) << "}" << endl << endl;
}
@@ -2857,7 +2857,7 @@
if( member_mapping_scopes.empty()) {
throw "internal error: cleanup_member_name_mapping() no scope active";
}
-
+
member_mapping_scope& active = member_mapping_scopes.back();
if (active.scope_member != scope) {
throw "internal error: cleanup_member_name_mapping() called for wrong struct";
@@ -2874,7 +2874,7 @@
return iter->second;
}
}
-
+
pverbose("no mapping for member %s\n", name.c_str());
return name;
}
diff --git a/compiler/cpp/src/generate/t_d_generator.cc b/compiler/cpp/src/thrift/generate/t_d_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_d_generator.cc
rename to compiler/cpp/src/thrift/generate/t_d_generator.cc
index 1e0af7d..4816681 100644
--- a/compiler/cpp/src/generate/t_d_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_d_generator.cc
@@ -32,8 +32,8 @@
#include <sys/stat.h>
-#include "platform.h"
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -64,7 +64,7 @@
/* no options yet */
for( iter = parsed_options.begin(); iter != parsed_options.end(); ++iter) {
- throw "unknown option d:" + iter->first;
+ throw "unknown option d:" + iter->first;
}
out_dir_base_ = "gen-d";
diff --git a/compiler/cpp/src/generate/t_dart_generator.cc b/compiler/cpp/src/thrift/generate/t_dart_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_dart_generator.cc
rename to compiler/cpp/src/thrift/generate/t_dart_generator.cc
index 7a744cf..19bbb7b 100644
--- a/compiler/cpp/src/generate/t_dart_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_dart_generator.cc
@@ -27,8 +27,8 @@
#include <sys/stat.h>
#include <stdexcept>
-#include "platform.h"
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
diff --git a/compiler/cpp/src/generate/t_delphi_generator.cc b/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_delphi_generator.cc
rename to compiler/cpp/src/thrift/generate/t_delphi_generator.cc
index fece1da..8b1a445 100644
--- a/compiler/cpp/src/generate/t_delphi_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
@@ -34,8 +34,8 @@
#include <sstream>
#include <cctype>
-#include "platform.h"
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -77,7 +77,7 @@
} else if( iter->first.compare("xmldoc") == 0) {
xmldoc_ = true;
} else {
- throw "unknown option delphi:" + iter->first;
+ throw "unknown option delphi:" + iter->first;
}
}
@@ -3601,7 +3601,7 @@
indent_impl(code_block) << "if not _req_isset_" << prop_name(*f_iter, is_exception) << endl;
indent_impl(code_block)
<< "then raise TProtocolExceptionInvalidData.Create("
- << "'required field " << prop_name(*f_iter, is_exception) << " not set');"
+ << "'required field " << prop_name(*f_iter, is_exception) << " not set');"
<< endl;
}
}
@@ -3641,7 +3641,7 @@
indent_impl(local_vars) << "tracker : IProtocolRecursionTracker;" << endl;
indent_impl(code_block) << "tracker := oprot.NextRecursionLevel;" << endl;
-
+
indent_impl(code_block) << "struc := TStructImpl.Create('" << name << "');" << endl;
indent_impl(code_block) << "oprot.WriteStructBegin(struc);" << endl;
@@ -3722,7 +3722,7 @@
null_allowed = false;
indent_impl(code_block) << "if (" << fieldname << " = nil)" << endl;
indent_impl(code_block) << "then raise TProtocolExceptionInvalidData.Create("
- << "'required field " << fieldname << " not set');"
+ << "'required field " << fieldname << " not set');"
<< endl;
}
if (null_allowed) {
diff --git a/compiler/cpp/src/generate/t_erl_generator.cc b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_erl_generator.cc
rename to compiler/cpp/src/thrift/generate/t_erl_generator.cc
index 9ac908c..4869414 100644
--- a/compiler/cpp/src/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
@@ -26,9 +26,9 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <sstream>
-#include "t_generator.h"
-#include "platform.h"
-#include "version.h"
+#include "thrift/platform.h"
+#include "thrift/version.h"
+#include "thrift/generate/t_generator.h"
using std::map;
using std::ofstream;
diff --git a/compiler/cpp/src/generate/t_generator.cc b/compiler/cpp/src/thrift/generate/t_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_generator.cc
rename to compiler/cpp/src/thrift/generate/t_generator.cc
index 7f5daf4..0c1f49d 100644
--- a/compiler/cpp/src/generate/t_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_generator.cc
@@ -17,7 +17,7 @@
* under the License.
*/
-#include "t_generator.h"
+#include "thrift/generate/t_generator.h"
using namespace std;
/**
diff --git a/compiler/cpp/src/generate/t_generator.h b/compiler/cpp/src/thrift/generate/t_generator.h
similarity index 98%
rename from compiler/cpp/src/generate/t_generator.h
rename to compiler/cpp/src/thrift/generate/t_generator.h
index 590efdb..051bbc4 100644
--- a/compiler/cpp/src/generate/t_generator.h
+++ b/compiler/cpp/src/thrift/generate/t_generator.h
@@ -24,10 +24,10 @@
#include <iostream>
#include <fstream>
#include <sstream>
-#include "parse/t_program.h"
-#include "common.h"
-#include "t_generator_registry.h"
-#include "version.h"
+#include "thrift/common.h"
+#include "thrift/version.h"
+#include "thrift/generate/t_generator_registry.h"
+#include "thrift/parse/t_program.h"
/**
* Base class for a thrift code generator. This class defines the basic
diff --git a/compiler/cpp/src/generate/t_generator_registry.h b/compiler/cpp/src/thrift/generate/t_generator_registry.h
similarity index 100%
rename from compiler/cpp/src/generate/t_generator_registry.h
rename to compiler/cpp/src/thrift/generate/t_generator_registry.h
diff --git a/compiler/cpp/src/generate/t_go_generator.cc b/compiler/cpp/src/thrift/generate/t_go_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_go_generator.cc
rename to compiler/cpp/src/thrift/generate/t_go_generator.cc
index b9429c1..9919cb1 100644
--- a/compiler/cpp/src/generate/t_go_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_go_generator.cc
@@ -36,9 +36,9 @@
#include <sstream>
#include <algorithm>
#include <clocale>
-#include "t_generator.h"
-#include "platform.h"
-#include "version.h"
+#include "thrift/platform.h"
+#include "thrift/version.h"
+#include "thrift/generate/t_generator.h"
using std::map;
using std::ofstream;
@@ -93,7 +93,7 @@
} else if( iter->first.compare("ignore_initialisms") == 0) {
ignore_initialisms_ = true;
} else {
- throw "unknown option go:" + iter->first;
+ throw "unknown option go:" + iter->first;
}
}
@@ -3463,8 +3463,8 @@
t_program* program = ttype->get_program();
if (program != NULL && program != program_) {
- if (program->get_namespace("go").empty() ||
- program_->get_namespace("go").empty() ||
+ if (program->get_namespace("go").empty() ||
+ program_->get_namespace("go").empty() ||
program->get_namespace("go") != program_->get_namespace("go")) {
string module(get_real_go_module(program));
// for namespaced includes, only keep part after dot.
diff --git a/compiler/cpp/src/generate/t_gv_generator.cc b/compiler/cpp/src/thrift/generate/t_gv_generator.cc
similarity index 98%
rename from compiler/cpp/src/generate/t_gv_generator.cc
rename to compiler/cpp/src/thrift/generate/t_gv_generator.cc
index 61be8e6..72b7c82 100644
--- a/compiler/cpp/src/generate/t_gv_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_gv_generator.cc
@@ -27,8 +27,8 @@
#include <stdlib.h>
#include <sys/stat.h>
#include <sstream>
-#include "t_generator.h"
-#include "platform.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_generator.h"
using std::map;
using std::ofstream;
@@ -57,7 +57,7 @@
if( iter->first.compare("exceptions") == 0) {
exception_arrows = true;
} else {
- throw "unknown option gv:" + iter->first;
+ throw "unknown option gv:" + iter->first;
}
}
diff --git a/compiler/cpp/src/generate/t_haxe_generator.cc b/compiler/cpp/src/thrift/generate/t_haxe_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_haxe_generator.cc
rename to compiler/cpp/src/thrift/generate/t_haxe_generator.cc
index d15958e..e7be1a5 100644
--- a/compiler/cpp/src/generate/t_haxe_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_haxe_generator.cc
@@ -27,8 +27,8 @@
#include <sys/stat.h>
#include <stdexcept>
-#include "platform.h"
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -63,7 +63,7 @@
} else if( iter->first.compare("buildmacro") == 0) {
buildmacro_ = (iter->second);
} else {
- throw "unknown option haxe:" + iter->first;
+ throw "unknown option haxe:" + iter->first;
}
}
@@ -1007,10 +1007,10 @@
indent(out) << "}" << endl;
}
}
-
+
indent(out) << "oprot.writeFieldStop();" << endl;
indent(out) << "oprot.writeStructEnd();" << endl;
-
+
indent(out) << "oprot.DecrementRecursionDepth();" << endl;
scope_down(out);
indent(out) << "catch(e:Dynamic)" << endl;
@@ -1018,7 +1018,7 @@
indent(out) << "oprot.DecrementRecursionDepth();" << endl;
indent(out) << "throw e;" << endl;
scope_down(out);
-
+
indent_down();
out << indent() << "}" << endl << endl;
}
@@ -1042,7 +1042,7 @@
indent(out) << "oprot.IncrementRecursionDepth();" << endl;
indent(out) << "try" << endl;
scope_up(out);
-
+
indent(out) << "oprot.writeStructBegin(STRUCT_DESC);" << endl;
bool first = true;
@@ -1070,11 +1070,11 @@
indent_down();
indent(out) << "}";
}
-
+
indent(out) << endl;
indent(out) << "oprot.writeFieldStop();" << endl;
indent(out) << "oprot.writeStructEnd();" << endl;
-
+
indent(out) << "oprot.DecrementRecursionDepth();" << endl;
scope_down(out);
indent(out) << "catch(e:Dynamic)" << endl;
@@ -1082,7 +1082,7 @@
indent(out) << "oprot.DecrementRecursionDepth();" << endl;
indent(out) << "throw e;" << endl;
scope_down(out);
-
+
indent_down();
out << indent() << "}" << endl << endl;
}
diff --git a/compiler/cpp/src/generate/t_hs_generator.cc b/compiler/cpp/src/thrift/generate/t_hs_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_hs_generator.cc
rename to compiler/cpp/src/thrift/generate/t_hs_generator.cc
index cef8cd0..a3ccd8d 100644
--- a/compiler/cpp/src/generate/t_hs_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_hs_generator.cc
@@ -27,10 +27,10 @@
#include <sys/types.h>
#include <sstream>
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/version.h"
-#include "platform.h"
-#include "version.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -56,7 +56,7 @@
/* no options yet */
for( iter = parsed_options.begin(); iter != parsed_options.end(); ++iter) {
- throw "unknown option hs:" + iter->first;
+ throw "unknown option hs:" + iter->first;
}
out_dir_base_ = "gen-hs";
diff --git a/compiler/cpp/src/generate/t_html_generator.cc b/compiler/cpp/src/thrift/generate/t_html_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_html_generator.cc
rename to compiler/cpp/src/thrift/generate/t_html_generator.cc
index 9594d39..ec78e10 100644
--- a/compiler/cpp/src/generate/t_html_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_html_generator.cc
@@ -26,9 +26,9 @@
#include <stdlib.h>
#include <sys/stat.h>
#include <sstream>
-#include "t_generator.h"
-#include "t_html_generator.h"
-#include "platform.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_generator.h"
+#include "thrift/generate/t_html_generator.h"
using std::map;
using std::ofstream;
@@ -64,7 +64,7 @@
} else if( iter->first.compare("noescape") == 0) {
unsafe_ = true;
} else {
- throw "unknown option html:" + iter->first;
+ throw "unknown option html:" + iter->first;
}
}
diff --git a/compiler/cpp/src/generate/t_html_generator.h b/compiler/cpp/src/thrift/generate/t_html_generator.h
similarity index 100%
rename from compiler/cpp/src/generate/t_html_generator.h
rename to compiler/cpp/src/thrift/generate/t_html_generator.h
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/thrift/generate/t_java_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_java_generator.cc
rename to compiler/cpp/src/thrift/generate/t_java_generator.cc
index 2db8cb8..8b3c326 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_java_generator.cc
@@ -31,8 +31,8 @@
#include <sys/stat.h>
#include <stdexcept>
-#include "platform.h"
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -97,10 +97,10 @@
} else if(iter->second.compare("suppress") == 0) {
suppress_generated_annotations_ = true;
} else {
- throw "unknown option java:" + iter->first + "=" + iter->second;
+ throw "unknown option java:" + iter->first + "=" + iter->second;
}
} else {
- throw "unknown option java:" + iter->first;
+ throw "unknown option java:" + iter->first;
}
}
@@ -368,7 +368,7 @@
bool use_option_type_;
bool undated_generated_annotations_;
bool suppress_generated_annotations_;
-
+
};
/**
diff --git a/compiler/cpp/src/generate/t_javame_generator.cc b/compiler/cpp/src/thrift/generate/t_javame_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_javame_generator.cc
rename to compiler/cpp/src/thrift/generate/t_javame_generator.cc
index e9a206b..aa7eccf 100644
--- a/compiler/cpp/src/generate/t_javame_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_javame_generator.cc
@@ -27,8 +27,8 @@
#include <sys/stat.h>
#include <stdexcept>
-#include "platform.h"
-#include "t_oop_generator.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -55,7 +55,7 @@
/* no options yet */
for( iter = parsed_options.begin(); iter != parsed_options.end(); ++iter) {
- throw "unknown option javame:" + iter->first;
+ throw "unknown option javame:" + iter->first;
}
out_dir_base_ = "gen-javame";
diff --git a/compiler/cpp/src/generate/t_js_generator.cc b/compiler/cpp/src/thrift/generate/t_js_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_js_generator.cc
rename to compiler/cpp/src/thrift/generate/t_js_generator.cc
index af0f284..b0046a0 100644
--- a/compiler/cpp/src/generate/t_js_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_js_generator.cc
@@ -28,8 +28,8 @@
#include <stdlib.h>
#include <sys/stat.h>
#include <sstream>
-#include "platform.h"
-#include "version.h"
+#include "thrift/platform.h"
+#include "thrift/version.h"
using std::map;
using std::ofstream;
@@ -40,7 +40,7 @@
static const string endl = "\n"; // avoid ostream << std::endl flushes
-#include "t_oop_generator.h"
+#include "thrift/generate/t_oop_generator.h"
/**
@@ -66,7 +66,7 @@
} else if( iter->first.compare("ts") == 0) {
gen_ts_ = true;
} else {
- throw "unknown option js:" + iter->first;
+ throw "unknown option js:" + iter->first;
}
}
diff --git a/compiler/cpp/src/generate/t_json_generator.cc b/compiler/cpp/src/thrift/generate/t_json_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_json_generator.cc
rename to compiler/cpp/src/thrift/generate/t_json_generator.cc
index 447bc6d..36e9216 100644
--- a/compiler/cpp/src/generate/t_json_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_json_generator.cc
@@ -30,8 +30,8 @@
#include <sys/stat.h>
#include <sstream>
-#include "t_generator.h"
-#include "platform.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_generator.h"
using std::map;
using std::ofstream;
@@ -61,7 +61,7 @@
if( iter->first.compare("merge") == 0) {
should_merge_includes_ = true;
} else {
- throw "unknown option json:" + iter->first;
+ throw "unknown option json:" + iter->first;
}
}
diff --git a/compiler/cpp/src/generate/t_lua_generator.cc b/compiler/cpp/src/thrift/generate/t_lua_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_lua_generator.cc
rename to compiler/cpp/src/thrift/generate/t_lua_generator.cc
index c6fb493..97b8aa3 100644
--- a/compiler/cpp/src/generate/t_lua_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_lua_generator.cc
@@ -18,8 +18,8 @@
*/
#include <sstream>
-#include "t_oop_generator.h"
-#include "platform.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::ofstream;
using std::string;
@@ -46,7 +46,7 @@
if( iter->first.compare("omit_requires") == 0) {
gen_requires_ = false;
} else {
- throw "unknown option lua:" + iter->first;
+ throw "unknown option lua:" + iter->first;
}
}
diff --git a/compiler/cpp/src/generate/t_ocaml_generator.cc b/compiler/cpp/src/thrift/generate/t_ocaml_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_ocaml_generator.cc
rename to compiler/cpp/src/thrift/generate/t_ocaml_generator.cc
index fc82ebc..594219a 100644
--- a/compiler/cpp/src/generate/t_ocaml_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_ocaml_generator.cc
@@ -26,9 +26,9 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <sstream>
-#include "t_oop_generator.h"
-#include "platform.h"
-#include "version.h"
+#include "thrift/platform.h"
+#include "thrift/version.h"
+#include "thrift/generate/t_oop_generator.h"
using std::ios;
using std::map;
@@ -55,7 +55,7 @@
/* no options yet */
for( iter = parsed_options.begin(); iter != parsed_options.end(); ++iter) {
- throw "unknown option ocaml:" + iter->first;
+ throw "unknown option ocaml:" + iter->first;
}
out_dir_base_ = "gen-ocaml";
diff --git a/compiler/cpp/src/generate/t_oop_generator.h b/compiler/cpp/src/thrift/generate/t_oop_generator.h
similarity index 97%
rename from compiler/cpp/src/generate/t_oop_generator.h
rename to compiler/cpp/src/thrift/generate/t_oop_generator.h
index e5a4698..8fb580d 100644
--- a/compiler/cpp/src/generate/t_oop_generator.h
+++ b/compiler/cpp/src/thrift/generate/t_oop_generator.h
@@ -23,8 +23,8 @@
#include <string>
#include <iostream>
-#include "common.h"
-#include "t_generator.h"
+#include "thrift/common.h"
+#include "thrift/generate/t_generator.h"
#include <algorithm>
diff --git a/compiler/cpp/src/generate/t_perl_generator.cc b/compiler/cpp/src/thrift/generate/t_perl_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_perl_generator.cc
rename to compiler/cpp/src/thrift/generate/t_perl_generator.cc
index 45cfe4b..bfe08f9 100644
--- a/compiler/cpp/src/generate/t_perl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_perl_generator.cc
@@ -26,9 +26,9 @@
#include <stdlib.h>
#include <sys/stat.h>
#include <sstream>
-#include "t_oop_generator.h"
-#include "platform.h"
-#include "version.h"
+#include "thrift/platform.h"
+#include "thrift/version.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -54,7 +54,7 @@
/* no options yet */
for( iter = parsed_options.begin(); iter != parsed_options.end(); ++iter) {
- throw "unknown option perl:" + iter->first;
+ throw "unknown option perl:" + iter->first;
}
out_dir_base_ = "gen-perl";
diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/thrift/generate/t_php_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_php_generator.cc
rename to compiler/cpp/src/thrift/generate/t_php_generator.cc
index 2fa9b24..ba52781 100644
--- a/compiler/cpp/src/generate/t_php_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_php_generator.cc
@@ -25,8 +25,8 @@
#include <stdlib.h>
#include <sys/stat.h>
#include <sstream>
-#include "t_oop_generator.h"
-#include "platform.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
diff --git a/compiler/cpp/src/generate/t_py_generator.cc b/compiler/cpp/src/thrift/generate/t_py_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_py_generator.cc
rename to compiler/cpp/src/thrift/generate/t_py_generator.cc
index 1ee0fcb..6401c28 100644
--- a/compiler/cpp/src/generate/t_py_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_py_generator.cc
@@ -27,9 +27,9 @@
#include <sys/types.h>
#include <sstream>
#include <algorithm>
-#include "t_generator.h"
-#include "platform.h"
-#include "version.h"
+#include "thrift/platform.h"
+#include "thrift/version.h"
+#include "thrift/generate/t_generator.h"
using std::map;
using std::ofstream;
@@ -112,7 +112,7 @@
} else if( iter->first.compare("coding") == 0) {
coding_ = iter->second;
} else {
- throw "unknown option py:" + iter->first;
+ throw "unknown option py:" + iter->first;
}
}
diff --git a/compiler/cpp/src/generate/t_rb_generator.cc b/compiler/cpp/src/thrift/generate/t_rb_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_rb_generator.cc
rename to compiler/cpp/src/thrift/generate/t_rb_generator.cc
index abd3320..924f6f6 100644
--- a/compiler/cpp/src/generate/t_rb_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_rb_generator.cc
@@ -32,9 +32,9 @@
#include <sys/types.h>
#include <sstream>
-#include "t_oop_generator.h"
-#include "platform.h"
-#include "version.h"
+#include "thrift/platform.h"
+#include "thrift/version.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -91,7 +91,7 @@
} else if( iter->first.compare("namespaced") == 0) {
namespaced_ = true;
} else {
- throw "unknown option ruby:" + iter->first;
+ throw "unknown option ruby:" + iter->first;
}
}
diff --git a/compiler/cpp/src/generate/t_st_generator.cc b/compiler/cpp/src/thrift/generate/t_st_generator.cc
similarity index 99%
rename from compiler/cpp/src/generate/t_st_generator.cc
rename to compiler/cpp/src/thrift/generate/t_st_generator.cc
index bc15d24..ffd7318 100644
--- a/compiler/cpp/src/generate/t_st_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_st_generator.cc
@@ -32,9 +32,9 @@
#include <sys/types.h>
#include <sstream>
-#include "platform.h"
-#include "t_oop_generator.h"
-#include "version.h"
+#include "thrift/platform.h"
+#include "thrift/version.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ofstream;
@@ -60,7 +60,7 @@
/* no options yet */
for( iter = parsed_options.begin(); iter != parsed_options.end(); ++iter) {
- throw "unknown option st:" + iter->first;
+ throw "unknown option st:" + iter->first;
}
out_dir_base_ = "gen-st";
diff --git a/compiler/cpp/src/generate/t_swift_generator.cc b/compiler/cpp/src/thrift/generate/t_swift_generator.cc
similarity index 97%
rename from compiler/cpp/src/generate/t_swift_generator.cc
rename to compiler/cpp/src/thrift/generate/t_swift_generator.cc
index 6e48bca..87dd2f0 100644
--- a/compiler/cpp/src/generate/t_swift_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_swift_generator.cc
@@ -26,8 +26,8 @@
#include <stdlib.h>
#include <sys/stat.h>
#include <sstream>
-#include "t_oop_generator.h"
-#include "platform.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_oop_generator.h"
using std::map;
using std::ostream;
@@ -69,7 +69,7 @@
} else if( iter->first.compare("debug_descriptions") == 0) {
debug_descriptions_ = true;
} else {
- throw "unknown option swift:" + iter->first;
+ throw "unknown option swift:" + iter->first;
}
}
@@ -112,7 +112,7 @@
t_struct* tstruct,
bool all,
bool is_private);
-
+
void generate_swift_struct_implementation(ofstream& out,
t_struct* tstruct,
bool is_result,
@@ -183,23 +183,23 @@
void populate_reserved_words();
private:
-
+
void block_open(ostream& out) {
out << " {" << endl;
indent_up();
}
-
+
void block_close(ostream& out, bool end_line=true) {
indent_down();
indent(out) << "}";
if (end_line) out << endl;
}
-
+
bool field_is_optional(t_field* tfield) {
return tfield->get_req() == t_field::T_OPTIONAL;
}
-
+
bool struct_has_required_fields(t_struct* tstruct) {
const vector<t_field*>& members = tstruct->get_members();
vector<t_field*>::const_iterator m_iter;
@@ -210,7 +210,7 @@
}
return false;
}
-
+
bool struct_has_optional_fields(t_struct* tstruct) {
const vector<t_field*>& members = tstruct->get_members();
vector<t_field*>::const_iterator m_iter;
@@ -221,7 +221,7 @@
}
return false;
}
-
+
string constants_declarations_;
/**
@@ -278,16 +278,16 @@
vector<string> includes_list;
includes_list.push_back("Foundation");
-
+
ostringstream includes;
-
+
vector<string>::const_iterator i_iter;
for (i_iter=includes_list.begin(); i_iter!=includes_list.end(); ++i_iter) {
includes << "import " << *i_iter << endl;
}
-
+
includes << endl;
-
+
return includes.str();
}
@@ -300,7 +300,7 @@
vector<string> includes_list;
includes_list.push_back("Thrift");
-
+
if (promise_kit_) {
includes_list.push_back("PromiseKit");
}
@@ -311,7 +311,7 @@
for (i_iter=includes_list.begin(); i_iter!=includes_list.end(); ++i_iter) {
includes << "import " << *i_iter << endl;
}
-
+
includes << endl;
return includes.str();
@@ -358,15 +358,15 @@
f_decl_ << endl;
f_decl_ << indent() << "public init() { self.init(rawValue: " << constants.front()->get_value() << ")! }" << endl;
-
+
block_close(f_decl_);
f_decl_ << endl;
-
+
f_impl_ << indent() << "extension " << tenum->get_name() << " : TEnum";
block_open(f_impl_);
f_impl_ << endl;
-
+
f_impl_ << indent() << "public static func readValueFromProtocol(proto: TProtocol) throws -> " << tenum->get_name();
block_open(f_impl_);
f_impl_ << indent() << "var raw = Int32()" << endl
@@ -374,20 +374,20 @@
<< indent() << "return " << tenum->get_name() << "(rawValue: raw)!" << endl;
block_close(f_impl_);
f_impl_ << endl;
-
+
f_impl_ << indent() << "public static func writeValue(value: " << tenum->get_name() << ", toProtocol proto: TProtocol) throws";
block_open(f_impl_);
f_impl_ << indent() << "try proto.writeI32(value.rawValue)" << endl;
block_close(f_impl_);
f_impl_ << endl;
-
+
block_close(f_impl_);
f_impl_ << endl;
}
/**
* Generates public constants for all Thrift constants.
- *
+ *
* @param consts Constants to generate
*/
void t_swift_generator::generate_consts(vector<t_const*> consts) {
@@ -402,10 +402,10 @@
render_const_value(const_interface, type, (*c_iter)->get_value());
const_interface << endl << endl;
}
-
+
// this gets spit into the header file in ::close_generator
constants_declarations_ = const_interface.str();
-
+
}
/**
@@ -413,7 +413,7 @@
* with public members. Optional types are used for optional properties to
* allow them to be tested for availability. Separate inits are included for
* required properties & all properties.
- *
+ *
* Generates extensions to provide conformance to TStruct, TSerializable,
* Hashable & Equatable
*
@@ -435,7 +435,7 @@
}
/**
- * Generate the interface for a struct. Only properties and
+ * Generate the interface for a struct. Only properties and
* init methods are included.
*
* @param tstruct The struct definition
@@ -445,36 +445,36 @@
void t_swift_generator::generate_swift_struct(ofstream& out,
t_struct* tstruct,
bool is_private) {
-
+
string visibility = is_private ? "private" : "public";
-
+
out << indent() << visibility << " final class " << tstruct->get_name();
if (tstruct->is_xception()) {
out << " : ErrorType";
}
-
+
block_open(out);
// properties
const vector<t_field*>& members = tstruct->get_members();
vector<t_field*>::const_iterator m_iter;
-
+
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
out << endl;
out << indent() << declare_property(*m_iter, is_private) << endl;
}
-
+
out << endl;
-
+
// init
-
+
indent(out) << visibility << " init()";
block_open(out);
block_close(out);
-
+
out << endl;
-
+
if (struct_has_required_fields(tstruct)) {
generate_swift_struct_init(out, tstruct, false, is_private);
}
@@ -483,7 +483,7 @@
}
block_close(out);
-
+
out << endl;
}
@@ -506,7 +506,7 @@
const vector<t_field*>& members = tstruct->get_members();
vector<t_field*>::const_iterator m_iter;
-
+
bool first=true;
for (m_iter = members.begin(); m_iter != members.end();) {
if (all || !field_is_optional(*m_iter)) {
@@ -522,18 +522,18 @@
++m_iter;
}
out << ")";
-
+
block_open(out);
-
+
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
if (all || (*m_iter)->get_req() == t_field::T_REQUIRED || (*m_iter)->get_req() == t_field::T_OPT_IN_REQ_OUT) {
out << indent() << "self." << maybe_escape_identifier((*m_iter)->get_name()) << " = "
<< maybe_escape_identifier((*m_iter)->get_name()) << endl;
}
}
-
+
block_close(out);
-
+
out << endl;
}
@@ -551,23 +551,23 @@
string visibility = is_private ? "private" : "public";
indent(out) << "extension " << tstruct->get_name() << " : Hashable";
-
+
block_open(out);
-
+
out << endl;
-
+
indent(out) << visibility << " var hashValue : Int";
-
+
block_open(out);
-
-
+
+
const vector<t_field*>& members = tstruct->get_members();
vector<t_field*>::const_iterator m_iter;
if (!members.empty()) {
indent(out) << "let prime = 31" << endl;
indent(out) << "var result = 1" << endl;
-
+
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
t_field* tfield = *m_iter;
string accessor = field_is_optional(tfield) ? "?." : ".";
@@ -575,7 +575,7 @@
indent(out) << "result = prime &* result &+ (" << maybe_escape_identifier(tfield->get_name()) << accessor
<< "hashValue" << defaultor << ")" << endl;
}
-
+
indent(out) << "return result" << endl;
}
else {
@@ -583,9 +583,9 @@
}
block_close(out);
-
+
out << endl;
-
+
block_close(out);
out << endl;
@@ -603,22 +603,22 @@
bool is_private) {
string visibility = is_private ? "private" : "public";
-
+
indent(out) << visibility << " func ==(lhs: " << type_name(tstruct) << ", rhs: " << type_name(tstruct) << ") -> Bool";
-
+
block_open(out);
-
+
indent(out) << "return";
-
+
const vector<t_field*>& members = tstruct->get_members();
vector<t_field*>::const_iterator m_iter;
if (members.size()) {
-
+
out << endl;
-
+
indent_up();
-
+
for (m_iter = members.begin(); m_iter != members.end();) {
t_field* tfield = *m_iter;
indent(out) << "(lhs." << maybe_escape_identifier(tfield->get_name())
@@ -628,16 +628,16 @@
}
out << endl;
}
-
+
indent_down();
-
+
}
else {
out << " true" << endl;
}
-
+
block_close(out);
-
+
out << endl;
}
@@ -655,13 +655,13 @@
t_struct* tstruct,
bool is_result,
bool is_private) {
-
+
generate_swift_struct_equatable_extension(out, tstruct, is_private);
-
+
if (!is_private && !is_result) {
generate_swift_struct_printable_extension(out, tstruct);
}
-
+
generate_swift_struct_hashable_extension(out, tstruct, is_private);
generate_swift_struct_thrift_extension(out, tstruct, is_result, is_private);
@@ -681,24 +681,24 @@
t_struct* tstruct,
bool is_result,
bool is_private) {
-
+
indent(out) << "extension " << tstruct->get_name() << " : TStruct";
-
+
block_open(out);
-
+
out << endl;
-
+
generate_swift_struct_reader(out, tstruct, is_private);
-
+
if (is_result) {
generate_swift_struct_result_writer(out, tstruct);
}
else {
generate_swift_struct_writer(out, tstruct, is_private);
}
-
+
block_close(out);
-
+
out << endl;
}
@@ -713,46 +713,46 @@
void t_swift_generator::generate_swift_struct_reader(ofstream& out,
t_struct* tstruct,
bool is_private) {
-
+
string visibility = is_private ? "private" : "public";
-
+
indent(out) << visibility << " static func readValueFromProtocol(__proto: TProtocol) throws -> "
<< tstruct->get_name();
-
+
block_open(out);
-
+
out << endl;
-
+
indent(out) << "try __proto.readStructBegin()" << endl << endl;
const vector<t_field*>& fields = tstruct->get_members();
vector<t_field*>::const_iterator f_iter;
-
+
for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
bool optional = field_is_optional(*f_iter);
indent(out) << "var " << maybe_escape_identifier((*f_iter)->get_name()) << " : "
<< type_name((*f_iter)->get_type(), optional, !optional) << endl;
}
-
+
out << endl;
-
+
// Loop over reading in fields
indent(out) << "fields: while true";
-
+
block_open(out);
-
+
out << endl;
indent(out) << "let (_, fieldType, fieldID) = try __proto.readFieldBegin()" << endl << endl;
indent(out) << "switch (fieldID, fieldType)";
-
+
block_open(out);
-
+
indent(out) << "case (_, .STOP):" << endl;
indent_up();
indent(out) << "break fields" << endl << endl;
indent_down();
-
+
// Generate deserialization code for known cases
for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
@@ -761,33 +761,33 @@
indent(out) << maybe_escape_identifier((*f_iter)->get_name()) << " = try __proto.readValue() as "
<< type_name((*f_iter)->get_type()) << endl << endl;
indent_down();
-
+
}
indent(out) << "case let (_, unknownType):" << endl;
indent_up();
indent(out) << "try __proto.skipType(unknownType)" << endl;
indent_down();
-
+
block_close(out);
-
+
out << endl;
// Read field end marker
indent(out) << "try __proto.readFieldEnd()" << endl;
-
+
block_close(out);
out << endl;
-
+
indent(out) << "try __proto.readStructEnd()" << endl;
out << endl;
-
+
if (struct_has_required_fields(tstruct)) {
// performs various checks (e.g. check that all required fields are set)
indent(out) << "// Required fields" << endl;
-
+
for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
if (field_is_optional(*f_iter)) {
continue;
@@ -796,9 +796,9 @@
<< "named: \"" << (*f_iter)->get_name() << "\")" << endl;
}
}
-
+
out << endl;
-
+
indent(out) << "return " << tstruct->get_name() << "(";
for (f_iter = fields.begin(); f_iter != fields.end();) {
out << (*f_iter)->get_name() << ": " << maybe_escape_identifier((*f_iter)->get_name());
@@ -824,13 +824,13 @@
void t_swift_generator::generate_swift_struct_writer(ofstream& out,
t_struct* tstruct,
bool is_private) {
-
+
string visibility = is_private ? "private" : "public";
-
+
indent(out) << visibility << " static func writeValue(__value: " << tstruct->get_name() << ", toProtocol __proto: TProtocol) throws";
-
+
block_open(out);
-
+
out << endl;
string name = tstruct->get_name();
@@ -838,19 +838,19 @@
vector<t_field*>::const_iterator f_iter;
indent(out) << "try __proto.writeStructBeginWithName(\"" << name << "\")" << endl;
-
+
out << endl;
-
+
for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
t_field *tfield = *f_iter;
-
+
bool optional = field_is_optional(tfield);
if (optional) {
indent(out) << "if let " << maybe_escape_identifier(tfield->get_name())
<< " = __value." << maybe_escape_identifier(tfield->get_name());
block_open(out);
}
-
+
indent(out) << "try __proto.writeFieldValue("
<< (optional ? "" : "__value.") << maybe_escape_identifier(tfield->get_name()) << ", "
<< "name: \"" << tfield->get_name() << "\", "
@@ -865,7 +865,7 @@
}
indent(out) << "try __proto.writeFieldStop()" << endl << endl;
-
+
indent(out) << "try __proto.writeStructEnd()" << endl;
block_close(out);
@@ -883,28 +883,28 @@
* @param tstruct The structure definition
*/
void t_swift_generator::generate_swift_struct_result_writer(ofstream& out, t_struct* tstruct) {
-
+
indent(out) << "private static func writeValue(__value: " << tstruct->get_name() << ", toProtocol __proto: TProtocol) throws";
-
+
block_open(out);
-
+
out << endl;
-
+
string name = tstruct->get_name();
const vector<t_field*>& fields = tstruct->get_members();
vector<t_field*>::const_iterator f_iter;
-
+
indent(out) << "try __proto.writeStructBeginWithName(\"" << name << "\")" << endl;
-
+
out << endl;
-
+
for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
t_field *tfield = *f_iter;
-
+
indent(out) << "if let result = __value." << (*f_iter)->get_name();
-
+
block_open(out);
-
+
indent(out) << "try __proto.writeFieldValue(result, "
<< "name: \"" << tfield->get_name() << "\", "
<< "type: " << type_to_enum(tfield->get_type()) << ", "
@@ -914,11 +914,11 @@
}
// Write the struct map
indent(out) << "try __proto.writeFieldStop()" << endl << endl;
-
+
indent(out) << "try __proto.writeStructEnd()" << endl;
block_close(out);
-
+
out << endl;
}
@@ -928,22 +928,22 @@
* @param tstruct The struct definition
*/
void t_swift_generator::generate_swift_struct_printable_extension(ofstream& out, t_struct* tstruct) {
-
+
// Allow use of debugDescription so the app can add description via a cateogory/extension
indent(out) << "extension " << tstruct->get_name() << " : "
<< (debug_descriptions_ ? "CustomDebugStringConvertible" : "CustomStringConvertible");
block_open(out);
-
+
out << endl;
-
+
indent(out) << "public var description : String";
-
+
block_open(out);
-
+
indent(out) << "var desc = \"" << tstruct->get_name() << "(\"" << endl;
-
+
const vector<t_field*>& fields = tstruct->get_members();
vector<t_field*>::const_iterator f_iter;
@@ -959,11 +959,11 @@
indent(out) << "return desc" << endl;
block_close(out);
-
+
out << endl;
-
+
block_close(out);
-
+
out << endl;
}
@@ -975,7 +975,7 @@
* @param tservice The service definition
*/
void t_swift_generator::generate_service(t_service* tservice) {
-
+
generate_swift_service_protocol(f_decl_, tservice);
generate_swift_service_client(f_decl_, tservice);
if (async_clients_) {
@@ -985,7 +985,7 @@
generate_swift_service_server(f_decl_, tservice);
generate_swift_service_helpers(tservice);
-
+
generate_swift_service_client_implementation(f_impl_, tservice);
if (async_clients_) {
generate_swift_service_client_async_implementation(f_impl_, tservice);
@@ -1002,11 +1002,11 @@
vector<t_function*> functions = tservice->get_functions();
vector<t_function*>::iterator f_iter;
for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
-
+
t_struct* ts = (*f_iter)->get_arglist();
-
+
string qname = function_args_helper_struct_type(tservice, *f_iter);
-
+
t_struct qname_ts = t_struct(ts->get_program(), qname);
const vector<t_field*>& members = ts->get_members();
@@ -1014,7 +1014,7 @@
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
qname_ts.append(*m_iter);
}
-
+
generate_swift_struct(f_impl_, &qname_ts, true);
generate_swift_struct_implementation(f_impl_, &qname_ts, false, true);
generate_function_helpers(tservice, *f_iter);
@@ -1065,7 +1065,7 @@
// generate the result struct
generate_swift_struct(f_impl_, &result, true);
generate_swift_struct_implementation(f_impl_, &result, true, true);
-
+
for (f_iter = result.get_members().begin(); f_iter != result.get_members().end(); ++f_iter) {
delete *f_iter;
}
@@ -1081,10 +1081,10 @@
indent(out) << "public protocol " << tservice->get_name();
block_open(out);
-
+
vector<t_function*> functions = tservice->get_functions();
vector<t_function*>::iterator f_iter;
-
+
for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
out << endl;
indent(out) << function_signature(*f_iter) << " // exceptions: ";
@@ -1096,9 +1096,9 @@
}
out << endl;
}
-
+
block_close(out);
-
+
out << endl;
}
@@ -1108,14 +1108,14 @@
* @param tservice The service to generate a protocol definition for
*/
void t_swift_generator::generate_swift_service_protocol_async(ofstream& out, t_service* tservice) {
-
+
indent(out) << "public protocol " << tservice->get_name() << "Async";
block_open(out);
-
+
vector<t_function*> functions = tservice->get_functions();
vector<t_function*>::iterator f_iter;
-
+
for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
out << endl;
indent(out) << async_function_signature(*f_iter) << endl;
@@ -1124,9 +1124,9 @@
}
out << endl;
}
-
+
block_close(out);
-
+
out << endl;
}
@@ -1137,43 +1137,43 @@
*/
void t_swift_generator::generate_swift_service_client(ofstream& out,
t_service* tservice) {
-
+
indent(out) << "public class " << tservice->get_name() << "Client /* : " << tservice->get_name() << " */";
-
+
block_open(out);
-
+
out << endl;
indent(out) << "let __inProtocol : TProtocol" << endl << endl;
-
+
indent(out) << "let __outProtocol : TProtocol" << endl << endl;
-
+
indent(out) << "public init(inoutProtocol: TProtocol)";
-
+
block_open(out);
-
+
indent(out) << "__inProtocol = inoutProtocol" << endl;
-
+
indent(out) << "__outProtocol = inoutProtocol" << endl;
-
+
block_close(out);
-
+
out << endl;
-
+
indent(out) << "public init(inProtocol: TProtocol, outProtocol: TProtocol)";
-
+
block_open(out);
-
+
indent(out) << "__inProtocol = inProtocol" << endl;
-
+
indent(out) << "__outProtocol = outProtocol" << endl;
-
+
block_close(out);
-
+
out << endl;
-
+
block_close(out);
-
+
out << endl;
}
@@ -1184,49 +1184,49 @@
*/
void t_swift_generator::generate_swift_service_client_async(ofstream& out,
t_service* tservice) {
-
+
indent(out) << "public class " << tservice->get_name() << "AsyncClient /* : " << tservice->get_name() << " */";
-
+
block_open(out);
-
+
out << endl;
-
+
indent(out) << "let __protocolFactory : TProtocolFactory" << endl << endl;
-
+
indent(out) << "let __transportFactory : TAsyncTransportFactory" << endl << endl;
-
+
indent(out) << "public init(protocolFactory: TProtocolFactory, transportFactory: TAsyncTransportFactory)";
-
+
block_open(out);
-
+
indent(out) << "__protocolFactory = protocolFactory" << endl;
-
+
indent(out) << "__transportFactory = transportFactory" << endl;
-
+
block_close(out);
-
+
out << endl;
-
+
block_close(out);
-
+
out << endl;
}
/**
- * Generates a service server interface definition. In other words,
+ * Generates a service server interface definition. In other words,
* the TProcess implementation for the service definition.
*
* @param tservice The service to generate a client interface definition for
*/
void t_swift_generator::generate_swift_service_server(ofstream& out,
t_service* tservice) {
-
+
indent(out) << "public class " << tservice->get_name() << "Processor : NSObject /* " << tservice->get_name() << " */";
block_open(out);
-
+
out << endl;
-
+
out << indent() << "typealias ProcessorHandlerDictionary = "
<< "[String: (Int, TProtocol, TProtocol, " << tservice->get_name() << ") throws -> Void]" << endl
<< endl
@@ -1240,7 +1240,7 @@
out << endl;
block_close(out);
-
+
out << endl;
}
@@ -1258,7 +1258,7 @@
t_service *tservice,
t_function* tfunction,
bool needs_protocol) {
-
+
string funname = tfunction->get_name();
t_function send_function(g_type_bool,
@@ -1267,11 +1267,11 @@
string argsname = function_args_helper_struct_type(tservice, tfunction);
t_struct* arg_struct = tfunction->get_arglist();
-
+
// Open function
indent(out) << "private func " << send_function.get_name() << "(" << argument_list(tfunction->get_arglist(), needs_protocol ? "__outProtocol" : "", true) << ") throws";
block_open(out);
-
+
out << endl;
// Serialize the request
@@ -1280,14 +1280,14 @@
<< "sequenceID: 0)" << endl;
out << endl;
-
+
indent(out) << "let __args = " << argsname << "(";
-
+
// write out function parameters
-
+
const vector<t_field*>& fields = arg_struct->get_members();
vector<t_field*>::const_iterator f_iter;
-
+
for (f_iter = fields.begin(); f_iter != fields.end();) {
t_field *tfield = (*f_iter);
out << tfield->get_name() << ": " << tfield->get_name();
@@ -1297,11 +1297,11 @@
}
out << ")" << endl;
indent(out) << "try " << argsname << ".writeValue(__args, toProtocol: __outProtocol)" << endl << endl;
-
+
indent(out) << "try __outProtocol.writeMessageEnd()" << endl;
block_close(out);
-
+
out << endl;
}
@@ -1319,35 +1319,35 @@
t_service* tservice,
t_function* tfunction,
bool needs_protocol) {
-
+
// Open function
indent(out) << "private func recv_" << tfunction->get_name() << "(";
-
+
if (needs_protocol) {
out << "__inProtocol: TProtocol";
}
-
+
out << ") throws";
-
+
if (!tfunction->get_returntype()->is_void()) {
out << " -> " << type_name(tfunction->get_returntype());
}
-
+
block_open(out);
// check for an exception
-
+
out << endl;
-
+
indent(out) << "try __inProtocol.readResultMessageBegin() " << endl << endl;
-
+
string resultname = function_result_helper_struct_type(tservice, tfunction);
indent(out);
if (!tfunction->get_returntype()->is_void() || !tfunction->get_xceptions()->get_members().empty()) {
out << "let __result = ";
}
out << "try " << resultname << ".readValueFromProtocol(__inProtocol)" << endl << endl;
-
+
indent(out) << "try __inProtocol.readMessageEnd()" << endl << endl;
// Careful, only return _result if not a void function
@@ -1361,7 +1361,7 @@
t_struct* xs = tfunction->get_xceptions();
const vector<t_field*>& xceptions = xs->get_members();
vector<t_field*>::const_iterator x_iter;
-
+
for (x_iter = xceptions.begin(); x_iter != xceptions.end(); ++x_iter) {
indent(out) << "if let " << (*x_iter)->get_name() << " = __result." << (*x_iter)->get_name();
block_open(out);
@@ -1381,7 +1381,7 @@
// Close function
block_close(out);
-
+
out << endl;
}
@@ -1393,21 +1393,21 @@
*/
void t_swift_generator::generate_swift_service_client_send_function_invocation(ofstream& out,
t_function* tfunction) {
-
+
indent(out) << "try send_" << tfunction->get_name() << "(";
-
+
t_struct* arg_struct = tfunction->get_arglist();
-
+
const vector<t_field*>& fields = arg_struct->get_members();
vector<t_field*>::const_iterator f_iter;
-
+
for (f_iter = fields.begin(); f_iter != fields.end();) {
out << (*f_iter)->get_name() << ": " << (*f_iter)->get_name();
if (++f_iter != fields.end()) {
out << ", ";
}
}
-
+
out << ")" << endl;
}
@@ -1419,17 +1419,17 @@
*/
void t_swift_generator::generate_swift_service_client_send_async_function_invocation(ofstream& out,
t_function* tfunction) {
-
+
t_struct* arg_struct = tfunction->get_arglist();
const vector<t_field*>& fields = arg_struct->get_members();
vector<t_field*>::const_iterator f_iter;
-
+
indent(out) << "try send_" << tfunction->get_name() << "(__protocol";
-
+
for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
out << ", " << (*f_iter)->get_name() << ": " << (*f_iter)->get_name();
}
-
+
out << ")" << endl;
}
@@ -1440,15 +1440,15 @@
*/
void t_swift_generator::generate_swift_service_client_implementation(ofstream& out,
t_service* tservice) {
-
+
string name = tservice->get_name() + "Client";
-
+
indent(out) << "extension " << name << " : " << tservice->get_name();
-
+
block_open(out);
-
+
out << endl;
-
+
// generate client method implementations
vector<t_function*> functions = tservice->get_functions();
vector<t_function*>::const_iterator f_iter;
@@ -1462,17 +1462,17 @@
// Open function
indent(out) << "public " << function_signature(*f_iter);
-
+
block_open(out);
-
+
out << endl;
-
+
generate_swift_service_client_send_function_invocation(out, *f_iter);
out << endl;
indent(out) << "try __outProtocol.transport().flush()" << endl << endl;
-
+
if (!(*f_iter)->is_oneway()) {
if ((*f_iter)->get_returntype()->is_void()) {
indent(out) << "try recv_" << (*f_iter)->get_name() << "()" << endl;
@@ -1480,14 +1480,14 @@
indent(out) << "return try recv_" << (*f_iter)->get_name() << "()" << endl;
}
}
-
+
block_close(out);
-
+
out << endl;
}
block_close(out);
-
+
out << endl;
}
@@ -1498,16 +1498,16 @@
*/
void t_swift_generator::generate_swift_service_client_async_implementation(ofstream& out,
t_service* tservice) {
-
+
string name = tservice->get_name() + "AsyncClient";
string protocol_name = tservice->get_name() + "Async";
indent(out) << "extension " << name << " : " << protocol_name;
-
+
block_open(out);
-
+
out << endl;
-
+
// generate client method implementations
vector<t_function*> functions = tservice->get_functions();
vector<t_function*>::const_iterator f_iter;
@@ -1518,10 +1518,10 @@
if (!(*f_iter)->is_oneway()) {
generate_swift_service_client_recv_function_implementation(out, tservice, *f_iter, true);
}
-
+
indent(out) << "public " << async_function_signature(*f_iter);
block_open(out);
-
+
out << endl;
out << indent() << "let __transport = __transportFactory.newTransport()" << endl
@@ -1529,11 +1529,11 @@
<< endl;
generate_swift_service_client_send_async_function_invocation(out, *f_iter);
-
+
out << endl;
-
+
indent(out) << "__transport.flushWithCompletion(";
-
+
if ((*f_iter)->is_oneway()) {
out << "success, failure: failure)" << endl;
}
@@ -1547,13 +1547,13 @@
out << "let result = ";
}
out << "try self.recv_" << (*f_iter)->get_name() << "(__protocol)" << endl;
-
+
out << indent() << "success(";
if (!(*f_iter)->get_returntype()->is_void()) {
out << "result";
}
out << ")" << endl;
-
+
block_close(out);
indent(out) << "catch let error";
block_open(out);
@@ -1562,29 +1562,29 @@
block_close(out);
indent(out) << ", failure: failure)" << endl;
}
-
-
+
+
block_close(out);
-
+
out << endl;
// Promise function
if (promise_kit_) {
-
+
indent(out) << "public " << promise_function_signature(*f_iter);
block_open(out);
-
+
out << indent() << "let (__promise, __fulfill, __reject) = Promise<" << type_name((*f_iter)->get_returntype()) << ">.pendingPromise()" << endl << endl
<< indent() << "let __transport = __transportFactory.newTransport()" << endl
<< indent() << "let __protocol = __protocolFactory.newProtocolOnTransport(__transport)" << endl
<< endl;
-
+
generate_swift_service_client_send_async_function_invocation(out, *f_iter);
-
+
out << endl;
-
+
indent(out) << "__transport.flushWithCompletion(";
-
+
if ((*f_iter)->is_oneway()) {
out << "{ __fulfill() }, failure: { __reject($0) })" << endl;
}
@@ -1592,26 +1592,26 @@
block_open(out);
indent(out) << "do";
block_open(out);
-
+
indent(out);
if (!(*f_iter)->get_returntype()->is_void()) {
out << "let result = ";
}
out << "try self.recv_" << (*f_iter)->get_name() << "(__protocol)" << endl;
-
+
out << indent() << "__fulfill(";
if (!(*f_iter)->get_returntype()->is_void()) {
out << "result";
}
out << ")" << endl;
-
+
block_close(out);
indent(out) << "catch let error";
block_open(out);
indent(out) << "__reject(error)" << endl;
block_close(out);
block_close(out);
-
+
indent(out) << ", failure: { error in " << endl;
indent_up();
indent(out) << "__reject(error)" << endl;
@@ -1622,11 +1622,11 @@
indent(out) << "return __promise" << endl;
block_close(out);
-
+
out << endl;
-
+
}
-
+
}
block_close(out);
@@ -1645,52 +1645,52 @@
*/
void t_swift_generator::generate_swift_service_server_implementation(ofstream& out,
t_service* tservice) {
-
+
string name = tservice->get_name() + "Processor";
indent(out) << "extension " << name << " : TProcessor";
block_open(out);
-
+
out << endl;
-
+
indent(out) << "static let processorHandlers : ProcessorHandlerDictionary =";
block_open(out);
-
+
out << endl;
-
+
out << indent() << "var processorHandlers = ProcessorHandlerDictionary()" << endl << endl;
-
+
// generate method map for routing incoming calls
vector<t_function*> functions = tservice->get_functions();
vector<t_function*>::const_iterator f_iter;
for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
-
+
t_function* tfunction = *f_iter;
-
+
string args_type = function_args_helper_struct_type(tservice, *f_iter);
-
+
out << indent() << "processorHandlers[\"" << tfunction->get_name() << "\"] = { sequenceID, inProtocol, outProtocol, handler in" << endl
<< endl;
-
+
indent_up();
out << indent() << "let args = try " << args_type << ".readValueFromProtocol(inProtocol)" << endl
<< endl
<< indent() << "try inProtocol.readMessageEnd()" << endl
<< endl;
-
+
if (!tfunction->is_oneway() ) {
string result_type = function_result_helper_struct_type(tservice, tfunction);
indent(out) << "var result = " << result_type << "()" << endl;
-
+
indent(out) << "do";
block_open(out);
-
+
indent(out);
if (!tfunction->get_returntype()->is_void()) {
out << "result.success = ";
}
out << "try handler." << function_name(tfunction) << "(";
-
+
t_struct* arg_struct = tfunction->get_arglist();
const vector<t_field*>& fields = arg_struct->get_members();
vector<t_field*>::const_iterator f_iter;
@@ -1705,29 +1705,29 @@
out << ", ";
}
}
-
+
out << ")" << endl;
-
+
block_close(out);
-
+
t_struct* xs = tfunction->get_xceptions();
const vector<t_field*>& xfields = xs->get_members();
vector<t_field*>::const_iterator x_iter;
-
+
for (x_iter = xfields.begin(); x_iter != xfields.end(); ++x_iter) {
indent(out) << "catch let error as " << (*x_iter)->get_type()->get_name();
block_open(out);
indent(out) << "result." << (*x_iter)->get_name() << " = error" << endl;
block_close(out);
}
-
+
indent(out) << "catch let error";
block_open(out);
out << indent() << "throw error" << endl;
block_close(out);
-
+
out << endl;
-
+
if (!tfunction->is_oneway()) {
out << indent() << "try outProtocol.writeMessageBeginWithName(\"" << tfunction->get_name() << "\", type: .REPLY, sequenceID: sequenceID)" << endl
<< indent() << "try " << result_type << ".writeValue(result, toProtocol: outProtocol)" << endl
@@ -1735,21 +1735,21 @@
}
}
block_close(out);
-
+
}
-
+
indent(out) << "return processorHandlers" << endl;
-
+
block_close(out,false);
out << "()" << endl;
-
+
out << endl;
-
+
indent(out) << "public func processOnInputProtocol(inProtocol: TProtocol, outputProtocol outProtocol: TProtocol) throws";
block_open(out);
-
+
out << endl;
-
+
out << indent() << "let (messageName, _, sequenceID) = try inProtocol.readMessageBegin()" << endl
<< endl
<< indent() << "if let processorHandler = " << name << ".processorHandlers[messageName]";
@@ -1778,9 +1778,9 @@
indent_down();
indent_down();
block_close(out);
-
+
block_close(out);
-
+
block_close(out);
out << endl;
}
@@ -1809,15 +1809,15 @@
else {
result = ttype->get_name();
}
-
+
if (is_optional) {
result += "?";
}
-
+
if (is_forced) {
result += "!";
}
-
+
return result;
}
@@ -1863,7 +1863,7 @@
t_type* type,
t_const_value* value) {
type = get_true_type(type);
-
+
if (type->is_base_type()) {
t_base_type::t_base tbase = ((t_base_type*)type)->get_base();
switch (tbase) {
@@ -1894,12 +1894,12 @@
} else if (type->is_enum()) {
out << value->get_identifier();
} else if (type->is_struct() || type->is_xception()) {
-
+
out << type_name(type) << "(";
-
+
const vector<t_field*>& fields = ((t_struct*)type)->get_members();
vector<t_field*>::const_iterator f_iter;
-
+
const map<t_const_value*, t_const_value*>& val = value->get_map();
map<t_const_value*, t_const_value*>::const_iterator v_iter;
@@ -1911,7 +1911,7 @@
value = v_iter->second;
}
}
-
+
if (value) {
out << tfield->get_name() << ": ";
render_const_value(out, tfield->get_type(), value);
@@ -1919,18 +1919,18 @@
else if (!field_is_optional(tfield)) {
throw "constant error: required field " + type->get_name() + "." + tfield->get_name() + " has no value";
}
-
+
if (++f_iter != fields.end()) {
out << ", ";
}
}
-
+
out << ")";
-
+
} else if (type->is_map()) {
-
+
out << "[";
-
+
t_type* ktype = ((t_map*)type)->get_key_type();
t_type* vtype = ((t_map*)type)->get_val_type();
@@ -1938,58 +1938,58 @@
map<t_const_value*, t_const_value*>::const_iterator v_iter;
for (v_iter = val.begin(); v_iter != val.end();) {
-
+
render_const_value(out, ktype, v_iter->first);
out << ": ";
render_const_value(out, vtype, v_iter->second);
-
+
if (++v_iter != val.end()) {
out << ", ";
}
}
-
+
out << "]";
-
+
} else if (type->is_list()) {
-
+
out << "[";
-
+
t_type* etype = ((t_list*)type)->get_elem_type();
-
+
const map<t_const_value*, t_const_value*>& val = value->get_map();
map<t_const_value*, t_const_value*>::const_iterator v_iter;
-
+
for (v_iter = val.begin(); v_iter != val.end();) {
-
+
render_const_value(out, etype, v_iter->first);
-
+
if (++v_iter != val.end()) {
out << ", ";
}
}
-
+
out << "]";
} else if (type->is_set()) {
out << "[";
-
+
t_type* etype = ((t_set*)type)->get_elem_type();
-
+
const map<t_const_value*, t_const_value*>& val = value->get_map();
map<t_const_value*, t_const_value*>::const_iterator v_iter;
-
+
for (v_iter = val.begin(); v_iter != val.end();) {
-
+
render_const_value(out, etype, v_iter->first);
-
+
if (++v_iter != val.end()) {
out << ", ";
}
}
-
+
out << "]";
-
+
} else {
throw "compiler error: no const of type " + type->get_name();
}
@@ -2002,20 +2002,20 @@
* @param tfield The field to declare a property for
*/
string t_swift_generator::declare_property(t_field* tfield, bool is_private) {
-
+
string visibility = is_private ? "private" : "public";
-
+
ostringstream render;
render << visibility << " var " << maybe_escape_identifier(tfield->get_name());
-
+
if (field_is_optional(tfield)) {
render << " : " << type_name(tfield->get_type(), true);
}
else {
render << " = " << type_name(tfield->get_type(), false) << "()";
}
-
+
return render.str();
}
@@ -2026,16 +2026,16 @@
* @return String of rendered function definition
*/
string t_swift_generator::function_signature(t_function* tfunction) {
-
+
string result = "func " + function_name(tfunction);
-
+
result += "(" + argument_list(tfunction->get_arglist(), "", false) + ") throws";
-
+
t_type* ttype = tfunction->get_returntype();
if (!ttype->is_void()) {
result += " -> " + type_name(ttype);
}
-
+
return result;
}
@@ -2092,7 +2092,7 @@
const vector<t_field*>& fields = tstruct->get_members();
vector<t_field*>::const_iterator f_iter;
-
+
if (include_protocol) {
result += protocol_name + ": TProtocol";
if (!fields.empty()) {
@@ -2103,11 +2103,11 @@
// Force first argument to be named
result += fields.front()->get_name() + " ";
}
-
+
for (f_iter = fields.begin(); f_iter != fields.end();) {
t_field* arg = *f_iter;
result += arg->get_name() + ": " + type_name(arg->get_type());
-
+
if (++f_iter != fields.end()) {
result += ", ";
}
@@ -2160,7 +2160,7 @@
*/
string t_swift_generator::type_to_enum(t_type* type, bool qualified) {
type = get_true_type(type);
-
+
string result = qualified ? "TType." : ".";
if (type->is_base_type()) {
diff --git a/compiler/cpp/src/generate/t_xml_generator.cc b/compiler/cpp/src/thrift/generate/t_xml_generator.cc
similarity index 97%
rename from compiler/cpp/src/generate/t_xml_generator.cc
rename to compiler/cpp/src/thrift/generate/t_xml_generator.cc
index 5465b49..b35f351 100644
--- a/compiler/cpp/src/generate/t_xml_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_xml_generator.cc
@@ -26,8 +26,8 @@
#include <sys/stat.h>
#include <sstream>
-#include "t_generator.h"
-#include "platform.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_generator.h"
using std::map;
using std::ofstream;
@@ -72,7 +72,7 @@
} else if( iter->first.compare("no_namespaces") == 0) {
should_use_namespaces_ = false;
} else {
- throw "unknown option xml:" + iter->first;
+ throw "unknown option xml:" + iter->first;
}
}
@@ -102,7 +102,7 @@
bool should_use_namespaces_;
std::ofstream f_xml_;
-
+
std::set<string> programs_;
std::stack<string> elements_;
bool top_element_is_empty;
@@ -188,8 +188,8 @@
close_top_element();
// TODO: indent any EOLs that may occur with msg
// TODO: proper msg escaping needed?
- f_xml_ << indent() << "<!-- " << msg << " -->" << endl;
- top_element_is_empty = false;
+ f_xml_ << indent() << "<!-- " << msg << " -->" << endl;
+ top_element_is_empty = false;
}
void t_xml_generator::close_top_element() {
@@ -238,7 +238,7 @@
}
close_top_element();
top_element_is_empty = false;
- f_xml_ << indent()
+ f_xml_ << indent()
<< "<" << name << ">" << escape_xml_string(val) << "</" << name << ">"
<< endl;
}
@@ -287,9 +287,9 @@
}
write_xml_comment( xml_autogen_comment());
-
+
iterate_program(program_);
-
+
write_element_end();
close_generator();
@@ -297,7 +297,7 @@
}
void t_xml_generator::iterate_program(t_program* program) {
-
+
write_element_start("document");
write_attribute("name", program->get_name());
if (should_use_namespaces_) {
@@ -548,7 +548,7 @@
}
generate_annotations(tstruct->annotations_);
-
+
write_element_end();
}
@@ -556,7 +556,7 @@
void t_xml_generator::generate_field(t_field* field) {
write_attribute("name", field->get_name());
write_int_attribute("field-id", field->get_key());
- write_doc(field);
+ write_doc(field);
string requiredness;
switch (field->get_req()) {
case t_field::T_REQUIRED:
@@ -582,7 +582,7 @@
}
void t_xml_generator::generate_service(t_service* tservice) {
-
+
write_element_start("service");
write_attribute("name", tservice->get_name());
@@ -595,7 +595,7 @@
write_attribute("targetNamespace", tns);
write_attribute("xmlns:tns", tns);
}
-
+
if (tservice->get_extends()) {
const t_service* extends = tservice->get_extends();
write_attribute("parent-module", extends->get_program()->get_name());
@@ -609,15 +609,15 @@
for (; fn_iter != functions.end(); fn_iter++) {
generate_function(*fn_iter);
}
-
+
generate_annotations(tservice->annotations_);
-
+
write_element_end();
}
void t_xml_generator::generate_function(t_function* tfunc) {
-
+
write_element_start("method");
write_attribute("name", tfunc->get_name());
@@ -638,7 +638,7 @@
generate_field(*mem_iter);
write_element_end();
}
-
+
vector<t_field*> excepts = tfunc->get_xceptions()->get_members();
vector<t_field*>::iterator ex_iter = excepts.begin();
for (; ex_iter != excepts.end(); ex_iter++) {
@@ -648,7 +648,7 @@
}
generate_annotations(tfunc->annotations_);
-
+
write_element_end();
}
@@ -663,9 +663,9 @@
if (ttype->is_map()) {
return "map";
}
- if ((ttype->is_enum() )||
- (ttype->is_struct() )||
- (ttype->is_typedef() )||
+ if ((ttype->is_enum() )||
+ (ttype->is_struct() )||
+ (ttype->is_typedef() )||
(ttype->is_xception())){
return "id";
}
diff --git a/compiler/cpp/src/generate/t_xsd_generator.cc b/compiler/cpp/src/thrift/generate/t_xsd_generator.cc
similarity index 98%
rename from compiler/cpp/src/generate/t_xsd_generator.cc
rename to compiler/cpp/src/thrift/generate/t_xsd_generator.cc
index 2de860a..fa51ba0 100644
--- a/compiler/cpp/src/generate/t_xsd_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_xsd_generator.cc
@@ -24,9 +24,9 @@
#include <stdlib.h>
#include <sys/stat.h>
#include <sstream>
-#include "t_generator.h"
-#include "version.h"
-#include "platform.h"
+#include "thrift/version.h"
+#include "thrift/platform.h"
+#include "thrift/generate/t_generator.h"
using std::map;
using std::ofstream;
@@ -53,7 +53,7 @@
/* no options yet */
for( iter = parsed_options.begin(); iter != parsed_options.end(); ++iter) {
- throw "unknown option xsd:" + iter->first;
+ throw "unknown option xsd:" + iter->first;
}
out_dir_base_ = "gen-xsd";
diff --git a/compiler/cpp/src/globals.h b/compiler/cpp/src/thrift/globals.h
similarity index 100%
rename from compiler/cpp/src/globals.h
rename to compiler/cpp/src/thrift/globals.h
diff --git a/compiler/cpp/src/logging.cc b/compiler/cpp/src/thrift/logging.cc
similarity index 96%
rename from compiler/cpp/src/logging.cc
rename to compiler/cpp/src/thrift/logging.cc
index 2daaaec..f821f5f 100644
--- a/compiler/cpp/src/logging.cc
+++ b/compiler/cpp/src/thrift/logging.cc
@@ -21,8 +21,8 @@
* Logging functions copied from main.cc to avoid link errors for plugins
*/
-#include "logging.h"
-#include "globals.h"
+#include "thrift/logging.h"
+#include "thrift/globals.h"
#include <cstdarg>
#include <cstdio>
#include <cstdlib>
diff --git a/compiler/cpp/src/logging.h b/compiler/cpp/src/thrift/logging.h
similarity index 100%
rename from compiler/cpp/src/logging.h
rename to compiler/cpp/src/thrift/logging.h
diff --git a/compiler/cpp/src/main.cc b/compiler/cpp/src/thrift/main.cc
similarity index 98%
rename from compiler/cpp/src/main.cc
rename to compiler/cpp/src/thrift/main.cc
index 510d69f..8421840 100644
--- a/compiler/cpp/src/main.cc
+++ b/compiler/cpp/src/thrift/main.cc
@@ -44,20 +44,20 @@
#endif
// Careful: must include globals first for extern definitions
-#include "common.h"
-#include "globals.h"
+#include "thrift/common.h"
+#include "thrift/globals.h"
-#include "platform.h"
-#include "main.h"
-#include "parse/t_program.h"
-#include "parse/t_scope.h"
-#include "generate/t_generator.h"
-#include "audit/t_audit.h"
+#include "thrift/platform.h"
+#include "thrift/main.h"
+#include "thrift/parse/t_program.h"
+#include "thrift/parse/t_scope.h"
+#include "thrift/generate/t_generator.h"
+#include "thrift/audit/t_audit.h"
#ifdef THRIFT_ENABLE_PLUGIN
-#include "plugin/plugin_output.h"
+#include "thrift/plugin/plugin_output.h"
#endif
-#include "version.h"
+#include "thrift/version.h"
using namespace std;
diff --git a/compiler/cpp/src/main.h b/compiler/cpp/src/thrift/main.h
similarity index 96%
rename from compiler/cpp/src/main.h
rename to compiler/cpp/src/thrift/main.h
index b0af5a7..54abb03 100644
--- a/compiler/cpp/src/main.h
+++ b/compiler/cpp/src/thrift/main.h
@@ -23,10 +23,10 @@
#include <string>
#include <cstdio>
-#include "logging.h"
+#include "thrift/logging.h"
-#include "parse/t_const.h"
-#include "parse/t_field.h"
+#include "thrift/parse/t_const.h"
+#include "thrift/parse/t_field.h"
/**
* Defined in the flex library
diff --git a/compiler/cpp/src/parse/parse.cc b/compiler/cpp/src/thrift/parse/parse.cc
similarity index 92%
rename from compiler/cpp/src/parse/parse.cc
rename to compiler/cpp/src/thrift/parse/parse.cc
index 81a557b..01f7637 100644
--- a/compiler/cpp/src/parse/parse.cc
+++ b/compiler/cpp/src/thrift/parse/parse.cc
@@ -17,10 +17,10 @@
* under the License.
*/
-#include "t_type.h"
-#include "t_typedef.h"
+#include "thrift/parse/t_type.h"
+#include "thrift/parse/t_typedef.h"
-#include "main.h"
+#include "thrift/main.h"
t_type* t_type::get_true_type() {
t_type* type = this;
diff --git a/compiler/cpp/src/parse/t_base_type.h b/compiler/cpp/src/thrift/parse/t_base_type.h
similarity index 98%
rename from compiler/cpp/src/parse/t_base_type.h
rename to compiler/cpp/src/thrift/parse/t_base_type.h
index 11d73e0..32523cb 100644
--- a/compiler/cpp/src/parse/t_base_type.h
+++ b/compiler/cpp/src/thrift/parse/t_base_type.h
@@ -21,7 +21,7 @@
#define T_BASE_TYPE_H
#include <cstdlib>
-#include "t_type.h"
+#include "thrift/parse/t_type.h"
/**
* A thrift base type, which must be one of the defined enumerated types inside
diff --git a/compiler/cpp/src/parse/t_const.h b/compiler/cpp/src/thrift/parse/t_const.h
similarity index 95%
rename from compiler/cpp/src/parse/t_const.h
rename to compiler/cpp/src/thrift/parse/t_const.h
index 0f64bb1..3c08e0d 100644
--- a/compiler/cpp/src/parse/t_const.h
+++ b/compiler/cpp/src/thrift/parse/t_const.h
@@ -20,8 +20,8 @@
#ifndef T_CONST_H
#define T_CONST_H
-#include "t_type.h"
-#include "t_const_value.h"
+#include "thrift/parse/t_type.h"
+#include "thrift/parse/t_const_value.h"
/**
* A const is a constant value defined across languages that has a type and
diff --git a/compiler/cpp/src/parse/t_const_value.h b/compiler/cpp/src/thrift/parse/t_const_value.h
similarity index 98%
rename from compiler/cpp/src/parse/t_const_value.h
rename to compiler/cpp/src/thrift/parse/t_const_value.h
index 15366ad..5507803 100644
--- a/compiler/cpp/src/parse/t_const_value.h
+++ b/compiler/cpp/src/thrift/parse/t_const_value.h
@@ -20,7 +20,7 @@
#ifndef T_CONST_VALUE_H
#define T_CONST_VALUE_H
-#include "t_enum.h"
+#include "thrift/parse/t_enum.h"
#include <stdint.h>
#include <map>
#include <vector>
diff --git a/compiler/cpp/src/parse/t_container.h b/compiler/cpp/src/thrift/parse/t_container.h
similarity index 97%
rename from compiler/cpp/src/parse/t_container.h
rename to compiler/cpp/src/thrift/parse/t_container.h
index 2cdcf7e..5bdab70 100644
--- a/compiler/cpp/src/parse/t_container.h
+++ b/compiler/cpp/src/thrift/parse/t_container.h
@@ -20,7 +20,7 @@
#ifndef T_CONTAINER_H
#define T_CONTAINER_H
-#include "t_type.h"
+#include "thrift/parse/t_type.h"
class t_container : public t_type {
public:
diff --git a/compiler/cpp/src/parse/t_doc.h b/compiler/cpp/src/thrift/parse/t_doc.h
similarity index 95%
rename from compiler/cpp/src/parse/t_doc.h
rename to compiler/cpp/src/thrift/parse/t_doc.h
index 621513a..7bcb8f5 100644
--- a/compiler/cpp/src/parse/t_doc.h
+++ b/compiler/cpp/src/thrift/parse/t_doc.h
@@ -20,8 +20,8 @@
#ifndef T_DOC_H
#define T_DOC_H
-#include "globals.h"
-#include "logging.h"
+#include "thrift/globals.h"
+#include "thrift/logging.h"
/**
* Documentation stubs
diff --git a/compiler/cpp/src/parse/t_enum.h b/compiler/cpp/src/thrift/parse/t_enum.h
similarity index 97%
rename from compiler/cpp/src/parse/t_enum.h
rename to compiler/cpp/src/thrift/parse/t_enum.h
index 268f89f..9e23780 100644
--- a/compiler/cpp/src/parse/t_enum.h
+++ b/compiler/cpp/src/thrift/parse/t_enum.h
@@ -22,8 +22,8 @@
#include <vector>
-#include "t_enum_value.h"
-#include "t_type.h"
+#include "thrift/parse/t_enum_value.h"
+#include "thrift/parse/t_type.h"
/**
* An enumerated type. A list of constant objects with a name for the type.
diff --git a/compiler/cpp/src/parse/t_enum_value.h b/compiler/cpp/src/thrift/parse/t_enum_value.h
similarity index 97%
rename from compiler/cpp/src/parse/t_enum_value.h
rename to compiler/cpp/src/thrift/parse/t_enum_value.h
index 296029b..c0bf3ad 100644
--- a/compiler/cpp/src/parse/t_enum_value.h
+++ b/compiler/cpp/src/thrift/parse/t_enum_value.h
@@ -22,7 +22,7 @@
#include <map>
#include <string>
-#include "t_doc.h"
+#include "thrift/parse/t_doc.h"
/**
* A constant. These are used inside of enum definitions. Constants are just
diff --git a/compiler/cpp/src/parse/t_field.h b/compiler/cpp/src/thrift/parse/t_field.h
similarity index 97%
rename from compiler/cpp/src/parse/t_field.h
rename to compiler/cpp/src/thrift/parse/t_field.h
index 8b459a3..c5f1f80 100644
--- a/compiler/cpp/src/parse/t_field.h
+++ b/compiler/cpp/src/thrift/parse/t_field.h
@@ -24,8 +24,8 @@
#include <string>
#include <sstream>
-#include "t_doc.h"
-#include "t_type.h"
+#include "thrift/parse/t_doc.h"
+#include "thrift/parse/t_type.h"
// Forward declare for xsd_attrs
class t_struct;
diff --git a/compiler/cpp/src/parse/t_function.h b/compiler/cpp/src/thrift/parse/t_function.h
similarity index 95%
rename from compiler/cpp/src/parse/t_function.h
rename to compiler/cpp/src/thrift/parse/t_function.h
index 96886f3..05dc930 100644
--- a/compiler/cpp/src/parse/t_function.h
+++ b/compiler/cpp/src/thrift/parse/t_function.h
@@ -21,9 +21,9 @@
#define T_FUNCTION_H
#include <string>
-#include "t_type.h"
-#include "t_struct.h"
-#include "t_doc.h"
+#include "thrift/parse/t_type.h"
+#include "thrift/parse/t_struct.h"
+#include "thrift/parse/t_doc.h"
/**
* Representation of a function. Key parts are return type, function name,
diff --git a/compiler/cpp/src/parse/t_list.h b/compiler/cpp/src/thrift/parse/t_list.h
similarity index 96%
rename from compiler/cpp/src/parse/t_list.h
rename to compiler/cpp/src/thrift/parse/t_list.h
index ac0d981..acf6865 100644
--- a/compiler/cpp/src/parse/t_list.h
+++ b/compiler/cpp/src/thrift/parse/t_list.h
@@ -20,7 +20,7 @@
#ifndef T_LIST_H
#define T_LIST_H
-#include "t_container.h"
+#include "thrift/parse/t_container.h"
/**
* A list is a lightweight container type that just wraps another data type.
diff --git a/compiler/cpp/src/parse/t_map.h b/compiler/cpp/src/thrift/parse/t_map.h
similarity index 96%
rename from compiler/cpp/src/parse/t_map.h
rename to compiler/cpp/src/thrift/parse/t_map.h
index 269aeab..dd3f089 100644
--- a/compiler/cpp/src/parse/t_map.h
+++ b/compiler/cpp/src/thrift/parse/t_map.h
@@ -20,7 +20,7 @@
#ifndef T_MAP_H
#define T_MAP_H
-#include "t_container.h"
+#include "thrift/parse/t_container.h"
/**
* A map is a lightweight container type that just wraps another two data
diff --git a/compiler/cpp/src/parse/t_program.h b/compiler/cpp/src/thrift/parse/t_program.h
similarity index 96%
rename from compiler/cpp/src/parse/t_program.h
rename to compiler/cpp/src/thrift/parse/t_program.h
index 563e9e0..43dd45a 100644
--- a/compiler/cpp/src/parse/t_program.h
+++ b/compiler/cpp/src/thrift/parse/t_program.h
@@ -25,21 +25,21 @@
#include <vector>
// For program_name()
-#include "main.h"
+#include "thrift/main.h"
-#include "t_doc.h"
-#include "t_scope.h"
-#include "t_base_type.h"
-#include "t_typedef.h"
-#include "t_enum.h"
-#include "t_const.h"
-#include "t_struct.h"
-#include "t_service.h"
-#include "t_list.h"
-#include "t_map.h"
-#include "t_set.h"
-#include "generate/t_generator_registry.h"
-//#include "t_doc.h"
+#include "thrift/parse/t_doc.h"
+#include "thrift/parse/t_scope.h"
+#include "thrift/parse/t_base_type.h"
+#include "thrift/parse/t_typedef.h"
+#include "thrift/parse/t_enum.h"
+#include "thrift/parse/t_const.h"
+#include "thrift/parse/t_struct.h"
+#include "thrift/parse/t_service.h"
+#include "thrift/parse/t_list.h"
+#include "thrift/parse/t_map.h"
+#include "thrift/parse/t_set.h"
+#include "thrift/generate/t_generator_registry.h"
+//#include "thrift/parse/t_doc.h"
/**
* Top level class representing an entire thrift program. A program consists
diff --git a/compiler/cpp/src/parse/t_scope.h b/compiler/cpp/src/thrift/parse/t_scope.h
similarity index 96%
rename from compiler/cpp/src/parse/t_scope.h
rename to compiler/cpp/src/thrift/parse/t_scope.h
index 565fd8f..e196200 100644
--- a/compiler/cpp/src/parse/t_scope.h
+++ b/compiler/cpp/src/thrift/parse/t_scope.h
@@ -24,13 +24,13 @@
#include <string>
#include <sstream>
-#include "t_type.h"
-#include "t_service.h"
-#include "t_const.h"
-#include "t_const_value.h"
-#include "t_base_type.h"
-#include "t_map.h"
-#include "t_list.h"
+#include "thrift/parse/t_type.h"
+#include "thrift/parse/t_service.h"
+#include "thrift/parse/t_const.h"
+#include "thrift/parse/t_const_value.h"
+#include "thrift/parse/t_base_type.h"
+#include "thrift/parse/t_map.h"
+#include "thrift/parse/t_list.h"
namespace plugin_output {
template <typename From, typename To>
diff --git a/compiler/cpp/src/parse/t_service.h b/compiler/cpp/src/thrift/parse/t_service.h
similarity index 97%
rename from compiler/cpp/src/parse/t_service.h
rename to compiler/cpp/src/thrift/parse/t_service.h
index 6fa8398..e2204ca 100644
--- a/compiler/cpp/src/parse/t_service.h
+++ b/compiler/cpp/src/thrift/parse/t_service.h
@@ -20,7 +20,7 @@
#ifndef T_SERVICE_H
#define T_SERVICE_H
-#include "t_function.h"
+#include "thrift/parse/t_function.h"
#include <vector>
class t_program;
diff --git a/compiler/cpp/src/parse/t_set.h b/compiler/cpp/src/thrift/parse/t_set.h
similarity index 96%
rename from compiler/cpp/src/parse/t_set.h
rename to compiler/cpp/src/thrift/parse/t_set.h
index 8a46480..f913be4 100644
--- a/compiler/cpp/src/parse/t_set.h
+++ b/compiler/cpp/src/thrift/parse/t_set.h
@@ -20,7 +20,7 @@
#ifndef T_SET_H
#define T_SET_H
-#include "t_container.h"
+#include "thrift/parse/t_container.h"
/**
* A set is a lightweight container type that just wraps another data type.
diff --git a/compiler/cpp/src/parse/t_struct.h b/compiler/cpp/src/thrift/parse/t_struct.h
similarity index 98%
rename from compiler/cpp/src/parse/t_struct.h
rename to compiler/cpp/src/thrift/parse/t_struct.h
index 1f48f91..4102da7 100644
--- a/compiler/cpp/src/parse/t_struct.h
+++ b/compiler/cpp/src/thrift/parse/t_struct.h
@@ -25,8 +25,8 @@
#include <utility>
#include <string>
-#include "t_type.h"
-#include "t_field.h"
+#include "thrift/parse/t_type.h"
+#include "thrift/parse/t_field.h"
// Forward declare that puppy
class t_program;
diff --git a/compiler/cpp/src/parse/t_type.h b/compiler/cpp/src/thrift/parse/t_type.h
similarity index 98%
rename from compiler/cpp/src/parse/t_type.h
rename to compiler/cpp/src/thrift/parse/t_type.h
index bea4ee1..30f8c1f 100644
--- a/compiler/cpp/src/parse/t_type.h
+++ b/compiler/cpp/src/thrift/parse/t_type.h
@@ -24,7 +24,7 @@
#include <map>
#include <cstring>
#include <stdint.h>
-#include "t_doc.h"
+#include "thrift/parse/t_doc.h"
class t_program;
diff --git a/compiler/cpp/src/parse/t_typedef.cc b/compiler/cpp/src/thrift/parse/t_typedef.cc
similarity index 93%
rename from compiler/cpp/src/parse/t_typedef.cc
rename to compiler/cpp/src/thrift/parse/t_typedef.cc
index ddbe749..99ffdb8 100644
--- a/compiler/cpp/src/parse/t_typedef.cc
+++ b/compiler/cpp/src/thrift/parse/t_typedef.cc
@@ -18,8 +18,8 @@
*/
#include <cstdio>
-#include "t_typedef.h"
-#include "t_program.h"
+#include "thrift/parse/t_typedef.h"
+#include "thrift/parse/t_program.h"
t_type* t_typedef::get_type() const {
if (type_ == NULL) {
diff --git a/compiler/cpp/src/parse/t_typedef.h b/compiler/cpp/src/thrift/parse/t_typedef.h
similarity index 98%
rename from compiler/cpp/src/parse/t_typedef.h
rename to compiler/cpp/src/thrift/parse/t_typedef.h
index a39a246..0cccc26 100644
--- a/compiler/cpp/src/parse/t_typedef.h
+++ b/compiler/cpp/src/thrift/parse/t_typedef.h
@@ -21,7 +21,7 @@
#define T_TYPEDEF_H
#include <string>
-#include "t_type.h"
+#include "thrift/parse/t_type.h"
/**
* A typedef is a mapping from a symbolic name to another type. In dymanically
diff --git a/compiler/cpp/src/platform.h b/compiler/cpp/src/thrift/platform.h
similarity index 96%
rename from compiler/cpp/src/platform.h
rename to compiler/cpp/src/thrift/platform.h
index 8cbe9db..7a8edae 100644
--- a/compiler/cpp/src/platform.h
+++ b/compiler/cpp/src/thrift/platform.h
@@ -23,7 +23,7 @@
*/
#ifdef _MSC_VER
-#include "windows/config.h"
+#include "thrift/windows/config.h"
#endif
#ifdef _WIN32
diff --git a/compiler/cpp/src/plugin/Makefile.am b/compiler/cpp/src/thrift/plugin/Makefile.am
similarity index 93%
rename from compiler/cpp/src/plugin/Makefile.am
rename to compiler/cpp/src/thrift/plugin/Makefile.am
index 7e3c82d..e84cdbd 100644
--- a/compiler/cpp/src/plugin/Makefile.am
+++ b/compiler/cpp/src/thrift/plugin/Makefile.am
@@ -30,10 +30,10 @@
plugin_constants.cpp
BUILT_SOURCES = $(plugin_gen)
-gen.stamp: plugin.thrift $(top_builddir)/compiler/cpp/src/thrift-bootstrap
+gen.stamp: plugin.thrift $(top_builddir)/compiler/cpp/src/thrift/thrift-bootstrap
@$(RM) -f gen.tmp
@touch gen.tmp
- $(top_builddir)/compiler/cpp/src/thrift-bootstrap -gen cpp -out . $<
+ $(top_builddir)/compiler/cpp/src/thrift/thrift-bootstrap -gen cpp -out . $<
@mv -f gen.tmp $@
$(plugin_gen): gen.stamp
diff --git a/compiler/cpp/src/plugin/plugin.cc b/compiler/cpp/src/thrift/plugin/plugin.cc
similarity index 98%
rename from compiler/cpp/src/plugin/plugin.cc
rename to compiler/cpp/src/thrift/plugin/plugin.cc
index d969f50..1d45d89 100644
--- a/compiler/cpp/src/plugin/plugin.cc
+++ b/compiler/cpp/src/thrift/plugin/plugin.cc
@@ -17,7 +17,7 @@
* under the License.
*/
-#include "plugin/plugin.h"
+#include "thrift/plugin/plugin.h"
#ifdef _WIN32
#include <fcntl.h>
@@ -32,13 +32,13 @@
#include <boost/range/algorithm/for_each.hpp>
#include <boost/smart_ptr.hpp>
-#include "generate/t_generator.h"
-#include "plugin/type_util.h"
+#include "thrift/generate/t_generator.h"
+#include "thrift/plugin/type_util.h"
#include "thrift/protocol/TBinaryProtocol.h"
#include "thrift/transport/TBufferTransports.h"
#include "thrift/transport/TFDTransport.h"
-#include "plugin/plugin_types.h"
+#include "thrift/plugin/plugin_types.h"
namespace apache {
namespace thrift {
diff --git a/compiler/cpp/src/plugin/plugin.h b/compiler/cpp/src/thrift/plugin/plugin.h
similarity index 100%
rename from compiler/cpp/src/plugin/plugin.h
rename to compiler/cpp/src/thrift/plugin/plugin.h
diff --git a/compiler/cpp/src/plugin/plugin.thrift b/compiler/cpp/src/thrift/plugin/plugin.thrift
similarity index 100%
rename from compiler/cpp/src/plugin/plugin.thrift
rename to compiler/cpp/src/thrift/plugin/plugin.thrift
diff --git a/compiler/cpp/src/plugin/plugin_output.cc b/compiler/cpp/src/thrift/plugin/plugin_output.cc
similarity index 98%
rename from compiler/cpp/src/plugin/plugin_output.cc
rename to compiler/cpp/src/thrift/plugin/plugin_output.cc
index 1ab015e..168a4a6 100644
--- a/compiler/cpp/src/plugin/plugin_output.cc
+++ b/compiler/cpp/src/thrift/plugin/plugin_output.cc
@@ -29,21 +29,21 @@
#define THRIFT_PCLOSE pclose
#endif
-#include "plugin/plugin_output.h"
+#include "thrift/plugin/plugin_output.h"
#include <boost/range/adaptor/map.hpp>
#include <boost/range/algorithm/copy.hpp>
#include <boost/range/algorithm/transform.hpp>
#include <boost/smart_ptr.hpp>
-#include "generate/t_generator.h"
-#include "plugin/plugin.h"
-#include "plugin/type_util.h"
+#include "thrift/generate/t_generator.h"
+#include "thrift/plugin/plugin.h"
+#include "thrift/plugin/type_util.h"
#include "thrift/protocol/TBinaryProtocol.h"
#include "thrift/transport/TBufferTransports.h"
#include "thrift/transport/TFDTransport.h"
-#include "plugin/plugin_types.h"
+#include "thrift/plugin/plugin_types.h"
namespace plugin_output {
diff --git a/compiler/cpp/src/plugin/plugin_output.h b/compiler/cpp/src/thrift/plugin/plugin_output.h
similarity index 100%
rename from compiler/cpp/src/plugin/plugin_output.h
rename to compiler/cpp/src/thrift/plugin/plugin_output.h
diff --git a/compiler/cpp/src/plugin/type_util.h b/compiler/cpp/src/thrift/plugin/type_util.h
similarity index 100%
rename from compiler/cpp/src/plugin/type_util.h
rename to compiler/cpp/src/thrift/plugin/type_util.h
diff --git a/compiler/cpp/src/thriftl.ll b/compiler/cpp/src/thrift/thriftl.ll
similarity index 98%
rename from compiler/cpp/src/thriftl.ll
rename to compiler/cpp/src/thrift/thriftl.ll
index f479280..bf7e8a5 100644
--- a/compiler/cpp/src/thriftl.ll
+++ b/compiler/cpp/src/thrift/thriftl.ll
@@ -53,21 +53,21 @@
#include <stdlib.h>
#ifdef _MSC_VER
-#include "windows/config.h"
+#include "thrift/windows/config.h"
#endif
-#include "main.h"
-#include "common.h"
-#include "globals.h"
-#include "parse/t_program.h"
+#include "thrift/main.h"
+#include "thrift/common.h"
+#include "thrift/globals.h"
+#include "thrift/parse/t_program.h"
/**
* Must be included AFTER parse/t_program.h, but I can't remember why anymore
* because I wrote this a while ago.
*/
#if defined(BISON_USE_PARSER_H_EXTENSION)
-#include "thrifty.h"
+#include "thrift/thrifty.h"
#else
-#include "thrifty.hh"
+#include "thrift/thrifty.hh"
#endif
void thrift_reserved_keyword(char* keyword) {
@@ -223,7 +223,7 @@
"include" { return tok_include; }
"void" { return tok_void; }
"bool" { return tok_bool; }
-"byte" {
+"byte" {
emit_byte_type_warning();
return tok_i8;
}
diff --git a/compiler/cpp/src/thrifty.yy b/compiler/cpp/src/thrift/thrifty.yy
similarity index 99%
rename from compiler/cpp/src/thrifty.yy
rename to compiler/cpp/src/thrift/thrifty.yy
index 51de58f..b7a7f72 100644
--- a/compiler/cpp/src/thrifty.yy
+++ b/compiler/cpp/src/thrift/thrifty.yy
@@ -35,13 +35,13 @@
#endif
#include <limits.h>
#ifdef _MSC_VER
-#include "windows/config.h"
+#include "thrift/windows/config.h"
#endif
-#include "main.h"
-#include "common.h"
-#include "globals.h"
-#include "parse/t_program.h"
-#include "parse/t_scope.h"
+#include "thrift/main.h"
+#include "thrift/common.h"
+#include "thrift/globals.h"
+#include "thrift/parse/t_program.h"
+#include "thrift/parse/t_scope.h"
#ifdef _MSC_VER
//warning C4065: switch statement contains 'default' but no 'case' labels
diff --git a/compiler/cpp/src/version.h.in b/compiler/cpp/src/thrift/version.h.in
similarity index 100%
rename from compiler/cpp/src/version.h.in
rename to compiler/cpp/src/thrift/version.h.in
diff --git a/compiler/cpp/src/windows/config.h b/compiler/cpp/src/thrift/windows/config.h
similarity index 100%
rename from compiler/cpp/src/windows/config.h
rename to compiler/cpp/src/thrift/windows/config.h
diff --git a/compiler/cpp/src/windows/version.h.in b/compiler/cpp/src/thrift/windows/version.h.in
similarity index 100%
rename from compiler/cpp/src/windows/version.h.in
rename to compiler/cpp/src/thrift/windows/version.h.in
diff --git a/compiler/cpp/test/CMakeLists.txt b/compiler/cpp/test/CMakeLists.txt
index 047e23e..c1fe914 100644
--- a/compiler/cpp/test/CMakeLists.txt
+++ b/compiler/cpp/test/CMakeLists.txt
@@ -43,7 +43,7 @@
add_test(NAME PluginUnitTest COMMAND plugintest)
set(thrift-gen-mycpp_SOURCES
- ../src/generate/t_cpp_generator.cc
+ ../src/thrift/generate/t_cpp_generator.cc
plugin/cpp_plugin.cc
)
add_executable(thrift-gen-mycpp ${thrift-gen-mycpp_SOURCES})
diff --git a/compiler/cpp/test/plugin/conversion_test.cc b/compiler/cpp/test/plugin/conversion_test.cc
index f2d1407..5159ba4 100644
--- a/compiler/cpp/test/plugin/conversion_test.cc
+++ b/compiler/cpp/test/plugin/conversion_test.cc
@@ -17,9 +17,9 @@
* under the License.
*/
-#include "parse/t_program.h"
-#include "plugin/type_util.h"
-#include "plugin/plugin_types.h"
+#include "thrift/parse/t_program.h"
+#include "thrift/plugin/type_util.h"
+#include "thrift/plugin/plugin_types.h"
#include <map>
#include <vector>
diff --git a/compiler/cpp/test/plugin/cpp_plugin.cc b/compiler/cpp/test/plugin/cpp_plugin.cc
index 43a62d4..6cc19f2 100644
--- a/compiler/cpp/test/plugin/cpp_plugin.cc
+++ b/compiler/cpp/test/plugin/cpp_plugin.cc
@@ -17,8 +17,8 @@
* under the License.
*/
-#include "plugin/plugin.h"
-#include "generate/t_generator.h"
+#include "thrift/plugin/plugin.h"
+#include "thrift/generate/t_generator.h"
namespace apache {
namespace thrift {
diff --git a/configure.ac b/configure.ac
index e11636f..94e7a8b 100755
--- a/configure.ac
+++ b/configure.ac
@@ -528,7 +528,7 @@
have_plugin="no"
fi
if test "$have_plugin" = "yes" ; then
- AC_CONFIG_LINKS([compiler/cpp/test/plugin/t_cpp_generator.cc:compiler/cpp/src/generate/t_cpp_generator.cc])
+ AC_CONFIG_LINKS([compiler/cpp/test/plugin/t_cpp_generator.cc:compiler/cpp/src/thrift/generate/t_cpp_generator.cc])
fi
AM_CONDITIONAL(WITH_PLUGIN, [test "$have_plugin" = "yes"])
@@ -729,10 +729,10 @@
Makefile
compiler/cpp/Makefile
compiler/cpp/src/Makefile
- compiler/cpp/src/plugin/Makefile
+ compiler/cpp/src/thrift/plugin/Makefile
compiler/cpp/test/Makefile
- compiler/cpp/src/version.h
- compiler/cpp/src/windows/version.h
+ compiler/cpp/src/thrift/version.h
+ compiler/cpp/src/thrift/windows/version.h
lib/Makefile
lib/cpp/Makefile
lib/cpp/test/Makefile