diff --git a/fourindex.cc b/fourindex.cc index 7041c70..3ae0f29 100644 --- a/fourindex.cc +++ b/fourindex.cc @@ -32,6 +32,19 @@ while((unsigned char)i!=terminator&&(unsigned char)j!=terminator&&(unsigned char } } +template <> +void fourindex::fscanf(FILE *ff) +{ +int i,j,k,l; +float elem; +if(5!= ::fscanf(ff,"%f %d %d %d %d",&elem,&i,&j,&k,&l)) laerror("read error in fourindex::fscanf"); +while((unsigned char)i!=terminator&&(unsigned char)j!=terminator&&(unsigned char)k!=terminator&&(unsigned char)l!=terminator) //cast: -1 in the file matches the default terminator + { + add(i,j,k,l,elem); + if(5!= ::fscanf(ff,"%f %d %d %d %d",&elem,&i,&j,&k,&l)) laerror("read error in fourindex::fscanf"); + } +} + template <> void fourindex::fprintf(FILE *f, char *format) const { @@ -44,6 +57,18 @@ while(it!=end) ::fprintf(f,format,0.,(int)terminator,(int)terminator,(int)terminator,(int)terminator); //zero line for terminator 0 (FCIDUMP-like) } +template <> +void fourindex::fprintf(FILE *f, char *format) const +{ +fourindex::iterator it=this->begin(),end=this->end(); +while(it!=end) + { + ::fprintf(f,format,it->elem,it->index.indiv.i,it->index.indiv.j,it->index.indiv.k,it->index.indiv.l); + ++it; + } +::fprintf(f,format,0.,(int)terminator,(int)terminator,(int)terminator,(int)terminator); //zero line for terminator 0 (FCIDUMP-like) +} + /***************************************************************************//** @@ -52,4 +77,7 @@ while(it!=end) template class fourindex; template class fourindex_ext; template class fourindex_dense; +template class fourindex; +template class fourindex_ext; +template class fourindex_dense; }