File: class_22.f90

package info (click to toggle)
lfortran 0.59.0-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 56,736 kB
  • sloc: cpp: 168,052; f90: 74,272; python: 17,537; ansic: 7,705; yacc: 2,345; sh: 1,334; fortran: 895; makefile: 37; javascript: 15
file content (34 lines) | stat: -rw-r--r-- 796 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
module class_22_m
  implicit none
  private
  public :: inner_class, cast_integer, expect_pointer

  ! Define the inner class with some integer data
  type :: inner_class
     integer :: value
  end type inner_class

contains

function cast_integer(obj) result(x)
    class(inner_class), intent(in), allocatable :: obj
    logical :: x

    x = .true.
  end function cast_integer

  subroutine expect_pointer(x)
    type(inner_class), pointer, intent(in) :: x
    if (x%value /= 50) error stop
  end subroutine expect_pointer
end module class_22_m

program class_22
  use class_22_m
  implicit none
  class(inner_class), allocatable :: inner_obj
  type(inner_class), target :: x
  x%value = 50
  if (cast_integer(inner_obj) .neqv. .true.) error stop
  call expect_pointer(x)
end program class_22