.. index:: code_metrics_utilities
.. _code_metrics_utilities/0:

.. rst-class:: right

**category**

``code_metrics_utilities``
==========================

Internal predicates for analyzing source code.

| **Author:** Ebrahim Azarisooreh
| **Version:** 0.6
| **Date:** 2018/6/8

| **Compilation flags:**
|    ``static``


| **Uses:**
|    :ref:`list <list/0>`

| **Remarks:**


   - *Usage:* This is meant to be imported by any metric added to the system.

   - *Predicate Scope:* This is meant for internal use by metrics only. As such, all provided predicates are private.

.. contents::
   :local:
   :backlinks: top

Public predicates
-----------------

(see entity ancestors)

Protected predicates
--------------------

(see entity ancestors)

Private predicates
------------------

.. raw:: html

   <div id="ancestor/4"> </div>

.. index:: ancestor/4
.. _code_metrics_utilities/0::ancestor/4:

``ancestor/4``
^^^^^^^^^^^^^^

True if ``Entity`` descends from ``Ancestor``, and ``EntityKind`` and ``AncestorKind`` unify with their respective entity types.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``ancestor(EntityKind,Entity,AncestorKind,Ancestor)``
| **Mode and number of proofs:**
|    ``ancestor(?entity,?entity_identifier,?entity,?entity_identifier)`` - ``zero_or_more``


------------

.. raw:: html

   <div id="current_entity/1"> </div>

.. index:: current_entity/1
.. _code_metrics_utilities/0::current_entity/1:

``current_entity/1``
^^^^^^^^^^^^^^^^^^^^

True if ``Entity`` is a currently loaded entity.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``current_entity(Entity)``
| **Mode and number of proofs:**
|    ``current_entity(?entity_identifier)`` - ``zero_or_more``


------------

.. raw:: html

   <div id="declares_predicate/2"> </div>

.. index:: declares_predicate/2
.. _code_metrics_utilities/0::declares_predicate/2:

``declares_predicate/2``
^^^^^^^^^^^^^^^^^^^^^^^^

True if ``Entity`` declares ``Predicate`` internally.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``declares_predicate(Entity,Predicate)``
| **Mode and number of proofs:**
|    ``declares_predicate(?entity_identifier,?predicate_indicator)`` - ``zero_or_more``


------------

.. raw:: html

   <div id="defines_predicate/2"> </div>

.. index:: defines_predicate/2
.. _code_metrics_utilities/0::defines_predicate/2:

``defines_predicate/2``
^^^^^^^^^^^^^^^^^^^^^^^

True if ``Entity`` defines an implementation of ``Predicate`` internally. Auxiliary predicates are excluded from results.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``defines_predicate(Entity,Predicate)``
| **Mode and number of proofs:**
|    ``defines_predicate(?entity_identifier,?predicate_indicator)`` - ``zero_or_more``


------------

.. raw:: html

   <div id="defines_predicate/3"> </div>

.. index:: defines_predicate/3
.. _code_metrics_utilities/0::defines_predicate/3:

``defines_predicate/3``
^^^^^^^^^^^^^^^^^^^^^^^

Same as ``defines_predicate/2``, except ``Property`` is unified with a property of the predicate.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``defines_predicate(Entity,Predicate,Property)``
| **Mode and number of proofs:**
|    ``defines_predicate(?entity_identifier,?predicate_indicator,?term)`` - ``zero_or_more``


------------

.. raw:: html

   <div id="entity_calls/3"> </div>

.. index:: entity_calls/3
.. _code_metrics_utilities/0::entity_calls/3:

``entity_calls/3``
^^^^^^^^^^^^^^^^^^

True if a predicate ``Caller`` within ``Entity`` makes a ``Call``.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``entity_calls(Entity,Caller,Call)``
| **Mode and number of proofs:**
|    ``entity_calls(?entity_identifier,?predicate_indicator,?predicate_indicator)`` - ``zero_or_one``


------------

.. raw:: html

   <div id="entity_kind/2"> </div>

.. index:: entity_kind/2
.. _code_metrics_utilities/0::entity_kind/2:

``entity_kind/2``
^^^^^^^^^^^^^^^^^

True if ``Kind`` defines ``Entity`` and is one of category, protocol, or object.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``entity_kind(Entity,Kind)``
| **Mode and number of proofs:**
|    ``entity_kind(+entity_identifier,-entity)`` - ``zero_or_one``


------------

.. raw:: html

   <div id="entity_property/2"> </div>

.. index:: entity_property/2
.. _code_metrics_utilities/0::entity_property/2:

``entity_property/2``
^^^^^^^^^^^^^^^^^^^^^

True if ``Property`` is a valid property of ``Entity``. Entity can be either a category, a protocol, or an object.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``entity_property(Entity,Property)``
| **Mode and number of proofs:**
|    ``entity_property(+entity_identifier,-term)`` - ``zero_or_more``


------------

.. raw:: html

   <div id="entity_updates/3"> </div>

.. index:: entity_updates/3
.. _code_metrics_utilities/0::entity_updates/3:

``entity_updates/3``
^^^^^^^^^^^^^^^^^^^^

True if a predicate ``Updater`` within ``Entity`` makes a dynamic update to ``Update`` (by e.g. asserta/1, retract/1, etc.)

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``entity_updates(Entity,Updater,Update)``
| **Mode and number of proofs:**
|    ``entity_updates(+entity_identifier,?predicate_indicator,?predicate_indicator)`` - ``zero_or_one``


------------

Operators
---------

(none)

