(* mcFileName.def Provides a procedure to calculate a system file name.

Copyright (C) 2015-2025 Free Software Foundation, Inc.
Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.

This file is part of GNU Modula-2.

GNU Modula-2 is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

GNU Modula-2 is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Modula-2; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  *)

DEFINITION MODULE mcFileName ;

FROM DynamicStrings IMPORT String ;


(*
   calculateFileName - calculates and returns a new string filename
                       given a module and an extension. This file name
                       length will be operating system specific.
                       String, Extension, is concatenated onto
                       Module and thus it is safe to Mark the extension
                       for garbage collection.
*)

PROCEDURE calculateFileName (module, extension: String) : String ;


(*
   calculateStemName - calculates the stem name for given a module.
                       This name length will be operating system and
      	       	       compiler specific.
*)

PROCEDURE calculateStemName (module: String) : String ;


(*
   extractExtension - given a, filename, return the filename without
                      the extension, Ext.
*)

PROCEDURE extractExtension (filename, ext: String) : String ;


(*
   extractModule - given a, filename, return the module name including any
                   extension. A new string is returned.
*)

PROCEDURE extractModule (filename: String) : String ;


END mcFileName.
