summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala b/src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala
new file mode 100644
index 0000000000..220b4bc6b5
--- /dev/null
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala
@@ -0,0 +1,99 @@
+/* NSC -- new scala compiler
+ * Copyright 2005 LAMP/EPFL
+ * @author Martin Odersky
+ */
+// $Id$
+package scala.tools.nsc.symtab.classfile;
+
+object PickleFormat {
+
+/***************************************************
+ * Symbol table attribute format:
+ * Symtab = nentries_Nat {Entry}
+ * Entry = 1 TERMNAME len_Nat NameInfo
+ * | 2 TYPENAME len_Nat NameInfo
+ * | 3 NONEsym len_Nat
+ * | 4 TYPEsym len_Nat SymbolInfo
+ * | 5 ALIASsym len_Nat SymbolInfo
+ * | 6 CLASSsym len_Nat SymbolInfo [thistype_Ref]
+ * | 7 MODULEsym len_Nat SymbolInfo
+ * | 8 VALsym len_Nat SymbolInfo [alias_Ref]
+ * | 9 EXTref len_Nat name_Ref [owner_Ref]
+ * | 10 EXTMODCLASSref len_Nat name_Ref [owner_Ref]
+ * | 11 NOtpe len_Nat
+ * | 12 NOPREFIXtpe len_Nat
+ * | 13 THIStpe len_Nat sym_Ref
+ * | 14 SINGLEtpe len_Nat type_Ref sym_Ref
+ * | 15 CONSTANTtpe len_Nat type_Ref constant_Ref
+ * | 16 TYPEREFtpe len_Nat type_Ref sym_Ref {targ_Ref}
+ * | 17 TYPEBOUNDStpe len_Nat tpe_Ref tpe_Ref
+ * | 18 REFINEDtpe len_Nat classsym_Ref {tpe_Ref}
+ * | 19 CLASSINFOtpe len_Nat classsym_Ref {tpe_Ref}
+ * | 20 METHODtpe len_Nat tpe_Ref {tpe_Ref}
+ * | 21 POLYTtpe len_Nat tpe_Ref {sym_Ref}
+ * | 22 IMPLICITMETHODtpe len_Nat tpe_Ref {tpe_Ref}
+ * | 24 LITERALunit len_Nat
+ * | 25 LITERALboolean len_Nat value_Long
+ * | 26 LITERALbyte len_Nat value_Long
+ * | 27 LITERALshort len_Nat value_Long
+ * | 28 LITERALchar len_Nat value_Long
+ * | 29 LITERALint len_Nat value_Long
+ * | 30 LITERALlong len_Nat value_Long
+ * | 31 LITERALfloat len_Nat value_Long
+ * | 32 LITERALdouble len_Nat value_Long
+ * | 33 LITERALstring len_Nat name_Ref
+ * | 34 LITERALnull len_Nat
+ * | 35 LITERALzero len_Nat
+ * | 36 ATTRIBUTE sym_Ref type_Ref {constant_Ref} <not yet>
+ * SymbolInfo = name_Ref owner_Ref flags_Nat info_Ref
+ * NameInfo = <character sequence of length len_Nat in Utf8 format>
+ * NumInfo = <len_Nat-byte signed number in big endian format>
+ * Ref = Nat
+ *
+ * len is remaining length after `len'.
+ */
+ val MajorVersion = 2;
+ val MinorVersion = 0;
+
+ final val TERMname = 1;
+ final val TYPEname = 2;
+ final val NONEsym = 3;
+ final val TYPEsym = 4;
+ final val ALIASsym = 5;
+ final val CLASSsym = 6;
+ final val MODULEsym = 7;
+ final val VALsym = 8;
+ final val EXTref = 9;
+ final val EXTMODCLASSref = 10;
+ final val NOtpe = 11;
+ final val NOPREFIXtpe = 12;
+ final val THIStpe = 13;
+ final val SINGLEtpe = 14;
+ final val CONSTANTtpe = 15;
+ final val TYPEREFtpe = 16;
+ final val TYPEBOUNDStpe = 17;
+ final val REFINEDtpe = 18;
+ final val CLASSINFOtpe = 19;
+ final val METHODtpe = 20;
+ final val POLYtpe = 21;
+ final val IMPLICITMETHODtpe = 22;
+ final val LITERAL = 23; // base line for literals
+ final val LITERALunit = 24;
+ final val LITERALboolean = 25;
+ final val LITERALbyte = 26;
+ final val LITERALshort = 27;
+ final val LITERALchar = 28;
+ final val LITERALint = 29;
+ final val LITERALlong = 30;
+ final val LITERALfloat = 31;
+ final val LITERALdouble = 32;
+ final val LITERALstring = 33;
+ final val LITERALnull = 34;
+ final val LITERALzero = 35;
+ final val ATTRIBUTE = 40;
+
+ final val firstSymTag = NONEsym;
+ final val lastSymTag = VALsym;
+ final val firstTypeTag = NOtpe;
+ final val lastTypeTag = POLYtpe;
+}