The main documentation of the Logical Class contains additional explanation of this code listing.
!
! Author: Michael L. Hall
! P.O. Box 1663, MS-D413, LANL
! Los Alamos, NM 87545
! ph: 505-665-4312
! email: Hall@LANL.gov
!
! Created on: 1/11/99
! CVS Info: $Id: logical.F90,v 7.8 2006/10/12 18:30:29 hall Exp $
module Caesar_Logical_Class
! Global use associations.
use Caesar_Status_Class
! Start up with everything untyped and private.
implicit none
private
! Public procedures.
public :: Initialize, Finalize, Valid_State, Valid_State_NP
public :: ALL, ANY, COUNT, Operator(.InInterval.), Operator(.InSet.), &
Operator(.NotInInterval.), Operator(.NotInSet.)
REPLICATE_INTERFACE([Initialize], [Initialize_Logical])
REPLICATE_INTERFACE([Finalize], [Finalize_Logical])
REPLICATE_INTERFACE([Valid_State], [Valid_State_Logical_P])
REPLICATE_INTERFACE([Valid_State_NP], [Valid_State_Logical_NP])
interface ALL
module procedure ALL_Scalar
end interface
interface ANY
module procedure ANY_Scalar
end interface
interface COUNT
module procedure COUNT_Scalar
end interface
define([OPERATOR_INTERFACE],[
pushdef([PROCEDURE], [$1])
pushdef([TYPE], [$2])
pushdef([DIM], [$3])
pushdef([PROCEDURE_TYPE_DIM], expand(PROCEDURE_TYPE_DIM))
interface OPERATOR (.PROCEDURE.)
module procedure PROCEDURE_TYPE_DIM
end interface
popdef([PROCEDURE])
popdef([TYPE])
popdef([DIM])
popdef([PROCEDURE_TYPE_DIM])
])
forloop([Dim],[0],[7],[
fortext([Type],[Real Integer],[
fortext([Proc],[InInterval NotInInterval],[
OPERATOR_INTERFACE(Proc, Type, Dim)
])
])
])
define([OPERATOR_INTERFACE],[
pushdef([PROCEDURE], [$1])
pushdef([TYPE], [$2])
pushdef([PROCEDURE_TYPE], expand(PROCEDURE_TYPE))
interface OPERATOR (.PROCEDURE.)
module procedure PROCEDURE_TYPE
end interface
popdef([PROCEDURE])
popdef([TYPE])
popdef([PROCEDURE_TYPE])
])
fortext([Type],[Real Integer Character],[
fortext([Proc],[InSet NotInSet],[
OPERATOR_INTERFACE(Proc, Type)
])
])
contains
The Logical_Class contains the following routines which are listed in separate sections:
end module Caesar_Logical_Class