metadata_s.F90 Source File


This file depends on

sourcefile~~metadata_s.f90~~EfferentGraph sourcefile~metadata_s.f90 metadata_s.F90 sourcefile~metadata_m.f90 metadata_m.f90 sourcefile~metadata_s.f90->sourcefile~metadata_m.f90 sourcefile~double_precision_string_m.f90 double_precision_string_m.f90 sourcefile~metadata_m.f90->sourcefile~double_precision_string_m.f90

Source Code

! Copyright (c), The Regents of the University of California
! Terms of use are as specified in LICENSE.txt

#include "assert_macros.h"

submodule(metadata_m) metadata_s
  use assert_m
  implicit none

contains

  module procedure strings
    components = [self%modelName_, self%modelAuthor_, self%compilationDate_, self%activationFunction_, self%usingSkipConnections_]
  end procedure 
  
  module procedure activation_name
    function_name = self%activationFunction_
  end procedure

  module procedure from_components
    metadata%modelName_ = modelName
    metadata%modelAuthor_ = modelAuthor
    metadata%compilationDate_ = compilationDate
    metadata%activationFunction_ = activationFunction
    metadata%usingSkipConnections_ = usingSkipConnections
  end procedure 

  module procedure from_json
    integer l

    call_assert(lines(1)%get_json_key() == "metadata")

    do l = 2, size(lines)-1
      associate(key => lines(l)%get_json_key())
        select case (key%string())
          case("modelName")
            metadata%modelName_ = lines(l)%get_json_value(key, mold=string_t(""))
          case("modelAuthor")
            metadata%modelAuthor_ = lines(l)%get_json_value(key, mold=string_t(""))
          case("compilationDate")
            metadata%compilationDate_ = lines(l)%get_json_value(key, mold=string_t(""))
          case("activationFunction")
            metadata%activationFunction_ = lines(l)%get_json_value(key, mold=string_t(""))
          case("usingSkipConnections")
            metadata%usingSkipConnections_ = lines(l)%get_json_value(key, mold=string_t(""))
          case default
            error stop "metadata_s(from_json): missing key " // key%string()
        end select
      end associate
    end do

    call_assert_describe(any(trim(adjustl(lines(size(lines))%string())) == ["},","} "]), "metadata_s(from_json): metadata object end found")
  end procedure

  module procedure double_precision_from_json
    integer l

    call_assert(lines(1)%get_json_key() == "metadata")

    do l = 2, size(lines)-1
      associate(key => lines(l)%get_json_key())
        select case (key%string())
          case("modelName")
            metadata%modelName_ = lines(l)%get_json_value(key, mold=string_t(""))
          case("modelAuthor")
            metadata%modelAuthor_ = lines(l)%get_json_value(key, mold=string_t(""))
          case("compilationDate")
            metadata%compilationDate_ = lines(l)%get_json_value(key, mold=string_t(""))
          case("activationFunction")
            metadata%activationFunction_ = lines(l)%get_json_value(key, mold=string_t(""))
          case("usingSkipConnections")
            metadata%usingSkipConnections_ = lines(l)%get_json_value(key, mold=string_t(""))
          case default
            error stop "metadata_s(double_precision_from_json): missing key " // key%string()
        end select
      end associate
    end do

    call_assert_describe(any(trim(adjustl(lines(size(lines))%string())) == ["},","} "]), "metadata_s(double_precision_from_json): metadata object end found")
  end procedure

  module procedure to_json

    character(len=*), parameter :: indent = repeat(" ",ncopies=4)

    lines = [ &
      string_t(indent // '"metadata": {'), &
      string_t(indent // indent // '"modelName" : "'  // trim(adjustl(self%modelName_%string()))  // '",' ), &
      string_t(indent // indent // '"modelAuthor" : "'  // trim(adjustl(self%modelAuthor_%string())) // '",' ), &
      string_t(indent // indent // '"compilationDate" : "' // trim(adjustl(self%compilationDate_%string())) // '",'), &
      string_t(indent // indent // '"activationFunction" : "' // trim(adjustl(self%activationFunction_%string())) // '",'), &
      string_t(indent // indent // '"usingSkipConnections" : "' // trim(adjustl(self%usingSkipConnections_%string())) // '"'), &
      string_t(indent // '}') &
    ]
  end procedure

  module procedure equals
    lhs_equals_rhs = &
      lhs%modelName_ == rhs%modelName_ .and. &
      lhs%modelAuthor_ == rhs%modelAuthor_ .and. &
      lhs%compilationDate_ == rhs%compilationDate_ .and. &
      lhs%activationFunction_ == rhs%activationFunction_ .and. &
      lhs%usingSkipConnections_ == rhs%usingSkipConnections_
  end procedure 

end submodule metadata_s