\subsection{Immediate Class}
\label{sec:immediate}

The Immediate class represents an immediate value in an operand.

Since an Immediate represents a constant value, the \code{setValue} and
\code{clearValue} interface are disabled on Immediate objects. If an immediate
value is being modified, a new Immediate object should be created to represent
the new value. 

\begin{apient}
virtual bool isUsed(InstructionAST::Ptr findMe) const
\end{apient}

\begin{apient}
void getChildren(vector<InstructionAST::Ptr> &) const
\end{apient}
\apidesc{
By definition, an \code{Immediate} has no children.
}

\begin{apient}
void getUses(set<InstructionAST::Ptr> &)
\end{apient}
\apidesc{
By definition, an \code{Immediate} uses no registers.
}

\begin{apient}
bool isUsed(InstructionAPI::Ptr findMe) const
\end{apient}
\apidesc{
\code{isUsed}, when called on an Immediate, will return true if \code{findMe}
represents an Immediate with the same value. While this convention may seem
arbitrary, it allows \code{isUsed} to follow a natural rule: an
\code{InstructionAST}
is used by another \code{InstructionAST} if and only if the first
\code{InstructionAST} is a
subtree of the second one. 
}

