mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-14 21:35:49 +00:00
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.
53 lines
1.5 KiB
Java
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;
|
|
}
|
|
}
|