file_formats_java_class 7.0.0 (#1362)
* Manually create file_formats_java_class-7.0.0.toml * Rename file_formats_java_class-7.0.0.toml to file_formats_java_class-7.0.0-dev.toml * Remove -dev suffix, postpone writing to 7.1.0 release
This commit is contained in:
@@ -0,0 +1,124 @@
|
|||||||
|
name = "file_formats_java_class"
|
||||||
|
description = "File format reader for the Java programming language CLASS file format"
|
||||||
|
long-description = """
|
||||||
|
`file_formats_java_class` provides the facilities for reading CLASS files defined
|
||||||
|
in the [Java Virtual Machine Specification](https://docs.oracle.com/javase/specs/),
|
||||||
|
[Java SE 7, CLASS major file version 51](https://docs.oracle.com/javase/specs/jvms/se7/html/index.html),
|
||||||
|
[chapter 4](https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html).
|
||||||
|
|
||||||
|
Supported Elements (Java SE 7)
|
||||||
|
------------------------------
|
||||||
|
- Class Access Flags (Table 4.1)
|
||||||
|
- `ACC_PUBLIC`
|
||||||
|
- `ACC_FINAL`
|
||||||
|
- `ACC_SUPER`
|
||||||
|
- `ACC_INTERFACE`
|
||||||
|
- `ACC_ABSTRACT`
|
||||||
|
- `ACC_SYNTHETIC`
|
||||||
|
- `ACC_ANNOTATION`
|
||||||
|
- `ACC_ENUM`
|
||||||
|
- Constant Pool (Table 4.3)
|
||||||
|
- `CONSTANT_Class_info`
|
||||||
|
- `CONSTANT_Fieldref_info`
|
||||||
|
- `CONSTANT_Methodref_info`
|
||||||
|
- `CONSTANT_InterfaceMethodref_info`
|
||||||
|
- `CONSTANT_String_info`
|
||||||
|
- `CONSTANT_Integer_info`
|
||||||
|
- `CONSTANT_Float_info`
|
||||||
|
- `CONSTANT_Long_info`
|
||||||
|
- `CONSTANT_Double_info`
|
||||||
|
- `CONSTANT_NameAndType_info`
|
||||||
|
- `CONSTANT_Utf8_info`
|
||||||
|
- `CONSTANT_MethodHandle_info`
|
||||||
|
- `CONSTANT_MethodType_info`
|
||||||
|
- `CONSTANT_InvokeDynamic_info`
|
||||||
|
- Field Access Flags (Table 4.4)
|
||||||
|
- `ACC_PUBLIC`
|
||||||
|
- `ACC_PRIVATE`
|
||||||
|
- `ACC_PROTECTED`
|
||||||
|
- `ACC_STATIC`
|
||||||
|
- `ACC_FINAL`
|
||||||
|
- `ACC_VOLATILE`
|
||||||
|
- `ACC_TRANSIENT`
|
||||||
|
- `ACC_SYNTHETIC`
|
||||||
|
- `ACC_ENUM`
|
||||||
|
- Method Access Flags (Table 4.5)
|
||||||
|
- `ACC_PUBLIC`
|
||||||
|
- `ACC_PRIVATE`
|
||||||
|
- `ACC_PROTECTED`
|
||||||
|
- `ACC_STATIC`
|
||||||
|
- `ACC_FINAL`
|
||||||
|
- `ACC_SYNCHRONIZED`
|
||||||
|
- `ACC_BRIDGE`
|
||||||
|
- `ACC_VARARGS`
|
||||||
|
- `ACC_NATIVE`
|
||||||
|
- `ACC_ABSTRACT`
|
||||||
|
- `ACC_STRICT`
|
||||||
|
- `ACC_SYNTHETIC`
|
||||||
|
- Attributes (Table 4.6)
|
||||||
|
- `ConstantValue`
|
||||||
|
- `Code`
|
||||||
|
- `StackMapTable`
|
||||||
|
- `Exceptions`
|
||||||
|
- `InnerClasses`
|
||||||
|
- `EnclosingMethod`
|
||||||
|
- `Synthetic`
|
||||||
|
- `Signature`
|
||||||
|
- `SourceFile`
|
||||||
|
- `SourceDebugExtension`
|
||||||
|
- `LineNumberTable`
|
||||||
|
- `LocalVariableTable`
|
||||||
|
- `LocalVariableTypeTable`
|
||||||
|
- `Deprecated`
|
||||||
|
- `RuntimeVisibleAnnotations`
|
||||||
|
- `RuntimeInvisibleAnnotations`
|
||||||
|
- `RuntimeVisibleParameterAnnotations`
|
||||||
|
- `RuntimeInvisibleParameterAnnotations`
|
||||||
|
- `AnnotationDefault`
|
||||||
|
- `BootstrapMethods`
|
||||||
|
- `Other` - Used for unrecognized/private attributes
|
||||||
|
- **NOTE:** All restrictions put in place of each attribute for determining the validity of a CLASS file may not be fully implemented at the current time.
|
||||||
|
|
||||||
|
Example Use
|
||||||
|
-----------
|
||||||
|
All pertinent types and subprograms are available within the package
|
||||||
|
`File_Formats_Java_Class`. Reading `Class_File` is done primarily through the `Input` aspect,
|
||||||
|
as shown below.
|
||||||
|
```ada
|
||||||
|
with Ada.Text_IO;
|
||||||
|
|
||||||
|
with File_Formats_Java_Class;
|
||||||
|
use File_Formats_Java_Class;
|
||||||
|
|
||||||
|
procedure Read_Class_File is
|
||||||
|
F : File_Type;
|
||||||
|
S : Stream_Access;
|
||||||
|
begin
|
||||||
|
Open (F, In_File, "Example.class");
|
||||||
|
S := Stream (F);
|
||||||
|
Ada.Text_IO.Put_Line (Class_File'Input (S));
|
||||||
|
Close (F);
|
||||||
|
end Read_Class_File;
|
||||||
|
```
|
||||||
|
|
||||||
|
Development Status
|
||||||
|
------------------
|
||||||
|
This crate does not yet define operations for writing to CLASS files, but this is a priority.
|
||||||
|
After writing is complete, this crate will be updated to support CLASS files of Java SE 8+.
|
||||||
|
You are free to report issues and contribute at the crate's [GitHub repository](https://github.com/Bread-Experts-Group/file_formats_java_class).
|
||||||
|
"""
|
||||||
|
version = "7.0.0"
|
||||||
|
|
||||||
|
authors = ["Miko Elbrecht"]
|
||||||
|
maintainers = ["Miko Elbrecht <pmt.mailservice@gmail.com>"]
|
||||||
|
maintainers-logins = ["ATPStorages"]
|
||||||
|
licenses = "Apache-2.0 WITH LLVM-exception"
|
||||||
|
website = "https://github.com/Bread-Experts-Group/file_formats_java_class"
|
||||||
|
tags = ["file", "formats", "java", "class"]
|
||||||
|
|
||||||
|
[origin]
|
||||||
|
commit = "1d232835ecd6829259d9124859fcaf62f111f924"
|
||||||
|
url = "git+https://github.com/Bread-Experts-Group/file_formats_java_class.git"
|
||||||
|
|
||||||
|
[[depends-on]]
|
||||||
|
byteflippers = "^1.0.0"
|
||||||
Reference in New Issue
Block a user