Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
djinni
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
djinni
Commits
b3beb0e2
Commit
b3beb0e2
authored
Feb 08, 2016
by
Andrew Twyman
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #196 from guycnicholas/fix_forward_declare_extended_record
Extended records forward declare
parents
ee0c2c1e
55ff8e7e
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
247 additions
and
1 deletion
+247
-1
src/source/CppGenerator.scala
src/source/CppGenerator.scala
+5
-1
test-suite/djinni/common.djinni
test-suite/djinni/common.djinni
+1
-0
test-suite/djinni/extended_record.djinni
test-suite/djinni/extended_record.djinni
+5
-0
test-suite/generated-src/cpp/extended_record_base.hpp
test-suite/generated-src/cpp/extended_record_base.hpp
+29
-0
test-suite/generated-src/inFileList.txt
test-suite/generated-src/inFileList.txt
+1
-0
test-suite/generated-src/java/com/dropbox/djinni/test/ExtendedRecord.java
...ated-src/java/com/dropbox/djinni/test/ExtendedRecord.java
+31
-0
test-suite/generated-src/jni/NativeExtendedRecord.cpp
test-suite/generated-src/jni/NativeExtendedRecord.cpp
+28
-0
test-suite/generated-src/jni/NativeExtendedRecord.hpp
test-suite/generated-src/jni/NativeExtendedRecord.hpp
+32
-0
test-suite/generated-src/objc/DBExtendedRecord+Private.h
test-suite/generated-src/objc/DBExtendedRecord+Private.h
+24
-0
test-suite/generated-src/objc/DBExtendedRecord+Private.mm
test-suite/generated-src/objc/DBExtendedRecord+Private.mm
+21
-0
test-suite/generated-src/objc/DBExtendedRecord.h
test-suite/generated-src/objc/DBExtendedRecord.h
+13
-0
test-suite/generated-src/objc/DBExtendedRecord.mm
test-suite/generated-src/objc/DBExtendedRecord.mm
+27
-0
test-suite/generated-src/outFileList.txt
test-suite/generated-src/outFileList.txt
+8
-0
test-suite/handwritten-src/cpp/extended_record.cpp
test-suite/handwritten-src/cpp/extended_record.cpp
+9
-0
test-suite/handwritten-src/cpp/extended_record.hpp
test-suite/handwritten-src/cpp/extended_record.hpp
+13
-0
No files found.
src/source/CppGenerator.scala
View file @
b3beb0e2
...
...
@@ -146,12 +146,16 @@ class CppGenerator(spec: Spec) extends Generator(spec) {
// Requiring the extended class
if
(
r
.
ext
.
cpp
)
{
refs
.
hpp
.
add
(
s
"struct $self; // Requiring extended class"
)
refs
.
cpp
.
add
(
"#include "
+
q
(
"../"
+
spec
.
cppFileIdentStyle
(
ident
)
+
"."
+
spec
.
cppHeaderExt
))
}
// C++ Header
def
writeCppPrototype
(
w
:
IndentWriter
)
{
if
(
r
.
ext
.
cpp
)
{
w
.
w
(
s
"struct $self; // Requiring extended class"
)
w
.
wl
w
.
wl
}
writeDoc
(
w
,
doc
)
writeCppTypeParams
(
w
,
params
)
w
.
w
(
"struct "
+
actualSelf
+
cppFinal
).
bracedSemi
{
...
...
test-suite/djinni/common.djinni
View file @
b3beb0e2
...
...
@@ -12,3 +12,4 @@
@import "constants.djinni"
@import "multiple_inheritance.djinni"
@import "single_language_interfaces.djinni"
@import "extended_record.djinni"
test-suite/djinni/extended_record.djinni
0 → 100644
View file @
b3beb0e2
# Extended record
extended_record = record +c {
foo: bool;
}
test-suite/generated-src/cpp/extended_record_base.hpp
0 → 100644
View file @
b3beb0e2
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from extended_record.djinni
#pragma once
#include <utility>
namespace
testsuite
{
struct
ExtendedRecord
;
// Requiring extended class
/** Extended record */
struct
ExtendedRecordBase
{
bool
foo
;
ExtendedRecordBase
(
bool
foo_
)
:
foo
(
std
::
move
(
foo_
))
{}
virtual
~
ExtendedRecordBase
()
=
default
;
protected:
ExtendedRecordBase
(
const
ExtendedRecordBase
&
)
=
default
;
ExtendedRecordBase
(
ExtendedRecordBase
&&
)
=
default
;
ExtendedRecordBase
&
operator
=
(
const
ExtendedRecordBase
&
)
=
default
;
ExtendedRecordBase
&
operator
=
(
ExtendedRecordBase
&&
)
=
default
;
};
}
// namespace testsuite
test-suite/generated-src/inFileList.txt
View file @
b3beb0e2
...
...
@@ -14,6 +14,7 @@ djinni/primtypes.djinni
djinni/constants.djinni
djinni/multiple_inheritance.djinni
djinni/single_language_interfaces.djinni
djinni/extended_record.djinni
djinni/date.djinni
djinni/date.yaml
djinni/duration.djinni
...
...
test-suite/generated-src/java/com/dropbox/djinni/test/ExtendedRecord.java
0 → 100644
View file @
b3beb0e2
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from extended_record.djinni
package
com.dropbox.djinni.test
;
import
javax.annotation.CheckForNull
;
import
javax.annotation.Nonnull
;
/** Extended record */
public
final
class
ExtendedRecord
{
/*package*/
final
boolean
mFoo
;
public
ExtendedRecord
(
boolean
foo
)
{
this
.
mFoo
=
foo
;
}
public
boolean
getFoo
()
{
return
mFoo
;
}
@Override
public
String
toString
()
{
return
"ExtendedRecord{"
+
"mFoo="
+
mFoo
+
"}"
;
}
}
test-suite/generated-src/jni/NativeExtendedRecord.cpp
0 → 100644
View file @
b3beb0e2
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from extended_record.djinni
#include "NativeExtendedRecord.hpp" // my header
#include "Marshal.hpp"
namespace
djinni_generated
{
NativeExtendedRecord
::
NativeExtendedRecord
()
=
default
;
NativeExtendedRecord
::~
NativeExtendedRecord
()
=
default
;
auto
NativeExtendedRecord
::
fromCpp
(
JNIEnv
*
jniEnv
,
const
CppType
&
c
)
->
::
djinni
::
LocalRef
<
JniType
>
{
const
auto
&
data
=
::
djinni
::
JniClass
<
NativeExtendedRecord
>::
get
();
auto
r
=
::
djinni
::
LocalRef
<
JniType
>
{
jniEnv
->
NewObject
(
data
.
clazz
.
get
(),
data
.
jconstructor
,
::
djinni
::
get
(
::
djinni
::
Bool
::
fromCpp
(
jniEnv
,
c
.
foo
)))};
::
djinni
::
jniExceptionCheck
(
jniEnv
);
return
r
;
}
auto
NativeExtendedRecord
::
toCpp
(
JNIEnv
*
jniEnv
,
JniType
j
)
->
CppType
{
::
djinni
::
JniLocalScope
jscope
(
jniEnv
,
2
);
assert
(
j
!=
nullptr
);
const
auto
&
data
=
::
djinni
::
JniClass
<
NativeExtendedRecord
>::
get
();
return
{
::
djinni
::
Bool
::
toCpp
(
jniEnv
,
jniEnv
->
GetBooleanField
(
j
,
data
.
field_mFoo
))};
}
}
// namespace djinni_generated
test-suite/generated-src/jni/NativeExtendedRecord.hpp
0 → 100644
View file @
b3beb0e2
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from extended_record.djinni
#pragma once
#include "djinni_support.hpp"
#include "extended_record.hpp"
namespace
djinni_generated
{
class
NativeExtendedRecord
final
{
public:
using
CppType
=
::
testsuite
::
ExtendedRecord
;
using
JniType
=
jobject
;
using
Boxed
=
NativeExtendedRecord
;
~
NativeExtendedRecord
();
static
CppType
toCpp
(
JNIEnv
*
jniEnv
,
JniType
j
);
static
::
djinni
::
LocalRef
<
JniType
>
fromCpp
(
JNIEnv
*
jniEnv
,
const
CppType
&
c
);
private:
NativeExtendedRecord
();
friend
::
djinni
::
JniClass
<
NativeExtendedRecord
>
;
const
::
djinni
::
GlobalRef
<
jclass
>
clazz
{
::
djinni
::
jniFindClass
(
"com/dropbox/djinni/test/ExtendedRecord"
)
};
const
jmethodID
jconstructor
{
::
djinni
::
jniGetMethodID
(
clazz
.
get
(),
"<init>"
,
"(Z)V"
)
};
const
jfieldID
field_mFoo
{
::
djinni
::
jniGetFieldID
(
clazz
.
get
(),
"mFoo"
,
"Z"
)
};
};
}
// namespace djinni_generated
test-suite/generated-src/objc/DBExtendedRecord+Private.h
0 → 100644
View file @
b3beb0e2
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from extended_record.djinni
#import "DBExtendedRecord.h"
#include "../extended_record.hpp"
static_assert
(
__has_feature
(
objc_arc
),
"Djinni requires ARC to be enabled for this file"
);
@
class
DBExtendedRecord
;
namespace
djinni_generated
{
struct
ExtendedRecord
{
using
CppType
=
::
testsuite
::
ExtendedRecord
;
using
ObjcType
=
DBExtendedRecord
*
;
using
Boxed
=
ExtendedRecord
;
static
CppType
toCpp
(
ObjcType
objc
);
static
ObjcType
fromCpp
(
const
CppType
&
cpp
);
};
}
// namespace djinni_generated
test-suite/generated-src/objc/DBExtendedRecord+Private.mm
0 → 100644
View file @
b3beb0e2
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from extended_record.djinni
#import "DBExtendedRecord+Private.h"
#import "DJIMarshal+Private.h"
#include <cassert>
namespace
djinni_generated
{
auto
ExtendedRecord
::
toCpp
(
ObjcType
obj
)
->
CppType
{
assert
(
obj
);
return
{
::
djinni
::
Bool
::
toCpp
(
obj
.
foo
)};
}
auto
ExtendedRecord
::
fromCpp
(
const
CppType
&
cpp
)
->
ObjcType
{
return
[[
DBExtendedRecord
alloc
]
initWithFoo
:(
::
djinni
:
:
Bool
::
fromCpp
(
cpp
.
foo
))];
}
}
// namespace djinni_generated
test-suite/generated-src/objc/DBExtendedRecord.h
0 → 100644
View file @
b3beb0e2
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from extended_record.djinni
#import <Foundation/Foundation.h>
/** Extended record */
@interface
DBExtendedRecord
:
NSObject
-
(
nonnull
instancetype
)
initWithFoo
:(
BOOL
)
foo
;
+
(
nonnull
instancetype
)
extendedRecordWithFoo
:(
BOOL
)
foo
;
@property
(
nonatomic
,
readonly
)
BOOL
foo
;
@end
test-suite/generated-src/objc/DBExtendedRecord.mm
0 → 100644
View file @
b3beb0e2
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from extended_record.djinni
#import "DBExtendedRecord.h"
@implementation
DBExtendedRecord
-
(
nonnull
instancetype
)
initWithFoo
:(
BOOL
)
foo
{
if
(
self
=
[
super
init
])
{
_foo
=
foo
;
}
return
self
;
}
+
(
nonnull
instancetype
)
extendedRecordWithFoo
:(
BOOL
)
foo
{
return
[[
self
alloc
]
initWithFoo
:
foo
];
}
-
(
NSString
*
)
description
{
return
[
NSString
stringWithFormat
:
@"<%@ %p foo:%@>"
,
self
.
class
,
self
,
@
(
self
.
foo
)];
}
@end
test-suite/generated-src/outFileList.txt
View file @
b3beb0e2
...
...
@@ -4,6 +4,7 @@ djinni-output-temp/cpp/record_with_duration_and_derivings.cpp
djinni-output-temp/cpp/date_record.hpp
djinni-output-temp/cpp/date_record.cpp
djinni-output-temp/cpp/map_date_record.hpp
djinni-output-temp/cpp/extended_record_base.hpp
djinni-output-temp/cpp/objc_only_listener.hpp
djinni-output-temp/cpp/java_only_listener.hpp
djinni-output-temp/cpp/uses_single_language_listeners.hpp
...
...
@@ -41,6 +42,7 @@ djinni-output-temp/java/TestDuration.java
djinni-output-temp/java/RecordWithDurationAndDerivings.java
djinni-output-temp/java/DateRecord.java
djinni-output-temp/java/MapDateRecord.java
djinni-output-temp/java/ExtendedRecord.java
djinni-output-temp/java/ObjcOnlyListener.java
djinni-output-temp/java/JavaOnlyListener.java
djinni-output-temp/java/UsesSingleLanguageListeners.java
...
...
@@ -77,6 +79,8 @@ djinni-output-temp/jni/NativeDateRecord.hpp
djinni-output-temp/jni/NativeDateRecord.cpp
djinni-output-temp/jni/NativeMapDateRecord.hpp
djinni-output-temp/jni/NativeMapDateRecord.cpp
djinni-output-temp/jni/NativeExtendedRecord.hpp
djinni-output-temp/jni/NativeExtendedRecord.cpp
djinni-output-temp/jni/NativeObjcOnlyListener.hpp
djinni-output-temp/jni/NativeObjcOnlyListener.cpp
djinni-output-temp/jni/NativeJavaOnlyListener.hpp
...
...
@@ -139,6 +143,8 @@ djinni-output-temp/objc/DBDateRecord.h
djinni-output-temp/objc/DBDateRecord.mm
djinni-output-temp/objc/DBMapDateRecord.h
djinni-output-temp/objc/DBMapDateRecord.mm
djinni-output-temp/objc/DBExtendedRecord.h
djinni-output-temp/objc/DBExtendedRecord.mm
djinni-output-temp/objc/DBObjcOnlyListener.h
djinni-output-temp/objc/DBJavaOnlyListener.h
djinni-output-temp/objc/DBUsesSingleLanguageListeners.h
...
...
@@ -189,6 +195,8 @@ djinni-output-temp/objc/DBDateRecord+Private.h
djinni-output-temp/objc/DBDateRecord+Private.mm
djinni-output-temp/objc/DBMapDateRecord+Private.h
djinni-output-temp/objc/DBMapDateRecord+Private.mm
djinni-output-temp/objc/DBExtendedRecord+Private.h
djinni-output-temp/objc/DBExtendedRecord+Private.mm
djinni-output-temp/objc/DBObjcOnlyListener+Private.h
djinni-output-temp/objc/DBObjcOnlyListener+Private.mm
djinni-output-temp/objc/DBJavaOnlyListener+Private.h
...
...
test-suite/handwritten-src/cpp/extended_record.cpp
0 → 100644
View file @
b3beb0e2
#include "extended_record.hpp"
using
namespace
testsuite
;
ExtendedRecord
::
ExtendedRecord
()
:
ExtendedRecordBase
(
true
)
{}
test-suite/handwritten-src/cpp/extended_record.hpp
0 → 100644
View file @
b3beb0e2
#pragma once
#include "extended_record_base.hpp"
namespace
testsuite
{
struct
ExtendedRecord
:
public
ExtendedRecordBase
{
using
ExtendedRecordBase
::
ExtendedRecordBase
;
ExtendedRecord
();
};
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment