|
|
- #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
|