# File lib/puppet/type.rb, line 708
708:     def evaluate
709:         if self.provider.is_a?(Puppet::Provider)
710:             unless provider.class.suitable?
711:                 raise Puppet::Error, "Provider %s is not functional on this platform" % provider.class.name
712:             end
713:         end
714: 
715:         # this only operates on properties, not properties + children
716:         # it's important that we call retrieve() on the type instance,
717:         # not directly on the property, because it allows the type to override
718:         # the method, like pfile does
719:         currentvalues = self.retrieve
720: 
721:         changes = propertychanges(currentvalues).flatten
722: 
723:         # now record how many changes we've resulted in
724:         if changes.length > 0
725:             self.debug "%s change(s)" %
726:                 [changes.length]
727:         end
728: 
729:         # If we're in noop mode, we don't want to store the checked time,
730:         # because it will result in the resource not getting scheduled if
731:         # someone were to apply the catalog in non-noop mode.
732:         # We're going to go ahead and record that we checked if there were
733:         # no changes, since it's unlikely it will affect the scheduling.
734:         noop = noop?
735:         if ! noop or (noop && changes.length == 0)
736:             self.cache(:checked, Time.now)
737:         end
738:         return changes.flatten
739:     end