Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/giza-pp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorredpony <redpony@ca354974-eb3a-0410-8f5c-d3948404989b>2012-04-02 08:48:48 +0400
committerredpony <redpony@ca354974-eb3a-0410-8f5c-d3948404989b>2012-04-02 08:48:48 +0400
commitd923556e8925b837a9e8a662fb969637e862bf97 (patch)
treed5ad746aae325c65d748810ff6bf4a5ed20e0fea
parent135ccb682c6c06549169512507b2648a9ba2a601 (diff)
fix mkcls to use unordered_map
-rw-r--r--mkcls-v2/KategProblemTest.cpp10
-rw-r--r--mkcls-v2/Makefile2
-rw-r--r--mkcls-v2/myleda.h58
-rw-r--r--mkcls-v2/mystl.h44
4 files changed, 28 insertions, 86 deletions
diff --git a/mkcls-v2/KategProblemTest.cpp b/mkcls-v2/KategProblemTest.cpp
index 117a755..df88d18 100644
--- a/mkcls-v2/KategProblemTest.cpp
+++ b/mkcls-v2/KategProblemTest.cpp
@@ -35,7 +35,7 @@ USA.
#include <stdlib.h>
#include <stdio.h>
#include <string>
-#include <strstream>
+#include <sstream>
typedef pair<string,string> PSS;
@@ -304,7 +304,7 @@ KategProblem *fromKModel(const char *str,int maxClass,int initialisierung,
}
if(!f)break;
- istrstream f2(line.c_str());
+ istringstream f2(line);
while( 1 )
{
f2 >> text;
@@ -314,12 +314,6 @@ KategProblem *fromKModel(const char *str,int maxClass,int initialisierung,
f2.clear(ios::failbit);
}
if(!f2){break;}
-
-
-
-
-
-
if( text == "$" )
text = "mkcls-mapped-dollar-symbol-$";
if( !setVokabular.member(text) )setVokabular.insert(text);
diff --git a/mkcls-v2/Makefile b/mkcls-v2/Makefile
index a37a70d..66a86d0 100644
--- a/mkcls-v2/Makefile
+++ b/mkcls-v2/Makefile
@@ -5,7 +5,7 @@ OBJS = GDAOptimization.o HCOptimization.o Problem.o \
KategProblemWBC.o KategProblem.o StatVar.o general.o \
mkcls.o
-CFLAGS = -Wall -W -DNDEBUG -O3 -Wno-deprecated
+CFLAGS = -Wall -W -DNDEBUG -O3 -funroll-loops
.cpp.o:
$(CXX) $(CFLAGS) -c $< -o $@
diff --git a/mkcls-v2/myleda.h b/mkcls-v2/myleda.h
index 6fc936b..81091c9 100644
--- a/mkcls-v2/myleda.h
+++ b/mkcls-v2/myleda.h
@@ -25,15 +25,12 @@ USA.
#ifndef myleda_HEADER_defined
#define myleda_HEADER_defined
-using namespace std;
+#include <map>
+#include <set>
+#include <tr1/unordered_map>
#include "myassert.h"
-
-
-#if defined(USE_LEDA_array)||defined(USE_LEDA)
-#include <LEDA/array.h>
-#else
-
#include "FixedArray.h"
+using namespace std;
template<class T>
class leda_array : public FixedArray<T>
@@ -42,14 +39,7 @@ public:
leda_array() {}
leda_array(int n) : FixedArray<T>(n) {}
};
-#endif
-
-#if defined(USE_LEDA_set)||defined(USE_LEDA)
-#include <LEDA/set.h>
-#define forall_set(a,b,c) forall(b,c)
-#else
-#include <set>
template<class T>
class leda_set : public set<T>
{
@@ -77,15 +67,6 @@ leda_set<T> operator-(const leda_set<T>&a,const leda_set<T>&b)
return c;
}
-#endif
-
-
-#if defined(USE_LEDA_d_array)||defined(USE_LEDA)
-#include <LEDA/d_array.h>
-#define forall_defined_d(a,b,c,d) forall_defined(c,d)
-#define forall_d(a,b,c,d) forall(c,d)
-#else
-#include <map>
template<class A,class B>
class leda_d_array : public map<A,B>
{
@@ -118,22 +99,8 @@ public:
#define forall_defined_d(a,b,c,d) for(typename leda_d_array<a,b>::const_iterator __ii__=(d).begin();__ii__!=(d).end()&&((c=__ii__->first),1) ;++__ii__)
#define forall_d(a,b,c,d) for(typename leda_d_array<a,b>::const_iterator __ii__=(d).begin();__ii__!=(d).end()&&((c=__ii__->second),1);++__ii__)
-#endif
-
-
-#if defined(USE_LEDA_h_array)||defined(USE_LEDA)
-#include <LEDA/h_array.h>
-#define forall_defined_h(a,b,c,d) forall_defined(c,d)
-#define forall_h(a,b,c,d) forall(c,d)
-#else
double used_time();
-#if 0
-
-#include "my_hashmap.h"
-#define leda_h_array my_hashmap
-
-#else
template<class T>
class my_hash
@@ -143,15 +110,8 @@ public:
};
inline int Hash(int value) { return value; }
-#define MY_HASH_BASE hash_map<A,B,my_hash<A> >
+#define MY_HASH_BASE std::tr1::unordered_map<A,B>
-#if __GNUC__>2
-#include <ext/hash_map>
-using __gnu_cxx::hash_map;
-using __gnu_cxx::hash;
-#else
-#include <hash_map>
-#endif
template<class A,class B>
class leda_h_array : public MY_HASH_BASE
{
@@ -177,7 +137,7 @@ public:
typename MY_HASH_BASE::iterator pos=this->find(a);
if( pos==this->end() )
{
- insert(typename MY_HASH_BASE::value_type(a,init));
+ this->insert(typename MY_HASH_BASE::value_type(a,init));
pos=this->find(a);
iassert(pos!=this->end());
}
@@ -189,11 +149,6 @@ public:
#define forall_defined_h2(a,b,c,d) for(leda_h_array<a,b>::const_iterator __jj__=(d).begin();__jj__!=(d).end()&&((c=__jj__->first),1); ++__jj__)
#define forall_h(a,b,c,d) for(typename leda_h_array<a,b>::const_iterator __jjj__=(d).begin();__jjj__!=(d).end()&&((c=__jjj__->second),1);++__jjj__)
-#endif
-
-#endif
-
-
template<class T> int compare(const T&a,const T&b)
{if(a==b)return 0; else if(a<b) return -1; else return 1;}
@@ -274,5 +229,4 @@ bool operator==(const leda_d_array<A,B>&p1,const leda_d_array<A,B>&p2)
-
#endif
diff --git a/mkcls-v2/mystl.h b/mkcls-v2/mystl.h
index bcda88d..0eb311f 100644
--- a/mkcls-v2/mystl.h
+++ b/mkcls-v2/mystl.h
@@ -27,51 +27,45 @@ USA.
#define MY_STL_H_DEFINED
#include <string>
#include <utility>
-#if __GNUC__>2
-#include <ext/hash_map>
-using __gnu_cxx::hash_map;
-using __gnu_cxx::hash;
-#else
-#include <hash_map>
-#endif
+#include <tr1/unordered_map>
#include <cmath>
using namespace std;
-#define over_string(a,i) for(unsigned int i=0;i<a.length();i++)
-
-inline int Hash(const string& s)
-{
- int sum=0;
- string::const_iterator i=s.begin(),end=s.end();
- for(;i!=end;i++)sum=5*sum+(*i);
- return sum;
+namespace std {
+ namespace tr1 {
+ template <typename T, typename V>
+ struct hash<pair<T, V> > {
+ static inline void hash_combine(std::size_t & seed, const T & v) {
+ hash<T> hasher;
+ seed ^= hasher(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
+ }
+
+ size_t operator()(const std::pair<T, V>& x) const {
+ size_t h = 0;
+ hash_combine(h, x.first);
+ hash_combine(h, x.second);
+ return h;
+ }
+ };
+ }
}
-template<class V> int Hash(const pair<V,V>&a)
-{ return Hash(a.first)+4*Hash(a.second); }
+#define over_string(a,i) for(unsigned int i=0;i<a.length();i++)
template<class T1,class T2>
istream& operator>>(istream &in,pair<T1,T2> &ir)
{
char c;
-
do in.get(c); while (in && isspace(c));
-
if (!in) return in;
-
if (c != '(') in.putback(c);
-
in >> ir.first;
-
do in.get(c); while (isspace(c));
if (c != ',') in.putback(c);
-
in >> ir.second;
-
do in.get(c); while (c == ' ');
if (c != ')') in.putback(c);
-
return in;
}