# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause """ Generate license, file header and close tag. Copyright (C) 2022 Intel Corporation Author: Lee, Kah Jing """ import os import struct import doc class Streamer(object): """ Streamer class to generate license, header, and close tag. """ def __init__(self, fileName, mode='r'): """ Streamer initialization """ self.fileName = fileName self.mode = mode self.file = None self.sentinel = None if '+' in mode or 'w' in mode or 'a' in mode: self.fileMode = 'write' else: self.fileMode = 'read' def close(self): """ file close """ if self.file != None: self.file.close() self.file = None def open(self): """ file open """ if self.fileName != None: if self.file == None: if self.fileMode == 'write': print ("Generating file: %s..." % self.fileName) else: print ("Reading file: %s..." % self.fileName) self.file = open(self.fileName, self.mode) def read(self, numBytes): """ file read number of bytes """ if self.file == None: print ("***Error: Attempted to read from unopened file %s" \ % (self.fileName)) exit(-1) else: return self.file.read(numBytes) def readUnsignedInt(self): """ read unsigned integer """ return struct.unpack('I', self.read(4))[0] def readUnsignedShort(self): """ read unsigned short """ return struct.unpack('H', self.read(2))[0] def readBytesAsString(self, numBytes): """ Read some bytes from a binary file and interpret the data values as a String """ bytes = self.read(numBytes) s = bytes.decode('utf-8') return s def write(self, str): """ file write """ if self.file == None: print ("***Error: Attempted to write to unopened file %s" \ % (self.fileName)) exit(-1) else: self.file.write("%s" % str) def writeLicenseHeader(self): """ write license & copyright """ # format the license header licenseHeader = "/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */\n" self.file.write("%s" % licenseHeader) copyrightHeader = "/*\n * Copyright (C) 2022 Intel Corporation \n *\n */\n" self.file.write("%s" % copyrightHeader) def writeSentinelStart(self, sentinel): """ start header """ if sentinel == None: return -1 self.sentinel = sentinel self.file.write("%s\n%s\n\n" % (\ "#ifndef " + self.sentinel, "#define " + self.sentinel)) def writeSentinelEnd(self, sentinel): """ end header """ if sentinel == None: return -1 self.sentinel = sentinel self.file.write("\n%s\n" % ("#endif /* " + self.sentinel + " */"))