root/src/kits/debugger/value/ValueLoader.h
/*
 * Copyright 2015, Rene Gollent, rene@gollent.com.
 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */
#ifndef VALUE_LOADER_H
#define VALUE_LOADER_H


#include <String.h>

#include <Variant.h>


class Architecture;
class CpuState;
class TeamMemory;
class ValueLocation;


class ValueLoader {
public:
                                                                ValueLoader(Architecture* architecture,
                                                                        TeamMemory* teamMemory,
                                                                        CpuState* cpuState);
                                                                        // cpuState can be NULL
                                                                ~ValueLoader();

                        Architecture*           GetArchitecture() const
                                                                        { return fArchitecture; }

                        status_t                        LoadValue(ValueLocation* location,
                                                                        type_code valueType, bool shortValueIsFine,
                                                                        BVariant& _value);

                        status_t                        LoadRawValue(BVariant& location,
                                                                        size_t maxSize, void* _value);

                        status_t                        LoadStringValue(BVariant& location,
                                                                        size_t maxSize, BString& _value);

private:
                        Architecture*           fArchitecture;
                        TeamMemory*                     fTeamMemory;
                        CpuState*                       fCpuState;
};


#endif  // VALUE_LOADER_H