Skip to main content

Schematic_to_Buffer

Usage

psim.Schematic_to_Buffer();

Python Help

py.help(psim.Schematic_to_Buffer)

Python def

def Schematic_to_Buffer(self, SchematicFilePath):
if not self.IsValid():
print("PSIM object was not loaded.")
return 0;

# int Schematic_to_Buffer(const wchar_t* szFilePath, const void** out_buf, size_t* out_len, char * szErrorBuffer)
Sch_to_buf = getattr(self.psimHandle, "Schematic_to_Buffer")
if not Sch_to_buf:
raise AttributeError(self.VersionErrorMessage)

Sch_to_buf.argtypes = [ctypes.c_wchar_p, ctypes.POINTER(ctypes.c_void_p), ctypes.POINTER(ctypes.c_size_t)]
Sch_to_buf.restype = ctypes.c_int

out_ptr = ctypes.c_void_p()
out_len = ctypes.c_size_t()
res = Sch_to_buf(ctypes.c_wchar_p(SchematicFilePath), ctypes.byref(out_ptr), ctypes.byref(out_len))
if res != 1:
raise AttributeError(f"Schematic_to_Buffer failed: {res}")

buf_t = (ctypes.c_ubyte * out_len.value).from_address(out_ptr.value)
br = ByteReader(buf_t)

sub_new = PSIM_Sub();
sub_new.ReadFromBuffer(br)

# void Free_SchematicBuffer(const void* out_buf)
free_buf = getattr(self.psimHandle, "Free_SchematicBuffer")
if free_buf:
free_buf.argtypes = [ctypes.c_void_p]
free_buf.restype = None
free_buf(out_ptr) # free buffer returned from psim2.dll

return sub_new