1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
/* ====================================================================
* Copyright (c) 2003-2006, 2008 Martin Hauner
* http://subcommander.tigris.org
*
* Subcommander is licensed as described in the file doc/COPYING, which
* you should have received as part of this distribution.
* ====================================================================
*/
#ifndef _SC_STACKFRAME_H
#define _SC_STACKFRAME_H
// sc
#include "String.h"
// apr
#include <apr.h>
// sys
#include <vector>
enum VariableKind
{
vkNone,
vkLocal,
vkParameter
};
enum VariableType
{
vtNone,
vtInt
};
class Variable
{
public:
Variable(VariableType type, sc::Size size);
Variable(const Variable& src);
virtual ~Variable();
void value( void* val );
void name( char* name, sc::Size len );
operator int() const;
public:
VariableType _type;
sc::Size _size;
void* _value;
sc::String _name;
VariableKind _kind;
};
typedef std::vector<Variable> Parameters;
typedef std::vector<Variable> Locals;
class Stackframe
{
public:
Stackframe();
public:
bool _error;
apr_uint64_t _addr;
apr_uint32_t _addrSeg;
apr_uint64_t _addrFrame;
bool _symbol;
sc::String _symbolName;
apr_uint64_t _symbolDisp;
bool _module;
sc::String _moduleName;
bool _line;
sc::String _fileName;
long _lineNr;
long _lineDisp;
Parameters _params;
Locals _locals;
};
typedef std::vector<Stackframe> Stackframes;
#endif // SC_STACKFRAME_H
|