Resolve/C++ Catalog
CT/Natural/IO_C.h
Copyright © 2010, Reusable Software Research Group, The Ohio State University

//  /*-------------------------------------------------------------------*\
//  |   Concrete Template : Natural_IO_C
//  \*-------------------------------------------------------------------*/

#ifndef CT_NATURAL_IO_C
#define CT_NATURAL_IO_C 1

///------------------------------------------------------------------------
/// Global Context --------------------------------------------------------
///------------------------------------------------------------------------

/*!
    #include "AI/Natural/IO.h"
    #include "AT/General/Get_From.h"
    #include "AT/General/Put_To.h"
!*/

///------------------------------------------------------------------------
/// Interface -------------------------------------------------------------
///------------------------------------------------------------------------

concrete_template <
	concrete_instance class Natural_IO_Base
	/*!
	    implements
		abstract_instance Get_From <Natural_Kernel>
		abstract_instance Put_To <Natural_Kernel>
	!*/
    >
class Natural_IO_C :
    checks
	concrete_instance Natural_IO_Base
{
public:

    procedure_body Get_From (
	    alters Character_IStream& str
	)
    {
	assert (str.Is_Open (),
		"str.is_open = true");
	assert (not str.At_EOS (),
		"str.content /= empty_string");
	self.Natural_IO_Base::Get_From (str);
    }

    procedure_body Put_To (
	    alters Character_OStream& str
	)
    {
	assert (str.Is_Open (),
		"str.is_open = true");
	self.Natural_IO_Base::Put_To (str);
    }

};

#endif // CT_NATURAL_IO_C

Last modified: Thu Jan 11 17:05:57 EST 2007