Functions.inline.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /******************************************************************************/
  2. template<typename TYPE> bool Sync(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data)
  3. {
  4. if(Sync(time, src_time)){data=src_data; return true;} return false;
  5. }
  6. template<typename TYPE> bool UndoByTime(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data)
  7. {
  8. if(Undo(time, src_time)){data=src_data; return true;} return false;
  9. }
  10. template<typename TYPE> bool SyncByValue(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data)
  11. {
  12. if(data!=src_data){data=src_data; time=src_time; return true;} return false;
  13. }
  14. template<typename TYPE> bool SyncByValueEqual(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data)
  15. {
  16. if(!Equal(data, src_data)){data=src_data; time=src_time; return true;} return false;
  17. }
  18. template<typename TYPE> bool UndoByValue(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data)
  19. {
  20. if(data!=src_data){data=src_data; MAX1(time, src_time); return true;} return false;
  21. }
  22. template<typename TYPE> bool Undo(TimeStamp &time, C TimeStamp &src_time, TYPE &data, C TYPE &src_data) // ByTimeAndValue, make this the default function because there can be a lot of changes in the same second on the local computer
  23. {
  24. return UndoByTime (time, src_time, data, src_data) // first check by time because it's faster
  25. || UndoByValue(time, src_time, data, src_data);
  26. }
  27. bool NegativeSB(flt x) {return FlagTest ((uint&)x, SIGN_BIT);}
  28. void CHSSB(flt &x) { FlagToggle((uint&)x, SIGN_BIT);}
  29. template<typename TYPE > bool Save(File &f, C Memc<TYPE> &m ) { f.putInt(m.elms()); FREPA(m)if(!m[i].save(f ))return false; return f.ok();}
  30. template<typename TYPE, typename USER> bool Save(File &f, C Memc<TYPE> &m, C USER &user) { f.putInt(m.elms()); FREPA(m)if(!m[i].save(f, user))return false; return f.ok();}
  31. template<typename TYPE > bool Save(File &f, C Memx<TYPE> &m ) { f.putInt(m.elms()); FREPA(m)if(!m[i].save(f ))return false; return f.ok();}
  32. template<typename TYPE > bool Load(File &f, Memc<TYPE> &m ) {m.setNum(f.getInt()); FREPA(m)if(!m[i].load(f ))goto error; if(f.ok())return true; error: m.clear(); return false;}
  33. template<typename TYPE, typename USER> bool Load(File &f, Memc<TYPE> &m, C USER &user) {m.setNum(f.getInt()); FREPA(m)if(!m[i].load(f, user))goto error; if(f.ok())return true; error: m.clear(); return false;}
  34. template<typename TYPE > bool Load(File &f, Memx<TYPE> &m ) {m.setNum(f.getInt()); FREPA(m)if(!m[i].load(f ))goto error; if(f.ok())return true; error: m.clear(); return false;}
  35. /******************************************************************************/