umbrello 26.03.70-1a62d36 Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
NativeImportBase Class Referenceabstract

Base class for native implementations of language import. More...

`#include <nativeimportbase.h>`

Inheritance diagram for NativeImportBase:

## Public Member Functions

| NativeImportBase (const QString &singleLineCommentIntro, CodeImpThread *thread=nullptr)
virtual | ~NativeImportBase ()
Public Member Functions inherited from ClassImport
| ClassImport (CodeImpThread *thread=nullptr)
virtual | ~ClassImport ()
bool | importFiles (const QStringList &fileNames)
bool | importFile (const QString &fileName)
void | setRootPath (const QString &path)
bool | enabled () const

## Protected Member Functions

void | initialize ()
void | setMultiLineComment (const QString &intro, const QString &end)
void | setMultiLineAltComment (const QString &intro, const QString &end)
virtual bool | parseFile (const QString &filename)
virtual void | initVars ()
void | scan (const QString &line)
virtual bool | preprocess (QString &line)
virtual QStringList | split (const QString &line)
virtual void | fillSource (const QString &word)=0
virtual bool | parseStmt ()=0
void | skipStmt (const QString &until=QStringLiteral(";"))
bool | skipToClosing (QChar opener)
QString | current ()
QString | lookAhead ()
virtual QString | advance ()
void | pushScope (UMLPackage *p)
UMLPackage * | popScope ()
UMLPackage * | currentScope ()
int | scopeIndex ()
Protected Member Functions inherited from ClassImport
virtual void | initialize ()=0
virtual void | initPerFile ()
virtual bool | parseFile (const QString &fileName)=0
void | log (const QString &file, const QString &text)
void | log (const QString &text)

## Protected Attributes

QString | m_singleLineCommentIntro
| start token of a single line comment More...
QStringList | m_source
| the scanned lexemes More...
int | m_srcIndex
| used for indexing m_source More...
QList< UMLPackage * > | m_scope
| stack of scopes for use by the specific importer More...
UMLClassifier * | m_klass
| class currently being processed More...
Uml::Visibility::Enum | m_currentAccess
| current access (public/protected/private) More...
QString | m_comment
| intermediate accumulator for comment text More...
bool | m_inComment
bool | m_isAbstract
| accumulator for abstractness More...
QString | m_multiLineCommentIntro
| multi line comment delimiter intro More...
QString | m_multiLineCommentEnd
| multi line comment delimiter end More...
QString | m_multiLineAltCommentIntro
QString | m_multiLineAltCommentEnd
Protected Attributes inherited from ClassImport
CodeImpThread * | m_thread
| thread in which the work of importing is done More...
bool | m_enabled
| state of importer More...
QString | m_rootPath
| root path of import More...

## Static Protected Attributes

static QStringList | m_parsedFiles

## Additional Inherited Members

Static Public Member Functions inherited from ClassImport
static ClassImport * | createImporterByFileExt (const QString &fileName, CodeImpThread *thread=nullptr)

## Detailed Description

Base class for native implementations of language import.

Intermediate base class for native Umbrello implementations of programming language import

The default call sequence is as follows (RealizedLanguageImport is used as a placeholder name for the concrete language importer.) NativeImportBase RealizedLanguageImport –> importFiles() parseFile() ———————————–> initVars() scan() preprocess() (may be reimplemented) ———————————> fillSource() ———————————–> parseStmt() This sequence may be changed by overriding default implementations of virtual methods in NativeImportBase.

Author
  Oliver Kellogg okell.nosp@m.ogg@.nosp@m.users.nosp@m..sou.nosp@m.rcefo.nosp@m.rge..nosp@m.net Bugs and comments to umbre.nosp@m.llo-.nosp@m.devel.nosp@m.@kde.nosp@m..org or https://bugs.kde.org

## Constructor & Destructor Documentation

## ◆ NativeImportBase()

NativeImportBase::NativeImportBase | ( | const QString & | singleLineCommentIntro,
|  | CodeImpThread * | thread = `nullptr`
| ) |  |

explicit

Constructor

Parameters

  singleLineCommentIntro | "//" for IDL and Java, "--" for Ada
  thread | thread in which the code import runs

## ◆ ~NativeImportBase()

NativeImportBase::~NativeImportBase | ( |  | ) |

virtual

Destructor.

## Member Function Documentation

## ◆ advance()

QString NativeImportBase::advance | ( |  | ) |

protected virtual

Advance m_srcIndex until m_source[m_srcIndex] contains a non-comment. Comments encountered during advancement are accumulated in `m_comment`. If m_srcIndex hits the end of m_source then QString() is returned.

Returns
  the current lexeme or an empty string

Reimplemented in SQLImport.

## ◆ current()

QString NativeImportBase::current | ( |  | ) |

protected

Get the current lexeme. If the end of parse was reached then return an empty string.

Returns
  the current lexeme

## ◆ currentScope()

UMLPackage * NativeImportBase::currentScope | ( |  | ) |

protected

Return current scope. If the scope stack is empty then return nullptr.

Returns
  scope

## ◆ fillSource()

virtual void NativeImportBase::fillSource | ( | const QString & | word | ) |

protected pure virtual

Analyze the given word and fill `m_source`. A "word" is a whitespace delimited item from the input line. To be provided by the specific importer class.

Implemented in PythonImport, AdaImport, CSharpImport, IDLImport, JavaCsValaImportBase, PascalImport, and SQLImport.

## ◆ initialize()

void NativeImportBase::initialize | ( |  | ) |

protected virtual

Implement abstract operation from ClassImport.

Implements ClassImport.

## ◆ initVars()

void NativeImportBase::initVars | ( |  | ) |

protected virtual

Initialize auxiliary variables. This is called by the default implementation of parseFile() after scanning (before parsing the QStringList m_source.) The default implementation is empty.

Reimplemented in AdaImport, JavaCsValaImportBase, PascalImport, and PythonImport.

## ◆ lookAhead()

QString NativeImportBase::lookAhead | ( |  | ) |

protected

Get the next lexeme without advancing.

Returns
  the next lexeme or an empty string

## ◆ parseFile()

bool NativeImportBase::parseFile | ( | const QString & | filename | ) |

protected virtual

Import a single file. The default implementation should be feasible for languages that don't depend on an external preprocessor.

Parameters

  filename | The file to import.

Returns
  state of parsing - false means errors

Implements ClassImport.

Reimplemented in IDLImport, and JavaCsValaImportBase.

## ◆ parseStmt()

virtual bool NativeImportBase::parseStmt | ( |  | ) |

protected pure virtual

Parse the statement which starts at m_source[m_srcIndex] leaving m_srcIndex pointing to the end of the recognized statement. To be provided by the concrete importer.

Returns
  True if the statement was recognized.

Implemented in AdaImport, CsValaImportBase, IDLImport, JavaImport, PascalImport, PythonImport, and SQLImport.

## ◆ popScope()

UMLPackage * NativeImportBase::popScope | ( |  | ) |

protected

Return previously defined scope.

Returns
  previous scope

## ◆ preprocess()

bool NativeImportBase::preprocess | ( | QString & | line | ) |

protected virtual

Preprocess a line. May modify the given line to remove items consumed by the preprocessing such as comments or preprocessor directives. The default implementation handles multi-line comments.

Parameters

  line | The line to preprocess.

Returns
  True if the line was completely consumed, false if there are still items left in the line for further analysis.

Reimplemented in CsValaImportBase, IDLImport, and PythonImport.

## ◆ pushScope()

void NativeImportBase::pushScope | ( | UMLPackage * | p | ) |

protected

Set package as current scope.

Parameters

  p | UML package to set as current scope

## ◆ scan()

void NativeImportBase::scan | ( | const QString & | line | ) |

protected

Scan a single line. parseFile() calls this for each line read from the input file. This in turn calls other methods such as preprocess() and fillSource(). The lexer. Tokenizes the given string and fills `m_source`. Stores possible comments in `m_comment`.

Parameters

  line | The line to scan.

## ◆ scopeIndex()

int NativeImportBase::scopeIndex | ( |  | ) |

protected

Return current scope index.

Returns
  >= 0 index, -1 empty

## ◆ setMultiLineAltComment()

void NativeImportBase::setMultiLineAltComment | ( | const QString & | intro,
|  | const QString & | end
| ) |  |

protected

Set the delimiter strings for an alternative form of multi line comment. See setMultiLineComment().

Parameters

  intro | the start comment string
  end | the end comment string

## ◆ setMultiLineComment()

void NativeImportBase::setMultiLineComment | ( | const QString & | intro,
|  | const QString & | end
| ) |  |

protected

Set the delimiter strings for a multi line comment.

Parameters

  intro | In languages with a C style multiline comment this is slash-star.
  end | In languages with a C style multiline comment this is star-slash.

## ◆ skipStmt()

void NativeImportBase::skipStmt | ( | const QString & | until = `QStringLiteral(";")` | ) |

protected

Advance m_srcIndex until m_source[m_srcIndex] contains the lexeme given by `until`.

Parameters

  until | the target string

## ◆ skipToClosing()

bool NativeImportBase::skipToClosing | ( | QChar | opener | ) |

protected

Advance m_srcIndex to the index of the corresponding closing character of the given opening. Nested opening/closing pairs are respected. Valid openers are: '{' '[' '(' '<'

Parameters

  opener | the opener string

Returns
  True for success, false for misuse (invalid opener) or if no matching closing character is found in m_source.

## ◆ split()

QStringList NativeImportBase::split | ( | const QString & | line | ) |

protected virtual

Split the line so that a string is returned as a single element of the list. When not in a string then split at white space. The default implementation is suitable for C style strings and char constants.

Parameters

  line | the line to split

Returns
  the parts of the line

Reimplemented in AdaImport, and PascalImport.

## Member Data Documentation

## ◆ m_comment

QString NativeImportBase::m_comment

protected

intermediate accumulator for comment text

## ◆ m_currentAccess

Uml::Visibility::Enum NativeImportBase::m_currentAccess

protected

current access (public/protected/private)

## ◆ m_inComment

bool NativeImportBase::m_inComment

protected

True if we are currently in a multi-line comment. Only applies to languages with multi-line comments.

## ◆ m_isAbstract

bool NativeImportBase::m_isAbstract

protected

accumulator for abstractness

## ◆ m_klass

UMLClassifier* NativeImportBase::m_klass

protected

class currently being processed

## ◆ m_multiLineAltCommentEnd

QString NativeImportBase::m_multiLineAltCommentEnd

protected

## ◆ m_multiLineAltCommentIntro

QString NativeImportBase::m_multiLineAltCommentIntro

protected

Some languages support an alternative set of multi line comment delimiters.

## ◆ m_multiLineCommentEnd

QString NativeImportBase::m_multiLineCommentEnd

protected

multi line comment delimiter end

## ◆ m_multiLineCommentIntro

QString NativeImportBase::m_multiLineCommentIntro

protected

multi line comment delimiter intro

## ◆ m_parsedFiles

QStringList NativeImportBase::m_parsedFiles

static protected

List of parsed files. Contains file names without paths. Before actually parsing a given file, NativeImportBase checks whether the name is already present in this list in order to avoid parsing the same file multiple times.

## ◆ m_scope

QList<UMLPackage *> NativeImportBase::m_scope

protected

stack of scopes for use by the specific importer

## ◆ m_singleLineCommentIntro

QString NativeImportBase::m_singleLineCommentIntro

protected

start token of a single line comment

## ◆ m_source

QStringList NativeImportBase::m_source

protected

the scanned lexemes

## ◆ m_srcIndex

int NativeImportBase::m_srcIndex

protected

used for indexing m_source

The documentation for this class was generated from the following files:

- umbrello/codeimport/nativeimportbase.h
- umbrello/codeimport/nativeimportbase.cpp