*::: ClassAd::Insert(const char*) *DONE* *::: ClassAd::Insert(const char*,ExprTree*) *DONE* *::: ClassAd::Lookup() *DONE* -*::: ClassAd::put() -*::: ClassAd::initFromStream() +*::: ClassAd::put() *Theoretically code complete, needs testing.* +*::: ClassAd::initFromStream() *Theoretically code complete, needs testing.* *::: ClassAd::AssignExpr() *DONE* *::: ClassAd::clear() *DONE* -*::: ClassAd::EvalString(const char*, const class AttrList*, char**) -*::: ClassAd::EvalString(const char*, const class AttrList*, MyString&) +*::: ClassAd::EvalString(const char*, const class AttrList*, char**) *DONE* +*::: ClassAd::EvalString(const char*, const class AttrList*, MyString&) *DONE* *::: ClassAd::NextNameOriginal() *DONE* *::: ClassAd::ResetName() *DONE* *:: Block {quote:#2} *[4 days]*: -*::: ClassAd::sPrintExpr() +*::: ClassAd::sPrintExpr() *DONE* *::: ClassAd::NextExpr() *DONE* *::: ClassAd::NextDirtyExpr() *DONE* -*::: ClassAd::SetDirtyFlag() *DONE* -*::: ClassAd::GetDirtyFlag() *DONE* +*::: ClassAd::SetDirtyFlag() *DONE, needs callsite changes* +*::: ClassAd::GetDirtyFlag() *DONE, needs callsite changes* *::: ClassAd::ClearAllDirtyFlags() *DONE* -*::: ClassAd::GetReferences() -*::: ClassAd::ChainCollapse() -*::: ClassAd::EscapeStringValue() -*::: ClassAd::CopyAttribute() *DONE* -*::: ClassAd::fPrintAsXML() -*::: ClassAd::sPrintAsXML() -*::: ClassAd::IsValidAttrValue() +*::: ClassAd::GetReferences() *INCOMPLETE* +*::: ClassAd::ChainCollapse() *DONE* +*::: ClassAd::EscapeStringValue() *DONE, needs callsite changes* +*::: ClassAd::CopyAttribute() *DONE, needs callsite changes* +*::: ClassAd::fPrintAsXML() *DONE* +*::: ClassAd::sPrintAsXML() *DONE* +*::: ClassAd::IsValidAttrValue() *DONE* *::: ExprTree::DeepCopy() *DONE* *: Write helper functions for these methods which we can't emulate transparently *[4 hours]*: *:: ExprTree::PrintToNewStr() *DONE* *:: ExprTree::PrintToStr() *DONE* -*:: ExprTree::EvalTree() +*:: ExprTree::EvalTree() *DONE, needs callsite changes* *: 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*