/*
* Copyright 2013, Rene Gollent, rene@gollent.com.
* Distributed under the terms of the MIT License.
*/
#ifndef TYPE_UNIT_H
#define TYPE_UNIT_H
#include <ObjectList.h>
#include <String.h>
#include "BaseUnit.h"
class DIETypeUnit;
class TypeUnit : public BaseUnit {
public:
TypeUnit(off_t headerOffset,
off_t contentOffset,
off_t totalSize,
off_t abbreviationOffset,
off_t typeOffset,
uint8 addressSize,
uint64 typeSignature,
bool isDwarf64);
~TypeUnit();
uint64 Signature() const { return fSignature; }
off_t TypeOffset() const { return fTypeOffset; }
DIETypeUnit* UnitEntry() const { return fUnitEntry; }
void SetUnitEntry(DIETypeUnit* entry);
DebugInfoEntry* TypeEntry() const;
void SetTypeEntry(DebugInfoEntry* entry);
virtual dwarf_unit_kind Kind() const;
private:
DIETypeUnit* fUnitEntry;
DebugInfoEntry* fTypeEntry;
uint64 fSignature;
off_t fTypeOffset;
};
struct TypeUnitTableEntry {
uint64 signature;
TypeUnit* unit;
TypeUnitTableEntry* next;
TypeUnitTableEntry(uint64 signature, TypeUnit* unit)
:
signature(signature),
unit(unit)
{
}
};
struct TypeUnitTableHashDefinition {
typedef uint64 KeyType;
typedef TypeUnitTableEntry ValueType;
size_t HashKey(uint64 key) const
{
return (size_t)key;
}
size_t Hash(TypeUnitTableEntry* value) const
{
return HashKey(value->signature);
}
bool Compare(uint64 key, TypeUnitTableEntry* value) const
{
return value->signature == key;
}
TypeUnitTableEntry*& GetLink(TypeUnitTableEntry* value) const
{
return value->next;
}
};
#endif // TYPE_UNIT_H
↑ V730 Not all members of a class are initialized inside the constructor. Consider inspecting: next.