All Classes and Interfaces
Class
Description
A call that doesn't necessarily exist, for a type we don't necessarily have.
(eg) x >>= 3, x++
In an assignment prechange, the LHS is by definition equal to the RHS after the statement.
TODO : Block implements way more functionality than it should - move into callers.
very simple enum to help switching on an XOR style decision.
Main driver for CFR API.
Builder for
CfrDriver
Note that *all* parameters are optional.Provides information about the CFR build.
This isn't static - we populate it from the decoded enum information.
Implementing your own
ClassFileSource
allows you to override CFR's sourcing of byte code.Helper to construct "Standard"
ClassFileSource
, which may be useful for delegating to.Sanitised version of Exception table entry, where we use instruction idx, rather than opcode,
and the exceptions are CLOSED, rather than half open.
Analysis which needs to be performed on the whole classfile in one go, once we've
performed other basic code analysis.
This should not be used to aggregate statements, but only to produce statements when multiple statements
are generated by a single opcode.
A constructor call that doesn't necessarily exist, for a type we don't necessarily have.
This is a temporary statement - it should be replaced with an Assignment of a ConstructorInvokation
However, it can force the type of the constructed object, which NEW is not capable of doing....
This is all a bit ugly, with the random casting going on.
Represents information about where to place declaration and
ElementType.TYPE_USE
annotations for a place where both can occur.Note - a field variable LValue means an lValue of ANY object.
FIXME - this class has multiple ways of implementing the same thing - definitely feels redundant!
Multiple expressions / lvalues will have pointers to a single instance of this - at type changing boundaries,
we will explicitly create a new one.
Strips the outer class name off anything which preceeds this inner class.
Unlike the overlapper, which has to generate exceptions from overlapping pairs, this acts only
to filter out impossibilities - because
Java 1.4 will produce
Needs some work here to unify LambdaExpression and LambdaExpressionFallback.
Small wrapper around the bog standard java logger.
Note that this will match the FIRST match, not necessarily the best.
Note that this will match the FIRST match, not necessarily the best.
A member function call that doesn't necessarily exist, for a type we don't necessarily have.
1d array only.
Similar to the static lifter, however this has to cope with the possibility that EVERY constructor
will have had the non static initialisation pushed into it.
Detect potential invalid usages of fields - where the class we expect to be calling them with doesn't
match the class needed to access the fields in question.
NB Sink as opposed to a stream, means that implementor has the choice of when to close.
Defines the kind of object that will arrive on your sink.
All consumers should accept at least STRING.
Not all classes are appropriate to all sink types.
All consumers should accept at least STRING.
Not all classes are appropriate to all sink types.
OutputSinkFactory.Sink
instances are constructed, and used in terms of sink classes so as to ensure easy future
expansion of capabilities without breaking the ABI, and without being entirely weakly typed.Defines the kind of sink this is.
These are the possibilities we could be hitting when we call an overloaded method.
These are the tries we've identified as being connected via a finally.
Deprecated.
This seems daft - why do I need to have all this boilerplate?
Why not just replace with a cast, and a function pointer.
A 'raw' switch contains the original bytecode information about the switch.
We may have deep inner classes, with references to each other.
This is NOT an lvalue, however the definition of a local class follows the same scoping rules
Sinks will accept (as defined by
OutputSinkFactory.SinkClass
various types
of messages.Fuller decompilation than simply accepting STRING.
Extends
SinkReturns.Decompiled
to describe which version of JVM this
class is visible from.An exception message with more detail.
See table 3.3 in JVM spec.
Really List but for legibility, shortened.
A static call that doesn't necessarily exist, for a type we don't necessarily have.
We may have deep inner classes, with references to each other.
very simple enum to help switching on an XOR style decision.
This is all horribly messy and needs refactoring.