34 lines
674 B
Plaintext
34 lines
674 B
Plaintext
// Copyright (C) 2010, Guy Barrand. All rights reserved.
|
|
// See the file tools.license for terms.
|
|
|
|
#ifndef tools_safe_cast
|
|
#define tools_safe_cast
|
|
|
|
namespace tools {
|
|
|
|
template <class FROM,class TO>
|
|
inline TO* cast(FROM& a_o) {
|
|
return (TO*)a_o.cast(TO::s_class());
|
|
}
|
|
|
|
template <class FROM,class TO>
|
|
inline const TO* cast(const FROM& a_o) {
|
|
return (const TO*)a_o.cast(TO::s_class());
|
|
}
|
|
|
|
typedef unsigned short cid; //in typedefs ?
|
|
|
|
template <class FROM,class TO>
|
|
inline TO* id_cast(FROM& a_o) {
|
|
return (TO*)a_o.cast(TO::id_class());
|
|
}
|
|
|
|
template <class FROM,class TO>
|
|
inline const TO* id_cast(const FROM& a_o) {
|
|
return (const TO*)a_o.cast(TO::id_class());
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|