| /* do not edit automatically generated by mc from mcFileName. */ |
| /* 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 GCC; see the file COPYING3. If not see |
| <http://www.gnu.org/licenses/>. */ |
| |
| #include "config.h" |
| #include "system.h" |
| #include <stdbool.h> |
| # if !defined (PROC_D) |
| # define PROC_D |
| typedef void (*PROC_t) (void); |
| typedef struct { PROC_t proc; } PROC; |
| # endif |
| |
| #define _mcFileName_C |
| |
| #include "GmcFileName.h" |
| # include "GASCII.h" |
| # include "GDynamicStrings.h" |
| |
| # define MaxFileName 0 |
| # define MaxStemName 0 |
| # define Directory '/' |
| |
| /* |
| calculateFileName - calculates and returns a new string filename given a module |
| and an extension. String, Extension, is concatenated onto |
| Module and thus it is safe to `Mark' the extension for garbage |
| collection. |
| */ |
| |
| extern "C" DynamicStrings_String mcFileName_calculateFileName (DynamicStrings_String module, DynamicStrings_String extension); |
| |
| /* |
| calculateStemName - calculates the stem name for given a module. |
| This name length will be operating system and |
| compiler specific. |
| */ |
| |
| extern "C" DynamicStrings_String mcFileName_calculateStemName (DynamicStrings_String module); |
| |
| /* |
| extractExtension - given a, filename, return the filename without |
| the extension, Ext. |
| */ |
| |
| extern "C" DynamicStrings_String mcFileName_extractExtension (DynamicStrings_String filename, DynamicStrings_String ext); |
| |
| /* |
| extractModule - given a, filename, return the module name including any |
| extension. A new string is returned. |
| */ |
| |
| extern "C" DynamicStrings_String mcFileName_extractModule (DynamicStrings_String filename); |
| |
| |
| /* |
| calculateFileName - calculates and returns a new string filename given a module |
| and an extension. String, Extension, is concatenated onto |
| Module and thus it is safe to `Mark' the extension for garbage |
| collection. |
| */ |
| |
| extern "C" DynamicStrings_String mcFileName_calculateFileName (DynamicStrings_String module, DynamicStrings_String extension) |
| { |
| if (MaxFileName == 0) |
| { |
| return DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (module, 0, MaxFileName), '.'), extension); |
| } |
| else |
| { |
| return DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (module, 0, (MaxFileName-(DynamicStrings_Length (extension)))-1), '.'), extension); |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| calculateStemName - calculates the stem name for given a module. |
| This name length will be operating system and |
| compiler specific. |
| */ |
| |
| extern "C" DynamicStrings_String mcFileName_calculateStemName (DynamicStrings_String module) |
| { |
| return DynamicStrings_Slice (module, 0, MaxStemName); |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| extractExtension - given a, filename, return the filename without |
| the extension, Ext. |
| */ |
| |
| extern "C" DynamicStrings_String mcFileName_extractExtension (DynamicStrings_String filename, DynamicStrings_String ext) |
| { |
| if (DynamicStrings_Equal (ext, DynamicStrings_Mark (DynamicStrings_Slice (filename, static_cast<int> (-(DynamicStrings_Length (ext))), 0)))) |
| { |
| return DynamicStrings_Slice (filename, 0, static_cast<int> (-(DynamicStrings_Length (ext)))); |
| } |
| else |
| { |
| return filename; |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| |
| /* |
| extractModule - given a, filename, return the module name including any |
| extension. A new string is returned. |
| */ |
| |
| extern "C" DynamicStrings_String mcFileName_extractModule (DynamicStrings_String filename) |
| { |
| int i; |
| |
| i = DynamicStrings_Index (filename, Directory, 0); |
| if (i == -1) |
| { |
| return DynamicStrings_Dup (filename); |
| } |
| else |
| { |
| return DynamicStrings_Slice (filename, i+1, 0); |
| } |
| /* static analysis guarentees a RETURN statement will be used before here. */ |
| __builtin_unreachable (); |
| } |
| |
| extern "C" void _M2_mcFileName_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[]) |
| { |
| } |
| |
| extern "C" void _M2_mcFileName_fini (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[]) |
| { |
| } |