+1999-09-02 Tom Tromey <tromey@cygnus.com>
+
+ * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
+ Handle nested arrays, like `[[I'.
+
1999-09-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* class.c (finish_class): Remove unused parameter, all callers
int *need_space;
{
const char *ctype;
+ int array_depth = 0;
switch (signature[0])
{
case '[':
+ /* More spaghetti. */
+ array_loop:
for (signature++; (signature < limit
&& *signature >= '0'
&& *signature <= '9'); signature++)
case 'S': ctype = "jshortArray"; goto printit;
case 'J': ctype = "jlongArray"; goto printit;
case 'Z': ctype = "jbooleanArray"; goto printit;
- case '[': ctype = "jobjectArray"; goto printit;
+ case '[':
+ /* We have a nested array. */
+ ++array_depth;
+ fputs ("JArray<", stream);
+ goto array_loop;
+
case 'L':
- /* We have to generate a reference to JArray here,
- so that our output matches what the compiler
- does. */
+ /* We have to generate a reference to JArray here, so that
+ our output matches what the compiler does. */
++signature;
- fputs ("JArray<", stream);
+ fputs ("JArray<::", stream);
while (signature < limit && *signature != ';')
{
int ch = UTF8_GET (signature, limit);
break;
}
+ while (array_depth-- > 0)
+ fputs ("> *", stream);
+
return signature;
}