Predator  [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

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

Macros

#define STD_VECTOR(type)   type[]

Typedefs

typedef struct cl_operand[] TOperandList
 generic STL-based list of cl_operand objects.
typedef const Block * TTargetList
 generic STL-based list of Block pointers (useful to build CFG from Block objects)
typedef std::set< KillVar,
ltKillVar > 
TKillVarList
 list of variables to kill (a kill list)
typedef std::vector< TKillVarList > TKillPerTarget
 list of kill lists (one per each target of a terminal instruction)
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.
bool isDead (const GlobalData &)
const char * nameOf (const Fnc &)
 return the name of given Fnc object (if any)
struct cl_loclocationOf (const Fnc &)
 return the location info associated with the given Fnc object (if any)
int uidOf (const Fnc &)
 return the uid of given Fnc object
bool isDefined (const Fnc &)
 return true if the function is defined (means we have its CFG and the like)
const Fnc * fncByCfg (const ControlFlow *cfg)
 return the pointer to the Fnc object that the cfg instance is wrapped by

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.