blob: 2f78b2b2d58a755a953dedb0c4d18dacee5f2fd6 [file] [log] [blame]
Nicolas Capens0bac2852016-05-07 06:09:58 -04001// 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
Nicolas Capens48461502018-08-06 14:20:45 -040015#ifndef rr_Routine_hpp
16#define rr_Routine_hpp
Nicolas Capens0bac2852016-05-07 06:09:58 -040017
Nicolas Capens48461502018-08-06 14:20:45 -040018namespace rr
Nicolas Capens0bac2852016-05-07 06:09:58 -040019{
Nicolas Capens0bac2852016-05-07 06:09:58 -040020 class Routine
21 {
Nicolas Capens0bac2852016-05-07 06:09:58 -040022 public:
Nicolas Capensdaa5d912016-09-28 16:56:36 -040023 Routine();
Nicolas Capens0bac2852016-05-07 06:09:58 -040024
Nicolas Capensdaa5d912016-09-28 16:56:36 -040025 virtual ~Routine();
Nicolas Capens0bac2852016-05-07 06:09:58 -040026
Nicolas Capensdaa5d912016-09-28 16:56:36 -040027 virtual const void *getEntry() = 0;
Nicolas Capens0bac2852016-05-07 06:09:58 -040028
Nicolas Capensdaa5d912016-09-28 16:56:36 -040029 // Reference counting
Nicolas Capens0bac2852016-05-07 06:09:58 -040030 void bind();
31 void unbind();
32
33 private:
Nicolas Capens0bac2852016-05-07 06:09:58 -040034 volatile int bindCount;
Nicolas Capens0bac2852016-05-07 06:09:58 -040035 };
36}
37
Nicolas Capens48461502018-08-06 14:20:45 -040038#endif // rr_Routine_hpp