Files
mercury/java/runtime/TypeLayout.java
Fergus Henderson cfea29cba0 Runtime fixes for the Java back-end.
Estimated hours taken: 2
Branches: main

Runtime fixes for the Java back-end.

java/runtime/DuExistLocn.java:
java/runtime/DuFunctorDesc.java:
java/runtime/DuPtagLayout.java:
	Define constructors for these types.

java/runtime/MaybeResAddrFunctorDesc.java:
	New file (corresponds to MR_MaybeResAddrFunctorDesc type in C).

java/runtime/MaybeResFunctorDesc.java:
	New file (corresponds to MR_MaybeResFunctorDesc type in C).

java/runtime/PseudoTypeInfo.java:
	Define constructors.
	Make non-abstract (XXX temp work-around only).

java/runtime/TypeCtorInfo_Struct.java:
	XXX Pass some parameters of the constructor as "Object",
	to work around type errors in invocations of those constructors.

java/runtime/TypeFunctors.java:
java/runtime/TypeLayout.java:
	Model the C unions better; use a single field, with accessor
	functions that convert to each alternative, not several fields.

java/runtime/TypeclassInfo.java:
	Implement as stub (previous code was just copy of TypeInfo.java).

java/runtime/VA_PseudoTypeInfo_Struct*.java:
	Fix a bug: change the order of the constructor parameters
	to match the way we generate code which invokes those constructors.
2003-12-01 06:55:51 +00:00

53 lines
1.5 KiB
Java

//
// Copyright (C) 2001-2003 The University of Melbourne.
// This file may only be copied under the terms of the GNU Library General
// Public License - see the file COPYING.LIB in the Mercury distribution.
//
package mercury.runtime;
public class TypeLayout {
// This should hold a value of one of the types
// accessible by the access functions that follow.
public java.lang.Object layout_init;
//
// In runtime/mercury_type_info.h:
// typedef MR_DuPtagLayout *MR_DuTypeLayout;
// so here we just use DuPtagLayout[]
//
public mercury.runtime.DuPtagLayout[] layout_du() {
return (mercury.runtime.DuPtagLayout[]) layout_init;
}
//
// In runtime/mercury_type_info.h:
// typedef MR_EnumFunctorDesc **EnumTypeLayout;
// so here we just use EnumFunctorDesc[][]
//
public mercury.runtime.EnumFunctorDesc[] layout_enum() {
return (mercury.runtime.EnumFunctorDesc[]) layout_init;
}
//
// In runtime/mercury_type_info.h:
// typedef MR_NotagFunctorDesc *MR_NotagTypeLayout;
// so here we just us NotagFunctorDesc[]
//
public mercury.runtime.NotagFunctorDesc[] layout_notag() {
return (mercury.runtime.NotagFunctorDesc[]) layout_init;
}
//
// In runtime/mercury_type_info.h:
// typedef MR_PseudoTypeInfo MR_EquivType;
// so here we just use MR_PseudoTypeInfo
//
public mercury.runtime.PseudoTypeInfo layout_equiv() {
return (mercury.runtime.PseudoTypeInfo) layout_init;
}
public TypeLayout(java.lang.Object init) {
layout_init = init;
}
}