⚲
Project
General
Profile
Sign in
Home
Projects
Help
Search
:
DCMTK
All Projects
DCMTK
Overview
Activity
Roadmap
Issues
News
Documents
Wiki
Files
Download (1.3 KB)
Feature #631
ยป ofnew_proposal.h
Jan Schlamelcher, 2015-04-16 11:29
#include
"dcmtk/ofstd/oftraits.h"
template
<
typename
T
>
OFTypename
OFenable_if
<!
OFis_array
<
T
>::
value
,
T
*>::
type
OFnew
(
const
T
&
t
=
T
()
)
{
#ifdef HAVE_STD__NOTHROW
return
new
(
std
::
nothrow
)
T
(
t
);
#else
/* make sure that the pointer is set to NULL in case of error */
try
{
return
new
T
(
t
);
}
catch
(
STD_NAMESPACE
bad_alloc
const
&
)
{
return
OFnullptr
;
}
#endif
}
template
<
typename
T
>
OFTypename
OFenable_if
<
OFis_array
<
T
>::
value
,
T
*>::
type
OFnew
(
const
size_t
size
)
{
#ifdef HAVE_STD__NOTHROW
return
new
(
std
::
nothrow
)
T
[
size
];
#else
/* make sure that the pointer is set to NULL in case of error */
try
{
return
new
T
[
size
];
}
catch
(
STD_NAMESPACE
bad_alloc
const
&
)
{
return
OFnullptr
;
}
#endif
}
template
<
typename
T
>
void
OFdelete
(
T
*
pT
)
{
#if defined(HAVE_STD__NOTHROW) && defined(HAVE_NOTHROW_DELETE)
operator
delete
(
pT
,
std
::
nothrow
);
#else
delete
pT
;
#endif
}
template
<
typename
T
>
void
OFdelete_array
(
T
*
pT
)
{
#if defined(HAVE_STD__NOTHROW) && defined(HAVE_NOTHROW_DELETE)
operator
delete
[](
pT
,
std
::
nothrow
);
#else
delete
[]
pT
;
#endif
}
// Anwendung:
OFString
*
pS
=
OFnew
<
OFString
>
(
"Hello Word"
);
Uint8
*
value
=
OFnew
<
Uint8
[]
>
(
lengthField
+
1
);
...
OFdelete
(
pS
);
OFdelete_array
(
value
);
(1-1/1)
Loading...