final class ModuleWriter extends ModuleVisitor
ModuleVisitor
that generates the corresponding Module, ModulePackages and
ModuleMainClass attributes, as defined in the Java Virtual Machine Specification (JVMS).Modifier and Type | Field and Description |
---|---|
private ByteVector |
exports
The binary content of the 'exports' array of the JVMS Module attribute.
|
private int |
exportsCount
The exports_count field of the JVMS Module attribute.
|
private int |
mainClassIndex
The main_class_index field of the JVMS ModuleMainClass attribute, or 0.
|
private int |
moduleFlags
The module_flags field of the JVMS Module attribute.
|
private int |
moduleNameIndex
The module_name_index field of the JVMS Module attribute.
|
private int |
moduleVersionIndex
The module_version_index field of the JVMS Module attribute.
|
private ByteVector |
opens
The binary content of the 'opens' array of the JVMS Module attribute.
|
private int |
opensCount
The opens_count field of the JVMS Module attribute.
|
private int |
packageCount
The provides_count field of the JVMS ModulePackages attribute.
|
private ByteVector |
packageIndex
The binary content of the 'package_index' array of the JVMS ModulePackages attribute.
|
private ByteVector |
provides
The binary content of the 'provides' array of the JVMS Module attribute.
|
private int |
providesCount
The provides_count field of the JVMS Module attribute.
|
private ByteVector |
requires
The binary content of the 'requires' array of the JVMS Module attribute.
|
private int |
requiresCount
The requires_count field of the JVMS Module attribute.
|
private SymbolTable |
symbolTable
Where the constants used in this AnnotationWriter must be stored.
|
private int |
usesCount
The uses_count field of the JVMS Module attribute.
|
private ByteVector |
usesIndex
The binary content of the 'uses_index' array of the JVMS Module attribute.
|
api, mv
Constructor and Description |
---|
ModuleWriter(SymbolTable symbolTable,
int name,
int access,
int version) |
Modifier and Type | Method and Description |
---|---|
(package private) int |
computeAttributesSize()
Returns the size of the Module, ModulePackages and ModuleMainClass attributes generated by this
ModuleWriter.
|
(package private) int |
getAttributeCount()
Returns the number of Module, ModulePackages and ModuleMainClass attributes generated by this
ModuleWriter.
|
(package private) void |
putAttributes(ByteVector output)
Puts the Module, ModulePackages and ModuleMainClass attributes generated by this ModuleWriter
in the given ByteVector.
|
void |
visitEnd()
Visits the end of the module.
|
void |
visitExport(java.lang.String packaze,
int access,
java.lang.String... modules)
Visit an exported package of the current module.
|
void |
visitMainClass(java.lang.String mainClass)
Visit the main class of the current module.
|
void |
visitOpen(java.lang.String packaze,
int access,
java.lang.String... modules)
Visit an open package of the current module.
|
void |
visitPackage(java.lang.String packaze)
Visit a package of the current module.
|
void |
visitProvide(java.lang.String service,
java.lang.String... providers)
Visit an implementation of a service.
|
void |
visitRequire(java.lang.String module,
int access,
java.lang.String version)
Visits a dependence of the current module.
|
void |
visitUse(java.lang.String service)
Visit a service used by the current module.
|
private final SymbolTable symbolTable
private final int moduleNameIndex
private final int moduleFlags
private final int moduleVersionIndex
private int requiresCount
private final ByteVector requires
private int exportsCount
private final ByteVector exports
private int opensCount
private final ByteVector opens
private int usesCount
private final ByteVector usesIndex
private int providesCount
private final ByteVector provides
private int packageCount
private final ByteVector packageIndex
private int mainClassIndex
ModuleWriter(SymbolTable symbolTable, int name, int access, int version)
public void visitMainClass(java.lang.String mainClass)
ModuleVisitor
visitMainClass
in class ModuleVisitor
mainClass
- the internal name of the main class of the current module.public void visitPackage(java.lang.String packaze)
ModuleVisitor
visitPackage
in class ModuleVisitor
packaze
- the internal name of a package.public void visitRequire(java.lang.String module, int access, java.lang.String version)
ModuleVisitor
visitRequire
in class ModuleVisitor
module
- the fully qualified name (using dots) of the dependence.access
- the access flag of the dependence among ACC_TRANSITIVE
, ACC_STATIC_PHASE
, ACC_SYNTHETIC
and ACC_MANDATED
.version
- the module version at compile time, or null.public void visitExport(java.lang.String packaze, int access, java.lang.String... modules)
ModuleVisitor
visitExport
in class ModuleVisitor
packaze
- the internal name of the exported package.access
- the access flag of the exported package, valid values are among ACC_SYNTHETIC
and ACC_MANDATED
.modules
- the fully qualified names (using dots) of the modules that can access the public
classes of the exported package, or null.public void visitOpen(java.lang.String packaze, int access, java.lang.String... modules)
ModuleVisitor
visitOpen
in class ModuleVisitor
packaze
- the internal name of the opened package.access
- the access flag of the opened package, valid values are among ACC_SYNTHETIC
and ACC_MANDATED
.modules
- the fully qualified names (using dots) of the modules that can use deep
reflection to the classes of the open package, or null.public void visitUse(java.lang.String service)
ModuleVisitor
visitUse
in class ModuleVisitor
service
- the internal name of the service.public void visitProvide(java.lang.String service, java.lang.String... providers)
ModuleVisitor
visitProvide
in class ModuleVisitor
service
- the internal name of the service.providers
- the internal names of the implementations of the service (there is at least
one provider).public void visitEnd()
ModuleVisitor
visitEnd
in class ModuleVisitor
int getAttributeCount()
int computeAttributesSize()
void putAttributes(ByteVector output)
output
- where the attributes must be put.