1(*
2    Copyright (c) 2009 David C.J. Matthews
3
4    This library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8    
9    This library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13    
14    You should have received a copy of the GNU Lesser General Public
15    License along with this library; if not, write to the Free Software
16    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17*)
18
19signature COPIERSIG =
20sig
21    type signatures
22    type typeConstrSet
23    type structVals
24    type values
25    type typeId
26    type types
27    type univTable
28
29    type tsvEnv = { enterType: string * typeConstrSet -> unit,
30                  enterStruct: string * structVals  -> unit,
31                  enterVal   : string * values      -> unit };
32    val openSignature: signatures * tsvEnv * string -> unit
33    val fullCopyDatatype: typeConstrSet * (int -> typeId) * string -> typeConstrSet
34    val replaceMap: signatures * (int -> typeId) * int * typeId list * (int -> typeId) -> signatures
35
36    val getNextRuntimeOffset : signatures -> int
37
38    structure Sharing:
39    sig
40        type signatures     = signatures
41        type typeConstrSet  = typeConstrSet
42        type structVals     = structVals
43        type values         = values
44        type typeId         = typeId
45        type types          = types
46        type univTable      = univTable
47    end
48end;
49