Copyright 2013 -> 2014
[folly.git] / folly / test / function_benchmark / test_functions.cpp
1 /*
2  * Copyright 2014 Facebook, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "folly/test/function_benchmark/test_functions.h"
18
19 /*
20  * These functions are defined in a separate file so that
21  * gcc won't be able to inline them.
22  */
23
24
25 class Exception : public std::exception {
26  public:
27   explicit Exception(const std::string& value) : value_(value) {}
28   virtual ~Exception(void) throw() {}
29
30   virtual const char *what(void) const throw() {
31     return value_.c_str();
32   }
33
34  private:
35   std::string value_;
36 };
37
38 void doNothing() {
39 }
40
41 void throwException() {
42   throw Exception("this is a test");
43 }
44
45 std::exception_ptr returnExceptionPtr() {
46   Exception ex("this is a test");
47   return std::make_exception_ptr(ex);
48 }
49
50 void exceptionPtrReturnParam(std::exception_ptr* excReturn) {
51   if (excReturn) {
52     Exception ex("this is a test");
53     *excReturn = std::make_exception_ptr(ex);
54   }
55 }
56
57 std::string returnString() {
58   return "this is a test";
59 }
60
61 std::string returnStringNoExcept() noexcept {
62   return "this is a test";
63 }
64
65 int returnCode(int value) {
66   return value;
67 }
68
69 int returnCodeNoExcept(int value) noexcept {
70   return value;
71 }
72
73 void TestClass::doNothing() {
74 }
75
76 VirtualClass::~VirtualClass() {
77 }
78
79 void VirtualClass::doNothing() {
80 };