erlang各种有用的函数包括一些有用nif封装,还有一些性能测试case。
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 
 

71 líneas
1.3 KiB

#include "erl_nif.h"
class ErlTerm {
public:
ERL_NIF_TERM t;
static void *operator new(size_t size) {
return enif_alloc(size);
}
static void operator delete(void *block) {
enif_free(block);
}
bool operator< (const ErlTerm &term) {
if (enif_compare(t, term.t) < 0)
return true;
return false;
}
bool operator< (ErlTerm &term) {
if (enif_compare(t, term.t) < 0)
return true;
return false;
}
bool operator> (const ErlTerm &term) {
if (enif_compare(t, term.t) > 0)
return true;
return false;
}
bool operator> (ErlTerm &term) {
if (enif_compare(t, term.t) > 0)
return true;
return false;
}
bool operator== (const ErlTerm &term) {
if (enif_compare(t, term.t) == 0)
return true;
return false;
}
bool operator== (ErlTerm &term) {
if (enif_compare(t, term.t) == 0)
return true;
return false;
}
};
inline bool operator < (const ErlTerm &a, const ErlTerm &b) {
if (enif_compare(a.t, b.t) < 0)
return true;
return false;
}
#if 0
// extend std::hash to understand ErlTerm used by hashmap not btree
namespace std {
template <>
struct hash<ErlTerm>
{
size_t operator()(const ErlTerm& term) const
{
return (size_t) enif_hash_term(term.t);
}
};
}
#endif