Code Listener  [unstable] git snapshot
Data Structures | Namespaces | Macros | Typedefs | Enumerations | Functions
storage.hh File Reference

object model that describes the analyzed code on the input More...

#include "code_listener.h"
#include <map>
#include <set>
#include <string>
#include <vector>

Go to the source code of this file.

Data Structures

struct  Var
 high-level variable representation More...
 
class  VarDb
 lookup container for set of Var objects More...
 
class  TypeDb
 type lookup table More...
 
struct  NameDb
 name to UID mapping for global/static symbols More...
 
struct  KillVar
 value type describing a single 'kill variable' hint More...
 
struct  ltKillVar
 FIXME: inserting <id,0> and <id,1> could break the consistency of std::set. More...
 
struct  Insn
 high-level representation of an intermediate code instruction More...
 
class  Block
 Basic block - a single node in ControlFlow graph. More...
 
class  ControlFlow
 Control flow graph - an easy to analyse representation of the intermediate code. More...
 
class  Item
 
class  Node
 
class  Graph
 
class  GlobalData
 
struct  Fnc
 function definition More...
 
class  FncDb
 lookup container for set of Fnc objects More...
 
struct  Node
 call-graph node (there is a 1:1 relation with Fnc, if the CG is built) More...
 
struct  Graph
 
struct  Storage
 a value type representing the whole serialised model of code More...
 

Namespaces

 CodeStorage
 object model that describes the analyzed code on the input
 
 CodeStorage::CallGraph
 
 CodeStorage::PointsTo
 

Macros

#define STD_VECTOR(type)   type[]
 

Typedefs

typedef struct cl_operand[] TOperandList
 generic STL-based list of cl_operand objects. More...
 
typedef const Block * TTargetList
 generic STL-based list of Block pointers (useful to build CFG from Block objects) More...
 
typedef std::set< KillVar,
ltKillVar > 
TKillVarList
 list of variables to kill (a kill list) More...
 
typedef std::vector< TKillVarList > TKillPerTarget
 list of kill lists (one per each target of a terminal instruction) More...
 
typedef std::vector< int > TArgByPos
 
typedef std::set< int > TVarSet
 
typedef std::vector< const Item * > TItemList
 
typedef std::set< Node * > TNodeList
 
typedef std::map< int, Node * > TMap
 
typedef std::vector< const Fnc * > TFncList
 
typedef std::vector< const Insn * > TInsnList
 
typedef std::map< Fnc
*, TInsnList > 
TInsnListByFnc
 
typedef std::set< Node * > TNodeList
 

Enumerations

enum  EVar {
  VAR_VOID,
  VAR_GL,
  VAR_LC,
  VAR_FNC_ARG
}
 high-level variable (operand) classification More...
 
enum  ItemCodeE {
  PT_ITEM_VAR = 0,
  PT_ITEM_RET,
  PT_ITEM_MALLOC
}
 

Functions

bool isOnStack (const Var &)
 
void readTypeTree (TypeDb &db, const struct cl_type *clt)
 Add the given type into TypeDb instance, then descent into the type and add all the referred types recursively. More...
 
bool isDead (const GlobalData &)
 
const char * nameOf (const Fnc &)
 return the name of given Fnc object (if any) More...
 
struct cl_loclocationOf (const Fnc &)
 return the location info associated with the given Fnc object (if any) More...
 
int uidOf (const Fnc &)
 return the uid of given Fnc object More...
 
bool isDefined (const Fnc &)
 return true if the function is defined (means we have its CFG and the like) More...
 
const Fnc * fncByCfg (const ControlFlow *cfg)
 return the pointer to the Fnc object that the cfg instance is wrapped by More...
 

Detailed Description

object model that describes the analyzed code on the input

Definition in file storage.hh.

Macro Definition Documentation

#define STD_VECTOR (   type)    type[]

Definition at line 35 of file storage.hh.