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

github.com/moses-smt/mgiza.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mgizapp/src/Array4.h')
-rw-r--r--mgizapp/src/Array4.h77
1 files changed, 35 insertions, 42 deletions
diff --git a/mgizapp/src/Array4.h b/mgizapp/src/Array4.h
index 4e57a2e..c182a11 100644
--- a/mgizapp/src/Array4.h
+++ b/mgizapp/src/Array4.h
@@ -9,14 +9,14 @@ modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
-This program is distributed in the hope that it will be useful,
+This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA.
*/
@@ -26,53 +26,46 @@ USA.
#include "Array2.h"
template<class T> class Array4
{
- private:
+private:
Array2< Array2<T>* > A;
int M;
T init;
- public:
+public:
Array4(int m,const T&_init)
: A(m,m,0),M(m),init(_init) {}
- ~Array4()
- {
- for(int l=0;l<M;++l)
- for(int m=0;m<M;++m)
- delete A(l,m);
- }
- const T&operator()(int i, int j, int l, int m)const
- {
- if( A(l,m)==0 )
- return init;
- else
- return (*A(l,m))(i,j);
- }
- const T&get(int i, int j, int l, int m)const
- {
- if( A(l,m)==0 )
- return init;
- else
- return (*A(l,m))(i,j);
- }
- T&operator()(int i, int j, int l, int m)
- {
- if( A(l,m)==0 )
- {
- A(l,m)=new Array2<T>(max(l+1,m+1),max(l+1,m+1),init);
- }
+ ~Array4() {
+ for(int l=0; l<M; ++l)
+ for(int m=0; m<M; ++m)
+ delete A(l,m);
+ }
+ const T&operator()(int i, int j, int l, int m)const {
+ if( A(l,m)==0 )
+ return init;
+ else
return (*A(l,m))(i,j);
+ }
+ const T&get(int i, int j, int l, int m)const {
+ if( A(l,m)==0 )
+ return init;
+ else
+ return (*A(l,m))(i,j);
+ }
+ T&operator()(int i, int j, int l, int m) {
+ if( A(l,m)==0 ) {
+ A(l,m)=new Array2<T>(max(l+1,m+1),max(l+1,m+1),init);
}
- void clear()
- {
- for(int l=0;l<M;++l)
- for(int m=0;m<M;++m)
- if( A(l,m) )
- {
- Array2<T>&a=*A(l,m);
- for(int i=0;i<=l;++i)
- for(int j=0;j<=m;++j)
- a(i,j)=0.0;
- }
- }
+ return (*A(l,m))(i,j);
+ }
+ void clear() {
+ for(int l=0; l<M; ++l)
+ for(int m=0; m<M; ++m)
+ if( A(l,m) ) {
+ Array2<T>&a=*A(l,m);
+ for(int i=0; i<=l; ++i)
+ for(int j=0; j<=m; ++j)
+ a(i,j)=0.0;
+ }
+ }
};
#endif