1
Fork 0

Aesthetics, compile on mac with gcc44.

This commit is contained in:
Davi Reis 2011-12-09 23:57:37 -02:00
parent 91dc5d95d5
commit 3ba778f671
2 changed files with 13 additions and 8 deletions

View File

@ -44,6 +44,7 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
ac_save_CXXFLAGS="$CXXFLAGS" ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -std=c++0x" CXXFLAGS="$CXXFLAGS -std=c++0x"
AC_TRY_COMPILE([ AC_TRY_COMPILE([
#include <unordered_map>
template <typename T> template <typename T>
struct check struct check
{ {
@ -66,6 +67,7 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
ac_save_CXXFLAGS="$CXXFLAGS" ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -std=gnu++0x" CXXFLAGS="$CXXFLAGS -std=gnu++0x"
AC_TRY_COMPILE([ AC_TRY_COMPILE([
#include <unordered_map>
template <typename T> template <typename T>
struct check struct check
{ {

View File

@ -17,7 +17,10 @@
namespace cxxmph { namespace cxxmph {
using std::pair;
using std::make_pair;
using std::unordered_map; using std::unordered_map;
using std::vector;
// Save on repetitive typing. // Save on repetitive typing.
#define MPH_MAP_TMPL_SPEC template <class Key, class Data, class HashFcn, class EqualKey, class Alloc> #define MPH_MAP_TMPL_SPEC template <class Key, class Data, class HashFcn, class EqualKey, class Alloc>
@ -29,7 +32,7 @@ class mph_map {
public: public:
typedef Key key_type; typedef Key key_type;
typedef Data data_type; typedef Data data_type;
typedef std::pair<Key, Data> value_type; typedef pair<Key, Data> value_type;
typedef HashFcn hasher; typedef HashFcn hasher;
typedef EqualKey key_equal; typedef EqualKey key_equal;
@ -44,7 +47,7 @@ class mph_map {
// For making macros simpler. // For making macros simpler.
typedef void void_type; typedef void void_type;
typedef bool bool_type; typedef bool bool_type;
typedef std::pair<iterator, bool> insert_return_type; typedef pair<iterator, bool> insert_return_type;
mph_map(); mph_map();
~mph_map(); ~mph_map();
@ -58,10 +61,10 @@ class mph_map {
void clear(); void clear();
void erase(iterator pos); void erase(iterator pos);
void erase(const key_type& k); void erase(const key_type& k);
std::pair<iterator, bool> insert(const value_type& x); pair<iterator, bool> insert(const value_type& x);
iterator find(const key_type& k); iterator find(const key_type& k);
const_iterator find(const key_type& k) const; const_iterator find(const key_type& k) const;
typedef int32_t my_int32_t; typedef int32_t my_int32_t; // help macros
int32_t index(const key_type& k) const; int32_t index(const key_type& k) const;
data_type& operator[](const key_type &k); data_type& operator[](const key_type &k);
const data_type& operator[](const key_type &k) const; const data_type& operator[](const key_type &k) const;
@ -109,15 +112,15 @@ MPH_MAP_TMPL_SPEC MPH_MAP_CLASS_SPEC::~mph_map() {
MPH_MAP_METHOD_DECL(insert_return_type, insert)(const value_type& x) { MPH_MAP_METHOD_DECL(insert_return_type, insert)(const value_type& x) {
iterator it = find(x.first); iterator it = find(x.first);
if (it != end()) return std::make_pair(it, false); if (it != end()) return make_pair(it, false);
values_.push_back(x); values_.push_back(x);
slack_.insert(std::make_pair(x.first, values_.size() - 1)); slack_.insert(make_pair(x.first, values_.size() - 1));
if (slack_.size() == index_.size() || if (slack_.size() == index_.size() ||
(slack_.size() >= 256 && index_.size() == 0)) { (slack_.size() >= 256 && index_.size() == 0)) {
pack(); pack();
} }
it = find(x.first); it = find(x.first);
return std::make_pair(it, true); return make_pair(it, true);
} }
MPH_MAP_METHOD_DECL(void_type, pack)() { MPH_MAP_METHOD_DECL(void_type, pack)() {
@ -189,7 +192,7 @@ MPH_MAP_METHOD_DECL(my_int32_t, index)(const key_type& k) const {
} }
MPH_MAP_METHOD_DECL(data_type&, operator[])(const key_type& k) { MPH_MAP_METHOD_DECL(data_type&, operator[])(const key_type& k) {
return insert(std::make_pair(k, data_type())).first->second; return insert(make_pair(k, data_type())).first->second;
} }
} // namespace cxxmph } // namespace cxxmph