#include "effetti.h" #include "reffetti.h" #include "cession.h" #include "ef0301.h" TDistinta::TDistinta(const TRectype& rec) { read(rec); } TDistinta::TDistinta(const char tipo, const long numero) { read(tipo,numero); } int TDistinta::read(const char tipo, const long numero) { int err = NOERR; CHECK(tipo!='\0' && numero>0,"Can't read distinta from NULL elements"); for (int i=0; err == NOERR ; i++) { TEffetto* effetto = new TEffetto; err = effetto->read(tipo, numero, i+1); if (err == NOERR) _righe_dist.add(effetto); } if ((_righe_dist.items()>0)||(err == _iseof)) err = NOERR; return err; } int TDistinta::read(const TRectype& rec) { CHECK(rec.num() == LF_EFFETTI,"Can't read distinta from a different record type"); const char tipo = rec.get_char(EFF_TIPODIST); const long numero = rec.get_long(EFF_NDIST); return read(tipo,numero); } int TDistinta::write(bool force, TToken_string* dati_dist) { int err = NOERR; const int elem = items(); for (int i=0; irestart(); effetto.put("TIPODIST", dati_dist->get()); effetto.put("NDIST", dati_dist->get_long()); effetto.put("DATADIST", dati_dist->get()); effetto.put("CODABIP", dati_dist->get_long()); effetto.put("CODCABP", dati_dist->get_long()); effetto.put("NRIGADIST", i+1); err = effetto.rewrite(); } return err; } int TDistinta::remove(char tipodist, long ndist) { int err= NOERR; err = reset() == NOERR; //rimuovo dal file effetti TLocalisamfile eff(LF_EFFETTI); eff.put("TIPODIST",tipodist); eff.put("NDIST",ndist); eff.read(_isgteq); char t = eff.get_char("TIPODIST"); long n = eff.get_long("NDIST"); while ((t==tipodist)&&(n==ndist)) { eff.zero("TIPODIST"); eff.zero("NDIST"); eff.zero("DATADIST"); eff.zero("NRIGADIST"); eff.zero("CODABIP"); eff.zero("CODCABP"); eff.rewrite(); eff.next(); t = eff.get_char("TIPODIST"); n = eff.get_long("NDIST"); } return err; }