qislibm API

This API group is used primarily to load an input file (gdsii or Oasis) and to access any extensions that the user will want to use e.g. QisMbool (Boolean operations) or QisMDraw (display) or the ClipExtract library (many window extractions) or QisMNtrc (net tracing.).

api and classes for qislibm.so QisMlib API QisMFile API QisMExplode API QisMDraw API QisMBool API QisMView Super Class QisMView Super Class QisMView Super Class

Click on any of the API class boxes in the illustration to get details on specific functions.

Initialize the Library


This function initializes the QisMLib and provides access to it's main API. It also loads the QisMExtensions listed in the qismlib.cfg file and initializes them to facilitate the availability of extension APIs for the client.

This function must be called only ONCE in the lifetime of the program

The directory containing the QisMLib shared library MUST also contain acs.key, colfill.pat, gdsfont.shx, qismlib.cfg files

Do NOT delete/free the handle returned by this function.

At the end of the application, close the QisMLib to release the resources and unload the extensions


QISMLIB_DECLSPEC QisMLib_p QisMLib_initialize_once
    const char* execPath, 
    const int argC, 
    const char* const* argT, 
    void* const* argV, 
    char* errorBuf, 
    const int errorBufSize, 
    int* errorCode
execPath     : Full path to the QisMLib shared library
argC         : Number of optional arguments
argT         : Array of arguments tags (argC count)
argV         : Array of argument values matching the corresponding argT (argC count)
errorBuf     : Address of a character buffer to store the error string in case of failure
errorBufSize : Size of the character buffer
errorCode    : Buffer to retrieve the error code in case of failure


Success: Non-null handle to the QisMLib API (requires type-case to QisMLib*)
Failure: NULL. Error buffer (if specified) contains the error string

Closing the Library (and unloading the Extensions)


Call this function once and only at the end of the application.

The QisMLib can be initialized and closed only once so calling this function does not make QisLibM ready for initialization again. All QisMLib handles and APIs should be considered defunct once this function is called. It is the client's responsibility to ensure:

    All exploders have been destroyed (QisMFile::Destroy_exploder)

    The QisMFile has been unloaded using QisMLib::Unload_file


QISMLIB_DECLSPEC void QisMLib_close_once(QisMLib_p handle);


handle      : Non-null handle to the QisMLib API

Informational Functions

Check if a file is of a type supported by QisMLib

virtual CadFile::Type Get_file_type(const char* filePath) const = 0;

Getting the version of a dbload file

virtual const char* Get_dbload_version(const char* filePath) const = 0;

Getting a handle of an extension using its name

virtual QisMExtensionAPI* Get_extension_api(const char* apiName) const = 0;

Getting a Report about extensions that are currently loaded

virtual const char* Get_extension_report() const = 0;

Getting the library version information

QISMLIB_DECLSPEC const char* QisMLib_get_lib_info();

Error Collecting and Reporting

Get more information about the last error condition in form of an error string

virtual const char* Get_last_error_msg() const = 0;

Identify the last error condition by means of an error code

virtual int Get_last_error_code() const = 0;

QisMLib set of error codes

struct QisMLibEr
  enum Code {
    EINVPARAM   = -1,  /* Empty/null name, filepath, address or any other parameter */
    EFOPEN      = -2,  /* Failed to open the file for read */
    EINVFILE    = -3,  /* Un-readable, truncated or un-recognized file */
    EINVFORMAT  = -4,  /* Valid file but in-appropriate format (.scan, .load) */
    EINTERNAL   = -5,  /* Internal error (possible bug) */
    ECOLFILL    = -6,  /* colfill.pat could not be found or opened */
    EGDSFONT    = -7,  /* gdsfont.shx could not be found or opened */
    ERESOURCE   = -8,  /* out of system resources */
    ENOAPIFOUND = -9   /* Specified Extension API name does not exist */

Loading and Unloading Layout Files

Create a new instance of the file load settings object

virtual QisMFileLoadCtrl* New_loadFile_ctrl() = 0;

Destroy an instance of the file load settings object

virtual void Delete_loadFile_ctrl(QisMFileLoadCtrl* handle) = 0;

Load a GDSII/OASIS/Dbload file into the QisMLib database
virtual QisMFile* Load_file
     const char* filePath, 
     const QisMFileLoadCtrl* openSettings, 
     QisMNotify* cb
    ) = 0;

Unload the QisMLib database

virtual void Unload_file(QisMFile* handle) = 0;