Source code for angr.angrdb.serializers.comments

# pylint:disable=unused-import
from ..models import DbComment
from ...knowledge_plugins.comments import Comments


[docs]class CommentsSerializer: """ Serialize/unserialize comments to/from a database session. """
[docs] @staticmethod def dump(session, db_kb, comments): """ :param session: :param DbKnowledgeBase db_kb: :param Comments comments: :return: None """ for addr, comment in comments.items(): db_comment = ( session.query(DbComment) .filter_by( kb=db_kb, addr=addr, ) .scalar() ) if db_comment is not None: if comment == db_comment.comment: continue db_comment.comment = comment else: db_comment = DbComment( kb=db_kb, addr=addr, comment=comment, type=0, ) session.add(db_comment)
[docs] @staticmethod def load(session, db_kb, kb): # pylint:disable=unused-argument """ :param session: :param DbKnowledgeBase db_kb: :param KnowledgeBase kb: :return: """ db_comments = db_kb.comments comments = Comments(kb) for db_comment in db_comments: comments[db_comment.addr] = db_comment.comment return comments