void HSSObjectDefinition::apply()
{
    unsigned i,size;
    for (i=0, size=this->propertiesSize(); i<size; i++) {
        HSSPropertyDefinition::p theProperty = this->properties[i];
        this->prototype->setPropertyWithName(theProperty->getName(), theProperty->getValue());
    }
}
void HSSObjectDefinition::propertiesPrepend(const HSSPropertyDefinition::p &newProperty)
{
    if(newProperty)
    {
        std_log3("HSSObjectDefinition: Prepended node of type " << newProperty->toString());
        newProperty->setParentNode(this->shared_from_this());
        this->properties.push_front(newProperty);
    }
}
void HSSObjectDefinition::propertiesAdd(HSSPropertyDefinition::p &newProperty)
{
    if(newProperty)
    {
        std_log3("HSSObjectDefinition: Added node of type " << newProperty->toString());
        newProperty->setParentNode(this->shared_from_this());
        this->properties.push_back(newProperty);
    }
}
void HSSObjectDefinition::propertiesAdd(const HSSPropertyDefinition::p &newProperty)
{
    if(newProperty)
    {
        std_log3("HSSObjectDefinition: Added node of type " << newProperty->toString());
        newProperty->setParentNode(this->shared_from_this());
        this->properties.push_back(newProperty);
        //this->prototype->setPropertyWithName(newProperty->getName(), newProperty->getValue());
    }
}
void HSSRule::propertiesAdd(HSSPropertyDefinition::p & newProperty)
{
    if(newProperty)
    {
        std_log3("Added property: " << newProperty->toString());
        this->properties.push_back(newProperty);
    }
}
HSSClonable::p HSSPropertyDefinition::cloneImpl() const
{
    HSSPropertyDefinition::p clone = HSSPropertyDefinition::p(new HSSPropertyDefinition(*this));
    clone->setValue(this->value->clone());
    return clone;
}