Scippy

SCIP

Solving Constraint Integer Programs

type_event.h File Reference

Detailed Description

type definitions for managing events

Author
Tobias Achterberg

This file defines the interface for event handler implemented in C.

Definition in file type_event.h.

#include "scip/def.h"
#include "scip/type_retcode.h"
#include "scip/type_scip.h"

Go to the source code of this file.

Macros

#define SCIP_EVENTTYPE_DISABLED   0x00000000u
 
#define SCIP_EVENTTYPE_VARADDED   0x00000001u
 
#define SCIP_EVENTTYPE_VARDELETED   0x00000002u
 
#define SCIP_EVENTTYPE_VARFIXED   0x00000004u
 
#define SCIP_EVENTTYPE_VARUNLOCKED   0x00000008u
 
#define SCIP_EVENTTYPE_OBJCHANGED   0x00000010u
 
#define SCIP_EVENTTYPE_GLBCHANGED   0x00000020u
 
#define SCIP_EVENTTYPE_GUBCHANGED   0x00000040u
 
#define SCIP_EVENTTYPE_LBTIGHTENED   0x00000080u
 
#define SCIP_EVENTTYPE_LBRELAXED   0x00000100u
 
#define SCIP_EVENTTYPE_UBTIGHTENED   0x00000200u
 
#define SCIP_EVENTTYPE_UBRELAXED   0x00000400u
 
#define SCIP_EVENTTYPE_GHOLEADDED   0x00000800u
 
#define SCIP_EVENTTYPE_GHOLEREMOVED   0x00001000u
 
#define SCIP_EVENTTYPE_LHOLEADDED   0x00002000u
 
#define SCIP_EVENTTYPE_LHOLEREMOVED   0x00004000u
 
#define SCIP_EVENTTYPE_IMPLADDED   0x00008000u
 
#define SCIP_EVENTTYPE_PRESOLVEROUND   0x00010000u
 
#define SCIP_EVENTTYPE_NODEFOCUSED   0x00020000u
 
#define SCIP_EVENTTYPE_NODEFEASIBLE   0x00040000u
 
#define SCIP_EVENTTYPE_NODEINFEASIBLE   0x00080000u
 
#define SCIP_EVENTTYPE_NODEBRANCHED   0x00100000u
 
#define SCIP_EVENTTYPE_FIRSTLPSOLVED   0x00200000u
 
#define SCIP_EVENTTYPE_LPSOLVED   0x00400000u
 
#define SCIP_EVENTTYPE_POORSOLFOUND   0x00800000u
 
#define SCIP_EVENTTYPE_BESTSOLFOUND   0x01000000u
 
#define SCIP_EVENTTYPE_ROWADDEDSEPA   0x02000000u
 
#define SCIP_EVENTTYPE_ROWDELETEDSEPA   0x04000000u
 
#define SCIP_EVENTTYPE_ROWADDEDLP   0x08000000u
 
#define SCIP_EVENTTYPE_ROWDELETEDLP   0x10000000u
 
#define SCIP_EVENTTYPE_ROWCOEFCHANGED   0x20000000u
 
#define SCIP_EVENTTYPE_ROWCONSTCHANGED   0x40000000u
 
#define SCIP_EVENTTYPE_ROWSIDECHANGED   0x80000000u
 
#define SCIP_EVENTTYPE_GBDCHANGED   (SCIP_EVENTTYPE_GLBCHANGED | SCIP_EVENTTYPE_GUBCHANGED)
 
#define SCIP_EVENTTYPE_LBCHANGED   (SCIP_EVENTTYPE_LBTIGHTENED | SCIP_EVENTTYPE_LBRELAXED)
 
#define SCIP_EVENTTYPE_UBCHANGED   (SCIP_EVENTTYPE_UBTIGHTENED | SCIP_EVENTTYPE_UBRELAXED)
 
#define SCIP_EVENTTYPE_BOUNDTIGHTENED   (SCIP_EVENTTYPE_LBTIGHTENED | SCIP_EVENTTYPE_UBTIGHTENED)
 
#define SCIP_EVENTTYPE_BOUNDRELAXED   (SCIP_EVENTTYPE_LBRELAXED | SCIP_EVENTTYPE_UBRELAXED)
 
#define SCIP_EVENTTYPE_BOUNDCHANGED   (SCIP_EVENTTYPE_LBCHANGED | SCIP_EVENTTYPE_UBCHANGED)
 
#define SCIP_EVENTTYPE_GHOLECHANGED   (SCIP_EVENTTYPE_GHOLEADDED | SCIP_EVENTTYPE_GHOLEREMOVED)
 
#define SCIP_EVENTTYPE_LHOLECHANGED   (SCIP_EVENTTYPE_LHOLEADDED | SCIP_EVENTTYPE_LHOLEREMOVED)
 
#define SCIP_EVENTTYPE_HOLECHANGED   (SCIP_EVENTTYPE_GHOLECHANGED | SCIP_EVENTTYPE_LHOLECHANGED)
 
#define SCIP_EVENTTYPE_DOMCHANGED   (SCIP_EVENTTYPE_BOUNDCHANGED | SCIP_EVENTTYPE_HOLECHANGED)
 
#define SCIP_EVENTTYPE_VARCHANGED
 
#define SCIP_EVENTTYPE_VAREVENT   (SCIP_EVENTTYPE_VARADDED | SCIP_EVENTTYPE_VARCHANGED)
 
#define SCIP_EVENTTYPE_NODESOLVED
 
#define SCIP_EVENTTYPE_NODEEVENT   (SCIP_EVENTTYPE_NODEFOCUSED | SCIP_EVENTTYPE_NODESOLVED)
 
#define SCIP_EVENTTYPE_LPEVENT   (SCIP_EVENTTYPE_FIRSTLPSOLVED | SCIP_EVENTTYPE_LPSOLVED)
 
#define SCIP_EVENTTYPE_SOLFOUND   (SCIP_EVENTTYPE_POORSOLFOUND | SCIP_EVENTTYPE_BESTSOLFOUND)
 
#define SCIP_EVENTTYPE_SOLEVENT   (SCIP_EVENTTYPE_SOLFOUND)
 
#define SCIP_EVENTTYPE_ROWCHANGED   (SCIP_EVENTTYPE_ROWCOEFCHANGED | SCIP_EVENTTYPE_ROWCONSTCHANGED | SCIP_EVENTTYPE_ROWSIDECHANGED)
 
#define SCIP_EVENTTYPE_ROWEVENT   (SCIP_EVENTTYPE_ROWADDEDSEPA | SCIP_EVENTTYPE_ROWDELETEDSEPA | SCIP_EVENTTYPE_ROWADDEDLP | SCIP_EVENTTYPE_ROWDELETEDLP | SCIP_EVENTTYPE_ROWCHANGED)
 
#define SCIP_DECL_EVENTCOPY(x)   SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)
 
#define SCIP_DECL_EVENTFREE(x)   SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)
 
#define SCIP_DECL_EVENTINIT(x)   SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)
 
#define SCIP_DECL_EVENTEXIT(x)   SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)
 
#define SCIP_DECL_EVENTINITSOL(x)   SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)
 
#define SCIP_DECL_EVENTEXITSOL(x)   SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)
 
#define SCIP_DECL_EVENTDELETE(x)   SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr, SCIP_EVENTDATA** eventdata)
 
#define SCIP_DECL_EVENTEXEC(x)   SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr, SCIP_EVENT* event, SCIP_EVENTDATA* eventdata)
 

Typedefs

typedef unsigned int SCIP_EVENTTYPE
 
typedef struct SCIP_Eventhdlr SCIP_EVENTHDLR
 
typedef struct SCIP_EventhdlrData SCIP_EVENTHDLRDATA
 
typedef struct SCIP_Event SCIP_EVENT
 
typedef struct SCIP_EventVarAdded SCIP_EVENTVARADDED
 
typedef struct SCIP_EventVarDeleted SCIP_EVENTVARDELETED
 
typedef struct SCIP_EventVarFixed SCIP_EVENTVARFIXED
 
typedef struct
SCIP_EventVarUnlocked 
SCIP_EVENTVARUNLOCKED
 
typedef struct SCIP_EventObjChg SCIP_EVENTOBJCHG
 
typedef struct SCIP_EventBdChg SCIP_EVENTBDCHG
 
typedef struct SCIP_EventHole SCIP_EVENTHOLE
 
typedef struct SCIP_EventImplAdd SCIP_EVENTIMPLADD
 
typedef struct
SCIP_EventRowAddedSepa 
SCIP_EVENTROWADDEDSEPA
 
typedef struct
SCIP_EventRowDeletedSepa 
SCIP_EVENTROWDELETEDSEPA
 
typedef struct SCIP_EventRowAddedLP SCIP_EVENTROWADDEDLP
 
typedef struct
SCIP_EventRowDeletedLP 
SCIP_EVENTROWDELETEDLP
 
typedef struct
SCIP_EventRowCoefChanged 
SCIP_EVENTROWCOEFCHANGED
 
typedef struct
SCIP_EventRowConstChanged 
SCIP_EVENTROWCONSTCHANGED
 
typedef struct
SCIP_EventRowSideChanged 
SCIP_EVENTROWSIDECHANGED
 
typedef struct SCIP_EventData SCIP_EVENTDATA
 
typedef struct SCIP_EventFilter SCIP_EVENTFILTER
 
typedef struct SCIP_EventQueue SCIP_EVENTQUEUE
 

Macro Definition Documentation

#define SCIP_EVENTTYPE_VARADDED   0x00000001u
#define SCIP_EVENTTYPE_VARDELETED   0x00000002u
#define SCIP_EVENTTYPE_VARUNLOCKED   0x00000008u

the number of rounding locks of a variable was reduced to zero or one

Definition at line 49 of file type_event.h.

Referenced by consCatchEvent(), consDropEvent(), SCIP_DECL_EVENTEXEC(), SCIPeventChgVar(), SCIPeventCreateVarUnlocked(), SCIPeventGetVar(), SCIPeventProcess(), and SCIPeventqueueAdd().

#define SCIP_EVENTTYPE_OBJCHANGED   0x00000010u
#define SCIP_EVENTTYPE_GLBCHANGED   0x00000020u
#define SCIP_EVENTTYPE_GUBCHANGED   0x00000040u
#define SCIP_EVENTTYPE_GHOLEADDED   0x00000800u

a global hole has been added to the hole list of a variable's domain

Definition at line 58 of file type_event.h.

Referenced by SCIPeventChgVar(), SCIPeventCreateGholeAdded(), SCIPeventGetVar(), SCIPeventProcess(), SCIPeventqueueAdd(), and varEventGholeAdded().

#define SCIP_EVENTTYPE_GHOLEREMOVED   0x00001000u

a global hole has been removed from the hole list of a variable's domain

Definition at line 59 of file type_event.h.

Referenced by SCIPeventChgVar(), SCIPeventCreateGholeRemoved(), SCIPeventGetVar(), SCIPeventProcess(), and SCIPeventqueueAdd().

#define SCIP_EVENTTYPE_LHOLEADDED   0x00002000u

a local hole has been added to the hole list of a variable's domain

Definition at line 60 of file type_event.h.

Referenced by SCIPeventChgVar(), SCIPeventCreateLholeAdded(), SCIPeventGetVar(), SCIPeventProcess(), and SCIPeventqueueAdd().

#define SCIP_EVENTTYPE_LHOLEREMOVED   0x00004000u

a local hole has been removed from the hole list of a variable's domain

Definition at line 61 of file type_event.h.

Referenced by SCIPeventChgVar(), SCIPeventCreateLholeRemoved(), SCIPeventGetVar(), SCIPeventProcess(), and SCIPeventqueueAdd().

#define SCIP_EVENTTYPE_IMPLADDED   0x00008000u
#define SCIP_EVENTTYPE_PRESOLVEROUND   0x00010000u

a presolving round has been finished

Definition at line 66 of file type_event.h.

Referenced by presolveRound(), SCIPeventProcess(), and SCIPeventqueueAdd().

#define SCIP_EVENTTYPE_NODEFOCUSED   0x00020000u

a node has been focused and is now the focus node

Definition at line 69 of file type_event.h.

Referenced by SCIPeventProcess(), SCIPeventqueueAdd(), and SCIPsolveCIP().

#define SCIP_EVENTTYPE_NODEFEASIBLE   0x00040000u

the LP/pseudo solution of the node was feasible

Definition at line 70 of file type_event.h.

Referenced by SCIPeventProcess(), SCIPeventqueueAdd(), and SCIPsolveCIP().

#define SCIP_EVENTTYPE_NODEINFEASIBLE   0x00080000u

the focus node has been proven to be infeasible or was bounded

Definition at line 71 of file type_event.h.

Referenced by SCIPeventProcess(), SCIPeventqueueAdd(), and SCIPsolveCIP().

#define SCIP_EVENTTYPE_NODEBRANCHED   0x00100000u

the focus node has been solved by branching

Definition at line 72 of file type_event.h.

Referenced by SCIPeventProcess(), SCIPeventqueueAdd(), and SCIPsolveCIP().

#define SCIP_EVENTTYPE_FIRSTLPSOLVED   0x00200000u

the node's initial LP was solved

Definition at line 75 of file type_event.h.

Referenced by SCIP_DECL_EVENTEXIT(), SCIP_DECL_EVENTINIT(), SCIPeventProcess(), SCIPeventqueueAdd(), and solveNodeInitialLP().

#define SCIP_EVENTTYPE_LPSOLVED   0x00400000u

the node's LP was completely solved with cut & price

Definition at line 76 of file type_event.h.

Referenced by priceAndCutLoop(), SCIP_DECL_EVENTEXEC(), SCIP_DECL_EVENTEXIT(), SCIP_DECL_EVENTINIT(), SCIP_DECL_HEUREXEC(), SCIPeventProcess(), and SCIPeventqueueAdd().

#define SCIP_EVENTTYPE_POORSOLFOUND   0x00800000u

a good enough primal feasible (but not new best) solution was found

Definition at line 79 of file type_event.h.

Referenced by primalAddSol(), SCIPeventProcess(), and SCIPeventqueueAdd().

#define SCIP_EVENTTYPE_BESTSOLFOUND   0x01000000u

a new best primal feasible solution was found

Definition at line 80 of file type_event.h.

Referenced by primalAddSol(), SCIP_DECL_CONSINITSOL(), SCIP_DECL_EVENTEXEC(), SCIPeventProcess(), and SCIPeventqueueAdd().

#define SCIP_EVENTTYPE_ROWADDEDSEPA   0x02000000u

a row has been added to SCIP's separation storage

Definition at line 83 of file type_event.h.

Referenced by SCIPeventCreateRowAddedSepa(), SCIPeventGetRow(), SCIPeventProcess(), SCIPeventqueueAdd(), and sepastoreAddCut().

#define SCIP_EVENTTYPE_ROWDELETEDSEPA   0x04000000u

a row has been removed from SCIP's separation storage

Definition at line 84 of file type_event.h.

Referenced by SCIPeventCreateRowDeletedSepa(), SCIPeventGetRow(), SCIPeventProcess(), SCIPeventqueueAdd(), SCIPsepastoreClearCuts(), sepastoreAddCut(), and sepastoreDelCut().

#define SCIP_EVENTTYPE_ROWADDEDLP   0x08000000u

a row has been added to the LP

Definition at line 85 of file type_event.h.

Referenced by SCIPeventCreateRowAddedLP(), SCIPeventGetRow(), SCIPeventProcess(), SCIPeventqueueAdd(), and SCIPlpAddRow().

#define SCIP_EVENTTYPE_ROWDELETEDLP   0x10000000u

a row has been removed from the LP

Definition at line 86 of file type_event.h.

Referenced by lpDelRowset(), SCIPeventCreateRowDeletedLP(), SCIPeventGetRow(), SCIPeventProcess(), SCIPeventqueueAdd(), and SCIPlpShrinkRows().

#define SCIP_EVENTTYPE_ROWCOEFCHANGED   0x20000000u
#define SCIP_EVENTTYPE_ROWCONSTCHANGED   0x40000000u

the constant of a row has been changed (row specific event)

Definition at line 88 of file type_event.h.

Referenced by rowEventConstantChanged(), SCIPeventCreateRowConstChanged(), SCIPeventGetRow(), SCIPeventGetRowNewConstVal(), SCIPeventGetRowOldConstVal(), SCIPeventProcess(), and SCIPeventqueueAdd().

#define SCIP_EVENTTYPE_ROWSIDECHANGED   0x80000000u
#define SCIP_EVENTTYPE_BOUNDRELAXED   (SCIP_EVENTTYPE_LBRELAXED | SCIP_EVENTTYPE_UBRELAXED)

Definition at line 96 of file type_event.h.

Referenced by dropVarEvents(), propdataInit(), and SCIP_DECL_EVENTEXEC().

#define SCIP_EVENTTYPE_GHOLECHANGED   (SCIP_EVENTTYPE_GHOLEADDED | SCIP_EVENTTYPE_GHOLEREMOVED)

Definition at line 98 of file type_event.h.

#define SCIP_EVENTTYPE_LHOLECHANGED   (SCIP_EVENTTYPE_LHOLEADDED | SCIP_EVENTTYPE_LHOLEREMOVED)

Definition at line 99 of file type_event.h.

#define SCIP_EVENTTYPE_HOLECHANGED   (SCIP_EVENTTYPE_GHOLECHANGED | SCIP_EVENTTYPE_LHOLECHANGED)

Definition at line 100 of file type_event.h.

Referenced by SCIPeventGetHoleLeft(), and SCIPeventGetHoleRight().

#define SCIP_EVENTTYPE_DOMCHANGED   (SCIP_EVENTTYPE_BOUNDCHANGED | SCIP_EVENTTYPE_HOLECHANGED)

Definition at line 101 of file type_event.h.

#define SCIP_EVENTTYPE_VAREVENT   (SCIP_EVENTTYPE_VARADDED | SCIP_EVENTTYPE_VARCHANGED)

Definition at line 105 of file type_event.h.

#define SCIP_EVENTTYPE_NODESOLVED
#define SCIP_EVENTTYPE_NODEEVENT   (SCIP_EVENTTYPE_NODEFOCUSED | SCIP_EVENTTYPE_NODESOLVED)

Definition at line 110 of file type_event.h.

Referenced by SCIPeventChgNode(), and SCIPeventGetNode().

#define SCIP_EVENTTYPE_LPEVENT   (SCIP_EVENTTYPE_FIRSTLPSOLVED | SCIP_EVENTTYPE_LPSOLVED)

Definition at line 113 of file type_event.h.

Referenced by SCIPeventChgNode(), and SCIPeventGetNode().

#define SCIP_EVENTTYPE_SOLFOUND   (SCIP_EVENTTYPE_POORSOLFOUND | SCIP_EVENTTYPE_BESTSOLFOUND)

Definition at line 116 of file type_event.h.

Referenced by SCIP_DECL_CONSEXITSOL(), SCIP_DECL_CONSINITSOL(), and SCIP_DECL_EVENTEXEC().

#define SCIP_EVENTTYPE_SOLEVENT   (SCIP_EVENTTYPE_SOLFOUND)

Definition at line 117 of file type_event.h.

Referenced by SCIPeventChgSol(), and SCIPeventGetSol().

Definition at line 120 of file type_event.h.

Referenced by SCIPcatchRowEvent(), and SCIProwCatchEvent().

#define SCIP_DECL_EVENTCOPY (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)

copy method for event handler plugins (called when SCIP copies plugins)

input:

  • scip : SCIP main data structure
  • eventhdlr : the event handler itself

Definition at line 154 of file type_event.h.

#define SCIP_DECL_EVENTFREE (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)

destructor of event handler to free user data (called when SCIP is exiting)

input:

  • scip : SCIP main data structure
  • eventhdlr : the event handler itself

Definition at line 162 of file type_event.h.

#define SCIP_DECL_EVENTINIT (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)

initialization method of event handler (called after problem was transformed)

input:

  • scip : SCIP main data structure
  • eventhdlr : the event handler itself

Definition at line 170 of file type_event.h.

#define SCIP_DECL_EVENTEXIT (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)

deinitialization method of event handler (called before transformed problem is freed)

input:

  • scip : SCIP main data structure
  • eventhdlr : the event handler itself

Definition at line 178 of file type_event.h.

#define SCIP_DECL_EVENTINITSOL (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)

solving process initialization method of event handler (called when branch and bound process is about to begin)

This method is called when the presolving was finished and the branch and bound process is about to begin. The event handler may use this call to initialize its branch and bound specific data.

input:

  • scip : SCIP main data structure
  • eventhdlr : the event handler itself

Definition at line 189 of file type_event.h.

#define SCIP_DECL_EVENTEXITSOL (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr)

solving process deinitialization method of event handler (called before branch and bound process data is freed)

This method is called before the branch and bound process is freed. The event handler should use this call to clean up its branch and bound data.

input:

  • scip : SCIP main data structure
  • eventhdlr : the event handler itself

Definition at line 200 of file type_event.h.

#define SCIP_DECL_EVENTDELETE (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr, SCIP_EVENTDATA** eventdata)

frees specific event data

input:

  • scip : SCIP main data structure
  • eventhdlr : the event handler itself
  • eventdata : pointer to the event data to free

Definition at line 209 of file type_event.h.

#define SCIP_DECL_EVENTEXEC (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_EVENTHDLR* eventhdlr, SCIP_EVENT* event, SCIP_EVENTDATA* eventdata)

execution method of event handler

Processes the event. The method is called every time an event occurs, for which the event handler is responsible. Event handlers may declare themselves responsible for events by calling the corresponding SCIPcatch...() method. This method creates an event filter object to point to the given event handler and event data.

input:

  • scip : SCIP main data structure
  • eventhdlr : the event handler itself
  • event : event to process
  • eventdata : user data for the event

Definition at line 224 of file type_event.h.

Typedef Documentation

typedef unsigned int SCIP_EVENTTYPE

type of event (bit field)

Definition at line 123 of file type_event.h.

event handler for a specific events

Definition at line 126 of file type_event.h.

typedef struct SCIP_EventhdlrData SCIP_EVENTHDLRDATA

event handler data

Definition at line 127 of file type_event.h.

typedef struct SCIP_Event SCIP_EVENT

event data structure

Definition at line 128 of file type_event.h.

data for variable addition events

Definition at line 129 of file type_event.h.

data for variable deletion events

Definition at line 130 of file type_event.h.

data for variable fixing events

Definition at line 131 of file type_event.h.

data for variable unlocked events

Definition at line 132 of file type_event.h.

data for objective value change events

Definition at line 133 of file type_event.h.

data for bound change events

Definition at line 134 of file type_event.h.

data for domain hole events

Definition at line 135 of file type_event.h.

data for implication added events

Definition at line 136 of file type_event.h.

data for row addition to sepastorage events

Definition at line 137 of file type_event.h.

data for row deletion from sepastorage events

Definition at line 138 of file type_event.h.

data for row addition to LP events

Definition at line 139 of file type_event.h.

data for row deletion from LP events

Definition at line 140 of file type_event.h.

data for row coefficient change events

Definition at line 141 of file type_event.h.

data for row constant change events

Definition at line 142 of file type_event.h.

data for row side change events

Definition at line 143 of file type_event.h.

typedef struct SCIP_EventData SCIP_EVENTDATA

locally defined event specific data

Definition at line 144 of file type_event.h.

event filter to select events to be processed by an event handler

Definition at line 145 of file type_event.h.

event queue to cache events and process them later

Definition at line 146 of file type_event.h.