Cleaned up

This commit is contained in:
Efi Fogel 2024-01-30 01:07:33 +02:00
parent b25a697fd6
commit 83be94646e
1 changed files with 86 additions and 115 deletions

View File

@ -1,84 +1,64 @@
namespace CGAL {
/*!
\ingroup PkgEnvelope3Ref
The class `Env_surface_data_traits_3` is a model of the `EnvelopeTraits_3` concept
and serves as a decorator class that allows the extension of the surfaces
defined by the base traits-class (the `Traits` parameter), which serves
as a geometric traits-class (a model of the `EnvelopeTraits_3` concept),
with extraneous (non-geometric) data fields.
The traits-class decorator extends the `Surface_3` and the
`Xy_monotone_surface_3` types as detailed below.
Each `Surface_3` object is associated with a single data field of type
`SData`, and each `Xy_monotone_surface_3` object is associated with
a single data field of type `XyData`. When a surface is
subdivided into \f$ xy\f$-monotone surfaces, its data field is converted using
the conversion functor, which is specified by the `Cnv` template-parameter,
and the resulting objects is copied to all `Xy_monotone_surface_3` objects
induced by this surface. The conversion functor should provide an operator with
the following prototype:
`XyData operator() (const SData& d) const;`
By default, the two data types are the same, so the conversion operator
is trivial and just copies the data object:
<TABLE><TR><TD>
`SData` =
</TD>
<TD>
`XyData`
</TD></TR>
<TR><TD>
`Cnv` =
</TD>
<TD>
`_Default_convert_functor<SData,XyData>`
</TD></TR>
</TABLE>
\cgalModels{EnvelopeTraits_3}
*/
template< typename Traits, typename XyData, typename SData, typename Cnv >
/*! \ingroup PkgEnvelope3Ref
*
* The class `Env_surface_data_traits_3` is a model of the `EnvelopeTraits_3`
* concept and serves as a decorator class that allows the extension of the
* surfaces defined by the base traits-class (the `Traits` parameter), which
* serves as a geometric traits-class (a model of the `EnvelopeTraits_3`
* concept), with extraneous (non-geometric) data fields.
*
* The traits-class decorator extends the `Surface_3` and the
* `Xy_monotone_surface_3` types as detailed below. Each `Surface_3` object is
* associated with a single data field of type `SData`, and each
* `Xy_monotone_surface_3` object is associated with a single data field of type
* `XyData`. When a surface is subdivided into \f$ xy\f$-monotone surfaces, its
* data field is converted using the conversion functor, which is specified by
* the `Cnv` template-parameter, and the resulting objects is copied to all
* `Xy_monotone_surface_3` objects induced by this surface. The conversion
* functor should provide an operator with the following prototype:
*
* `XyData operator() (const SData& d) const;`
*
* By default, the two data types are the same, so the conversion operator
* is trivial and just copies the data object:
*
* <TABLE><TR>
* <TD>`SData` =</TD>
* <TD>`XyData`</TD>
* </TR>
* <TR>
* <TD>`Cnv` =</TD>
* <TD>`_Default_convert_functor<SData,XyData>`</TD>
* </TR></TABLE>
*
* \cgalModels{EnvelopeTraits_3}
*
*/
template <typename Traits, typename XyData, typename SData, typename Cnv>
class Env_surface_data_traits_3 : public Traits {
public:
/// \name Types
/// @{
/// \name Types
/// @{
/*!
the base traits-class.
*/
typedef Traits Base_traits_3;
//! the base traits-class.
typedef Traits Base_traits_3;
/*!
the base surface.
*/
typedef typename Base_traits_3::Surface_3 Base_surface_3;
//! the base surface.
typedef typename Base_traits_3::Surface_3 Base_surface_3;
/*!
the base \f$ xy\f$-monotone surface surface.
*/
typedef typename Base_traits_3::Xy_monotone_surface_3 Base_xy_monotone_surface_3;
//! the base \f$ xy\f$-monotone surface surface.
typedef typename Base_traits_3::Xy_monotone_surface_3 Base_xy_monotone_surface_3;
/*!
the conversion functor.
*/
typedef Cnv Convert;
//! the conversion functor.
typedef Cnv Convert;
/*!
the type of data associated with surfaces.
*/
typedef SData Surface_data;
/*!
the type of data associated with \f$ xy\f$-monotone surfaces.
*/
typedef XyData Xy_monotone_surface_data;
//! the type of data associated with surfaces.
typedef SData Surface_data;
//! the type of data associated with \f$ xy\f$-monotone surfaces.
typedef XyData Xy_monotone_surface_data;
/// The `Surface_3` class nested within the surface-data traits
/// extends the `Base_traits_3::Surface_3` type with an extra data field.
@ -87,38 +67,33 @@ typedef XyData Xy_monotone_surface_data;
/// \name Creation
/// @{
/*!
default constructor.
*/
Surface_3 ();
/*! default constructor.
*/
Surface_3();
/*!
constructs surface from the given `base` surface with uninitialized
data field.
*/
Surface_3 (const Base_surface_3& base);
/*! constructs surface from the given `base` surface with uninitialized
* data field.
*/
Surface_3(const Base_surface_3& base);
/*!
constructs surface from the given `base` surface with an attached
`data` field.
*/
Surface_3 (const Base_surface_3& base, const Surface_data& data);
/*! constructs surface from the given `base` surface with an attached
* `data` field.
*/
Surface_3(const Base_surface_3& base, const Surface_data& data);
/// @}
/// \name Access Functions
/// @{
/*!
returns the data field (a non-const version, which returns a reference
to the data object, is also available).
*/
/*! returns the data field (a non-const version, which returns a reference
* to the data object, is also available).
*/
const Surface_data& data () const;
/*!
sets the data field.
*/
void set_data (const Surface_data& data);
/*! sets the data field.
*/
void set_env_data (const Surface_data& data);
/// @}
};
@ -131,22 +106,19 @@ typedef XyData Xy_monotone_surface_data;
/// \name Creation
/// @{
/*!
default constructor.
*/
/*! default constructor.
*/
Xy_monotone_surface_3 ();
/*!
constructs an \f$ xy\f$-monotone surface from the given `base` surface with
uninitialized data field.
*/
Xy_monotone_surface_3 (const Base_xy_monotone_surface_3& base);
/*! constructs an \f$ xy\f$-monotone surface from the given `base` surface
* with uninitialized data field.
*/
Xy_monotone_surface_3(const Base_xy_monotone_surface_3& base);
/*!
constructs an \f$ x\f$-monotone surface from the given `base` \f$ x\f$-monotone
surface with an attached `data` field.
*/
Xy_monotone_surface_3 (const Base_xy_monotone_surface_3& base,
/*! constructs an \f$ x\f$-monotone surface from the given `base`
* \f$ x\f$-monotone surface with an attached `data` field.
*/
Xy_monotone_surface_3(const Base_xy_monotone_surface_3& base,
const Xy_monotone_surface_data& data);
/// @}
@ -154,21 +126,20 @@ typedef XyData Xy_monotone_surface_data;
/// \name Access Functions
/// @{
/*!
returns the field (a non-const version, which returns a reference
to the data object, is also available).
*/
const Xy_monotone_surface_data& data () const;
/*! returns the field (a non-const version, which returns a reference
* to the data object, is also available).
*/
const Xy_monotone_surface_data& data() const;
/*!
sets the data field.
*/
void set_data (const Xy_monotone_surface_data& data);
/*! sets the data field.
*/
void set_env_data(const Xy_monotone_surface_data& data);
/// @}
};
/// @}
/// @}
}; /* end */
} /* end namespace CGAL */