Source code for claripy.ast.bits

from __future__ import annotations

from typing import cast

from claripy.ast.base import Base
from claripy.errors import ClaripyOperationError


[docs] class Bits(Base): """ A base class for AST types that can be stored as a series of bits. Currently, this is bitvectors and IEEE floats. :ivar length: The length of this value in bits. """ __slots__ = ()
[docs] def make_like(self, op, args, **kwargs): if "length" not in kwargs: kwargs["length"] = self.length return Base.make_like(self, op, args, **kwargs)
[docs] def size(self) -> int: """ :returns: The bit length of this AST """ return cast("int", self.length)
def _type_name(self): return self.__class__.__name__ + str(self.length)
[docs] def raw_to_bv(self): """ Converts this data's bit-pattern to a bitvector. """ raise NotImplementedError
[docs] def raw_to_fp(self): """ Converts this data's bit-pattern to an IEEE float. """ raise NotImplementedError
@staticmethod def _check_replaceability(old, new): if old.size() != new.size(): raise ClaripyOperationError("replacements must have matching sizes") __len__ = size