//
// aegis - project change supervisor
// Copyright (C) 2004-2008 Peter Miller
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see
// .
//
#include
#include // for assert
#include
#include
#include
#include
change_functor_attribute_list::~change_functor_attribute_list()
{
alp = 0;
}
change_functor_attribute_list::change_functor_attribute_list(
bool arg1, attributes_list_ty *arg2) :
change_functor(arg1),
alp(arg2)
{
assert(alp);
}
void
change_functor_attribute_list::remember(string_ty *s)
{
attributes_list_append_unique(alp, ORIGINAL_UUID, s);
}
void
change_functor_attribute_list::operator()(change::pointer cp)
{
cstate_ty *cstate_data = cp->cstate_get();
if (cstate_data->uuid)
remember(cstate_data->uuid);
if (cstate_data->uuid)
{
assert(universal_unique_identifier_valid(cstate_data->uuid));
remember(cstate_data->uuid);
}
if (!cstate_data->attribute)
return;
for (size_t j = 0; j < cstate_data->attribute->length; ++j)
{
attributes_ty *ap = cstate_data->attribute->list[j];
assert(ap->name);
assert(ap->value);
if
(
ap->name
&&
0 == strcasecmp(ORIGINAL_UUID, ap->name->str_text)
&&
ap->value
&&
// users can edit, we will check
universal_unique_identifier_valid(ap->value)
)
{
remember(ap->value);
}
}
}