Program Listing for File memory_tools_service.hpp

Return to documentation for file (/tmp/ws/src/osrf_testing_tools_cpp/osrf_testing_tools_cpp/include/osrf_testing_tools_cpp/memory_tools/memory_tools_service.hpp)

// Copyright 2018 Open Source Robotics Foundation, 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.

#ifndef OSRF_TESTING_TOOLS_CPP__MEMORY_TOOLS__MEMORY_TOOLS_SERVICE_HPP_
#define OSRF_TESTING_TOOLS_CPP__MEMORY_TOOLS__MEMORY_TOOLS_SERVICE_HPP_

#include "./stack_trace.hpp"
#include "./visibility_control.hpp"

namespace osrf_testing_tools_cpp
{
namespace memory_tools
{

class MemoryToolsServiceFactory;

class MemoryToolsServiceImpl;

enum class MemoryFunctionType
{
  Malloc,
  Realloc,
  Calloc,
  Free,
};


struct MemoryToolsService
{
  OSRF_TESTING_TOOLS_CPP_MEMORY_TOOLS_PUBLIC
  virtual ~MemoryToolsService();

  OSRF_TESTING_TOOLS_CPP_MEMORY_TOOLS_PUBLIC
  MemoryFunctionType
  get_memory_function_type() const;

  OSRF_TESTING_TOOLS_CPP_MEMORY_TOOLS_PUBLIC
  const char *
  get_memory_function_type_str() const;

  OSRF_TESTING_TOOLS_CPP_MEMORY_TOOLS_PUBLIC
  void
  ignore();

  OSRF_TESTING_TOOLS_CPP_MEMORY_TOOLS_PUBLIC
  void
  unignore();


  OSRF_TESTING_TOOLS_CPP_MEMORY_TOOLS_PUBLIC
  void
  print_backtrace();


  OSRF_TESTING_TOOLS_CPP_MEMORY_TOOLS_PUBLIC
  StackTrace *
  get_stack_trace();

  OSRF_TESTING_TOOLS_CPP_MEMORY_TOOLS_PUBLIC
  const char *
  get_source_function_name() const;

protected:
  explicit MemoryToolsService(
    MemoryFunctionType memory_function_type,
    const char * source_function_name);

  std::shared_ptr<MemoryToolsServiceImpl> impl_;

  friend MemoryToolsServiceFactory;
};

}  // namespace memory_tools
}  // namespace osrf_testing_tools_cpp

#endif  // OSRF_TESTING_TOOLS_CPP__MEMORY_TOOLS__MEMORY_TOOLS_SERVICE_HPP_