⛏️ index : haiku.git

/*
 * 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