summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/JavaUtil.h
diff options
context:
space:
mode:
authorJoe George <joe@zeroc.com>2023-10-09 13:47:52 -0400
committerGitHub <noreply@github.com>2023-10-09 13:47:52 -0400
commit45cf4a9ccba65d4d2b8129d11c4debcb117cbc68 (patch)
treeadb98c12bd36c24eafc39b00d456cdd03ea051bd /cpp/src/Slice/JavaUtil.h
parentRework Java & Java Compat README files (#1538) (diff)
downloadice-45cf4a9ccba65d4d2b8129d11c4debcb117cbc68.tar.bz2
ice-45cf4a9ccba65d4d2b8129d11c4debcb117cbc68.tar.xz
ice-45cf4a9ccba65d4d2b8129d11c4debcb117cbc68.zip
slice2java: fix constructor parameter count check (#1540)
Closes #1539
Diffstat (limited to 'cpp/src/Slice/JavaUtil.h')
-rw-r--r--cpp/src/Slice/JavaUtil.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/cpp/src/Slice/JavaUtil.h b/cpp/src/Slice/JavaUtil.h
index 326d7adfa1a..d9c6e440d0c 100644
--- a/cpp/src/Slice/JavaUtil.h
+++ b/cpp/src/Slice/JavaUtil.h
@@ -29,6 +29,15 @@ computeSerialVersionUUID(const ExceptionPtr&);
long
computeSerialVersionUUID(const StructPtr&);
+//
+// Returns true if we can generate a method from the given data member list. A Java method
+// can have a maximum of 255 parameters (including the implicit 'this') where each parameter
+// is counted as 1 unit, except for long and double which are counted as 2 units.
+// See https://docs.oracle.com/javase/specs/jvms/se20/html/jvms-4.html#jvms-4.3.3
+//
+bool
+isValidMethodParameterList(const DataMemberList&, int additionalUnits = 0);
+
class JavaOutput : public ::IceUtilInternal::Output
{
public: