Błąd #1450

wykomentowany kod w match_variants?

Added by Adam Wardyński over 12 years ago. Updated over 12 years ago.

Status:ZamkniętyStart date:26 Apr 2011
Priority:NormalnyDue date:
Assignee:Paweł Kędzia% Done:

100%

Category:-
Target version:-

Description

Nie jestem pewien, o co chodzi, stąd to issue - w regule match_variants jest kod variants->push_back(variant), który jednakowoż jest wykomentowany, więc siłą rzeczy nie działa. Dlaczego zatem jest wykomentowany, czy jest tam coś niedokończone z tymi TODO? Bo tak jak jest, to longest nie parsuje wszystkich sekcji variant tak jak powinien. Na razie zajmuję się czym innym, także nie miałem czasu bliżej się temu przyjrzeć, tylko tak zauważyłem

History

#1 Updated by Paweł Kędzia over 12 years ago

  • Assignee changed from Paweł Kędzia to Adam Wardyński

TODO przy match_variants dotyczy "wkładania" wariantów do wektora wariantów. Zarówno operator OneOf jak i Longest przyjmują w konstruktorze wskaźnik do wektora ConjConditions. Problem polega na tym, że reguła match_condition zwraca u nas wskaźnik do ConjConditions, zatem budowanie wektora obiektów ConjConditions wymusza wyłuskanie z pointera wartości ConjConditions, a przy wkładaniu do wektora tworzona jest kopia (?). To nie byłoby problemem, gdyby nie fakt, że ConjConditions dziedziczy po MatchCondition, MatchCondition po Expression, a Expression po boost::noncopyable. Czy w takim wypadku nie byłoby lepiej aby OneOf oraz Longest w konstruktorze przyjmowały wskaźnik do wektora wskaźników ConjCOnditions?

#2 Updated by Adam Wardyński over 12 years ago

  • Status changed from Nowy to Przypisany
  • Assignee changed from Adam Wardyński to Paweł Kędzia

rozumiem, że chodzi o zamianę std::vector<ConjConditions> na std::vector<boost::shared_ptr<ConjConditions> >

Ma to jak najbardziej sens! Jeśli już masz to zrobione, to śmiało git push =) (Adam R. wspominał, że to zmieniłeś, ale jeśli nie, to przepisz zadanie z powrotem do mnie i się tym zajmę).

Na marginesie, nie jestem pewien, czy w boost czasem nie ma dedykowanej strukturki do trzymania shared_ptr, jest coś jak shared_array chyba? ale nie wiem, czy to to.. Bo użycie czegoś takiego pewnie byłoby ładniejsze niż std::vector do boost::shared_ptr. No, ale to tak na marginesie ew. do zajrzenia później.

#3 Updated by Paweł Kędzia over 12 years ago

  • Status changed from Przypisany to Zamknięty
  • % Done changed from 0 to 100

Skoro tak, to już pushnąłem (fb6645c2d1a9455c9c5686e964beafec60c1b8a0) ;)

Also available in: Atom PDF