DU5
Re: du5
po hrabani sa v tom nejakom cpp zdrojaku dutables alebo tak nejak som nasiel, ze record_type->find(idx) vola na std::vector<...> funkciu find_if_(beginiterator,enditerator,...) a ten v pripade neuspechu vrati enditerator, pricom ak tomu dobre rozumiem, tak aj na record_type je metoda end() ktora zrejme vracia to iste.
Takze staci porovnat vystup find(idx) a mojRecord->end() a vieme ci mame dobry alebo zly iterator
Takze staci porovnat vystup find(idx) a mojRecord->end() a vieme ci mame dobry alebo zly iterator
-
- Matfyz(ák|ačka) level II
- Příspěvky: 85
- Registrován: 12. 5. 2007 15:58
- Typ studia: Informatika Mgr.
- Login do SIS: dolej5am
- Kontaktovat uživatele:
Re: du5
no, ale ty dva iteratory jsou ruznyho typu. Zkousel jsem porovnavat offsety, ale to mi hnedka zahlasilo chybu, ze jsem pristoupil k neplatnymu prvku. Tak ted nevim teda...
Jinak par veci predtim jsem uz nejak "vyresil"
ad 1. symbol pointer existuje pouze pro cely recordy. Osobne si nechavam sp jen z prvniho recordu po ceste, abych pak urcil, jestli je to globalni, nebo lokalni a jeste myslim kvuli necemu to bylo potreba...
ad 2. ad 1
ad 3. ad 1
ad 4. no tu adresu polozky pomoci sp->access_XXX_variable()->address(); a potom na tp stejny polozky volam ten offset, jen to sectu.
ad 5 na to jsem jeste neprisel, myslim, ze offset hledam podle access_variable a funguje to...
ad 6. Proste zkopiruju ten tp toho recordu dole ve "faktoru", zadnej ctx->tab->logical_XXX() a porovnavam to nahore podle toho identical_type (tp1, tp2) jak bylo receny vyse
Jinak par veci predtim jsem uz nejak "vyresil"
ad 1. symbol pointer existuje pouze pro cely recordy. Osobne si nechavam sp jen z prvniho recordu po ceste, abych pak urcil, jestli je to globalni, nebo lokalni a jeste myslim kvuli necemu to bylo potreba...
ad 2. ad 1
ad 3. ad 1
ad 4. no tu adresu polozky pomoci sp->access_XXX_variable()->address(); a potom na tp stejny polozky volam ten offset, jen to sectu.
ad 5 na to jsem jeste neprisel, myslim, ze offset hledam podle access_variable a funguje to...
ad 6. Proste zkopiruju ten tp toho recordu dole ve "faktoru", zadnej ctx->tab->logical_XXX() a porovnavam to nahore podle toho identical_type (tp1, tp2) jak bylo receny vyse
-
- Matfyz(ák|ačka) level I
- Příspěvky: 40
- Registrován: 14. 6. 2005 14:50
- Typ studia: Informatika Bc.
- Bydliště: Troja
Re: du5
Jochanan myslim narazal na chybu, ktora je o uroven vyssie v dutabled.cpp:atombomb píše:po hrabani sa v tom nejakom cpp zdrojaku dutables alebo tak nejak som nasiel, ze record_type->find(idx) vola na std::vector<...> funkciu find_if_(beginiterator,enditerator,...) a ten v pripade neuspechu vrati enditerator, pricom ak tomu dobre rozumiem, tak aj na record_type je metoda end() ktora zrejme vracia to iste.
Takze staci porovnat vystup find(idx) a mojRecord->end() a vieme ci mame dobry alebo zly iterator
Kód: Vybrat vše
93: field_pointer type_entry::record_find_( ls_id_index idx) const
94: {
95: return field_pointer( & * fldlist->find( idx));
95: }
Kód: Vybrat vše
field_pointer type_entry::record_find_( ls_id_index idx) const
{
field_vector::iterator field = fldlist->find( idx);
if(fldlist->end() == field)
return field_pointer();
else
return field_pointer( & *field);
}
Re: DU5
ano ano, ked som to nakodil tak som zistil to iste, pardon teda. chcel som napisat opravu skorej, ale mi vypadol internet a ide az teraz...
kazdopadne riesenie je, ze symbol_pointer ma pretazeny operator ! (not) takze staci pouzit ten, nieco na styl:
kazdopadne riesenie je, ze symbol_pointer ma pretazeny operator ! (not) takze staci pouzit ten, nieco na styl:
Kód: Vybrat vše
symbol_pointer sp = record_ptr->find(indexPolozky)
if(!sp) return 'errrrr';
Re: DU5
no kdyz je chyba v dutables, tak to neni treba resit ...prijde mi ze tento rok ty prekladace, v porovnani s lonskem, ulita trochu flaka.atombomb píše:a sakra, je to tak... tak sory ze otravujem vzduch
to je zle, pokial to nechcem prechadzat rucne, tak sa musim hrabat v dutables.cpp tym padom asi...?
- hippies
- Admin(ka) level I
- Příspěvky: 990
- Registrován: 29. 9. 2004 12:46
- Typ studia: Informatika Mgr.
- Login do SIS: procj4am
- Bydliště: Mladá Boleslav
- Kontaktovat uživatele:
Re: DU5
tak to bych netvrdil
Chjo, dovede te si představit svět, kde by byla každá harmonická diferenciální forma (jistého typu) nesingulární projektivní algebraické variety racionální kombinací kohomologických tříd algebraických cyklů..
- Che
- Donátor
- Příspěvky: 166
- Registrován: 2. 6. 2005 12:29
- Typ studia: Informatika Mgr.
- Login do SIS: przyc4am
- Bydliště: EU
- Kontaktovat uživatele:
DU5 - update
Včera se objevil update DÚ5 - má řešit některé problémy s RECORDy, třeba zde řešené chybné chování metody record_type::find().
shoot that shit
- Necroman
- Supermatfyz(ák|ačka)
- Příspěvky: 459
- Registrován: 20. 1. 2005 19:46
- Typ studia: Informatika Mgr.
- Login do SIS: suchm4am
- Bydliště: Louny / kolej Jednota, Praha
- Kontaktovat uživatele:
Re: DU5
Objevil se dalsi update DU 5. opravuje testy a reseni. Stahujte
http://ulita.ms.mff.cuni.cz/pub/predn/P ... index.html
http://ulita.ms.mff.cuni.cz/pub/predn/P ... index.html
WANTED:
Dead or Alive
^-^
( ^ )
Schroedinger's Cat
Dead or Alive
^-^
( ^ )
Schroedinger's Cat
Re: DU5
Poradil byste mi prosim nekdo s timhle:
priklad s recordy:
a.b.c
jak ziskam type_pointer na tu posledni polozku, find pres to prvni 'a' mi to nenajde a to druhe 'b' mi hlasi, ze neni SKIND_LOCAL_VARIABLE ani SKIND_GLOBAL_VARIABLE
tak ze nemohu udelat find pres to druhe 'b'
symbol_pointer sp = ctx->tab->find_symbol($1);
tp = sp->access_local_variable()->type();
tp->access_record()->find($3)
priklad s recordy:
a.b.c
jak ziskam type_pointer na tu posledni polozku, find pres to prvni 'a' mi to nenajde a to druhe 'b' mi hlasi, ze neni SKIND_LOCAL_VARIABLE ani SKIND_GLOBAL_VARIABLE
tak ze nemohu udelat find pres to druhe 'b'
symbol_pointer sp = ctx->tab->find_symbol($1);
tp = sp->access_local_variable()->type();
tp->access_record()->find($3)
- Che
- Donátor
- Příspěvky: 166
- Registrován: 2. 6. 2005 12:29
- Typ studia: Informatika Mgr.
- Login do SIS: przyc4am
- Bydliště: EU
- Kontaktovat uživatele:
Re: DU5
Pokud a.b.c <=> DUTOK_IDENTIFIER DUTOK_DOT DUTOK_IDENTIFIER DUTOK_DOT DUTOK_IDENTIFIER, pak:dargor píše:Poradil byste mi prosim nekdo s timhle:
priklad s recordy:
a.b.c
jak ziskam type_pointer na tu posledni polozku, find pres to prvni 'a' mi to nenajde a to druhe 'b' mi hlasi, ze neni SKIND_LOCAL_VARIABLE ani SKIND_GLOBAL_VARIABLE
tak ze nemohu udelat find pres to druhe 'b'
symbol_pointer sp = ctx->tab->find_symbol($1);
tp = sp->access_local_variable()->type();
tp->access_record()->find($3)
Kód: Vybrat vše
symbol_pointer sp = ctx->tab->find_symbol($1);
// Zde by měla být kontrola zda $1 odpovídá nějakému identifikátoru a pokud ano, zda je to proměnná typu record.
record_pointer rp = sp->access_variable()->type()->access_record();
field_pointer fp = rp->find($3);
if ( !fp ) {
error(DUERR_NOTFIELD, @3, *$3);
break;
}
// Zde by opět mělo být ověření, že položka $3 je typu record.
rp = fp->type()->access_record();
fp = rp->find($5);
// A výsledný type_pointer na poslední položku je:
type_pointer tp = fp->type();
shoot that shit
- Necroman
- Supermatfyz(ák|ačka)
- Příspěvky: 459
- Registrován: 20. 1. 2005 19:46
- Typ studia: Informatika Mgr.
- Login do SIS: suchm4am
- Bydliště: Louny / kolej Jednota, Praha
- Kontaktovat uživatele:
Re: DU5
type_pointer na prvni record jedargor píše:Poradil byste mi prosim nekdo s timhle:
priklad s recordy:
a.b.c
jak ziskam type_pointer na tu posledni polozku, find pres to prvni 'a' mi to nenajde a to druhe 'b' mi hlasi, ze neni SKIND_LOCAL_VARIABLE ani SKIND_GLOBAL_VARIABLE
tak ze nemohu udelat find pres to druhe 'b'
symbol_pointer sp = ctx->tab->find_symbol($1);
tp = sp->access_local_variable()->type();
tp->access_record()->find($3)
tp1 = ctx->tab->find_symbol($1)->access_variable()->type();
do polozky rekordu se dostanes
tp2 = tp1->access_record()->find(S3)->type();
a tak dal...
tp3 = tp2->access_record()->find(S5)->type();
pak se jeste hodi funkce
off = tp1->access_record()->find(S3)->offset();
pro offset v danem rekordu. Nezapominat, ze je treba scitat offset za celu cestu, offset() vraci jen v ramci jedhoho recordu
WANTED:
Dead or Alive
^-^
( ^ )
Schroedinger's Cat
Dead or Alive
^-^
( ^ )
Schroedinger's Cat
Re: DU5
dik funguje, jeste by mne zajimalo jakou funkci pouzivate pro kontrolu skutecnych parametru s formalnimi, tzv. jaka funkce vam prozradi, jake parametry volana funkce ocekava, je to tato?
sp->access_function()->parameters()
nebo pouzivate nejakou jinou ?
sp->access_function()->parameters()
nebo pouzivate nejakou jinou ?
-
- Matfyz(ák|ačka) level II
- Příspěvky: 85
- Registrován: 12. 5. 2007 15:58
- Typ studia: Informatika Mgr.
- Login do SIS: dolej5am
- Kontaktovat uživatele:
Re: DU5
Presne tahle, dostanes iterator s parametrama a pak jeden po druhym kontroluješ...dargor píše:dik funguje, jeste by mne zajimalo jakou funkci pouzivate pro kontrolu skutecnych parametru s formalnimi, tzv. jaka funkce vam prozradi, jake parametry volana funkce ocekava, je to tato?
sp->access_function()->parameters()
nebo pouzivate nejakou jinou ?