File: operator_overloading_20.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 (31 lines) | stat: -rw-r--r-- 740 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
module operator_overloading_20_mod
    implicit none

    type :: Vector2D
        real :: x, y
    contains
        procedure :: add
        generic :: operator(+) => add
    end type Vector2D

contains
    type(Vector2D) function add(this, that)
        class(Vector2D), intent(in) :: this, that
        add%x = this%x + that%x
        add%y = this%y + that%y
    end function add
end module operator_overloading_20_mod

program operator_overloading_20
    use operator_overloading_20_mod
    implicit none
    type(Vector2D) :: v1, v2, v3

    v1 = Vector2D(1.0, 2.0)
    v2 = Vector2D(3.0, 4.0)
    v3 = v1 + v2

    if (abs(v3%x - 4.0) > 1e-5) error stop
    if (abs(v3%y - 6.0) > 1e-5) error stop

end program operator_overloading_20