1// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//    http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef sw_LLVMRoutine_hpp
16#define sw_LLVMRoutine_hpp
17
18#include "Routine.hpp"
19
20namespace sw
21{
22	class LLVMRoutineManager;
23
24	class LLVMRoutine : public Routine
25	{
26		friend class LLVMRoutineManager;
27
28	public:
29		LLVMRoutine(int bufferSize);
30		//LLVMRoutine(void *memory, int bufferSize, int offset);
31
32		virtual ~LLVMRoutine();
33
34		//void setFunctionSize(int functionSize);
35
36		//const void *getBuffer();
37		const void *getEntry();
38		//int getBufferSize();
39		//int getFunctionSize();   // Includes constants before the entry point
40		int getCodeSize();       // Executable code only
41		//bool isDynamic();
42
43	private:
44		void *buffer;
45		const void *entry;
46		int bufferSize;
47		int functionSize;
48
49		//const bool dynamic;   // Generated or precompiled
50	};
51}
52
53#endif   // sw_LLVMRoutine_hpp
54