| #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 |