This site contains older material on Eiffel. For the main Eiffel page, see http://www.eiffel.com.

EiffelBase class
(HTML page generated by ISE Eiffel 4.2)

Eiffel Class
indexing
	description: "File name abstraction";
	status: "See notice at end of class";
	date: "$Date: 2007-03-30 19:10:11 +0000 (Fri, 30 Mar 2007) $";
	revision: "$Revision: 95354 $"

class FILE_NAME

inherit
	PATH_NAME

creation
	make,
	make_from_string

feature

	set_file_name (file_name: STRING) is
			-- Set the value of the file name part.
		require
			string_exists: file_name /= void;
			valid_file_name: is_file_name_valid (file_name)
		local
			new_size: INTEGER;
			str1, str2: ANY
		do
			new_size := count + file_name.count + 5;
			if capacity < new_size then
				resize (new_size)
			end;
			str1 := to_c;
			str2 := file_name.to_c;
			eif_append_file_name ($Current, $str1, $str2)
		ensure
			valid_file_name: is_valid
		end;

	add_extension (ext: STRING) is
			-- Append the extension ext to the file name
		require
			string_exists: ext /= void;
			non_empty_extension: notext.empty;
			valid_extension: is_extension_valid (ext)
		do
			append_character ('.');
			append (ext)
		end;

feature

	is_valid: BOOLEAN is
			-- Is the file name valid for the operating system?
		local
			any: ANY
		do
			any := to_c;
			Result := eif_is_file_valid ($any)
		end;

	is_file_name_valid (f_name: STRING): BOOLEAN is
			-- Is f_name a valid file name part for the operating system?
		local
			any: ANY
		do
			any := f_name.to_c;
			Result := eif_is_file_name_valid ($any)
		end;

	is_extension_valid (ext: STRING): BOOLEAN is
			-- Is ext a valid extension for the operating system?
		local
			any: ANY
		do
			any := ext.to_c;
			Result := eif_is_extension_valid ($any)
		end;

feature {NONE} -- Externals

	eif_append_file_name (s, p, v: POINTER) is
		external
			"C | %"eif_path_name.h%""
		end;

	eif_is_file_name_valid (p: POINTER): BOOLEAN is
		external
			"C | %"eif_path_name.h%""
		end;

	eif_is_extension_valid (p: POINTER): BOOLEAN is
		external
			"C | %"eif_path_name.h%""
		end;

	eif_is_file_valid (p: POINTER): BOOLEAN is
		external
			"C | %"eif_path_name.h%""
		end;

end -- class FILE_NAME