def s_checksum(block_name, algorithm="crc32", length=0, endian="<", name=None): ''' Create a checksum block bound to the block with the specified name. You *can not* create a checksum for any currently open blocks. @type block_name: String @param block_name: Name of block to apply sizer to @type algorithm: String @param algorithm: (Optional, def=crc32) Checksum algorithm to use. (crc32, adler32, md5, sha1) @type length: Integer @param length: (Optional, def=0) Length of checksum, specify 0 to auto-calculate @type endian: Character @param endian: (Optional, def=LITTLE_ENDIAN) Endianess of the bit field (LITTLE_ENDIAN: <, BIG_ENDIAN: >) @type name: String @param name: Name of this checksum field ''' # you can't add a checksum for a block currently in the stack. if block_name in blocks.CURRENT.block_stack: raise sex.SullyRuntimeError( "CAN N0T ADD A CHECKSUM FOR A BLOCK CURRENTLY IN THE STACK") checksum = blocks.checksum(block_name, blocks.CURRENT, algorithm, length, endian, name) blocks.CURRENT.push(checksum)
def s_checksum (block_name, algorithm="crc32", length=0, endian="<", name=None): ''' Create a checksum block bound to the block with the specified name. You *can not* create a checksum for any currently open blocks. @type block_name: String @param block_name: Name of block to apply sizer to @type algorithm: String @param algorithm: (Optional, def=crc32) Checksum algorithm to use. (crc32, adler32, md5, sha1) @type length: Integer @param length: (Optional, def=0) Length of checksum, specify 0 to auto-calculate @type endian: Character @param endian: (Optional, def=LITTLE_ENDIAN) Endianess of the bit field (LITTLE_ENDIAN: <, BIG_ENDIAN: >) @type name: String @param name: Name of this checksum field ''' # you can't add a checksum for a block currently in the stack. if block_name in blocks.CURRENT.block_stack: raise sex.error("CAN N0T ADD A CHECKSUM FOR A BLOCK CURRENTLY IN THE STACK") checksum = blocks.checksum(block_name, blocks.CURRENT, algorithm, length, endian, name) blocks.CURRENT.push(checksum)