LCOV - code coverage report
Current view: top level - src - Frame.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 33 60 55.0 %
Date: 2010-12-13 Functions: 9 14 64.3 %
Branches: 12 48 25.0 %

           Branch data     Line data    Source code
       1                 :            : // $Id: Frame.cc 6219 2008-10-01 05:39:07Z vern $
       2                 :            : //
       3                 :            : // See the file "COPYING" in the main distribution directory for copyright.
       4                 :            : 
       5                 :            : #include "config.h"
       6                 :            : 
       7                 :            : #include "Frame.h"
       8                 :            : #include "Stmt.h"
       9                 :            : #include "Func.h"
      10                 :            : #include "Trigger.h"
      11                 :            : 
      12                 :          6 : vector<Frame*> g_frame_stack;
      13                 :            : 
      14                 :      94710 : Frame::Frame(int arg_size, const BroFunc* func, const val_list* fn_args)
      15                 :            :         {
      16                 :      94710 :         size = arg_size;
      17                 :      94710 :         frame = new Val*[size];
      18                 :      94710 :         function = func;
      19                 :      94710 :         func_args = fn_args;
      20                 :            : 
      21                 :      94710 :         next_stmt = 0;
      22                 :      94710 :         break_before_next_stmt = false;
      23                 :      94710 :         break_on_return = false;
      24                 :            : 
      25                 :      94710 :         trigger = 0;
      26                 :      94710 :         call = 0;
      27                 :      94710 :         delayed = false;
      28                 :            : 
      29                 :      94710 :         Clear();
      30                 :      94710 :         }
      31                 :            : 
      32                 :      94710 : Frame::~Frame()
      33                 :            :         {
      34 [ -  + ][ -  + ]:      94710 :         Unref(trigger);
                 [ #  # ]
      35                 :      94710 :         Release();
      36 [ +  - ][ -  + ]:      94710 :         }
                 [ #  # ]
      37                 :            : 
      38                 :      94710 : void Frame::Release()
      39                 :            :         {
      40         [ +  + ]:     490358 :         for ( int i = 0; i < size; ++i )
      41                 :     395648 :                 Unref(frame[i]);
      42                 :            : 
      43         [ +  - ]:      94710 :         delete [] frame;
      44                 :      94710 :         }
      45                 :            : 
      46                 :          0 : void Frame::Describe(ODesc* d) const
      47                 :            :         {
      48         [ #  # ]:          0 :         if ( ! d->IsBinary() )
      49                 :          0 :                 d->AddSP("frame");
      50                 :            : 
      51         [ #  # ]:          0 :         if ( ! d->IsReadable() )
      52                 :            :                 {
      53                 :          0 :                 d->Add(size);
      54                 :            : 
      55         [ #  # ]:          0 :                 for ( int i = 0; i < size; ++i )
      56                 :            :                          {
      57                 :          0 :                          d->Add(frame[i] != 0);
      58                 :          0 :                          d->SP();
      59                 :            :                          }
      60                 :            :                 }
      61                 :            : 
      62         [ #  # ]:          0 :         for ( int i = 0; i < size; ++i )
      63         [ #  # ]:          0 :                 if ( frame[i] )
      64                 :          0 :                         frame[i]->Describe(d);
      65         [ #  # ]:          0 :                 else if ( d->IsReadable() )
      66                 :          0 :                         d->Add("<nil>");
      67                 :          0 :         }
      68                 :            : 
      69                 :      94710 : void Frame::Clear()
      70                 :            :         {
      71         [ +  + ]:     490358 :         for ( int i = 0; i < size; ++i )
      72                 :     395648 :                 frame[i] = 0;
      73                 :      94710 :         }
      74                 :            : 
      75                 :          0 : Frame* Frame::Clone()
      76                 :            :         {
      77                 :          0 :         Frame* f = new Frame(size, function, func_args);
      78                 :            : 
      79         [ #  # ]:          0 :         for ( int i = 0; i < size; ++i )
      80         [ #  # ]:          0 :                 f->frame[i] = frame[i] ? frame[i]->Clone() : 0;
      81                 :            : 
      82         [ #  # ]:          0 :         if ( trigger )
      83         [ #  # ]:          0 :                 Ref(trigger);
      84                 :          0 :         f->trigger = trigger;
      85                 :          0 :         f->call = call;
      86                 :            : 
      87                 :          0 :         return f;
      88                 :            :         }
      89                 :            : 
      90                 :      69948 : void Frame::SetTrigger(Trigger* arg_trigger)
      91                 :            :         {
      92         [ -  + ]:      69948 :         if ( arg_trigger )
      93         [ #  # ]:          0 :                 Ref(arg_trigger);
      94                 :      69948 :         trigger = arg_trigger;
      95                 :      69948 :         }
      96                 :            : 
      97                 :          0 : void Frame::ClearTrigger()
      98                 :            :         {
      99         [ #  # ]:          0 :         Unref(trigger);
     100                 :          0 :         trigger = 0;
     101 [ +  - ][ +  - ]:          6 :         }

Generated by: LCOV version 1.8