mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-23 09:05:32 +00:00
Revert "Merge upstream"
This reverts commitc58a50f880
, reversing changes made toa1c3c98773
.
This commit is contained in:
parent
c58a50f880
commit
e73d51dbf0
15 changed files with 49 additions and 110 deletions
|
@ -11,29 +11,6 @@ yosys_ver = "0.48"
|
|||
# select HTML theme
|
||||
html_theme = 'furo-ys'
|
||||
html_css_files = ['custom.css']
|
||||
html_theme_options: dict[str] = {
|
||||
"source_repository": "https://github.com/YosysHQ/yosys/",
|
||||
"source_branch": "main",
|
||||
"source_directory": "docs/source/",
|
||||
}
|
||||
|
||||
# try to fix the readthedocs detection
|
||||
html_context: dict[str] = {
|
||||
"READTHEDOCS": True,
|
||||
"display_github": True,
|
||||
"github_user": "YosysHQ",
|
||||
"github_repo": "yosys",
|
||||
"slug": "yosys",
|
||||
}
|
||||
|
||||
# override source_branch if not main
|
||||
git_slug = os.getenv("READTHEDOCS_VERSION_NAME")
|
||||
if git_slug not in [None, "latest", "stable"]:
|
||||
html_theme_options["source_branch"] = git_slug
|
||||
|
||||
# edit only works on branches, not tags
|
||||
if os.getenv("READTHEDOCS_VERSION_TYPE", "branch") != "branch":
|
||||
html_theme_options["top_of_page_buttons"] = ["view"]
|
||||
|
||||
# These folders are copied to the documentation's HTML output
|
||||
html_static_path = ['_static', "_images"]
|
||||
|
|
|
@ -97,8 +97,8 @@ Making a type hashable
|
|||
|
||||
Let's first take a look at the external interface on a simplified level.
|
||||
Generally, to get the hash for ``T obj``, you would call the utility function
|
||||
``run_hash<T>(const T& obj)``, corresponding to ``hash_ops<T>::hash(obj)``,
|
||||
the default implementation of which uses ``hash_ops<T>::hash_into(Hasher(), obj)``.
|
||||
``run_hash<T>(const T& obj)``, corresponding to ``hash_top_ops<T>::hash(obj)``,
|
||||
the default implementation of which is ``hash_ops<T>::hash_into(Hasher(), obj)``.
|
||||
``Hasher`` is the class actually implementing the hash function, hiding its
|
||||
initialized internal state, and passing it out on ``hash_t yield()`` with
|
||||
perhaps some finalization steps.
|
||||
|
@ -121,14 +121,8 @@ size containers like ``std::vector<U>`` the size of the container is hashed
|
|||
first. That is also how implementing hashing for a custom record data type
|
||||
should be - unless there is strong reason to do otherwise, call ``h.eat(m)`` on
|
||||
the ``Hasher h`` you have received for each member in sequence and ``return
|
||||
h;``.
|
||||
|
||||
The ``hash_ops<T>::hash(obj)`` method is not indended to be called when
|
||||
context of implementing the hashing for a record or other compound type.
|
||||
When writing it, you should connect it to ``hash_ops<T>::hash_into(Hasher h)``
|
||||
as shown below. If you have a strong reason to do so, and you have
|
||||
to create a special implementation for top-level hashing, look at how
|
||||
``hash_ops<RTLIL::SigBit>::hash(...)`` is implemented in ``kernel/rtlil.h``.
|
||||
h;``. If you do have a strong reason to do so, look at how
|
||||
``hash_top_ops<RTLIL::SigBit>`` is implemented in ``kernel/rtlil.h``.
|
||||
|
||||
Porting plugins from the legacy interface
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -154,11 +148,6 @@ based on the existance and value of `YS_HASHING_VERSION`.
|
|||
h.eat(b);
|
||||
return h;
|
||||
}
|
||||
Hasher T::hash() const {
|
||||
Hasher h;
|
||||
h.eat(*this);
|
||||
return h;
|
||||
}
|
||||
#else
|
||||
#error "Unsupported hashing interface"
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue