text: // Copyright (c) 2011-2020 The Khronos Group, Inc.
  //
  // Licensed under the Apache License, Version 2.0 (the License);
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an AS IS BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  namespace sycl {
  class kernel {
   private:
    kernel();
  
   public:
  
    /* -- common interface members -- */
  
    backend get_backend() const;
  
    bool is_host() const;
  
    context get_context() const;
  
    module<module_state::executable> get_module() const;
  
    template <info::kernel param>
    typename info::param_traits<info::kernel, param>::return_type
    get_info() const;
  
    template <info::kernel_device_specific param>
    typename info::param_traits<info::kernel_device_specific, param>::return_type
    get_info(const device &dev) const;
  
    template <typename BackendEnum, BackendEnum param>
    typename info::param_traits<BackendEnum, param>::return_type
    get_backend_info() const;
  
    template <info::kernel_work_group param>
    typename info::param_traits<info::kernel_work_group, param>::return_type
    get_work_group_info(const device &dev) const;
  };
  }  // namespace sycl
  