polygon_step.hpp 658 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #ifndef POLYGON_STEP_HPP
  2. #define POLYGON_STEP_HPP
  3. #include "config.hpp"
  4. struct Step{
  5. size_t histo[max_len+1];
  6. size_t t,oldh,newh;
  7. Step(size_t t,size_t oldh,size_t newh,size_t n);
  8. Step(Step* s,size_t newh,size_t n);
  9. size_t num() const;
  10. };
  11. inline
  12. Step::Step(Step* s,size_t _newh,size_t n){
  13. memcpy(histo,s->histo,(1+s->t)*sizeof(size_t));
  14. t=s->t+1;
  15. histo[t]=n;
  16. oldh=s->newh;
  17. //cout<<"Step histo : "<<histo[0]<<endl;
  18. newh=_newh;
  19. }
  20. inline
  21. Step::Step(size_t _t,size_t _oldh,size_t _newh,size_t n){
  22. t=_t;oldh=_oldh;newh=_newh;
  23. histo[0]=0;
  24. histo[1]=0;
  25. histo[_t]=1;
  26. }
  27. inline size_t
  28. Step::num() const{
  29. return histo[t];
  30. }
  31. #endif