All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class epp.FileSig

java.lang.Object
   |
   +----epp.FileSig

public class FileSig
extends Object
EPP プリプロセッサが持つメソッドのうち ファイル FileSig.java で定義されるメソッドは、 主に FileSignature に関係するメソッドです。.

注意: このクラスは、 javadoc を作るための便宜的なクラスです。 実際の EPP のソースコード中には存在しません。

FileSignature は、分割コンパイルをサポートために必要となるデータ構造です。 EPP の1つのファイルに対する処理は、 phase1 と phase2 に分かれます。 phase1 は、構文解析パスとマクロ展開パスから成ります。 phase1 は他のファイルに一切依存せずに行なわれます。 そして、 phase1 が終った時点で、そのファイルの FileSignature が確定し、 FileSignature は、ファイルに保存されます。 phase2 は、型チェックパスおよびコード出力パスから成ります。 phase2 では、他のファイルの FileSignature を必要に応じて参照しながら、 型チェックを行なったり、型情報を利用したマクロ展開を行なったりします。

plug-in は、他のファイルから参照可能な、独自の型定義構文を導入する場合、 ここで説明するメソッドのうちのいくつかを拡張する必要があります。

FileSignature は、以下の構造を持つ Tree です。 (プログラムの抽象構文木とは異なる構造になっています。)

FileSignature:
	(fileSignature 
		(packageDeclaration PackageName) 
		(imports ImportDeclaration*)
		(typeDeclarationSignatures TypeDeclarationSignature*))
TypeDeclarationSignature:
	(typeDeclarationSignature Name TypeDeclarationSignatureTree)
TypeDeclarationSignatureTree:
	ClassSignatureTree
	
ClassSignatureTree:
	...

See Also:
FileSignatreTable, Type

Constructor Index

 o FileSig()

Method Index

 o classToClassInfo(Class)
 o doesOverride(MethodInfo, MethodInfo)
 o getFileSignatureFromClass(Class)
class file 中に encode された FileSignature 情報がもしあれば、それを返します。.
 o inheritFieldInfo(Type, Tree)
 o inheritInnerClassInfo(Type, Tree)
 o inheritMethodInfo(Type, Tree)
 o makeClassInfo(Symbol)
クラス名の完全限定名シンボルから、それに対応する ClassInfo を作って返します。.
 o makeClassInfoFromClass(Class)
 o makeClassInfoFromFileSignature(Symbol, Tree)
 o makeFileSignature()
マクロ展開パス後の抽象構文木(self!tree)から、 FileSignature を作って返します。.
 o normalizeClass(Tree)
class か interface の抽象構文木を ClassSignatureTree に変換します。.
 o normalizeCompilationUnit(Tree)
CompilationUnit の抽象構文木を FileSignature に変換します。.
 o normalizeFields(TreeVec, Tree)
 o normalizeMethod(Tree)
 o normalizeParams(Tree)
 o normalizeTypeDeclaration(Tree)
TypeDeclaration の抽象構文木を TypeDeclarationSignatureTree に 変換します。.
 o normalizeVariableDeclaratorId(Tree, Tree)
 o treeToClassInfo(Tree)
ClassSignatureTree から、 ClassInfo を作って返します。.
 o treeToFieldInfo(Tree)
 o treeToInnerClassInfo(Tree)
 o treeToMethodInfo(Tree)
 o treeToType(Tree)
FileSignature 中に現れる型名を、 Type に変換するメソッドです。.

Constructors

 o FileSig
 public FileSig()

Methods

 o makeFileSignature
 public Tree makeFileSignature()
マクロ展開パス後の抽象構文木(self!tree)から、 FileSignature を作って返します。. このメソッドは、 EPP main routine から、 phase1 の最後に呼ばれます。

See Also:
Epp
 o normalizeCompilationUnit
 public Tree normalizeCompilationUnit(Tree tree)
CompilationUnit の抽象構文木を FileSignature に変換します。.

 o normalizeTypeDeclaration
 public Tree normalizeTypeDeclaration(Tree tree)
TypeDeclaration の抽象構文木を TypeDeclarationSignatureTree に 変換します。.

 o normalizeClass
 public Tree normalizeClass(Tree tree)
class か interface の抽象構文木を ClassSignatureTree に変換します。. このメソッドは、 normalizeTypeDeclaration から呼び出されます。

See Also:
normalizeTypeDeclaration
 o normalizeMethod
 public Tree normalizeMethod(Tree tree)
 o normalizeFields
 public void normalizeFields(TreeVec tvec,
                             Tree tree)
 o normalizeParams
 public Tree normalizeParams(Tree tree)
 o normalizeVariableDeclaratorId
 public Tree[] normalizeVariableDeclaratorId(Tree type,
                                             Tree var)
 o makeClassInfo
 public ClassInfo makeClassInfo(Symbol fullName)
クラス名の完全限定名シンボルから、それに対応する ClassInfo を作って返します。.

 o makeClassInfoFromClass
 public ClassInfo makeClassInfoFromClass(Class c)
 o getFileSignatureFromClass
 public Tree getFileSignatureFromClass(Class c)
class file 中に encode された FileSignature 情報がもしあれば、それを返します。. なければ、 null を返します。

このメソッドは、現在実装されておらず、無条件に null を返します。

 o classToClassInfo
 public ClassInfo classToClassInfo(Class c)
 o makeClassInfoFromFileSignature
 public ClassInfo makeClassInfoFromFileSignature(Symbol fullName,
                                                 Tree sig)
 o treeToClassInfo
 public ClassInfo treeToClassInfo(Tree classSig)
ClassSignatureTree から、 ClassInfo を作って返します。.

 o inheritFieldInfo
 public Hashtable inheritFieldInfo(Type superclassType,
                                   Tree classSig)
 o inheritMethodInfo
 public Hashtable inheritMethodInfo(Type superclassType,
                                    Tree classSig)
 o doesOverride
 public boolean doesOverride(MethodInfo m1,
                             MethodInfo m2)
 o inheritInnerClassInfo
 public Hashtable inheritInnerClassInfo(Type superclassType,
                                        Tree classSig)
 o treeToFieldInfo
 public FieldInfo treeToFieldInfo(Tree tree)
 o treeToMethodInfo
 public MethodInfo treeToMethodInfo(Tree tree)
 o treeToInnerClassInfo
 public ClassInfo treeToInnerClassInfo(Tree tree)
 o treeToType
 public Type treeToType(Tree tree)
FileSignature 中に現れる型名を、 Type に変換するメソッドです。. treeToClassInfo などから呼び出されます。 TypeChecker からは、呼び出してはいけません。


All Packages  Class Hierarchy  This Package  Previous  Next  Index