*::: ClassAd::sPrintExpr() *DONE* *::: ClassAd::NextExpr() *DONE* *::: ClassAd::NextDirtyExpr() *DONE* -*::: ClassAd::SetDirtyFlag() *DONE, needs callsite changes* -*::: ClassAd::GetDirtyFlag() *DONE, needs callsite changes* +*::: ClassAd::SetDirtyFlag() *DONE* +*::: ClassAd::GetDirtyFlag() *DONE* *::: ClassAd::ClearAllDirtyFlags() *DONE* *::: ClassAd::GetReferences() *INCOMPLETE* *::: ClassAd::ChainCollapse() *DONE* *::: ClassAd::EscapeStringValue() *DONE, will need callsite changes* -*::: ClassAd::CopyAttribute() *DONE, needs callsite changes* +*::: ClassAd::CopyAttribute() *DONE* *::: ClassAd::fPrintAsXML() *DONE* *::: ClassAd::sPrintAsXML() *DONE* *::: ClassAd::IsValidAttrValue() *DONE* @@ -43,7 +43,7 @@ *: Write helper functions for these methods which we can't emulate transparently *[4 hours]*: *:: ExprTree::PrintToNewStr() *DONE* *:: ExprTree::PrintToStr() *DONE* -*:: ExprTree::EvalTree() *DONE, needs callsite changes* +*:: ExprTree::EvalTree() *DONE* *: Write compatibility versions of these free-standing functions that are part of old {quote:ClassAds}: *:: int Parse(const char*s, MyString&name, ExprTree*&tree, int*pos = NULL) *DONE* @@ -69,7 +69,7 @@ *: Arrange header and make files so that switching between old and new {quote:ClassAds} can be done with the flip of a switch. *[1 day]*. -*: Fix up the one or two callsites in matchmaker.cpp that move an ad from one {quote:ClassAdList} to another *[4 hours]*. +*: Fix up the one or two callsites in matchmaker.cpp that move an ad from one {quote:ClassAdList} to another *DONE*. *: The following methods will need some fixing at the callsites *[5 days]*: *:: ExprTree::RArg() *DONE*