blob: 6cdc6bcbf5a763da3d932b9607e53c2955f54deb [file] [log] [blame]
#ifndef sw_Routine_hpp
#define sw_Routine_hpp
namespace sw
{
class RoutineManager;
class Routine
{
friend class RoutineManager;
public:
Routine(int bufferSize);
Routine(void *memory, int bufferSize, int offset);
~Routine();
void setFunctionSize(int functionSize);
const void *getBuffer();
const void *getEntry();
int getBufferSize();
int getFunctionSize(); // Includes constants before the entry point
int getCodeSize(); // Executable code only
bool isDynamic();
void bind();
void unbind();
private:
void *buffer;
const void *entry;
int bufferSize;
int functionSize;
volatile int bindCount;
const bool dynamic; // Generated or precompiled
};
}
#endif // sw_Routine_hpp