HxCItem
#######

.. module:: bip.hexrays

The :class:`~bip.hexrays.HxCItem` API is one of the way to represent AST nodes
of an Hexrays decompiled function at the level of Bip. This API is the closest
of the one provided by IDAPython, however this is not the prefered way to view
AST nodes in Bip, :ref:`doc-hexrays-cnode` for the prefered way and 
:ref:`doc-hexrays-astnodes` for more general information.

The simplest way to access :class:`~bip.hexrays.HxCItem` elements is through
the usage of the visitorm methods starting with ``hx_visit_`` in
:class:`~bip.hexrays.HxCFunc`

This API is based on the :class:`~bip.hexrays.HxCItem` abstract class, each
AST nodes are represented by a subclass of this object which are determine
by its type. For more information of the different type of nodes see 
:ref:`doc-hexrays-astnodes-nodetype`. The method
:meth:`~bip.hexrays.HxCItem.from_citem` allow to recuperate an object of the
correct class (which inherit from :class:`~bip.hexrays.HxCItem`) for a
particular ``citem_t`` object from IDA.

HxCItem API
===========

.. autoclass:: HxCItem
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

HxCExpr API
===========

.. autoclass:: HxCExpr
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

HxCStmt API
===========

.. autoclass:: HxCStmt
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

Final Expression API
====================

.. autoclass:: HxCExprFinal
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprEmpty
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprNum
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprFNum
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprStr
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprObj
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprVar
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprHelper
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprInsn
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprType
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

MemAccess Expression API
========================

.. autoclass:: HxCExprMemAccess
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprIdx
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprMemref
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprMemptr
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

Unary Operation Expression API
==============================

.. autoclass:: HxCExprUnaryOperation
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprPtr
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprFneg
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprNeg
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprCast
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprLnot
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprBnot
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprRef
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprPostinc
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprPostdec
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprPreinc
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprPredec
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprSizeof
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

Double Operation Expression API
===============================

.. autoclass:: HxCExprDoubleOperation
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

.. autoclass:: HxCExprComma
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprLor
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprLand
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprBor
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprXor
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprBand
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprEq
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprNe
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprSge
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprUge
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprSle
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprUle
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprSgt
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprUgt
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprSlt
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprUlt
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprSshr
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprUshr
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprShl
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAdd
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprSub
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprMul
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprSdiv
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprUdiv
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprSmod
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprUmod
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprFadd
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprFsub
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprFmul
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprFdiv
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

Assignment
----------

.. autoclass::  HxCExprAssignment
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

.. autoclass:: HxCExprAsg
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgbor
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgxor
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgband
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgadd
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgsub
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgmul
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgsshr
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgushr
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgshl
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgsdiv
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgudiv
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgsmod
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCExprAsgumod
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


Other leaf Expressions API
==========================

.. autoclass:: HxCExprTernary
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

.. autoclass:: HxCExprCall
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

Final Statement API
===================

.. autoclass:: HxCStmtFinal
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCStmtEmpty
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCStmtExpr
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCStmtGoto
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCStmtAsm
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCStmtReturn
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

Loop Statement API
==================

.. autoclass:: HxCStmtLoop
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

.. autoclass:: HxCStmtFor
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

.. autoclass:: HxCStmtWhile
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

.. autoclass:: HxCStmtDoWhile
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

Other leaf Statement API
========================

.. autoclass:: HxCStmtIf
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCStmtSwitch
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCStmtContinue
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCStmtBreak
    :members:
    :member-order: bysource
    :special-members:
    :private-members:


.. autoclass:: HxCStmtBlock
    :members:
    :member-order: bysource
    :special-members:
    :private-members:

.. _doc-hexrays-ida-visitor-internal:

Internal Hexrays Visitor API
============================

.. automodule:: bip.hexrays.hx_visitor
    :members:
    :member-order: bysource
    :special-members:
    :private-members: