Commit c7a95dd5 authored by Guy Nicholas's avatar Guy Nicholas

Merge branch 'master' into feature_184_take_3

Conflicts:
	src/source/CppGenerator.scala
	test-suite/generated-src/cpp/extended_record_base.hpp
	test-suite/generated-src/objc/DBExtendedRecord+Private.h
	test-suite/handwritten-src/cpp/extended_record.hpp
parents 06cdb828 b3beb0e2
...@@ -15,4 +15,12 @@ done ...@@ -15,4 +15,12 @@ done
base_dir=$(cd "`dirname "$loc"`" && pwd) base_dir=$(cd "`dirname "$loc"`" && pwd)
"$base_dir/build" "$base_dir/build"
exec "$base_dir/target/start" "$@"
# Determine os version and choose correspondent .sh or .bat file accordingly.
os_version="`uname -a`"
if [[ $os_version == *"MINGW"* ]]; then
cmd //C "$base_dir/target/start.bat" "$@"
else
exec "$base_dir/target/start" "$@"
fi
...@@ -146,12 +146,16 @@ class CppGenerator(spec: Spec) extends Generator(spec) { ...@@ -146,12 +146,16 @@ class CppGenerator(spec: Spec) extends Generator(spec) {
// Requiring the extended class // Requiring the extended class
if (r.ext.cpp) { if (r.ext.cpp) {
refs.hpp.add(s"struct $self; // Requiring extended class")
refs.cpp.add("#include "+q(spec.cppExtendedRecordIncludePrefix + spec.cppFileIdentStyle(ident) + "." + spec.cppHeaderExt)) refs.cpp.add("#include "+q(spec.cppExtendedRecordIncludePrefix + spec.cppFileIdentStyle(ident) + "." + spec.cppHeaderExt))
} }
// C++ Header // C++ Header
def writeCppPrototype(w: IndentWriter) { def writeCppPrototype(w: IndentWriter) {
if (r.ext.cpp) {
w.w(s"struct $self; // Requiring extended class")
w.wl
w.wl
}
writeDoc(w, doc) writeDoc(w, doc)
writeCppTypeParams(w, params) writeCppTypeParams(w, params)
w.w("struct " + actualSelf + cppFinal).bracedSemi { w.w("struct " + actualSelf + cppFinal).bracedSemi {
......
...@@ -66,15 +66,15 @@ class CppMarshal(spec: Spec) extends Marshal(spec) { ...@@ -66,15 +66,15 @@ class CppMarshal(spec: Spec) extends Marshal(spec) {
List() List()
} }
case DInterface => case DInterface =>
if (d.name != exclude) { val base = if (d.name != exclude) {
val base = List(ImportRef("<memory>"), DeclRef(s"class ${typename(d.name, d.body)};", Some(spec.cppNamespace))) List(ImportRef("<memory>"), DeclRef(s"class ${typename(d.name, d.body)};", Some(spec.cppNamespace)))
spec.cppNnHeader match {
case Some(nnHdr) => ImportRef(nnHdr) :: base
case _ => base
}
} else { } else {
List(ImportRef("<memory>")) List(ImportRef("<memory>"))
} }
spec.cppNnHeader match {
case Some(nnHdr) => ImportRef(nnHdr) :: base
case _ => base
}
} }
case e: MExtern => e.defType match { case e: MExtern => e.defType match {
// Do not forward declare extern types, they might be in arbitrary namespaces. // Do not forward declare extern types, they might be in arbitrary namespaces.
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4"> <module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true"> <component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$" /> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/java" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
......
...@@ -4,10 +4,11 @@ ...@@ -4,10 +4,11 @@
#pragma once #pragma once
#include <utility> #include <utility>
struct ExtendedRecord; // Requiring extended class
namespace testsuite { namespace testsuite {
struct ExtendedRecord; // Requiring extended class
/** Extended record */ /** Extended record */
struct ExtendedRecordBase { struct ExtendedRecordBase {
bool foo; bool foo;
......
#include "extended_record.hpp"
using namespace testsuite;
ExtendedRecord::ExtendedRecord() : ExtendedRecordBase(true) {}
...@@ -7,5 +7,7 @@ namespace testsuite { ...@@ -7,5 +7,7 @@ namespace testsuite {
struct ExtendedRecord : public ExtendedRecordBase struct ExtendedRecord : public ExtendedRecordBase
{ {
using ExtendedRecordBase::ExtendedRecordBase; using ExtendedRecordBase::ExtendedRecordBase;
ExtendedRecord();
}; };
} }
\ No newline at end of file
...@@ -9,10 +9,11 @@ ...@@ -9,10 +9,11 @@
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="support-lib" />
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$MODULE_DIR$/java/hamcrest-core-1.3.jar!/" /> <root url="jar://$MODULE_DIR$/../deps/java/test/hamcrest-core-1.3.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <SOURCES />
...@@ -21,7 +22,7 @@ ...@@ -21,7 +22,7 @@
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$MODULE_DIR$/java/junit-4.11.jar!/" /> <root url="jar://$MODULE_DIR$/../deps/java/test/junit-4.11.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <SOURCES />
...@@ -30,11 +31,11 @@ ...@@ -30,11 +31,11 @@
<orderEntry type="module-library"> <orderEntry type="module-library">
<library> <library>
<CLASSES> <CLASSES>
<root url="jar://$MODULE_DIR$/java/jsr305-3.0.0.jar!/" /> <root url="jar://$MODULE_DIR$/../deps/java/jsr305-3.0.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$MODULE_DIR$/java/jsr305-3.0.0.jar!/" /> <root url="jar://$MODULE_DIR$/../deps/java/jsr305-3.0.0.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</orderEntry> </orderEntry>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment