/* 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
. */
#include "config.h"
#include "system.h"
#include
# 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 (-(DynamicStrings_Length (ext))), 0))))
{
return DynamicStrings_Slice (filename, 0, static_cast (-(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[])
{
}