1/* Copyright 2020 Free Software Foundation, Inc.
2
3   This program is free software; you can redistribute it and/or modify
4   it under the terms of the GNU General Public License as published by
5   the Free Software Foundation; either version 2 of the License, or
6   (at your option) any later version.
7
8   This program is distributed in the hope that it will be useful,
9   but WITHOUT ANY WARRANTY; without even the implied warranty of
10   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11   GNU General Public License for more details.
12
13   You should have received a copy of the GNU General Public License
14   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
15
16#include <cstring>
17#include <cstdlib>
18
19class base_one
20{
21  int num1 = 1;
22  int num2 = 2;
23  int num3 = 3;
24};
25
26class base_two
27{
28public:
29  base_two ()
30  {
31    string = strdup ("Something in C++");
32  }
33
34  ~base_two ()
35  {
36    free (string);
37  }
38
39  char *string = nullptr;
40  float val = 3.5;
41};
42
43class derived_type : public base_one, base_two
44{
45public:
46  derived_type ()
47    : base_one (),
48      base_two ()
49  {
50    /* Nothing.  */
51  }
52
53private:
54  int xxx = 9;
55  float yyy = 10.5;
56};
57
58static void mixed_func_1f ();
59static void mixed_func_1g ();
60
61extern "C"
62{
63  /* Entry point to be called from Fortran. */
64  void
65  mixed_func_1e ()
66  {
67    mixed_func_1f ();
68  }
69
70  /* The entry point back into Fortran.  */
71  extern void mixed_func_1h_ ();
72}
73
74static void
75mixed_func_1g (derived_type obj)
76{
77  mixed_func_1h_ ();
78}
79
80static void
81mixed_func_1f () {
82  derived_type obj;
83
84  mixed_func_1g (obj);
85}
86