Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7360fcea2c | |||
| f763ee842e | |||
| fadfec46ab | |||
| 2ff69be4f8 | |||
| af7eef7fd3 | |||
| 4209f5dc5a | |||
| de40522533 | |||
| c57bf22bbb | |||
| 567b01b80d | |||
| 4a8424634b | |||
| e342a2de4f | |||
| 2d61095f90 | |||
| b24e6cd060 | |||
| 247d7a768d | |||
| 2db2e9cc2d | |||
| 3fb6da5306 |
@@ -1,12 +1 @@
|
|||||||
/.metadata/
|
/.project
|
||||||
/.graph-browser/
|
|
||||||
/.recommenders/
|
|
||||||
/RemoteSystemsTempFiles/
|
|
||||||
/*.zip
|
|
||||||
SCViewer initiator_target.launch
|
|
||||||
SCViewer.xcf
|
|
||||||
SCViewer_1.png
|
|
||||||
copyrightLog.txt
|
|
||||||
/workspace
|
|
||||||
?*.launch
|
|
||||||
/.settings/
|
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
|
|
||||||
<intAttribute key="M2_COLORS" value="0"/>
|
|
||||||
<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
|
|
||||||
<stringAttribute key="M2_GOALS" value="package"/>
|
|
||||||
<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
|
|
||||||
<booleanAttribute key="M2_OFFLINE" value="false"/>
|
|
||||||
<stringAttribute key="M2_PROFILES" value=""/>
|
|
||||||
<listAttribute key="M2_PROPERTIES"/>
|
|
||||||
<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
|
|
||||||
<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
|
|
||||||
<intAttribute key="M2_THREADS" value="1"/>
|
|
||||||
<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
|
|
||||||
<stringAttribute key="M2_USER_SETTINGS" value=""/>
|
|
||||||
<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc:com.minres.scviewer.parent}"/>
|
|
||||||
</launchConfiguration>
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
|
|
||||||
<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
|
|
||||||
<stringAttribute key="M2_GOALS" value="package"/>
|
|
||||||
<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
|
|
||||||
<booleanAttribute key="M2_OFFLINE" value="false"/>
|
|
||||||
<stringAttribute key="M2_PROFILES" value="release-composite"/>
|
|
||||||
<listAttribute key="M2_PROPERTIES"/>
|
|
||||||
<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
|
|
||||||
<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
|
|
||||||
<intAttribute key="M2_THREADS" value="1"/>
|
|
||||||
<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
|
|
||||||
<stringAttribute key="M2_USER_SETTINGS" value=""/>
|
|
||||||
<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="true"/>
|
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc:com.minres.scviewer.parent}"/>
|
|
||||||
</launchConfiguration>
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
|
|
||||||
<intAttribute key="M2_COLORS" value="0"/>
|
|
||||||
<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
|
|
||||||
<stringAttribute key="M2_GOALS" value="tycho-versions:set-version tycho-versions:update-pom"/>
|
|
||||||
<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
|
|
||||||
<booleanAttribute key="M2_OFFLINE" value="false"/>
|
|
||||||
<stringAttribute key="M2_PROFILES" value=""/>
|
|
||||||
<listAttribute key="M2_PROPERTIES">
|
|
||||||
<listEntry value="newVersion=${string_prompt:new version number}"/>
|
|
||||||
</listAttribute>
|
|
||||||
<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
|
|
||||||
<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
|
|
||||||
<intAttribute key="M2_THREADS" value="1"/>
|
|
||||||
<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
|
|
||||||
<stringAttribute key="M2_USER_SETTINGS" value=""/>
|
|
||||||
<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
|
|
||||||
<stringAttribute key="bad_container_name" value="/com.minres.scviewer.parent/.launch"/>
|
|
||||||
<booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc:com.minres.scviewer.parent}"/>
|
|
||||||
</launchConfiguration>
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.minres.scviewer.parent</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
||||||
@@ -1,203 +0,0 @@
|
|||||||
Eclipse Public License - v 1.0
|
|
||||||
|
|
||||||
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
|
|
||||||
LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
|
|
||||||
CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
|
|
||||||
|
|
||||||
1. DEFINITIONS
|
|
||||||
|
|
||||||
"Contribution" means:
|
|
||||||
|
|
||||||
a) in the case of the initial Contributor, the initial code and documentation
|
|
||||||
distributed under this Agreement, and
|
|
||||||
b) in the case of each subsequent Contributor:
|
|
||||||
i) changes to the Program, and
|
|
||||||
ii) additions to the Program;
|
|
||||||
|
|
||||||
where such changes and/or additions to the Program originate from and are
|
|
||||||
distributed by that particular Contributor. A Contribution 'originates'
|
|
||||||
from a Contributor if it was added to the Program by such Contributor
|
|
||||||
itself or anyone acting on such Contributor's behalf. Contributions do not
|
|
||||||
include additions to the Program which: (i) are separate modules of
|
|
||||||
software distributed in conjunction with the Program under their own
|
|
||||||
license agreement, and (ii) are not derivative works of the Program.
|
|
||||||
|
|
||||||
"Contributor" means any person or entity that distributes the Program.
|
|
||||||
|
|
||||||
"Licensed Patents" mean patent claims licensable by a Contributor which are
|
|
||||||
necessarily infringed by the use or sale of its Contribution alone or when
|
|
||||||
combined with the Program.
|
|
||||||
|
|
||||||
"Program" means the Contributions distributed in accordance with this
|
|
||||||
Agreement.
|
|
||||||
|
|
||||||
"Recipient" means anyone who receives the Program under this Agreement,
|
|
||||||
including all Contributors.
|
|
||||||
|
|
||||||
2. GRANT OF RIGHTS
|
|
||||||
a) Subject to the terms of this Agreement, each Contributor hereby grants
|
|
||||||
Recipient a non-exclusive, worldwide, royalty-free copyright license to
|
|
||||||
reproduce, prepare derivative works of, publicly display, publicly
|
|
||||||
perform, distribute and sublicense the Contribution of such Contributor,
|
|
||||||
if any, and such derivative works, in source code and object code form.
|
|
||||||
b) Subject to the terms of this Agreement, each Contributor hereby grants
|
|
||||||
Recipient a non-exclusive, worldwide, royalty-free patent license under
|
|
||||||
Licensed Patents to make, use, sell, offer to sell, import and otherwise
|
|
||||||
transfer the Contribution of such Contributor, if any, in source code and
|
|
||||||
object code form. This patent license shall apply to the combination of
|
|
||||||
the Contribution and the Program if, at the time the Contribution is
|
|
||||||
added by the Contributor, such addition of the Contribution causes such
|
|
||||||
combination to be covered by the Licensed Patents. The patent license
|
|
||||||
shall not apply to any other combinations which include the Contribution.
|
|
||||||
No hardware per se is licensed hereunder.
|
|
||||||
c) Recipient understands that although each Contributor grants the licenses
|
|
||||||
to its Contributions set forth herein, no assurances are provided by any
|
|
||||||
Contributor that the Program does not infringe the patent or other
|
|
||||||
intellectual property rights of any other entity. Each Contributor
|
|
||||||
disclaims any liability to Recipient for claims brought by any other
|
|
||||||
entity based on infringement of intellectual property rights or
|
|
||||||
otherwise. As a condition to exercising the rights and licenses granted
|
|
||||||
hereunder, each Recipient hereby assumes sole responsibility to secure
|
|
||||||
any other intellectual property rights needed, if any. For example, if a
|
|
||||||
third party patent license is required to allow Recipient to distribute
|
|
||||||
the Program, it is Recipient's responsibility to acquire that license
|
|
||||||
before distributing the Program.
|
|
||||||
d) Each Contributor represents that to its knowledge it has sufficient
|
|
||||||
copyright rights in its Contribution, if any, to grant the copyright
|
|
||||||
license set forth in this Agreement.
|
|
||||||
|
|
||||||
3. REQUIREMENTS
|
|
||||||
|
|
||||||
A Contributor may choose to distribute the Program in object code form under
|
|
||||||
its own license agreement, provided that:
|
|
||||||
|
|
||||||
a) it complies with the terms and conditions of this Agreement; and
|
|
||||||
b) its license agreement:
|
|
||||||
i) effectively disclaims on behalf of all Contributors all warranties
|
|
||||||
and conditions, express and implied, including warranties or
|
|
||||||
conditions of title and non-infringement, and implied warranties or
|
|
||||||
conditions of merchantability and fitness for a particular purpose;
|
|
||||||
ii) effectively excludes on behalf of all Contributors all liability for
|
|
||||||
damages, including direct, indirect, special, incidental and
|
|
||||||
consequential damages, such as lost profits;
|
|
||||||
iii) states that any provisions which differ from this Agreement are
|
|
||||||
offered by that Contributor alone and not by any other party; and
|
|
||||||
iv) states that source code for the Program is available from such
|
|
||||||
Contributor, and informs licensees how to obtain it in a reasonable
|
|
||||||
manner on or through a medium customarily used for software exchange.
|
|
||||||
|
|
||||||
When the Program is made available in source code form:
|
|
||||||
|
|
||||||
a) it must be made available under this Agreement; and
|
|
||||||
b) a copy of this Agreement must be included with each copy of the Program.
|
|
||||||
Contributors may not remove or alter any copyright notices contained
|
|
||||||
within the Program.
|
|
||||||
|
|
||||||
Each Contributor must identify itself as the originator of its Contribution,
|
|
||||||
if
|
|
||||||
any, in a manner that reasonably allows subsequent Recipients to identify the
|
|
||||||
originator of the Contribution.
|
|
||||||
|
|
||||||
4. COMMERCIAL DISTRIBUTION
|
|
||||||
|
|
||||||
Commercial distributors of software may accept certain responsibilities with
|
|
||||||
respect to end users, business partners and the like. While this license is
|
|
||||||
intended to facilitate the commercial use of the Program, the Contributor who
|
|
||||||
includes the Program in a commercial product offering should do so in a manner
|
|
||||||
which does not create potential liability for other Contributors. Therefore,
|
|
||||||
if a Contributor includes the Program in a commercial product offering, such
|
|
||||||
Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
|
|
||||||
every other Contributor ("Indemnified Contributor") against any losses,
|
|
||||||
damages and costs (collectively "Losses") arising from claims, lawsuits and
|
|
||||||
other legal actions brought by a third party against the Indemnified
|
|
||||||
Contributor to the extent caused by the acts or omissions of such Commercial
|
|
||||||
Contributor in connection with its distribution of the Program in a commercial
|
|
||||||
product offering. The obligations in this section do not apply to any claims
|
|
||||||
or Losses relating to any actual or alleged intellectual property
|
|
||||||
infringement. In order to qualify, an Indemnified Contributor must:
|
|
||||||
a) promptly notify the Commercial Contributor in writing of such claim, and
|
|
||||||
b) allow the Commercial Contributor to control, and cooperate with the
|
|
||||||
Commercial Contributor in, the defense and any related settlement
|
|
||||||
negotiations. The Indemnified Contributor may participate in any such claim at
|
|
||||||
its own expense.
|
|
||||||
|
|
||||||
For example, a Contributor might include the Program in a commercial product
|
|
||||||
offering, Product X. That Contributor is then a Commercial Contributor. If
|
|
||||||
that Commercial Contributor then makes performance claims, or offers
|
|
||||||
warranties related to Product X, those performance claims and warranties are
|
|
||||||
such Commercial Contributor's responsibility alone. Under this section, the
|
|
||||||
Commercial Contributor would have to defend claims against the other
|
|
||||||
Contributors related to those performance claims and warranties, and if a
|
|
||||||
court requires any other Contributor to pay any damages as a result, the
|
|
||||||
Commercial Contributor must pay those damages.
|
|
||||||
|
|
||||||
5. NO WARRANTY
|
|
||||||
|
|
||||||
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
|
|
||||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
|
|
||||||
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
|
|
||||||
Recipient is solely responsible for determining the appropriateness of using
|
|
||||||
and distributing the Program and assumes all risks associated with its
|
|
||||||
exercise of rights under this Agreement , including but not limited to the
|
|
||||||
risks and costs of program errors, compliance with applicable laws, damage to
|
|
||||||
or loss of data, programs or equipment, and unavailability or interruption of
|
|
||||||
operations.
|
|
||||||
|
|
||||||
6. DISCLAIMER OF LIABILITY
|
|
||||||
|
|
||||||
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
|
|
||||||
CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
|
|
||||||
LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
|
|
||||||
EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
|
|
||||||
OF SUCH DAMAGES.
|
|
||||||
|
|
||||||
7. GENERAL
|
|
||||||
|
|
||||||
If any provision of this Agreement is invalid or unenforceable under
|
|
||||||
applicable law, it shall not affect the validity or enforceability of the
|
|
||||||
remainder of the terms of this Agreement, and without further action by the
|
|
||||||
parties hereto, such provision shall be reformed to the minimum extent
|
|
||||||
necessary to make such provision valid and enforceable.
|
|
||||||
|
|
||||||
If Recipient institutes patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Program itself
|
|
||||||
(excluding combinations of the Program with other software or hardware)
|
|
||||||
infringes such Recipient's patent(s), then such Recipient's rights granted
|
|
||||||
under Section 2(b) shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
All Recipient's rights under this Agreement shall terminate if it fails to
|
|
||||||
comply with any of the material terms or conditions of this Agreement and does
|
|
||||||
not cure such failure in a reasonable period of time after becoming aware of
|
|
||||||
such noncompliance. If all Recipient's rights under this Agreement terminate,
|
|
||||||
Recipient agrees to cease use and distribution of the Program as soon as
|
|
||||||
reasonably practicable. However, Recipient's obligations under this Agreement
|
|
||||||
and any licenses granted by Recipient relating to the Program shall continue
|
|
||||||
and survive.
|
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute copies of this Agreement, but in
|
|
||||||
order to avoid inconsistency the Agreement is copyrighted and may only be
|
|
||||||
modified in the following manner. The Agreement Steward reserves the right to
|
|
||||||
publish new versions (including revisions) of this Agreement from time to
|
|
||||||
time. No one other than the Agreement Steward has the right to modify this
|
|
||||||
Agreement. The Eclipse Foundation is the initial Agreement Steward. The
|
|
||||||
Eclipse Foundation may assign the responsibility to serve as the Agreement
|
|
||||||
Steward to a suitable separate entity. Each new version of the Agreement will
|
|
||||||
be given a distinguishing version number. The Program (including
|
|
||||||
Contributions) may always be distributed subject to the version of the
|
|
||||||
Agreement under which it was received. In addition, after a new version of the
|
|
||||||
Agreement is published, Contributor may elect to distribute the Program
|
|
||||||
(including its Contributions) under the new version. Except as expressly
|
|
||||||
stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
|
|
||||||
licenses to the intellectual property of any Contributor under this Agreement,
|
|
||||||
whether expressly, by implication, estoppel or otherwise. All rights in the
|
|
||||||
Program not expressly granted under this Agreement are reserved.
|
|
||||||
|
|
||||||
This Agreement is governed by the laws of the State of New York and the
|
|
||||||
intellectual property laws of the United States of America. No party to this
|
|
||||||
Agreement will bring a legal action under this Agreement more than one year
|
|
||||||
after the cause of action arose. Each party waives its rights to a jury trial in
|
|
||||||
any resulting litigation.
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
SCViewer
|
|
||||||
========
|
|
||||||
|
|
||||||
SCViewer is composed of a set of eclipse plugins to display VCD and transaction streams
|
|
||||||
created by the SystemC VCD trace implementation and the SystemC Verification Library (SCV).
|
|
||||||
For further description of the SCV please refer to
|
|
||||||
http://www.accellera.org/activities/committees/systemc-verification.
|
|
||||||
|
|
||||||
> If you encounter issue when running on Linux please try running as `SWT_GTK3=0 scviewer` as there exist issues wiht GTK3.
|
|
||||||
|
|
||||||
The viewer has the following features
|
|
||||||
- support of VCD files (compressed and uncompressed)
|
|
||||||
- real numbers
|
|
||||||
- showing vectors and real numbers as analog (step-wise & continuous)
|
|
||||||
- various value representations of bit vectors
|
|
||||||
- support of SCV transaction recordings in various formats
|
|
||||||
- text log files (compressed and uncompressed)
|
|
||||||
- sqlite based
|
|
||||||
- visualization of transaction relations
|
|
||||||
|
|
||||||
To build the plugins the Eclipse SDK or PDE can be used.
|
|
||||||
|
|
||||||
Key Shortcuts
|
|
||||||
=============
|
|
||||||
|
|
||||||
Legend:
|
|
||||||
|
|
||||||
* Left Mouse Button: LMB
|
|
||||||
* Middle Mouse Button: MMB
|
|
||||||
* Mouse Scroll wheel: MScrl
|
|
||||||
* Context any means Name List, Value List or Waveform
|
|
||||||
|
|
||||||
| Input | Modifier | Context | Action |
|
|
||||||
|------------|----------|----------|-----------------------------------|
|
|
||||||
| LMB click | | any | select |
|
|
||||||
| LMB click | Shift | Waveform | move selected marker to position |
|
|
||||||
| LMB click | Control | Waveform | move cursor to position |
|
|
||||||
| LMB drag | | Waveform | zoom to range |
|
|
||||||
| MMB click | | Waveform | move selected marker to position |
|
|
||||||
| MScrl | | any | scroll window up/down |
|
|
||||||
| MScrl | Shift | any | scroll window left/right |
|
|
||||||
| MScrl | Control | Waveform | zoom in/out |
|
|
||||||
| Key left | | Waveform | scroll window to the left (slow) |
|
|
||||||
| Key right | | Waveform | scroll window to the right (slow) |
|
|
||||||
| Key left | Shift | Waveform | scroll window to the left (fast) |
|
|
||||||
| Key right | Shift | Waveform | scroll window to the right (fast) |
|
|
||||||
| Key up | | Waveform | move selection up |
|
|
||||||
| Key down | | Waveform | move selection down |
|
|
||||||
| Key up | Control | Waveform | move selected track up |
|
|
||||||
| Key down | Control | Waveform | move selected track down |
|
|
||||||
| Key + | Control | Waveform | zoom in |
|
|
||||||
| Key - | Control | Waveform | zoom out |
|
|
||||||
| Key Pos1 | | Waveform | jump to selected marker |
|
|
||||||
| Key End | | Waveform | jump to cursor |
|
|
||||||
| Key Del | | any | delete selected entries |
|
|
||||||
| LMB click | | ZoomBar | increment/decrement 1 page |
|
|
||||||
| LMB drag | | ZoomBar | drag both markers (pan) |
|
|
||||||
| LMB drag | Control | ZoomBar | drag one marker (zoom) |
|
|
||||||
| MMB drag | | ZoomBar | drag one marker (zoom) |
|
|
||||||
| xMB dclick | | ZoomBar | pan to position |
|
|
||||||
| MScrl | | ZoomBar | scroll window left/right |
|
|
||||||
| MScrl | Shift | ZoomBar | scroll window left/right double speed |
|
|
||||||
| MScrl | Control | ZoomBar | zoom in/out |
|
|
||||||
| Key left | | ZoomBar | scroll window to the left (slow) |
|
|
||||||
| Key right | | ZoomBar | scroll window to the right (slow) |
|
|
||||||
| Key up | | ZoomBar | scroll window to the left (slow) |
|
|
||||||
| Key down | | ZoomBar | scroll window to the right (slow) |
|
|
||||||
| Key PgUp | | ZoomBar | scroll window to the left (fast) |
|
|
||||||
| Key PgDown | | ZoomBar | scroll window to the right (fast) |
|
|
||||||
| Key Pos1 | | ZoomBar | scroll to begin |
|
|
||||||
| Key End | | ZoomBar | scroll to end |
|
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
theme: jekyll-theme-minimal
|
||||||
|
logo: /assets/img/SCViewer_logo.png
|
||||||
|
title: SCViewer
|
||||||
|
description: A a simple tool to display waveforms
|
||||||
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
@@ -1 +0,0 @@
|
|||||||
/target/
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.minres.scviewer.doc</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
||||||
@@ -1,168 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>com.minres.scviewer.doc</artifactId>
|
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
|
||||||
<packaging>pom</packaging>
|
|
||||||
<parent>
|
|
||||||
<groupId>com.minres.scviewer</groupId>
|
|
||||||
<artifactId>com.minres.scviewer.parent</artifactId>
|
|
||||||
<version>2.17.1</version>
|
|
||||||
<relativePath>../..</relativePath>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<properties>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
<asciidoctor.maven.plugin.version>2.0.0</asciidoctor.maven.plugin.version>
|
|
||||||
<asciidoctorj.pdf.version>1.6.2</asciidoctorj.pdf.version>
|
|
||||||
<help.plugin.target.dir>../../plugins/com.minres.scviewer.e4.application.help</help.plugin.target.dir>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.asciidoctor</groupId>
|
|
||||||
<artifactId>asciidoctor-maven-plugin</artifactId>
|
|
||||||
<version>${asciidoctor.maven.plugin.version}</version>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.asciidoctor</groupId>
|
|
||||||
<artifactId>asciidoctorj-pdf</artifactId>
|
|
||||||
<version>${asciidoctorj.pdf.version}</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
<configuration>
|
|
||||||
<sourceDirectory>src/asciidoc</sourceDirectory>
|
|
||||||
<sourceDocumentName>SCViewerHelp.adoc</sourceDocumentName>
|
|
||||||
<headerFooter>true</headerFooter>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>output-html</id>
|
|
||||||
<phase>generate-resources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>process-asciidoc</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<sourceHighlighter>coderay</sourceHighlighter>
|
|
||||||
<backend>html</backend>
|
|
||||||
<attributes>
|
|
||||||
<toc />
|
|
||||||
<linkcss>false</linkcss>
|
|
||||||
</attributes>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>output-docbook</id>
|
|
||||||
<phase>generate-resources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>process-asciidoc</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<backend>docbook</backend>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>output-pdf</id>
|
|
||||||
<phase>generate-resources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>process-asciidoc</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<backend>pdf</backend>
|
|
||||||
<sourceHighlighter>coderay</sourceHighlighter>
|
|
||||||
<attributes>
|
|
||||||
<icons>font</icons>
|
|
||||||
<pagenums />
|
|
||||||
<toc />
|
|
||||||
<idprefix />
|
|
||||||
<idseparator>-</idseparator>
|
|
||||||
</attributes>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-resources-plugin</artifactId>
|
|
||||||
<version>2.6</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>copy-asciidoc-resources</id>
|
|
||||||
<phase>generate-resources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>copy-resources</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<resources>
|
|
||||||
<resource>
|
|
||||||
<directory>target/generated-docs/</directory>
|
|
||||||
<includes>
|
|
||||||
<include>SCViewerHelp.xml</include>
|
|
||||||
<include>**/*.jpg</include>
|
|
||||||
<include>**/*.png</include>
|
|
||||||
<include>**/*.svg</include>
|
|
||||||
</includes>
|
|
||||||
</resource>
|
|
||||||
</resources>
|
|
||||||
<outputDirectory>src/docbkx</outputDirectory>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>com.agilejava.docbkx</groupId>
|
|
||||||
<artifactId>docbkx-maven-plugin</artifactId>
|
|
||||||
<version>2.0.17</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<!-- <phase>generate-sources</phase> -->
|
|
||||||
<phase>generate-resources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>generate-eclipse</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.docbook</groupId>
|
|
||||||
<artifactId>docbook-xml</artifactId>
|
|
||||||
<version>4.4</version>
|
|
||||||
<scope>runtime</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
<configuration>
|
|
||||||
<sourceDirectory>src/docbkx</sourceDirectory>
|
|
||||||
<targetDirectory>${help.plugin.target.dir}</targetDirectory>
|
|
||||||
<preProcess>
|
|
||||||
<copy todir="${help.plugin.target.dir}/images">
|
|
||||||
<fileset dir="src/docbkx/images" />
|
|
||||||
</copy>
|
|
||||||
<copy todir="${help.plugin.target.dir}/css">
|
|
||||||
<fileset dir="src/docbkx/css" />
|
|
||||||
</copy>
|
|
||||||
</preProcess>
|
|
||||||
<imgSrcPath>./</imgSrcPath>
|
|
||||||
|
|
||||||
<useExtensions>1</useExtensions>
|
|
||||||
<highlightSource>1</highlightSource>
|
|
||||||
<highlightDefaultLanguage>java</highlightDefaultLanguage>
|
|
||||||
<calloutsExtension>1</calloutsExtension>
|
|
||||||
<paperType>A4</paperType>
|
|
||||||
<!--<fop1Extensions>1</fop1Extensions>
|
|
||||||
<foCustomization>${basedir}/conf/customization-fopdf.xsl</foCustomization>-->
|
|
||||||
|
|
||||||
<!-- This copies content (images, etc) for the HTML version -->
|
|
||||||
<!-- Any parameters specific to HTML version go here -->
|
|
||||||
<htmlStylesheet>css/narrow_style.css</htmlStylesheet>
|
|
||||||
<!-- <includes>titlepage/titlepage.templates.xml</includes> -->
|
|
||||||
<includes>SCViewerHelp.xml</includes>
|
|
||||||
<chunkedOutput>true</chunkedOutput>
|
|
||||||
<xincludeSupported>true</xincludeSupported>
|
|
||||||
<!-- <foCustomization>src/test/resources/docbook-fo.xsl</foCustomization> -->
|
|
||||||
<eclipsePluginId>com.minres.scviewer.e4.application.help</eclipsePluginId>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
[#_introduction]
|
|
||||||
== Introduction
|
|
||||||
|
|
||||||
[#_overview]
|
|
||||||
=== SCViewer overview
|
|
||||||
|
|
||||||
SCViewer is composed of a set of eclipse plugins to display VCD and transaction streams
|
|
||||||
created by the SystemC VCD trace implementation and the SystemC Verification Library (SCV).
|
|
||||||
For further description of the SCV please refer to
|
|
||||||
http://www.accellera.org/activities/committees/systemc-verification.
|
|
||||||
|
|
||||||
|
|
||||||
[#_features]
|
|
||||||
=== SCViewer features
|
|
||||||
|
|
||||||
Features include:
|
|
||||||
|
|
||||||
* support of VCD files (compressed and uncompressed)
|
|
||||||
** real numbers
|
|
||||||
** showing vectors and real numbers as analog (step-wise & continuous)
|
|
||||||
* various value representations of bit vectors
|
|
||||||
* support of SCV transaction recordings in various formats
|
|
||||||
** text log files (compressed and uncompressed)
|
|
||||||
** sqlite based
|
|
||||||
** visualization of transaction relations
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
[#_reference]
|
|
||||||
== Reference
|
|
||||||
|
|
||||||
In this section you will find detailed descriptions of all GUI and menu elements of the SCViewer including their functions and keyboard shortcuts.
|
|
||||||
|
|
||||||
[#_keybindings]
|
|
||||||
=== Key Shortcuts
|
|
||||||
|
|
||||||
Legend:
|
|
||||||
|
|
||||||
* Left Mouse Button: LMB
|
|
||||||
* Middle Mouse Button: MMB
|
|
||||||
* Mouse Scroll wheel: MScrl
|
|
||||||
* Context any means Name List, Value List or Waveform
|
|
||||||
|
|
||||||
[cols="1,1,1,4",options="header"]
|
|
||||||
|===
|
|
||||||
| Input | Modifier | Context | Action
|
|
||||||
| LMB click | | any | select
|
|
||||||
| LMB click | Shift | Waveform | move selected marker to position
|
|
||||||
| LMB click | Control | Waveform | move cursor to position
|
|
||||||
| LMB drag | | Waveform | zoom to range
|
|
||||||
| MMB click | | Waveform | move selected marker to position
|
|
||||||
| MScrl | | any | scroll window up/down
|
|
||||||
| MScrl | Shift | any | scroll window left/right
|
|
||||||
| Key left | | Waveform | scroll window to the left (slow)
|
|
||||||
| Key right | | Waveform | scroll window to the right (slow)
|
|
||||||
| Key left | Shift | Waveform | scroll window to the left (fast)
|
|
||||||
| Key right | Shift | Waveform | scroll window to the right (fast)
|
|
||||||
| Key up | | Waveform | move selection up
|
|
||||||
| Key down | | Waveform | move selection down
|
|
||||||
| Key up | Control | Waveform | move selected track up
|
|
||||||
| Key down | Control | Waveform | move selected track down
|
|
||||||
| Key + | Control | Waveform | zoom in
|
|
||||||
| Key - | Control | Waveform | zoom out
|
|
||||||
| Key Pos1 | | Waveform | jump to selected marker
|
|
||||||
| Key End | | Waveform | jump to cursor
|
|
||||||
| Key Del | | any | delete selected entries
|
|
||||||
| LMB click | | ZoomBar | increment/decrement 1 page
|
|
||||||
| LMB drag | | ZoomBar | drag both markers (pan)
|
|
||||||
| LMB drag | Control | ZoomBar | drag one marker (zoom)
|
|
||||||
| MMB drag | | ZoomBar | drag one marker (zoom)
|
|
||||||
| xMB dclick | | ZoomBar | pan to position
|
|
||||||
| MScrl | | ZoomBar | scroll window left/right
|
|
||||||
| MScrl | Shift | ZoomBar | scroll window left/right double speed
|
|
||||||
| MScrl | Control | ZoomBar | zoom in/out
|
|
||||||
| Key left | | ZoomBar | scroll window to the left (slow)
|
|
||||||
| Key right | | ZoomBar | scroll window to the right (slow)
|
|
||||||
| Key up | | ZoomBar | scroll window to the left (slow)
|
|
||||||
| Key down | | ZoomBar | scroll window to the right (slow)
|
|
||||||
| Key PgUp | | ZoomBar | scroll window to the left (fast)
|
|
||||||
| Key PgDown | | ZoomBar | scroll window to the right (fast)
|
|
||||||
| Key Pos1 | | ZoomBar | scroll to begin
|
|
||||||
| Key End | | ZoomBar | scroll to end
|
|
||||||
|===
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
[#_start]
|
|
||||||
= SCViewer User Guide
|
|
||||||
:title-logo-image: image:Minres_logo_docs.png[width=750, align="right"]
|
|
||||||
:doctype: book
|
|
||||||
:source-highlighter: coderay
|
|
||||||
:coderay-linenums-mode: inline
|
|
||||||
:coderay-css: class
|
|
||||||
:listing-caption: Listing
|
|
||||||
:icons: font
|
|
||||||
//add table-of-contents (toc) and set its depth
|
|
||||||
:toc:
|
|
||||||
:toclevels: 3
|
|
||||||
:data-uri:
|
|
||||||
:sectnums:
|
|
||||||
:toc-title: Contents
|
|
||||||
:homepage: https://www.minres.com/
|
|
||||||
:keywords:
|
|
||||||
:title-page:
|
|
||||||
:xrefstyle: short
|
|
||||||
:table-caption: Table
|
|
||||||
:figure-caption: Figure
|
|
||||||
:appendix-caption: Appendix
|
|
||||||
:section-refsig: Chapter
|
|
||||||
//set directories
|
|
||||||
:imagesdir: ./images
|
|
||||||
:iconsdir: ./icons
|
|
||||||
:stylesdir: ./styles
|
|
||||||
:scriptsdir: ./js
|
|
||||||
:pdf-themesdir: ./themes
|
|
||||||
:pdf-theme: mnrs-doc
|
|
||||||
:pdf-fontsdir: ./fonts
|
|
||||||
|
|
||||||
|
|
||||||
// unset toc, otherwise it appears in table cells -> known bug, should be fixed in later versions!
|
|
||||||
:toc!:
|
|
||||||
|
|
||||||
include::Overview.adoc[]
|
|
||||||
|
|
||||||
include::Reference.adoc[]
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino and students of MA course of Visual design. Some rights reserved.
|
|
||||||
|
|
||||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
||||||
This license is copied below, and is also available with a FAQ at:
|
|
||||||
http://scripts.sil.org/OFL
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
PREAMBLE
|
|
||||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
||||||
development of collaborative font projects, to support the font creation
|
|
||||||
efforts of academic and linguistic communities, and to provide a free and
|
|
||||||
open framework in which fonts may be shared and improved in partnership
|
|
||||||
with others.
|
|
||||||
|
|
||||||
The OFL allows the licensed fonts to be used, studied, modified and
|
|
||||||
redistributed freely as long as they are not sold by themselves. The
|
|
||||||
fonts, including any derivative works, can be bundled, embedded,
|
|
||||||
redistributed and/or sold with any software provided that any reserved
|
|
||||||
names are not used by derivative works. The fonts and derivatives,
|
|
||||||
however, cannot be released under any other type of license. The
|
|
||||||
requirement for fonts to remain under this license does not apply
|
|
||||||
to any document created using the fonts or their derivatives.
|
|
||||||
|
|
||||||
DEFINITIONS
|
|
||||||
"Font Software" refers to the set of files released by the Copyright
|
|
||||||
Holder(s) under this license and clearly marked as such. This may
|
|
||||||
include source files, build scripts and documentation.
|
|
||||||
|
|
||||||
"Reserved Font Name" refers to any names specified as such after the
|
|
||||||
copyright statement(s).
|
|
||||||
|
|
||||||
"Original Version" refers to the collection of Font Software components as
|
|
||||||
distributed by the Copyright Holder(s).
|
|
||||||
|
|
||||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
||||||
or substituting -- in part or in whole -- any of the components of the
|
|
||||||
Original Version, by changing formats or by porting the Font Software to a
|
|
||||||
new environment.
|
|
||||||
|
|
||||||
"Author" refers to any designer, engineer, programmer, technical
|
|
||||||
writer or other person who contributed to the Font Software.
|
|
||||||
|
|
||||||
PERMISSION & CONDITIONS
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
||||||
redistribute, and sell modified and unmodified copies of the Font
|
|
||||||
Software, subject to the following conditions:
|
|
||||||
|
|
||||||
1) Neither the Font Software nor any of its individual components,
|
|
||||||
in Original or Modified Versions, may be sold by itself.
|
|
||||||
|
|
||||||
2) Original or Modified Versions of the Font Software may be bundled,
|
|
||||||
redistributed and/or sold with any software, provided that each copy
|
|
||||||
contains the above copyright notice and this license. These can be
|
|
||||||
included either as stand-alone text files, human-readable headers or
|
|
||||||
in the appropriate machine-readable metadata fields within text or
|
|
||||||
binary files as long as those fields can be easily viewed by the user.
|
|
||||||
|
|
||||||
3) No Modified Version of the Font Software may use the Reserved Font
|
|
||||||
Name(s) unless explicit written permission is granted by the corresponding
|
|
||||||
Copyright Holder. This restriction only applies to the primary font name as
|
|
||||||
presented to the users.
|
|
||||||
|
|
||||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
||||||
Software shall not be used to promote, endorse or advertise any
|
|
||||||
Modified Version, except to acknowledge the contribution(s) of the
|
|
||||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
5) The Font Software, modified or unmodified, in part or in whole,
|
|
||||||
must be distributed entirely under this license, and must not be
|
|
||||||
distributed under any other license. The requirement for fonts to
|
|
||||||
remain under this license does not apply to any document created
|
|
||||||
using the Font Software.
|
|
||||||
|
|
||||||
TERMINATION
|
|
||||||
This license becomes null and void if any of the above conditions are
|
|
||||||
not met.
|
|
||||||
|
|
||||||
DISCLAIMER
|
|
||||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
||||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
||||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
||||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
||||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
||||||
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 21 KiB |
@@ -1,55 +0,0 @@
|
|||||||
page:
|
|
||||||
layout: portrait
|
|
||||||
margin: [2.3cm, 2cm, 2cm, 2.2cm]
|
|
||||||
size: A4
|
|
||||||
base:
|
|
||||||
font-color: #000000
|
|
||||||
font-color-mnrs-grey: #6a747c
|
|
||||||
font-color-mnrs-blue: #197788
|
|
||||||
font-family: titillium
|
|
||||||
font-size: 12
|
|
||||||
line-height-length: 16
|
|
||||||
line-height: $base-line-height-length / $base-font-size
|
|
||||||
align: justify
|
|
||||||
vertical-spacing: $base-line-height-length
|
|
||||||
heading:
|
|
||||||
font-color: $base-font-color-mnrs-grey
|
|
||||||
font-size: $base-font-size * 1.25
|
|
||||||
font-style: bold
|
|
||||||
line-height: $base-line-height * 1.2
|
|
||||||
margin-bottom: $vertical-spacing
|
|
||||||
link:
|
|
||||||
font-color: $base_font-color-mnrs-blue
|
|
||||||
outline-list:
|
|
||||||
indent: $base-font-size * 1.5
|
|
||||||
footer:
|
|
||||||
height: $base-line-height-length * 3.0
|
|
||||||
font-color: $base-font-color-mnrs-grey
|
|
||||||
font-size: $base-font-size * 0.9
|
|
||||||
line-height: 1
|
|
||||||
recto:
|
|
||||||
left:
|
|
||||||
content: '{description} v{revision}, © 2021 MINRES'
|
|
||||||
right:
|
|
||||||
content: '{page-number}'
|
|
||||||
verso:
|
|
||||||
left:
|
|
||||||
content: $footer_recto_right_content
|
|
||||||
right:
|
|
||||||
content: $footer_recto_left_content
|
|
||||||
table:
|
|
||||||
border_color: $base-font-color
|
|
||||||
border_width: 0.1
|
|
||||||
title-page:
|
|
||||||
align: right
|
|
||||||
font-color: $base-font-color-mnrs-grey
|
|
||||||
font-size: $base-font-size * 1.80
|
|
||||||
font-style: bold
|
|
||||||
font:
|
|
||||||
fallbacks: titilliumtext22l002-webfont.ttf
|
|
||||||
catalog:
|
|
||||||
titillium:
|
|
||||||
normal: titilliumtext22l002-webfont.ttf
|
|
||||||
bold: titilliumtext22l005-webfont.ttf
|
|
||||||
italic: TitilliumWeb-Italic.ttf
|
|
||||||
bold_italic: TitilliumWeb-BoldItalic.ttf
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/SCViewerHelp.xml
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
P.Code {
|
|
||||||
display: block;
|
|
||||||
text-align: left;
|
|
||||||
text-indent: 0.00pt;
|
|
||||||
margin-top: 0.000000pt;
|
|
||||||
margin-bottom: 0.000000pt;
|
|
||||||
margin-right: 0.000000pt;
|
|
||||||
margin-left: 1.5em;
|
|
||||||
font-size: 100%;
|
|
||||||
font-weight: medium;
|
|
||||||
font-style: Regular;
|
|
||||||
color: #4444CC;
|
|
||||||
text-decoration: none;
|
|
||||||
vertical-align: baseline;
|
|
||||||
text-transform: none;
|
|
||||||
font-family: "Courier New";
|
|
||||||
}
|
|
||||||
H6.CaptionFigColumn {
|
|
||||||
display: block;
|
|
||||||
text-align: left;
|
|
||||||
text-indent: 0.000000pt;
|
|
||||||
margin-top: 0.3em;
|
|
||||||
margin-bottom: 1.1em;
|
|
||||||
margin-right: 0.000000pt;
|
|
||||||
margin-left: 0.000000pt;
|
|
||||||
font-size: 90%;
|
|
||||||
font-weight: medium;
|
|
||||||
font-style: Italic;
|
|
||||||
color: #000000;
|
|
||||||
text-decoration: none;
|
|
||||||
vertical-align: baseline;
|
|
||||||
text-transform: none;
|
|
||||||
font-family: "Arial";
|
|
||||||
}
|
|
||||||
P.Note {
|
|
||||||
display: block;
|
|
||||||
text-align: left;
|
|
||||||
text-indent: 0pt;
|
|
||||||
margin-top: 1.95em;
|
|
||||||
margin-bottom: 1.95em;
|
|
||||||
margin-right: 0.000000pt;
|
|
||||||
margin-left: 3.0em;
|
|
||||||
font-size: 110%;
|
|
||||||
font-weight: medium;
|
|
||||||
font-style: Italic;
|
|
||||||
color: #000000;
|
|
||||||
text-decoration: none;
|
|
||||||
vertical-align: baseline;
|
|
||||||
text-transform: none;
|
|
||||||
font-family: "Arial";
|
|
||||||
}
|
|
||||||
EM.UILabel {
|
|
||||||
font-weight: Bold;
|
|
||||||
font-style: Regular;
|
|
||||||
text-decoration: none;
|
|
||||||
vertical-align: baseline;
|
|
||||||
text-transform: none;
|
|
||||||
}
|
|
||||||
EM.CodeName {
|
|
||||||
font-weight: Bold;
|
|
||||||
font-style: Regular;
|
|
||||||
text-decoration: none;
|
|
||||||
vertical-align: baseline;
|
|
||||||
text-transform: none;
|
|
||||||
font-family:"Courier New";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
body, html { border: 0px }
|
|
||||||
|
|
||||||
/* following font face declarations need to be removed for DBCS */
|
|
||||||
|
|
||||||
body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font: message-box; color: #000000}
|
|
||||||
pre { font-family: Courier, monospace}
|
|
||||||
|
|
||||||
/* end font face declarations */
|
|
||||||
|
|
||||||
/* following font size declarations should be OK for DBCS */
|
|
||||||
body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font: message-box; }
|
|
||||||
pre { font-size: 100% }
|
|
||||||
code,samp { font-size: 100%; }
|
|
||||||
|
|
||||||
/* end font size declarations */
|
|
||||||
|
|
||||||
body { background: #FFFFFF}
|
|
||||||
h1 { font-size: 180%; font-weight: medium; margin-top: 0.28em; margin-bottom: 0.05em; color: Highlight }
|
|
||||||
h2 { font-size: 140%; font-weight: bold; margin-top: 0.22em; margin-bottom: 3; color: Highlight }
|
|
||||||
h3 { font-size: 110%; font-weight: bold; margin-top: 0.18em; margin-bottom: 3 }
|
|
||||||
h4 { font-size: 100%; font-weight: bold; margin-top: 0.2em; margin-bottom: 3; font-style: italic }
|
|
||||||
p { margin-top: 1.0em; margin-bottom: 1.0em }
|
|
||||||
pre { margin-left: 6; font-size: 90% }
|
|
||||||
a:link { color: #0000FF }
|
|
||||||
a:hover { color: #000080 }
|
|
||||||
a:visited { text-decoration: underline }
|
|
||||||
ul { margin-top: 0;
|
|
||||||
margin-bottom: 1.0em;
|
|
||||||
margin-left : 1.0em;
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
li { margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
padding-left: 0;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
li p { margin-top: 0; margin-bottom: 0 }
|
|
||||||
ol { margin-top: 0;
|
|
||||||
margin-bottom: 10;
|
|
||||||
padding-left: 0;
|
|
||||||
margin-left: 1.4em }
|
|
||||||
dl { margin-top: 0; margin-bottom: 10 }
|
|
||||||
dt { margin-top: 0; margin-bottom: 0; font-weight: bold }
|
|
||||||
dd { margin-top: 0; margin-bottom: 0 }
|
|
||||||
strong { font-weight: bold}
|
|
||||||
em { font-style: italic}
|
|
||||||
var { font-style: italic}
|
|
||||||
div.revision { border-left-style: solid; border-left-width: thin;
|
|
||||||
border-left-color: #7B68EE; padding-left:5 }
|
|
||||||
th { font-weight: bold }
|
|
||||||
|
|
||||||
.figure-contents .mediaobject img {
|
|
||||||
width: 100%;
|
|
||||||
heigth: auto;
|
|
||||||
}
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
P.Code {
|
|
||||||
display: block;
|
|
||||||
text-align: left;
|
|
||||||
text-indent: 0.00pt;
|
|
||||||
margin-top: 0.000000pt;
|
|
||||||
margin-bottom: 0.000000pt;
|
|
||||||
margin-right: 0.000000pt;
|
|
||||||
margin-left: 15pt;
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
color: #4444CC;
|
|
||||||
text-decoration: none;
|
|
||||||
vertical-align: baseline;
|
|
||||||
text-transform: none;
|
|
||||||
font-family: "Courier New", Courier, monospace;
|
|
||||||
}
|
|
||||||
H6.CaptionFigColumn {
|
|
||||||
display: block;
|
|
||||||
text-align: left;
|
|
||||||
text-indent: 0.000000pt;
|
|
||||||
margin-top: 3.000000pt;
|
|
||||||
margin-bottom: 11.000000pt;
|
|
||||||
margin-right: 0.000000pt;
|
|
||||||
margin-left: 0.000000pt;
|
|
||||||
font-size: 75%;
|
|
||||||
font-weight: bold;
|
|
||||||
font-style: Italic;
|
|
||||||
color: #000000;
|
|
||||||
text-decoration: none;
|
|
||||||
vertical-align: baseline;
|
|
||||||
text-transform: none;
|
|
||||||
}
|
|
||||||
P.Note {
|
|
||||||
display: block;
|
|
||||||
text-align: left;
|
|
||||||
text-indent: 0pt;
|
|
||||||
margin-top: 19.500000pt;
|
|
||||||
margin-bottom: 19.500000pt;
|
|
||||||
margin-right: 0.000000pt;
|
|
||||||
margin-left: 30pt;
|
|
||||||
font-size: 110%;
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: Italic;
|
|
||||||
color: #000000;
|
|
||||||
text-decoration: none;
|
|
||||||
vertical-align: baseline;
|
|
||||||
text-transform: none;
|
|
||||||
}
|
|
||||||
EM.UILabel {
|
|
||||||
font-weight: Bold;
|
|
||||||
font-style: normal;
|
|
||||||
text-decoration: none;
|
|
||||||
vertical-align: baseline;
|
|
||||||
text-transform: none;
|
|
||||||
}
|
|
||||||
EM.CodeName {
|
|
||||||
font-weight: Bold;
|
|
||||||
font-style: normal;
|
|
||||||
text-decoration: none;
|
|
||||||
vertical-align: baseline;
|
|
||||||
text-transform: none;
|
|
||||||
font-family: "Courier New", Courier, monospace;
|
|
||||||
}
|
|
||||||
UL.NavList {
|
|
||||||
margin-left: 1.5em;
|
|
||||||
padding-left: 0px;
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
body, html { border: 0px }
|
|
||||||
|
|
||||||
|
|
||||||
/* following font face declarations need to be removed for DBCS */
|
|
||||||
|
|
||||||
body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: Arial, Helvetica, sans-serif; color: #000000}
|
|
||||||
pre, code { font-family: "Courier New", Courier, monospace;}
|
|
||||||
|
|
||||||
/* end font face declarations */
|
|
||||||
|
|
||||||
@media print {
|
|
||||||
html { font-size: 12pt }
|
|
||||||
}
|
|
||||||
|
|
||||||
body { font-size: 83%; background: #FFFFFF; margin-bottom: 1em }
|
|
||||||
h1 { font-size: 180%; margin-top: 5px; margin-bottom: 1px }
|
|
||||||
h2 { font-size: 140%; margin-top: 25px; margin-bottom: 3px }
|
|
||||||
h3 { font-size: 110%; margin-top: 20px; margin-bottom: 3px }
|
|
||||||
h4 { font-size: 100%; margin-top: 20px; margin-bottom: 3px; font-style: italic }
|
|
||||||
p { margin-top: 10px; margin-bottom: 10px }
|
|
||||||
pre { font-size: 93%; margin-left: 6; color: #4444CC }
|
|
||||||
code { font-size: 93%; }
|
|
||||||
table { font-size: 100% } /* needed for quirks mode */
|
|
||||||
a:link { color: #0000FF }
|
|
||||||
a:hover { color: #000080 }
|
|
||||||
a:visited { text-decoration: underline }
|
|
||||||
ul { margin-top: 10px; margin-bottom: 10px; }
|
|
||||||
li { margin-top: 5px; margin-bottom: 5px; }
|
|
||||||
li p { margin-top: 5px; margin-bottom: 5px; }
|
|
||||||
ol { margin-top: 10px; margin-bottom: 10px; }
|
|
||||||
dl { margin-top: 10px; margin-bottom: 10px; }
|
|
||||||
dt { margin-top: 5px; margin-bottom: 5px; font-weight: bold; }
|
|
||||||
dd { margin-top: 5px; margin-bottom: 5px; }
|
|
||||||
strong { font-weight: bold}
|
|
||||||
em { font-style: italic}
|
|
||||||
var { font-style: italic}
|
|
||||||
div.revision { border-left-style: solid; border-left-width: thin;
|
|
||||||
border-left-color: #7B68EE; padding-left:5 }
|
|
||||||
th { font-weight: bold }
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/*.png
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/target/
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.minres.scviewer.database.feature</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
|
||||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
activeProfiles=
|
|
||||||
eclipse.preferences.version=1
|
|
||||||
resolveWorkspaceProjects=true
|
|
||||||
version=1
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
bin.includes = feature.xml,\
|
|
||||||
feature.properties
|
|
||||||
src.includes = feature.properties,\
|
|
||||||
feature.xml
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
featureName=SystemC simulation results viewer database loaders
|
|
||||||
providerName=MINRES Technologies GmbH
|
|
||||||
updateSiteName=SC Viewer Database Loader Updates
|
|
||||||
description=A viewer for SystemC Verification Library transactions and VCD signals.
|
|
||||||
licenseURL=license.html
|
|
||||||
license=\
|
|
||||||
ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
|
|
||||||
March 17, 2005\n\
|
|
||||||
\n\
|
|
||||||
Usage Of Content\n\
|
|
||||||
\n\
|
|
||||||
THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
|
|
||||||
OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
|
|
||||||
USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
|
|
||||||
AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
|
|
||||||
NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
|
|
||||||
AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
|
|
||||||
AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
|
|
||||||
OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
|
|
||||||
TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
|
|
||||||
OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
|
|
||||||
BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
|
|
||||||
\n\
|
|
||||||
Applicable Licenses\n\
|
|
||||||
\n\
|
|
||||||
Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
|
|
||||||
is provided to you under the terms and conditions of the Eclipse Public\n\
|
|
||||||
License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
|
|
||||||
Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
|
|
||||||
For purposes of the EPL, "Program" will mean the Content.\n\
|
|
||||||
\n\
|
|
||||||
Content includes, but is not limited to, source code, object code,\n\
|
|
||||||
documentation and other files maintained in the Eclipse.org CVS\n\
|
|
||||||
repository ("Repository") in CVS modules ("Modules") and made available\n\
|
|
||||||
as downloadable archives ("Downloads").\n\
|
|
||||||
\n\
|
|
||||||
- Content may be structured and packaged into modules to facilitate delivering,\n\
|
|
||||||
extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
|
|
||||||
plug-in fragments ("Fragments"), and features ("Features").\n\
|
|
||||||
- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
|
|
||||||
in a directory named "plugins".\n\
|
|
||||||
- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
|
|
||||||
Each Feature may be packaged as a sub-directory in a directory named "features".\n\
|
|
||||||
Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
|
|
||||||
numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
|
|
||||||
- Features may also include other Features ("Included Features"). Within a Feature, files\n\
|
|
||||||
named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
|
|
||||||
\n\
|
|
||||||
Features may also include other Features ("Included Features"). Files named\n\
|
|
||||||
"feature.xml" may contain a list of the names and version numbers of\n\
|
|
||||||
Included Features.\n\
|
|
||||||
\n\
|
|
||||||
The terms and conditions governing Plug-ins and Fragments should be\n\
|
|
||||||
contained in files named "about.html" ("Abouts"). The terms and\n\
|
|
||||||
conditions governing Features and Included Features should be contained\n\
|
|
||||||
in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
|
|
||||||
Licenses may be located in any directory of a Download or Module\n\
|
|
||||||
including, but not limited to the following locations:\n\
|
|
||||||
\n\
|
|
||||||
- The top-level (root) directory\n\
|
|
||||||
- Plug-in and Fragment directories\n\
|
|
||||||
- Inside Plug-ins and Fragments packaged as JARs\n\
|
|
||||||
- Sub-directories of the directory named "src" of certain Plug-ins\n\
|
|
||||||
- Feature directories\n\
|
|
||||||
\n\
|
|
||||||
Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
|
|
||||||
Eclipse Update Manager, you must agree to a license ("Feature Update\n\
|
|
||||||
License") during the installation process. If the Feature contains\n\
|
|
||||||
Included Features, the Feature Update License should either provide you\n\
|
|
||||||
with the terms and conditions governing the Included Features or inform\n\
|
|
||||||
you where you can locate them. Feature Update Licenses may be found in\n\
|
|
||||||
the "license" property of files named "feature.properties". Such Abouts,\n\
|
|
||||||
Feature Licenses and Feature Update Licenses contain the terms and\n\
|
|
||||||
conditions (or references to such terms and conditions) that govern your\n\
|
|
||||||
use of the associated Content in that directory.\n\
|
|
||||||
\n\
|
|
||||||
THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
|
|
||||||
TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
|
|
||||||
SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
|
|
||||||
\n\
|
|
||||||
- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
|
|
||||||
- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
|
|
||||||
- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
|
|
||||||
- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
|
|
||||||
- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
|
|
||||||
- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
|
|
||||||
\n\
|
|
||||||
IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
|
|
||||||
TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
|
|
||||||
is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
|
|
||||||
govern that particular Content.\n\
|
|
||||||
\n\
|
|
||||||
Cryptography\n\
|
|
||||||
\n\
|
|
||||||
Content may contain encryption software. The country in which you are\n\
|
|
||||||
currently may have restrictions on the import, possession, and use,\n\
|
|
||||||
and/or re-export to another country, of encryption software. BEFORE\n\
|
|
||||||
using any encryption software, please check the country's laws,\n\
|
|
||||||
regulations and policies concerning the import, possession, or use,\n\
|
|
||||||
and re-export of encryption software, to see if this is permitted.\n\
|
|
||||||
\n\
|
|
||||||
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<feature
|
|
||||||
id="com.minres.scviewer.database.feature"
|
|
||||||
label="%featureName"
|
|
||||||
version="3.0.0.qualifier"
|
|
||||||
provider-name="%providerName">
|
|
||||||
|
|
||||||
<description>
|
|
||||||
The database loaders for SystemC Verification Library transactions and VCD signals. They support SQLite based recording as well as the built-in text base recording.
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<copyright>
|
|
||||||
Copyright (c) 2015-2021 MINRES Technologies GmbH.
|
|
||||||
All rights reserved. This program and the accompanying materials
|
|
||||||
are made available under the terms of the Eclipse Public License
|
|
||||||
v1.0 which accompanies this distribution, and is available at
|
|
||||||
http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<license url="%licenseURL">
|
|
||||||
%license
|
|
||||||
</license>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<update label="%updateSiteName" url="http://www.minres.com/scviewer/update"/>
|
|
||||||
<discovery label="MINRES Website" url="http://www.minres.com"/>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<requires>
|
|
||||||
<import plugin="org.eclipse.osgi.services" version="3.4.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="com.google.guava" version="15.0.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.osgi"/>
|
|
||||||
<import plugin="com.minres.scviewer.database" version="1.0.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.core.runtime"/>
|
|
||||||
<import feature="org.eclipse.collections.feature" version="10.4.0.v20200820-2049"/>
|
|
||||||
</requires>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.minres.scviewer.database"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.minres.scviewer.database.text"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.minres.scviewer.database.sqlite"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.minres.scviewer.database.vcd"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.google.guava"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.minres.scviewer.database.ftr"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
</feature>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>com.minres.scviewer.database.feature</artifactId>
|
|
||||||
<packaging>eclipse-feature</packaging>
|
|
||||||
<parent>
|
|
||||||
<groupId>com.minres.scviewer</groupId>
|
|
||||||
<artifactId>com.minres.scviewer.parent</artifactId>
|
|
||||||
<version>2.17.1</version>
|
|
||||||
<relativePath>../..</relativePath>
|
|
||||||
</parent>
|
|
||||||
<version>3.0.0-SNAPSHOT</version>
|
|
||||||
</project>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/target/
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.minres.scviewer.e4.feature</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
bin.includes = feature.xml
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<feature
|
|
||||||
id="com.minres.scviewer.e4.feature"
|
|
||||||
label="SCViewer Feature"
|
|
||||||
version="1.1.0.qualifier"
|
|
||||||
provider-name="MINRES Technologies GmbH">
|
|
||||||
|
|
||||||
<description url="http://www.example.com/description">
|
|
||||||
[Enter Feature Description here.]
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<copyright url="http://www.example.com/copyright">
|
|
||||||
[Enter Copyright Description here.]
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<license url="http://www.example.com/license">
|
|
||||||
[Enter License Description here.]
|
|
||||||
</license>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<update label="SC Viewer Updates" url="http://www.minres.com/scviewer/update"/>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<requires>
|
|
||||||
<import plugin="javax.inject" version="1.0.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.core.runtime" version="3.11.1" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.swt" version="3.104.1" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.e4.ui.model.workbench" version="1.1.100" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.jface" version="3.11.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.e4.ui.services" version="1.2.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.e4.ui.workbench" version="1.3.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.e4.core.di" version="1.5.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.e4.ui.di" version="1.1.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.e4.core.contexts" version="1.4.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.osgi.services" version="3.5.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.e4.core.services" version="2.0.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.core.jobs"/>
|
|
||||||
<import plugin="org.eclipse.osgi"/>
|
|
||||||
<import plugin="org.eclipse.equinox.preferences"/>
|
|
||||||
<import plugin="org.eclipse.core.expressions"/>
|
|
||||||
<import plugin="org.eclipse.e4.core.commands" version="0.11.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.e4.core.di.extensions"/>
|
|
||||||
<import plugin="org.eclipse.e4.ui.css.swt.theme" version="0.10.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.core.resources" version="3.13.0" match="greaterOrEqual"/>
|
|
||||||
<import feature="com.opcoach.e4.preferences.feature" version="1.3.0.202004072127"/>
|
|
||||||
<import feature="org.eclipse.equinox.executable" version="3.8.700.v20200207-2156"/>
|
|
||||||
<import feature="org.eclipse.rcptt.core" version="2.5.1.M3"/>
|
|
||||||
<import plugin="org.eclipse.core.commands"/>
|
|
||||||
<import feature="com.minres.scviewer.database.feature" version="3.0.0.qualifier"/>
|
|
||||||
<import feature="com.minres.scviewer.ui.feature" version="1.1.0.qualifier"/>
|
|
||||||
</requires>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.minres.scviewer.e4.application"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.opcoach.e4.preferences"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
</feature>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>com.minres.scviewer.e4.feature</artifactId>
|
|
||||||
<packaging>eclipse-feature</packaging>
|
|
||||||
<parent>
|
|
||||||
<groupId>com.minres.scviewer</groupId>
|
|
||||||
<artifactId>com.minres.scviewer.parent</artifactId>
|
|
||||||
<version>2.17.1</version>
|
|
||||||
<relativePath>../..</relativePath>
|
|
||||||
</parent>
|
|
||||||
<version>1.1.0-SNAPSHOT</version>
|
|
||||||
</project>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/target/
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.minres.scviewer.e4.help.feature</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
bin.includes = feature.xml
|
|
||||||
@@ -1,207 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<feature
|
|
||||||
id="com.minres.scviewer.e4.help.feature"
|
|
||||||
label="Feature"
|
|
||||||
version="1.0.0.qualifier"
|
|
||||||
provider-name="MINRES Technologies GmbH">
|
|
||||||
|
|
||||||
<description url="http://www.example.com/description">
|
|
||||||
[Enter Feature Description here.]
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<copyright url="http://www.example.com/copyright">
|
|
||||||
[Enter Copyright Description here.]
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<license url="http://www.example.com/license">
|
|
||||||
[Enter License Description here.]
|
|
||||||
</license>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.help"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.help.webapp"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.help.base"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.apache.lucene.core"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.apache.lucene.analyzers-common"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.apache.lucene.analyzers-smartcn"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.core.net"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.equinox.security"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.equinox.security.linux.x86_64"
|
|
||||||
os="linux"
|
|
||||||
arch="x86_64"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
fragment="true"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="javax.el"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="javax.servlet"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="javax.servlet.jsp"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.equinox.http.jetty"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.equinox.http.registry"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.equinox.http.servlet"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.equinox.jsp.jasper"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.equinox.jsp.jasper.registry"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.apache.jasper.glassfish"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.jetty.http"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.jetty.io"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.jetty.security"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.jetty.server"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.jetty.servlet"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.jetty.util"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.minres.scviewer.e4.application.help"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.equinox.security.win32.x86_64"
|
|
||||||
os="win32"
|
|
||||||
arch="x86_64"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
fragment="true"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
</feature>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>com.minres.scviewer.e4.help.feature</artifactId>
|
|
||||||
<packaging>eclipse-feature</packaging>
|
|
||||||
<parent>
|
|
||||||
<groupId>com.minres.scviewer</groupId>
|
|
||||||
<artifactId>com.minres.scviewer.parent</artifactId>
|
|
||||||
<version>2.17.1</version>
|
|
||||||
<relativePath>../..</relativePath>
|
|
||||||
</parent>
|
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
|
||||||
</project>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/target/
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.minres.scviewer.e4.platform.feature</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
bin.includes = feature.xml
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<feature
|
|
||||||
id="com.minres.scviewer.e4.platform.feature"
|
|
||||||
label="SCViewer Platform Feature"
|
|
||||||
version="1.0.0.qualifier"
|
|
||||||
provider-name="MINRES Technologies GmbH">
|
|
||||||
|
|
||||||
<description url="http://www.example.com/description">
|
|
||||||
[Enter Feature Description here.]
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<copyright url="http://www.example.com/copyright">
|
|
||||||
[Enter Copyright Description here.]
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<license url="http://www.example.com/license">
|
|
||||||
[Enter License Description here.]
|
|
||||||
</license>
|
|
||||||
|
|
||||||
<includes
|
|
||||||
id="org.eclipse.e4.rcp"
|
|
||||||
version="0.0.0"/>
|
|
||||||
|
|
||||||
<includes
|
|
||||||
id="org.eclipse.emf.ecore"
|
|
||||||
version="0.0.0"/>
|
|
||||||
|
|
||||||
<includes
|
|
||||||
id="org.eclipse.emf.common"
|
|
||||||
version="0.0.0"/>
|
|
||||||
|
|
||||||
<includes
|
|
||||||
id="org.eclipse.collections.feature"
|
|
||||||
version="0.0.0"/>
|
|
||||||
|
|
||||||
<requires>
|
|
||||||
<import plugin="org.eclipse.core.expressions" version="3.2.0" match="compatible"/>
|
|
||||||
<import plugin="org.eclipse.core.filesystem" version="1.3.0" match="compatible"/>
|
|
||||||
<import plugin="org.eclipse.core.runtime" version="3.12.0" match="compatible"/>
|
|
||||||
<import plugin="org.eclipse.equinox.common" version="3.2.0" match="compatible"/>
|
|
||||||
<import plugin="org.eclipse.equinox.registry" version="3.2.0" match="compatible"/>
|
|
||||||
<import plugin="org.eclipse.osgi" version="3.2.0" match="compatible"/>
|
|
||||||
</requires>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.core.resources"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.core.filesystem"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.core.filesystem.linux.x86_64"
|
|
||||||
os="linux"
|
|
||||||
arch="x86_64"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
fragment="true"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.eclipse.core.filesystem.win32.x86_64"
|
|
||||||
os="win32"
|
|
||||||
arch="x86_64"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
fragment="true"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
</feature>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>com.minres.scviewer.e4.platform.feature</artifactId>
|
|
||||||
<packaging>eclipse-feature</packaging>
|
|
||||||
<parent>
|
|
||||||
<groupId>com.minres.scviewer</groupId>
|
|
||||||
<artifactId>com.minres.scviewer.parent</artifactId>
|
|
||||||
<version>2.17.1</version>
|
|
||||||
<relativePath>../..</relativePath>
|
|
||||||
</parent>
|
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
|
||||||
</project>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/target/
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.minres.scviewer.feature</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
|
||||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
activeProfiles=
|
|
||||||
eclipse.preferences.version=1
|
|
||||||
resolveWorkspaceProjects=true
|
|
||||||
version=1
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
bin.includes = feature.xml,\
|
|
||||||
feature.properties
|
|
||||||
src.includes = feature.properties,\
|
|
||||||
feature.xml
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
featureName=SystemC simulation results viewer
|
|
||||||
providerName=MINRES Technologies GmbH
|
|
||||||
updateSiteName=SC Viewer Updates
|
|
||||||
description=A viewer for SystemC Verification Library transactions and VCD signals.
|
|
||||||
licenseURL=license.html
|
|
||||||
license=\
|
|
||||||
ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
|
|
||||||
March 17, 2005\n\
|
|
||||||
\n\
|
|
||||||
Usage Of Content\n\
|
|
||||||
\n\
|
|
||||||
THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
|
|
||||||
OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
|
|
||||||
USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
|
|
||||||
AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
|
|
||||||
NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
|
|
||||||
AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
|
|
||||||
AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
|
|
||||||
OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
|
|
||||||
TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
|
|
||||||
OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
|
|
||||||
BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
|
|
||||||
\n\
|
|
||||||
Applicable Licenses\n\
|
|
||||||
\n\
|
|
||||||
Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
|
|
||||||
is provided to you under the terms and conditions of the Eclipse Public\n\
|
|
||||||
License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
|
|
||||||
Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
|
|
||||||
For purposes of the EPL, "Program" will mean the Content.\n\
|
|
||||||
\n\
|
|
||||||
Content includes, but is not limited to, source code, object code,\n\
|
|
||||||
documentation and other files maintained in the Eclipse.org CVS\n\
|
|
||||||
repository ("Repository") in CVS modules ("Modules") and made available\n\
|
|
||||||
as downloadable archives ("Downloads").\n\
|
|
||||||
\n\
|
|
||||||
- Content may be structured and packaged into modules to facilitate delivering,\n\
|
|
||||||
extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
|
|
||||||
plug-in fragments ("Fragments"), and features ("Features").\n\
|
|
||||||
- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
|
|
||||||
in a directory named "plugins".\n\
|
|
||||||
- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
|
|
||||||
Each Feature may be packaged as a sub-directory in a directory named "features".\n\
|
|
||||||
Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
|
|
||||||
numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
|
|
||||||
- Features may also include other Features ("Included Features"). Within a Feature, files\n\
|
|
||||||
named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
|
|
||||||
\n\
|
|
||||||
Features may also include other Features ("Included Features"). Files named\n\
|
|
||||||
"feature.xml" may contain a list of the names and version numbers of\n\
|
|
||||||
Included Features.\n\
|
|
||||||
\n\
|
|
||||||
The terms and conditions governing Plug-ins and Fragments should be\n\
|
|
||||||
contained in files named "about.html" ("Abouts"). The terms and\n\
|
|
||||||
conditions governing Features and Included Features should be contained\n\
|
|
||||||
in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
|
|
||||||
Licenses may be located in any directory of a Download or Module\n\
|
|
||||||
including, but not limited to the following locations:\n\
|
|
||||||
\n\
|
|
||||||
- The top-level (root) directory\n\
|
|
||||||
- Plug-in and Fragment directories\n\
|
|
||||||
- Inside Plug-ins and Fragments packaged as JARs\n\
|
|
||||||
- Sub-directories of the directory named "src" of certain Plug-ins\n\
|
|
||||||
- Feature directories\n\
|
|
||||||
\n\
|
|
||||||
Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
|
|
||||||
Eclipse Update Manager, you must agree to a license ("Feature Update\n\
|
|
||||||
License") during the installation process. If the Feature contains\n\
|
|
||||||
Included Features, the Feature Update License should either provide you\n\
|
|
||||||
with the terms and conditions governing the Included Features or inform\n\
|
|
||||||
you where you can locate them. Feature Update Licenses may be found in\n\
|
|
||||||
the "license" property of files named "feature.properties". Such Abouts,\n\
|
|
||||||
Feature Licenses and Feature Update Licenses contain the terms and\n\
|
|
||||||
conditions (or references to such terms and conditions) that govern your\n\
|
|
||||||
use of the associated Content in that directory.\n\
|
|
||||||
\n\
|
|
||||||
THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
|
|
||||||
TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
|
|
||||||
SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
|
|
||||||
\n\
|
|
||||||
- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
|
|
||||||
- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
|
|
||||||
- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
|
|
||||||
- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
|
|
||||||
- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
|
|
||||||
- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
|
|
||||||
\n\
|
|
||||||
IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
|
|
||||||
TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
|
|
||||||
is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
|
|
||||||
govern that particular Content.\n\
|
|
||||||
\n\
|
|
||||||
Cryptography\n\
|
|
||||||
\n\
|
|
||||||
Content may contain encryption software. The country in which you are\n\
|
|
||||||
currently may have restrictions on the import, possession, and use,\n\
|
|
||||||
and/or re-export to another country, of encryption software. BEFORE\n\
|
|
||||||
using any encryption software, please check the country's laws,\n\
|
|
||||||
regulations and policies concerning the import, possession, or use,\n\
|
|
||||||
and re-export of encryption software, to see if this is permitted.\n\
|
|
||||||
\n\
|
|
||||||
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<feature
|
|
||||||
id="com.minres.scviewer.feature"
|
|
||||||
label="%featureName"
|
|
||||||
version="1.1.0.qualifier"
|
|
||||||
provider-name="%providerName">
|
|
||||||
|
|
||||||
<description>
|
|
||||||
A viewer for SystemC Verification Library transactions and VCD
|
|
||||||
signals. It supports a SQLite based recording as well as the
|
|
||||||
built-in text base recording.
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<copyright>
|
|
||||||
Copyright (c) 2015-2021 MINRES Technologies GmbH.
|
|
||||||
All rights reserved. This program and the accompanying materials
|
|
||||||
are made available under the terms of the Eclipse Public License
|
|
||||||
v1.0 which accompanies this distribution, and is available at
|
|
||||||
http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<license url="%licenseURL">
|
|
||||||
%license
|
|
||||||
</license>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<discovery label="MINRES Website" url="http://www.minres.com"/>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<requires>
|
|
||||||
<import plugin="org.hamcrest.core" version="1.3.0" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.core.runtime"/>
|
|
||||||
<import plugin="org.eclipse.core.resources"/>
|
|
||||||
<import plugin="org.eclipse.jface.text"/>
|
|
||||||
<import plugin="org.eclipse.ui"/>
|
|
||||||
<import plugin="org.eclipse.ui.editors"/>
|
|
||||||
<import plugin="org.eclipse.ui.ide"/>
|
|
||||||
<import plugin="org.eclipse.ui.views.properties.tabbed"/>
|
|
||||||
<import plugin="org.eclipse.swt"/>
|
|
||||||
<import plugin="org.eclipse.osgi"/>
|
|
||||||
<import plugin="org.eclipse.core.expressions" version="3.4.600" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.jface"/>
|
|
||||||
<import feature="com.minres.scviewer.database.feature" version="3.0.0.qualifier"/>
|
|
||||||
<import feature="com.minres.scviewer.ui.feature" version="1.1.0.qualifier"/>
|
|
||||||
</requires>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.junit"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="org.hamcrest.core"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.minres.scviewer.ui"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
</feature>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>com.minres.scviewer.feature</artifactId>
|
|
||||||
<packaging>eclipse-feature</packaging>
|
|
||||||
<parent>
|
|
||||||
<groupId>com.minres.scviewer</groupId>
|
|
||||||
<artifactId>com.minres.scviewer.parent</artifactId>
|
|
||||||
<version>2.17.1</version>
|
|
||||||
<relativePath>../..</relativePath>
|
|
||||||
</parent>
|
|
||||||
<version>1.1.0-SNAPSHOT</version>
|
|
||||||
</project>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/target/
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.minres.scviewer.ui.feature</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
bin.includes = feature.xml,\
|
|
||||||
feature.properties
|
|
||||||
src.includes = feature.properties,\
|
|
||||||
feature.xml
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
featureName=SCViewer UI elements
|
|
||||||
providerName=MINRES Technologies GmbH
|
|
||||||
updateSiteName=SC Viewer UI Updates
|
|
||||||
description=A viewer for SystemC Verification Library transactions and VCD signals.
|
|
||||||
licenseURL=license.html
|
|
||||||
license=\
|
|
||||||
ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
|
|
||||||
March 17, 2005\n\
|
|
||||||
\n\
|
|
||||||
Usage Of Content\n\
|
|
||||||
\n\
|
|
||||||
THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
|
|
||||||
OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
|
|
||||||
USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
|
|
||||||
AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
|
|
||||||
NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
|
|
||||||
AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
|
|
||||||
AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
|
|
||||||
OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
|
|
||||||
TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
|
|
||||||
OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
|
|
||||||
BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
|
|
||||||
\n\
|
|
||||||
Applicable Licenses\n\
|
|
||||||
\n\
|
|
||||||
Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
|
|
||||||
is provided to you under the terms and conditions of the Eclipse Public\n\
|
|
||||||
License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
|
|
||||||
Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
|
|
||||||
For purposes of the EPL, "Program" will mean the Content.\n\
|
|
||||||
\n\
|
|
||||||
Content includes, but is not limited to, source code, object code,\n\
|
|
||||||
documentation and other files maintained in the Eclipse.org CVS\n\
|
|
||||||
repository ("Repository") in CVS modules ("Modules") and made available\n\
|
|
||||||
as downloadable archives ("Downloads").\n\
|
|
||||||
\n\
|
|
||||||
- Content may be structured and packaged into modules to facilitate delivering,\n\
|
|
||||||
extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
|
|
||||||
plug-in fragments ("Fragments"), and features ("Features").\n\
|
|
||||||
- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
|
|
||||||
in a directory named "plugins".\n\
|
|
||||||
- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
|
|
||||||
Each Feature may be packaged as a sub-directory in a directory named "features".\n\
|
|
||||||
Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
|
|
||||||
numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
|
|
||||||
- Features may also include other Features ("Included Features"). Within a Feature, files\n\
|
|
||||||
named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
|
|
||||||
\n\
|
|
||||||
Features may also include other Features ("Included Features"). Files named\n\
|
|
||||||
"feature.xml" may contain a list of the names and version numbers of\n\
|
|
||||||
Included Features.\n\
|
|
||||||
\n\
|
|
||||||
The terms and conditions governing Plug-ins and Fragments should be\n\
|
|
||||||
contained in files named "about.html" ("Abouts"). The terms and\n\
|
|
||||||
conditions governing Features and Included Features should be contained\n\
|
|
||||||
in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
|
|
||||||
Licenses may be located in any directory of a Download or Module\n\
|
|
||||||
including, but not limited to the following locations:\n\
|
|
||||||
\n\
|
|
||||||
- The top-level (root) directory\n\
|
|
||||||
- Plug-in and Fragment directories\n\
|
|
||||||
- Inside Plug-ins and Fragments packaged as JARs\n\
|
|
||||||
- Sub-directories of the directory named "src" of certain Plug-ins\n\
|
|
||||||
- Feature directories\n\
|
|
||||||
\n\
|
|
||||||
Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
|
|
||||||
Eclipse Update Manager, you must agree to a license ("Feature Update\n\
|
|
||||||
License") during the installation process. If the Feature contains\n\
|
|
||||||
Included Features, the Feature Update License should either provide you\n\
|
|
||||||
with the terms and conditions governing the Included Features or inform\n\
|
|
||||||
you where you can locate them. Feature Update Licenses may be found in\n\
|
|
||||||
the "license" property of files named "feature.properties". Such Abouts,\n\
|
|
||||||
Feature Licenses and Feature Update Licenses contain the terms and\n\
|
|
||||||
conditions (or references to such terms and conditions) that govern your\n\
|
|
||||||
use of the associated Content in that directory.\n\
|
|
||||||
\n\
|
|
||||||
THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
|
|
||||||
TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
|
|
||||||
SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
|
|
||||||
\n\
|
|
||||||
- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
|
|
||||||
- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
|
|
||||||
- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
|
|
||||||
- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
|
|
||||||
- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
|
|
||||||
- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
|
|
||||||
\n\
|
|
||||||
IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
|
|
||||||
TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
|
|
||||||
is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
|
|
||||||
govern that particular Content.\n\
|
|
||||||
\n\
|
|
||||||
Cryptography\n\
|
|
||||||
\n\
|
|
||||||
Content may contain encryption software. The country in which you are\n\
|
|
||||||
currently may have restrictions on the import, possession, and use,\n\
|
|
||||||
and/or re-export to another country, of encryption software. BEFORE\n\
|
|
||||||
using any encryption software, please check the country's laws,\n\
|
|
||||||
regulations and policies concerning the import, possession, or use,\n\
|
|
||||||
and re-export of encryption software, to see if this is permitted.\n\
|
|
||||||
\n\
|
|
||||||
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<feature
|
|
||||||
id="com.minres.scviewer.ui.feature"
|
|
||||||
label="%featureName"
|
|
||||||
version="1.1.0.qualifier"
|
|
||||||
provider-name="%providerName">
|
|
||||||
|
|
||||||
<description>
|
|
||||||
The UI for the SCViewer databases
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<copyright>
|
|
||||||
Copyright (c) 2015-2021 MINRES Technologies GmbH.
|
|
||||||
All rights reserved. This program and the accompanying materials
|
|
||||||
are made available under the terms of the Eclipse Public License
|
|
||||||
v1.0 which accompanies this distribution, and is available at
|
|
||||||
http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<license url="%licenseURL">
|
|
||||||
%license
|
|
||||||
</license>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<discovery label="MINRES Website" url="http://www.minres.com"/>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<requires>
|
|
||||||
<import plugin="org.eclipse.swt" version="3.103.1" match="greaterOrEqual"/>
|
|
||||||
<import plugin="org.eclipse.jface"/>
|
|
||||||
<import plugin="org.eclipse.equinox.registry"/>
|
|
||||||
<import plugin="org.eclipse.core.runtime"/>
|
|
||||||
<import plugin="org.eclipse.osgi"/>
|
|
||||||
<import feature="com.minres.scviewer.database.feature" version="3.0.0.qualifier"/>
|
|
||||||
</requires>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.minres.scviewer.database.ui.swt"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="false"/>
|
|
||||||
|
|
||||||
</feature>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>com.minres.scviewer.ui.feature</artifactId>
|
|
||||||
<packaging>eclipse-feature</packaging>
|
|
||||||
<parent>
|
|
||||||
<groupId>com.minres.scviewer</groupId>
|
|
||||||
<artifactId>com.minres.scviewer.parent</artifactId>
|
|
||||||
<version>2.17.1</version>
|
|
||||||
<relativePath>../..</relativePath>
|
|
||||||
</parent>
|
|
||||||
<version>1.1.0-SNAPSHOT</version>
|
|
||||||
</project>
|
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
# Welcome to SCViewer
|
||||||
|
|
||||||
|
SCViewer is a simple tool to display VCD and transaction streams created by the SystemC VCD trace implementation and the SystemC Verification Library (SCV).
|
||||||
|
The viewer has the following features
|
||||||
|
* support of VCD files (compressed and uncompressed)
|
||||||
|
* real numbers
|
||||||
|
* showing vectors and real numbers as analog (step-wise & continuous)
|
||||||
|
* various value representations of bit vectors
|
||||||
|
* support of SCV transaction recordings in various formats
|
||||||
|
* text log files (compressed and uncompressed)
|
||||||
|
* visualization of transaction relations
|
||||||
|
|
||||||
|
SCViewer is available as standalone version and can be downloaded at [Github](https://github.com/Minres/SCViewer/releases).
|
||||||
|
|
||||||
|
It can also be installed into an Eclipse application by using the update site at https://minres.github.io/SCViewer/repository.
|
||||||
|
|
||||||
|
> Please note that this is work in progress
|
||||||
|
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
# Help
|
||||||
|
|
||||||
|
## Key Shortcuts
|
||||||
|
|
||||||
|
Legend:
|
||||||
|
|
||||||
|
* Left Mouse Button: LMB
|
||||||
|
* Middle Mouse Button: MMB
|
||||||
|
* Mouse Scroll wheel: MScrl
|
||||||
|
* Context any means Name List, Value List or Waveform
|
||||||
|
|
||||||
|
| Input | Modifier | Context | Action |
|
||||||
|
|-----------|----------|----------|-----------------------------------|
|
||||||
|
| LMB klick | | any | select |
|
||||||
|
| LMB klick | Shift | Waveform | move selected marker to position |
|
||||||
|
| LMB klick | Control | Waveform | move cursor to position |
|
||||||
|
| LMB drag | | Waveform | zoom to range |
|
||||||
|
| MMB klick | | Waveform | move selected marker to position |
|
||||||
|
| MScrl | | any | scroll window up/down |
|
||||||
|
| MScrl | Shift | any | scroll window left/right |
|
||||||
|
| MScrl | Control | Waveform | increase/decrease zoom level |
|
||||||
|
| Key left | | Waveform | scroll window to the left (slow) |
|
||||||
|
| Key right | | Waveform | scroll window to the right (slow) |
|
||||||
|
| Key left | Shift | Waveform | scroll window to the left (fast) |
|
||||||
|
| Key right | Shift | Waveform | scroll window to the right (fast) |
|
||||||
|
| Key up | | Waveform | move selection up |
|
||||||
|
| Key down | | Waveform | move selection down |
|
||||||
|
| Key up | Control | Waveform | move selected track up |
|
||||||
|
| Key down | Control | Waveform | move selected track down |
|
||||||
|
| Key + | Control | Waveform | zoom in |
|
||||||
|
| Key - | Control | Waveform | zoom out |
|
||||||
|
| Key Pos1 | | Waveform | jump to selected marker |
|
||||||
|
| Key End | | Waveform | jump to cursor |
|
||||||
|
| Key Del | | any | delete selected entries |
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="module" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="output" path="target/classes"/>
|
|
||||||
</classpath>
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
/bin
|
|
||||||
/target/
|
|
||||||
/.settings/
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.minres.scviewer.database.ftr</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.ds.core.builder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
|
||||||
<nature>org.eclipse.pde.PluginNature</nature>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
Manifest-Version: 1.0
|
|
||||||
Bundle-ManifestVersion: 2
|
|
||||||
Bundle-Name: CBOR transaction database
|
|
||||||
Bundle-SymbolicName: com.minres.scviewer.database.ftr
|
|
||||||
Bundle-Version: 1.0.0.qualifier
|
|
||||||
Bundle-Vendor: MINRES Technologies GmbH
|
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-11
|
|
||||||
Import-Package: org.osgi.framework;version="1.3.0",
|
|
||||||
org.slf4j;version="1.7.2"
|
|
||||||
Require-Bundle: com.minres.scviewer.database,
|
|
||||||
org.eclipse.osgi.services;bundle-version="3.4.0",
|
|
||||||
com.google.guava;bundle-version="15.0.0",
|
|
||||||
org.eclipse.collections;bundle-version="10.4.0",
|
|
||||||
org.apache.commons.compress;bundle-version="1.20.0"
|
|
||||||
Service-Component: OSGI-INF/component.xml
|
|
||||||
Bundle-ActivationPolicy: lazy
|
|
||||||
Automatic-Module-Name: com.minres.scviewer.database.ftr
|
|
||||||
Bundle-ClassPath: .
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="FtrDbLoaderFactory">
|
|
||||||
<implementation class="com.minres.scviewer.database.ftr.FtrDbLoaderFactory"/>
|
|
||||||
<service>
|
|
||||||
<provide interface="com.minres.scviewer.database.IWaveformDbLoaderFactory"/>
|
|
||||||
</service>
|
|
||||||
</scr:component>
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
###############################################################################
|
|
||||||
# Copyright (c) 2014, 2015-2021 MINRES Technologies GmbH and others.
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
# which accompanies this distribution, and is available at
|
|
||||||
# http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
#
|
|
||||||
# Contributors:
|
|
||||||
# MINRES Technologies GmbH - initial API and implementation
|
|
||||||
###############################################################################
|
|
||||||
bin.includes = META-INF/,\
|
|
||||||
.,\
|
|
||||||
OSGI-INF/
|
|
||||||
source.. = src/
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>com.minres.scviewer.database.ftr</artifactId>
|
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
|
||||||
<parent>
|
|
||||||
<groupId>com.minres.scviewer</groupId>
|
|
||||||
<artifactId>com.minres.scviewer.parent</artifactId>
|
|
||||||
<version>2.17.1</version>
|
|
||||||
<relativePath>../..</relativePath>
|
|
||||||
</parent>
|
|
||||||
<packaging>eclipse-plugin</packaging>
|
|
||||||
|
|
||||||
</project>
|
|
||||||
@@ -1,189 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.EventEntry;
|
|
||||||
import com.minres.scviewer.database.EventList;
|
|
||||||
import com.minres.scviewer.database.HierNode;
|
|
||||||
import com.minres.scviewer.database.IEvent;
|
|
||||||
import com.minres.scviewer.database.IEventList;
|
|
||||||
import com.minres.scviewer.database.IWaveform;
|
|
||||||
import com.minres.scviewer.database.WaveformType;
|
|
||||||
import com.minres.scviewer.database.tx.ITx;
|
|
||||||
import com.minres.scviewer.database.tx.ITxEvent;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class AbstractTxStream.
|
|
||||||
*/
|
|
||||||
abstract class AbstractTxStream extends HierNode implements IWaveform {
|
|
||||||
|
|
||||||
private final String fullName;
|
|
||||||
|
|
||||||
/** The id. */
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** The loader. */
|
|
||||||
protected FtrDbLoader loader;
|
|
||||||
|
|
||||||
/** The events. */
|
|
||||||
IEventList events = new EventList();
|
|
||||||
|
|
||||||
/** The max concurrency. */
|
|
||||||
private int rowCount = -1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new abstract tx stream.
|
|
||||||
*
|
|
||||||
* @param loader the loader
|
|
||||||
* @param id the id
|
|
||||||
* @param name the name
|
|
||||||
*/
|
|
||||||
protected AbstractTxStream(FtrDbLoader loader, Long id, String name) {
|
|
||||||
super(name);
|
|
||||||
fullName=name;
|
|
||||||
this.loader = loader;
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the full hierarchical name.
|
|
||||||
*
|
|
||||||
* @return the full name
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getFullName() {
|
|
||||||
return fullName;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Adds the event.
|
|
||||||
*
|
|
||||||
* @param evt the evt
|
|
||||||
*/
|
|
||||||
public void addEvent(ITxEvent evt) {
|
|
||||||
events.put(evt.getTime(), evt);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the events.
|
|
||||||
*
|
|
||||||
* @return the events
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public IEventList getEvents() {
|
|
||||||
return events;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the events at time.
|
|
||||||
*
|
|
||||||
* @param time the time
|
|
||||||
* @return the events at time
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public IEvent[] getEventsAtTime(long time) {
|
|
||||||
return events.get(time);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the events before time.
|
|
||||||
*
|
|
||||||
* @param time the time
|
|
||||||
* @return the events before time
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public IEvent[] getEventsBeforeTime(long time) {
|
|
||||||
EventEntry e = events.floorEntry(time);
|
|
||||||
if (e == null)
|
|
||||||
return new IEvent[] {};
|
|
||||||
else
|
|
||||||
return events.floorEntry(time).events;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the type.
|
|
||||||
*
|
|
||||||
* @return the type
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public WaveformType getType() {
|
|
||||||
return WaveformType.TRANSACTION;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the id.
|
|
||||||
*
|
|
||||||
* @return the id
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the width.
|
|
||||||
*
|
|
||||||
* @return the width
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int getRowCount() {
|
|
||||||
if (rowCount<0)
|
|
||||||
calculateConcurrency();
|
|
||||||
return rowCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Calculate concurrency.
|
|
||||||
*/
|
|
||||||
void calculateConcurrency() {
|
|
||||||
if (rowCount>=0)
|
|
||||||
return;
|
|
||||||
ArrayList<Long> rowEndTime = new ArrayList<>();
|
|
||||||
HashMap<Long, Integer> rowByTxId = new HashMap<>();
|
|
||||||
for(EventEntry entry: events) {
|
|
||||||
for(IEvent evt:entry.events) {
|
|
||||||
TxEvent txEvt = (TxEvent) evt;
|
|
||||||
ITx tx = txEvt.getTransaction();
|
|
||||||
int rowIdx = 0;
|
|
||||||
switch(evt.getKind()) {
|
|
||||||
case END: //TODO: might throw NPE in concurrent execution
|
|
||||||
Long txId = txEvt.getTransaction().getId();
|
|
||||||
txEvt.setConcurrencyIndex(rowByTxId.get(txId));
|
|
||||||
rowByTxId.remove(txId);
|
|
||||||
break;
|
|
||||||
case SINGLE:
|
|
||||||
for (; rowIdx < rowEndTime.size() && rowEndTime.get(rowIdx)>tx.getBeginTime(); rowIdx++);
|
|
||||||
if (rowEndTime.size() <= rowIdx)
|
|
||||||
rowEndTime.add(tx.getEndTime());
|
|
||||||
else
|
|
||||||
rowEndTime.set(rowIdx, tx.getEndTime());
|
|
||||||
((TxEvent) evt).setConcurrencyIndex(rowIdx);
|
|
||||||
break;
|
|
||||||
case BEGIN:
|
|
||||||
for (; rowIdx < rowEndTime.size() && rowEndTime.get(rowIdx)>tx.getBeginTime(); rowIdx++);
|
|
||||||
if (rowEndTime.size() <= rowIdx)
|
|
||||||
rowEndTime.add(tx.getEndTime());
|
|
||||||
else
|
|
||||||
rowEndTime.set(rowIdx, tx.getEndTime());
|
|
||||||
((TxEvent) evt).setConcurrencyIndex(rowIdx);
|
|
||||||
rowByTxId.put(tx.getId(), rowIdx);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rowCount=rowEndTime.size()>0?rowEndTime.size():1;
|
|
||||||
//getChildNodes().parallelStream().forEach(c -> ((TxGenerator)c).calculateConcurrency());
|
|
||||||
getChildNodes().stream().forEach(c -> ((TxGenerator)c).calculateConcurrency());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,525 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import java.beans.PropertyChangeListener;
|
|
||||||
import java.beans.PropertyChangeSupport;
|
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.channels.FileChannel;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.apache.commons.compress.compressors.lz4.BlockLZ4CompressorInputStream;
|
|
||||||
import org.eclipse.collections.impl.map.mutable.UnifiedMap;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import com.google.common.collect.HashMultimap;
|
|
||||||
import com.minres.scviewer.database.AssociationType;
|
|
||||||
import com.minres.scviewer.database.DataType;
|
|
||||||
import com.minres.scviewer.database.EventKind;
|
|
||||||
import com.minres.scviewer.database.IWaveform;
|
|
||||||
import com.minres.scviewer.database.IWaveformDb;
|
|
||||||
import com.minres.scviewer.database.IWaveformDbLoader;
|
|
||||||
import com.minres.scviewer.database.InputFormatException;
|
|
||||||
import com.minres.scviewer.database.RelationType;
|
|
||||||
import com.minres.scviewer.database.RelationTypeFactory;
|
|
||||||
import com.minres.scviewer.database.tx.ITx;
|
|
||||||
import com.minres.scviewer.database.tx.ITxAttribute;
|
|
||||||
|
|
||||||
import jacob.CborDecoder;
|
|
||||||
import jacob.CborType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class TextDbLoader.
|
|
||||||
*/
|
|
||||||
public class FtrDbLoader implements IWaveformDbLoader {
|
|
||||||
|
|
||||||
enum FileType { NONE, PLAIN, GZIP, LZ4};
|
|
||||||
|
|
||||||
/** The max time. */
|
|
||||||
private Long maxTime = 0L;
|
|
||||||
|
|
||||||
ArrayList<String> strDict = new ArrayList<>();
|
|
||||||
|
|
||||||
|
|
||||||
/** The attr values. */
|
|
||||||
final List<String> attrValues = new ArrayList<>();
|
|
||||||
|
|
||||||
/** The relation types. */
|
|
||||||
final Map<String, RelationType> relationTypes = UnifiedMap.newMap();
|
|
||||||
|
|
||||||
/** The tx streams. */
|
|
||||||
final Map<Long, TxStream> txStreams = UnifiedMap.newMap();
|
|
||||||
|
|
||||||
/** The tx generators. */
|
|
||||||
final Map<Long, TxGenerator> txGenerators = UnifiedMap.newMap();
|
|
||||||
|
|
||||||
/** The transactions. */
|
|
||||||
final Map<Long, FtrTx> transactions = UnifiedMap.newMap();
|
|
||||||
|
|
||||||
/** The attribute types. */
|
|
||||||
final Map<String, TxAttributeType> attributeTypes = UnifiedMap.newMap();
|
|
||||||
|
|
||||||
/** The relations in. */
|
|
||||||
final HashMultimap<Long, FtrRelation> relationsIn = HashMultimap.create();
|
|
||||||
|
|
||||||
/** The relations out. */
|
|
||||||
final HashMultimap<Long, FtrRelation> relationsOut = HashMultimap.create();
|
|
||||||
|
|
||||||
/** The tx cache. */
|
|
||||||
final Map<Long, Tx> txCache = UnifiedMap.newMap();
|
|
||||||
|
|
||||||
/** The threads. */
|
|
||||||
List<Thread> threads = new ArrayList<>();
|
|
||||||
|
|
||||||
File file;
|
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(FtrDbLoader.class);
|
|
||||||
|
|
||||||
/** The pcs. */
|
|
||||||
protected PropertyChangeSupport pcs = new PropertyChangeSupport(this);
|
|
||||||
|
|
||||||
long time_scale_factor = 1000l;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds the property change listener.
|
|
||||||
*
|
|
||||||
* @param l the l
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void addPropertyChangeListener(PropertyChangeListener l) {
|
|
||||||
pcs.addPropertyChangeListener(l);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes the property change listener.
|
|
||||||
*
|
|
||||||
* @param l the l
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void removePropertyChangeListener(PropertyChangeListener l) {
|
|
||||||
pcs.removePropertyChangeListener(l);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the max time.
|
|
||||||
*
|
|
||||||
* @return the max time
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public long getMaxTime() {
|
|
||||||
return maxTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the transaction.
|
|
||||||
*
|
|
||||||
* @param txId the tx id
|
|
||||||
* @return the transaction
|
|
||||||
*/
|
|
||||||
public ITx getTransaction(long txId) {
|
|
||||||
if (txCache.containsKey(txId))
|
|
||||||
return txCache.get(txId);
|
|
||||||
if(transactions.containsKey(txId)) {
|
|
||||||
Tx tx = new Tx(this, transactions.get(txId));
|
|
||||||
txCache.put(txId, tx);
|
|
||||||
return tx;
|
|
||||||
} else {
|
|
||||||
throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public FtrTx getScvTx(long id) {
|
|
||||||
if(transactions.containsKey(id))
|
|
||||||
return transactions.get(id);
|
|
||||||
else
|
|
||||||
throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the all waves.
|
|
||||||
*
|
|
||||||
* @return the all waves
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Collection<IWaveform> getAllWaves() {
|
|
||||||
ArrayList<IWaveform> ret = new ArrayList<>(txStreams.values());
|
|
||||||
ret.addAll(txGenerators.values());
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the all relation types.
|
|
||||||
*
|
|
||||||
* @return the all relation types
|
|
||||||
*/
|
|
||||||
public Collection<RelationType> getAllRelationTypes() {
|
|
||||||
return relationTypes.values();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load.
|
|
||||||
*
|
|
||||||
* @param db the db
|
|
||||||
* @param file the file
|
|
||||||
* @return true, if successful
|
|
||||||
* @throws InputFormatException the input format exception
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void load(IWaveformDb db, File file) throws InputFormatException {
|
|
||||||
dispose();
|
|
||||||
this.file=file;
|
|
||||||
try(FileInputStream fis = new FileInputStream(file)) {
|
|
||||||
new CborDbParser(this, fis);
|
|
||||||
} catch (Exception e) {
|
|
||||||
LOG.error("Error parsing file "+file.getName(), e);
|
|
||||||
transactions.clear();
|
|
||||||
throw new InputFormatException(e.toString());
|
|
||||||
}
|
|
||||||
txStreams.values().parallelStream().forEach(TxStream::calculateConcurrency);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<? extends byte[]> getChunksAtOffsets(ArrayList<Long> fileOffsets) throws InputFormatException {
|
|
||||||
List<byte[]> ret = new ArrayList<>();
|
|
||||||
try(FileInputStream fis = new FileInputStream(file)) {
|
|
||||||
FileChannel fc = fis.getChannel();
|
|
||||||
for (Long offset : fileOffsets) {
|
|
||||||
if(offset>=0) {
|
|
||||||
fc.position(offset);
|
|
||||||
CborDecoder parser = new CborDecoder(fis);
|
|
||||||
ret.add(parser.readByteString());
|
|
||||||
} else {
|
|
||||||
fc.position(-offset);
|
|
||||||
CborDecoder parser = new CborDecoder(fis);
|
|
||||||
BlockLZ4CompressorInputStream decomp = new BlockLZ4CompressorInputStream(new ByteArrayInputStream(parser.readByteString()));
|
|
||||||
ret.add(decomp.readAllBytes());
|
|
||||||
decomp.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
LOG.error("Error parsing file "+file.getName(), e);
|
|
||||||
transactions.clear();
|
|
||||||
throw new InputFormatException(e.toString());
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<? extends ITxAttribute> parseAtrributes(byte[] chunk, long blockOffset) {
|
|
||||||
List<ITxAttribute> ret = new ArrayList<>();
|
|
||||||
ByteArrayInputStream bais = new ByteArrayInputStream(chunk);
|
|
||||||
bais.skip(blockOffset);
|
|
||||||
CborDecoder cborDecoder = new CborDecoder(bais);
|
|
||||||
try {
|
|
||||||
long tx_size = cborDecoder.readArrayLength();
|
|
||||||
for(long i = 0; i<tx_size; ++i) {
|
|
||||||
long tag = cborDecoder.readTag();
|
|
||||||
switch((int)tag) {
|
|
||||||
case 6: // id/generator/start/end
|
|
||||||
long len = cborDecoder.readArrayLength();
|
|
||||||
assert(len==4);
|
|
||||||
cborDecoder.readInt();
|
|
||||||
cborDecoder.readInt();
|
|
||||||
cborDecoder.readInt();
|
|
||||||
cborDecoder.readInt();
|
|
||||||
break;
|
|
||||||
default: { // skip over 7:begin attr, 8:record attr, 9:end attr
|
|
||||||
long sz = cborDecoder.readArrayLength();
|
|
||||||
assert(sz==3);
|
|
||||||
long name_id = cborDecoder.readInt();
|
|
||||||
long type_id = cborDecoder.readInt();
|
|
||||||
String attrName = strDict.get((int)name_id);
|
|
||||||
if(!attributeTypes.containsKey(attrName)) {
|
|
||||||
attributeTypes.put(attrName, new TxAttributeType(attrName, DataType.values()[(int)type_id], AssociationType.values()[(int)tag-7]));
|
|
||||||
}
|
|
||||||
TxAttributeType attrType = attributeTypes.get(attrName);
|
|
||||||
switch((int)type_id) {
|
|
||||||
case 0: // BOOLEAN
|
|
||||||
ITxAttribute b = new TxAttribute(attrType, cborDecoder.readInt()>0?"True":"False");
|
|
||||||
ret.add(b);
|
|
||||||
break;
|
|
||||||
case 2: // INTEGER
|
|
||||||
case 3: // UNSIGNED
|
|
||||||
ITxAttribute a = new TxAttribute(attrType, String.valueOf(cborDecoder.readInt()));
|
|
||||||
ret.add(a);
|
|
||||||
break;
|
|
||||||
case 4: // FLOATING_POINT_NUMBER
|
|
||||||
case 7: // FIXED_POINT_INTEGER
|
|
||||||
case 8: // UNSIGNED_FIXED_POINT_INTEGER
|
|
||||||
ITxAttribute v = new TxAttribute(attrType, String.valueOf(cborDecoder.readFloat()));
|
|
||||||
ret.add(v);
|
|
||||||
break;
|
|
||||||
case 1: // ENUMERATION
|
|
||||||
case 5: // BIT_VECTOR
|
|
||||||
case 6: // LOGIC_VECTOR
|
|
||||||
case 12: // STRING
|
|
||||||
ITxAttribute s = new TxAttribute(attrType, strDict.get((int)cborDecoder.readInt()));
|
|
||||||
ret.add(s);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
LOG.error("Error parsing file "+file.getName(), e);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dispose.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void dispose() {
|
|
||||||
attrValues.clear();
|
|
||||||
relationTypes.clear();
|
|
||||||
txStreams.clear();
|
|
||||||
txGenerators.clear();
|
|
||||||
transactions.clear();
|
|
||||||
attributeTypes.clear();
|
|
||||||
relationsIn.clear();
|
|
||||||
relationsOut.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class TextDbParser.
|
|
||||||
*/
|
|
||||||
static class CborDbParser extends CborDecoder {
|
|
||||||
|
|
||||||
static final private CborType break_type = CborType.valueOf(0xff);
|
|
||||||
|
|
||||||
/** The loader. */
|
|
||||||
final FtrDbLoader loader;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new text db parser.
|
|
||||||
*
|
|
||||||
* @param loader the loader
|
|
||||||
*/
|
|
||||||
public CborDbParser(FtrDbLoader loader, FileInputStream inputStream) {
|
|
||||||
super(inputStream);
|
|
||||||
this.loader = loader;
|
|
||||||
try {
|
|
||||||
long cbor_tag = readTag();
|
|
||||||
assert(cbor_tag == 55799);
|
|
||||||
long array_len = readArrayLength();
|
|
||||||
assert(array_len==-1);
|
|
||||||
CborType next = peekType();
|
|
||||||
while(next != null && !break_type.isEqualType(next)) {
|
|
||||||
long tag = readTag();
|
|
||||||
switch((int)tag) {
|
|
||||||
<<<<<<< HEAD
|
|
||||||
case 6: // info
|
|
||||||
=======
|
|
||||||
case 6: { // info
|
|
||||||
>>>>>>> refs/heads/release/2.17.1
|
|
||||||
CborDecoder cbd = new CborDecoder(new ByteArrayInputStream(readByteString()));
|
|
||||||
long sz = cbd.readArrayLength();
|
|
||||||
assert(sz==3);
|
|
||||||
long time_numerator=cbd.readInt();
|
|
||||||
long time_denominator=cbd.readInt();
|
|
||||||
loader.time_scale_factor = 1000000000000000l*time_numerator/time_denominator;
|
|
||||||
long epoch_tag = cbd.readTag();
|
|
||||||
assert(epoch_tag==1);
|
|
||||||
cbd.readInt(); // epoch
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 8: { // dictionary uncompressed
|
|
||||||
parseDict(new CborDecoder(new ByteArrayInputStream(readByteString())));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 9: { // dictionary compressed
|
|
||||||
long sz = readArrayLength();
|
|
||||||
assert(sz==2);
|
|
||||||
readInt(); // uncompressed size
|
|
||||||
parseDict(new CborDecoder(new BlockLZ4CompressorInputStream(new ByteArrayInputStream(readByteString()))));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 10: { // directory uncompressed
|
|
||||||
parseDir(new CborDecoder(new ByteArrayInputStream(readByteString())));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 11: { // directory compressed
|
|
||||||
long sz = readArrayLength();
|
|
||||||
assert(sz==2);
|
|
||||||
readInt(); // uncompressed size
|
|
||||||
parseDir(new CborDecoder(new BlockLZ4CompressorInputStream(new ByteArrayInputStream(readByteString()))));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 12: { //tx chunk uncompressed
|
|
||||||
long len = readArrayLength();
|
|
||||||
assert(len==2);
|
|
||||||
long stream_id = readInt();
|
|
||||||
TxStream txStream = loader.txStreams.get(stream_id);
|
|
||||||
txStream.fileOffsets.add(inputStream.getChannel().position());
|
|
||||||
parseTx(txStream, txStream.fileOffsets.size()-1, readByteString());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 13: { //tx chunk compressed
|
|
||||||
long len = readArrayLength();
|
|
||||||
assert(len==3);
|
|
||||||
long stream_id = readInt();
|
|
||||||
readInt(); // uncompressed size
|
|
||||||
TxStream txStream = loader.txStreams.get(stream_id);
|
|
||||||
txStream.fileOffsets.add(0-inputStream.getChannel().position());
|
|
||||||
BlockLZ4CompressorInputStream decomp = new BlockLZ4CompressorInputStream(new ByteArrayInputStream(readByteString()));
|
|
||||||
parseTx(txStream, txStream.fileOffsets.size()-1, decomp.readAllBytes());
|
|
||||||
decomp.close();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 14: { // relations uncompressed
|
|
||||||
parseRel(new CborDecoder(new ByteArrayInputStream(readByteString())));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 15: { // relations uncompressed
|
|
||||||
long sz = readArrayLength();
|
|
||||||
assert(sz==2);
|
|
||||||
readInt(); // uncompressed size
|
|
||||||
parseRel(new CborDecoder(new BlockLZ4CompressorInputStream(new ByteArrayInputStream(readByteString()))));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
next = peekType();
|
|
||||||
}
|
|
||||||
} catch(IOException e) {
|
|
||||||
LOG.error("Error parsing file input stream", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void parseDict(CborDecoder cborDecoder) throws IOException {
|
|
||||||
long size = cborDecoder.readMapLength();
|
|
||||||
ArrayList<String> lst = new ArrayList<>((int)size);
|
|
||||||
for(long i = 0; i<size; ++i) {
|
|
||||||
long idx = cborDecoder.readInt();
|
|
||||||
assert(idx==loader.strDict.size()+1);
|
|
||||||
lst.add(cborDecoder.readTextString());
|
|
||||||
}
|
|
||||||
loader.strDict.addAll(lst);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void parseDir(CborDecoder cborDecoder) throws IOException {
|
|
||||||
long size = cborDecoder.readArrayLength();
|
|
||||||
if(size<0) {
|
|
||||||
CborType next = cborDecoder.peekType();
|
|
||||||
while(next != null && !break_type.isEqualType(next)) {
|
|
||||||
parseDictEntry(cborDecoder);
|
|
||||||
next = cborDecoder.peekType();
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
for(long i = 0; i<size; ++i) {
|
|
||||||
parseDictEntry(cborDecoder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void parseDictEntry(CborDecoder cborDecoder) throws IOException {
|
|
||||||
long id = cborDecoder.readTag();
|
|
||||||
if(id==16) { // a stream
|
|
||||||
long len = cborDecoder.readArrayLength();
|
|
||||||
assert(len==3);
|
|
||||||
long stream_id = cborDecoder.readInt();
|
|
||||||
long name_id = cborDecoder.readInt();
|
|
||||||
long kind_id = cborDecoder.readInt();
|
|
||||||
add(stream_id, new TxStream(loader, stream_id, loader.strDict.get((int)name_id), loader.strDict.get((int)kind_id)));
|
|
||||||
} else if(id==17) { // a generator
|
|
||||||
long len = cborDecoder.readArrayLength();
|
|
||||||
assert(len==3);
|
|
||||||
long gen_id = cborDecoder.readInt();
|
|
||||||
long name_id = cborDecoder.readInt();
|
|
||||||
long stream_id = cborDecoder.readInt();
|
|
||||||
add(gen_id, new TxGenerator(loader, gen_id, loader.strDict.get((int)name_id), loader.txStreams.get(stream_id)));
|
|
||||||
} else {
|
|
||||||
throw new IOException("Illegal tage ncountered: "+id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void parseTx(TxStream txStream, long blockId, byte[] chunk) throws IOException {
|
|
||||||
CborDecoder cborDecoder = new CborDecoder(new ByteArrayInputStream(chunk));
|
|
||||||
long size = cborDecoder.readArrayLength();
|
|
||||||
assert(size==-1);
|
|
||||||
CborType next = cborDecoder.peekType();
|
|
||||||
while(next != null && !break_type.isEqualType(next)) {
|
|
||||||
long blockOffset = cborDecoder.getPos();
|
|
||||||
long tx_size = cborDecoder.readArrayLength();
|
|
||||||
for(long i = 0; i<tx_size; ++i) {
|
|
||||||
long tag = cborDecoder.readTag();
|
|
||||||
switch((int)tag) {
|
|
||||||
case 6: // id/generator/start/end
|
|
||||||
long len = cborDecoder.readArrayLength();
|
|
||||||
assert(len==4);
|
|
||||||
long txId = cborDecoder.readInt();
|
|
||||||
long genId = cborDecoder.readInt();
|
|
||||||
long startTime = cborDecoder.readInt()*loader.time_scale_factor;
|
|
||||||
long endTime = cborDecoder.readInt()*loader.time_scale_factor;
|
|
||||||
TxGenerator gen = loader.txGenerators.get(genId);
|
|
||||||
FtrTx scvTx = new FtrTx(txId, gen.stream.getId(), genId, startTime, endTime, blockId, blockOffset);
|
|
||||||
loader.maxTime = loader.maxTime > scvTx.endTime ? loader.maxTime : scvTx.endTime;
|
|
||||||
loader.transactions.put(txId, scvTx);
|
|
||||||
TxStream stream = loader.txStreams.get(gen.stream.getId());
|
|
||||||
if (scvTx.beginTime == scvTx.endTime) {
|
|
||||||
stream.addEvent(new TxEvent(loader, EventKind.SINGLE, txId, scvTx.beginTime));
|
|
||||||
gen.addEvent(new TxEvent(loader, EventKind.SINGLE, txId, scvTx.beginTime));
|
|
||||||
} else {
|
|
||||||
stream.addEvent(new TxEvent(loader, EventKind.BEGIN, txId, scvTx.beginTime));
|
|
||||||
gen.addEvent(new TxEvent(loader, EventKind.BEGIN, txId, scvTx.beginTime));
|
|
||||||
stream.addEvent(new TxEvent(loader, EventKind.END, txId, scvTx.endTime));
|
|
||||||
gen.addEvent(new TxEvent(loader, EventKind.END, txId, scvTx.endTime));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default: { // skip over 7:begin attr, 8:record attr, 9:end attr
|
|
||||||
long sz = cborDecoder.readArrayLength();
|
|
||||||
assert(sz==3);
|
|
||||||
for(long j = 0; j<sz; ++j)
|
|
||||||
cborDecoder.readInt();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
next = cborDecoder.peekType();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void parseRel(CborDecoder cborDecoder) throws IOException {
|
|
||||||
long size = cborDecoder.readArrayLength();
|
|
||||||
assert(size==-1);
|
|
||||||
CborType next = cborDecoder.peekType();
|
|
||||||
while(next != null && !break_type.isEqualType(next)) {
|
|
||||||
long sz = cborDecoder.readArrayLength();
|
|
||||||
assert(sz==3);
|
|
||||||
long type_id = cborDecoder.readInt();
|
|
||||||
long from_id = cborDecoder.readInt();
|
|
||||||
long to_id = cborDecoder.readInt();
|
|
||||||
String rel_name = loader.strDict.get((int)type_id);
|
|
||||||
FtrRelation ftrRel = new FtrRelation(loader.relationTypes.getOrDefault(rel_name, RelationTypeFactory.create(rel_name)), from_id, to_id);
|
|
||||||
loader.relationsOut.put(from_id, ftrRel);
|
|
||||||
loader.relationsIn.put(to_id, ftrRel);
|
|
||||||
next = cborDecoder.peekType();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void add(Long id, TxStream stream) {
|
|
||||||
loader.txStreams.put(id, stream);
|
|
||||||
loader.pcs.firePropertyChange(IWaveformDbLoader.STREAM_ADDED, null, stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void add(Long id, TxGenerator generator) {
|
|
||||||
loader.txGenerators.put(id, generator);
|
|
||||||
loader.pcs.firePropertyChange(IWaveformDbLoader.GENERATOR_ADDED, null, generator);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.IWaveformDbLoader;
|
|
||||||
import com.minres.scviewer.database.IWaveformDbLoaderFactory;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class TextDbLoader.
|
|
||||||
*/
|
|
||||||
public class FtrDbLoaderFactory implements IWaveformDbLoaderFactory {
|
|
||||||
|
|
||||||
public static byte[] hexStringToByteArray(String s) {
|
|
||||||
int len = s.length();
|
|
||||||
byte[] data = new byte[len / 2];
|
|
||||||
for (int i = 0; i < len; i += 2) {
|
|
||||||
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
|
|
||||||
+ Character.digit(s.charAt(i+1), 16));
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
/** The Constant x. */
|
|
||||||
static final byte[] x = hexStringToByteArray("d9d9f79f");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Can load.
|
|
||||||
*
|
|
||||||
* @param inputFile the input file
|
|
||||||
* @return true, if successful
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean canLoad(File inputFile) {
|
|
||||||
try (InputStream is = new FileInputStream(inputFile)) {
|
|
||||||
byte[] buffer = new byte[x.length];
|
|
||||||
int readCnt = is.read(buffer, 0, x.length);
|
|
||||||
if (readCnt == x.length) {
|
|
||||||
for (int i = 0; i < x.length; i++)
|
|
||||||
if (buffer[i] != x[i]) return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
} catch (IOException e) {}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IWaveformDbLoader getLoader() {
|
|
||||||
return new FtrDbLoader();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.RelationType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class ScvRelation.
|
|
||||||
*/
|
|
||||||
class FtrRelation implements Serializable {
|
|
||||||
|
|
||||||
/** The Constant serialVersionUID. */
|
|
||||||
private static final long serialVersionUID = -347668857680574140L;
|
|
||||||
|
|
||||||
/** The source. */
|
|
||||||
final long source;
|
|
||||||
|
|
||||||
/** The target. */
|
|
||||||
final long target;
|
|
||||||
|
|
||||||
/** The relation type. */
|
|
||||||
final RelationType relationType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new scv relation.
|
|
||||||
*
|
|
||||||
* @param relationType the relation type
|
|
||||||
* @param source the source
|
|
||||||
* @param target the target
|
|
||||||
*/
|
|
||||||
public FtrRelation(RelationType relationType, long source, long target) {
|
|
||||||
this.source = source;
|
|
||||||
this.target = target;
|
|
||||||
this.relationType = relationType;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.InputFormatException;
|
|
||||||
import com.minres.scviewer.database.tx.ITxAttribute;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class ScvTx.
|
|
||||||
*/
|
|
||||||
class FtrTx implements Serializable {
|
|
||||||
|
|
||||||
/** The Constant serialVersionUID. */
|
|
||||||
private static final long serialVersionUID = -855200240003328221L;
|
|
||||||
|
|
||||||
/** The id. */
|
|
||||||
final long id;
|
|
||||||
|
|
||||||
/** The generator id. */
|
|
||||||
final long generatorId;
|
|
||||||
|
|
||||||
/** The stream id. */
|
|
||||||
final long streamId;
|
|
||||||
|
|
||||||
/** The begin time. */
|
|
||||||
long beginTime;
|
|
||||||
|
|
||||||
/** The end time. */
|
|
||||||
long endTime;
|
|
||||||
|
|
||||||
/** The attributes. */
|
|
||||||
final List<ITxAttribute> attributes = new ArrayList<>();
|
|
||||||
|
|
||||||
final long blockId;
|
|
||||||
|
|
||||||
final long blockOffset;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new scv tx.
|
|
||||||
*
|
|
||||||
* @param id the id
|
|
||||||
* @param streamId the stream id
|
|
||||||
* @param generatorId the generator id
|
|
||||||
* @param begin the begin
|
|
||||||
*/
|
|
||||||
FtrTx(long id, long streamId, long generatorId, long begin, long end, long blockId, long blockOffset) {
|
|
||||||
this.id = id;
|
|
||||||
this.streamId = streamId;
|
|
||||||
this.generatorId = generatorId;
|
|
||||||
this.beginTime = begin;
|
|
||||||
this.endTime = end;
|
|
||||||
this.blockId=blockId;
|
|
||||||
this.blockOffset=blockOffset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the id.
|
|
||||||
*
|
|
||||||
* @return the id
|
|
||||||
*/
|
|
||||||
Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ITxAttribute> getAttributes(FtrDbLoader loader) {
|
|
||||||
if(attributes.size()==0)
|
|
||||||
try {
|
|
||||||
TxStream stream = loader.txStreams.get(streamId);
|
|
||||||
byte[] chunk = stream.getChunks().get((int)blockId);
|
|
||||||
attributes.addAll(loader.parseAtrributes(chunk, blockOffset));
|
|
||||||
} catch (InputFormatException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return attributes;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,232 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2012 IT Just working.
|
|
||||||
* Copyright (c) 2020 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.IWaveform;
|
|
||||||
import com.minres.scviewer.database.tx.ITx;
|
|
||||||
import com.minres.scviewer.database.tx.ITxAttribute;
|
|
||||||
import com.minres.scviewer.database.tx.ITxRelation;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class Tx.
|
|
||||||
*/
|
|
||||||
class Tx implements ITx {
|
|
||||||
|
|
||||||
/** The loader. */
|
|
||||||
private final FtrDbLoader loader;
|
|
||||||
|
|
||||||
private FtrTx scvTx =null;
|
|
||||||
|
|
||||||
/** The id. */
|
|
||||||
private final long id;
|
|
||||||
|
|
||||||
private final long generatorId;
|
|
||||||
|
|
||||||
private final long streamId;
|
|
||||||
|
|
||||||
/** The begin time. */
|
|
||||||
long beginTime = -1;
|
|
||||||
|
|
||||||
/** The end time. */
|
|
||||||
long endTime = -1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new tx.
|
|
||||||
*
|
|
||||||
* @param loader the loader
|
|
||||||
* @param scvTx the scv tx
|
|
||||||
*/
|
|
||||||
public Tx(FtrDbLoader loader, FtrTx scvTx) {
|
|
||||||
this.loader = loader;
|
|
||||||
id = scvTx.id;
|
|
||||||
this.scvTx=scvTx;
|
|
||||||
generatorId=scvTx.generatorId;
|
|
||||||
streamId=scvTx.streamId;
|
|
||||||
beginTime=scvTx.beginTime;
|
|
||||||
endTime=scvTx.endTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new tx.
|
|
||||||
*
|
|
||||||
* @param loader the loader
|
|
||||||
* @param txId the tx id
|
|
||||||
*/
|
|
||||||
public Tx(FtrDbLoader loader, long id, long generatorId, long streamId) {
|
|
||||||
this.loader = loader;
|
|
||||||
this.id = id;
|
|
||||||
this.generatorId=generatorId;
|
|
||||||
this.streamId = streamId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the incoming relations.
|
|
||||||
*
|
|
||||||
* @return the incoming relations
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Collection<ITxRelation> getIncomingRelations() {
|
|
||||||
Set<FtrRelation> rels = loader.relationsIn.get(id);
|
|
||||||
return rels.stream().map(rel -> new TxRelation(loader, rel)).collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the outgoing relations.
|
|
||||||
*
|
|
||||||
* @return the outgoing relations
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Collection<ITxRelation> getOutgoingRelations() {
|
|
||||||
Set<FtrRelation> rels = loader.relationsOut.get(id);
|
|
||||||
return rels.stream().map(rel -> new TxRelation(loader, rel)).collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Compare to.
|
|
||||||
*
|
|
||||||
* @param o the o
|
|
||||||
* @return the int
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int compareTo(ITx o) {
|
|
||||||
int res = Long.compare(getBeginTime(), o.getBeginTime());
|
|
||||||
if (res != 0)
|
|
||||||
return res;
|
|
||||||
else
|
|
||||||
return Long.compare(getId(), o.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Equals.
|
|
||||||
*
|
|
||||||
* @param obj the obj
|
|
||||||
* @return true, if successful
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (this == obj)
|
|
||||||
return true;
|
|
||||||
if (obj == null || getClass() != obj.getClass())
|
|
||||||
return false;
|
|
||||||
return this.getScvTx().equals(((Tx) obj).getScvTx());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hash code.
|
|
||||||
*
|
|
||||||
* @return the int
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return getScvTx().hashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* To string.
|
|
||||||
*
|
|
||||||
* @return the string
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "tx#" + getId() + "[" + getBeginTime() / 1000000 + "ns - " + getEndTime() / 1000000 + "ns]";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the id.
|
|
||||||
*
|
|
||||||
* @return the id
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public long getId() {
|
|
||||||
return getScvTx().id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the stream.
|
|
||||||
*
|
|
||||||
* @return the stream
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public IWaveform getStream() {
|
|
||||||
return loader.txStreams.get(streamId);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the generator.
|
|
||||||
*
|
|
||||||
* @return the generator
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public IWaveform getGenerator() {
|
|
||||||
return loader.txGenerators.get(generatorId);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the begin time.
|
|
||||||
*
|
|
||||||
* @return the begin time
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public long getBeginTime() {
|
|
||||||
if (beginTime < 0) {
|
|
||||||
FtrTx tx = scvTx==null?loader.getScvTx(id):getScvTx();
|
|
||||||
beginTime = tx.beginTime;
|
|
||||||
endTime = tx.endTime;
|
|
||||||
}
|
|
||||||
return beginTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the end time.
|
|
||||||
*
|
|
||||||
* @return the end time
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public long getEndTime() {
|
|
||||||
if (endTime < 0) {
|
|
||||||
FtrTx tx = scvTx==null?loader.getScvTx(id):getScvTx();
|
|
||||||
beginTime = tx.beginTime;
|
|
||||||
endTime = tx.endTime;
|
|
||||||
}
|
|
||||||
return endTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the end time.
|
|
||||||
*
|
|
||||||
* @param time the new end time
|
|
||||||
*/
|
|
||||||
void setEndTime(Long time) {
|
|
||||||
getScvTx().endTime = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the attributes.
|
|
||||||
*
|
|
||||||
* @return the attributes
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<ITxAttribute> getAttributes() {
|
|
||||||
return getScvTx().getAttributes(loader);
|
|
||||||
}
|
|
||||||
|
|
||||||
private FtrTx getScvTx() {
|
|
||||||
if(scvTx==null)
|
|
||||||
scvTx=loader.getScvTx(id);
|
|
||||||
return scvTx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.AssociationType;
|
|
||||||
import com.minres.scviewer.database.DataType;
|
|
||||||
import com.minres.scviewer.database.tx.ITxAttribute;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class TxAttribute.
|
|
||||||
*/
|
|
||||||
public class TxAttribute implements ITxAttribute, Serializable {
|
|
||||||
|
|
||||||
/** The Constant serialVersionUID. */
|
|
||||||
private static final long serialVersionUID = 4767726016651807152L;
|
|
||||||
|
|
||||||
/** The attribute type. */
|
|
||||||
private final TxAttributeType attributeType;
|
|
||||||
|
|
||||||
/** The value. */
|
|
||||||
private final String value;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new tx attribute.
|
|
||||||
*
|
|
||||||
* @param type the type
|
|
||||||
* @param value the value
|
|
||||||
*/
|
|
||||||
TxAttribute(TxAttributeType type, String value) {
|
|
||||||
this.attributeType = type;
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the name.
|
|
||||||
*
|
|
||||||
* @return the name
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return attributeType.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the type.
|
|
||||||
*
|
|
||||||
* @return the type
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public AssociationType getType() {
|
|
||||||
return attributeType.getType();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the data type.
|
|
||||||
*
|
|
||||||
* @return the data type
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public DataType getDataType() {
|
|
||||||
return attributeType.getDataType();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the value.
|
|
||||||
*
|
|
||||||
* @return the value
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Object getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.AssociationType;
|
|
||||||
import com.minres.scviewer.database.DataType;
|
|
||||||
import com.minres.scviewer.database.tx.ITxAttributeType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class TxAttributeType.
|
|
||||||
*/
|
|
||||||
class TxAttributeType implements ITxAttributeType, Serializable {
|
|
||||||
|
|
||||||
/** The Constant serialVersionUID. */
|
|
||||||
private static final long serialVersionUID = 7159721937208946828L;
|
|
||||||
|
|
||||||
/** The name. */
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/** The data type. */
|
|
||||||
private DataType dataType;
|
|
||||||
|
|
||||||
/** The type. */
|
|
||||||
private AssociationType type;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new tx attribute type.
|
|
||||||
*
|
|
||||||
* @param name the name
|
|
||||||
* @param dataType the data type
|
|
||||||
* @param type the type
|
|
||||||
*/
|
|
||||||
TxAttributeType(String name, DataType dataType, AssociationType type) {
|
|
||||||
this.name = name;
|
|
||||||
this.dataType = dataType;
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the name.
|
|
||||||
*
|
|
||||||
* @return the name
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the data type.
|
|
||||||
*
|
|
||||||
* @return the data type
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public DataType getDataType() {
|
|
||||||
return dataType;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the type.
|
|
||||||
*
|
|
||||||
* @return the type
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public AssociationType getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return name + ":" + dataType.name() + "@" + type.name();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.EventKind;
|
|
||||||
import com.minres.scviewer.database.WaveformType;
|
|
||||||
import com.minres.scviewer.database.tx.ITx;
|
|
||||||
import com.minres.scviewer.database.tx.ITxEvent;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class TxEvent.
|
|
||||||
*/
|
|
||||||
class TxEvent implements ITxEvent {
|
|
||||||
|
|
||||||
/** The loader. */
|
|
||||||
final FtrDbLoader loader;
|
|
||||||
|
|
||||||
/** The kind. */
|
|
||||||
final EventKind kind;
|
|
||||||
|
|
||||||
/** The transaction. */
|
|
||||||
final long transaction;
|
|
||||||
|
|
||||||
/** The time. */
|
|
||||||
final long time;
|
|
||||||
|
|
||||||
private int concurrencyIdx=-1;
|
|
||||||
/**
|
|
||||||
* Instantiates a new tx event.
|
|
||||||
*
|
|
||||||
* @param loader the loader
|
|
||||||
* @param kind the kind
|
|
||||||
* @param transaction the transaction
|
|
||||||
* @param time the time
|
|
||||||
*/
|
|
||||||
TxEvent(FtrDbLoader loader, EventKind kind, Long transaction, Long time) {
|
|
||||||
this.loader = loader;
|
|
||||||
this.kind = kind;
|
|
||||||
this.transaction = transaction;
|
|
||||||
this.time = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Duplicate.
|
|
||||||
*
|
|
||||||
* @return the i tx event
|
|
||||||
* @throws CloneNotSupportedException the clone not supported exception
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public ITxEvent duplicate() throws CloneNotSupportedException {
|
|
||||||
return new TxEvent(loader, kind, transaction, time);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* To string.
|
|
||||||
*
|
|
||||||
* @return the string
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return kind.toString() + "@" + time + " of tx #" + transaction;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the type.
|
|
||||||
*
|
|
||||||
* @return the type
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public WaveformType getType() {
|
|
||||||
return WaveformType.TRANSACTION;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the kind.
|
|
||||||
*
|
|
||||||
* @return the kind
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public EventKind getKind() {
|
|
||||||
return kind;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the time.
|
|
||||||
*
|
|
||||||
* @return the time
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public long getTime() {
|
|
||||||
return time;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the transaction.
|
|
||||||
*
|
|
||||||
* @return the transaction
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public ITx getTransaction() {
|
|
||||||
return loader.getTransaction(transaction);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getRowIndex() {
|
|
||||||
return concurrencyIdx;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setConcurrencyIndex(int idx) {
|
|
||||||
concurrencyIdx=idx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.IWaveform;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class TxGenerator.
|
|
||||||
*/
|
|
||||||
class TxGenerator extends AbstractTxStream {
|
|
||||||
|
|
||||||
/** The stream. */
|
|
||||||
TxStream stream;
|
|
||||||
|
|
||||||
/** The begin attrs. */
|
|
||||||
List<TxAttributeType> beginAttrs = new ArrayList<>();
|
|
||||||
|
|
||||||
/** The end attrs. */
|
|
||||||
List<TxAttributeType> endAttrs = new ArrayList<>();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new tx generator.
|
|
||||||
*
|
|
||||||
* @param loader the loader
|
|
||||||
* @param id the id
|
|
||||||
* @param name the name
|
|
||||||
* @param stream the stream
|
|
||||||
*/
|
|
||||||
TxGenerator(FtrDbLoader loader, Long id, String name, TxStream stream) {
|
|
||||||
super(loader, id, name);
|
|
||||||
this.stream = stream;
|
|
||||||
stream.addChild(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if is same.
|
|
||||||
*
|
|
||||||
* @param other the other
|
|
||||||
* @return true, if is same
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean isSame(IWaveform other) {
|
|
||||||
return (other instanceof TxGenerator && this.getId()==other.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the begin attrs.
|
|
||||||
*
|
|
||||||
* @return the begin attrs
|
|
||||||
*/
|
|
||||||
public List<TxAttributeType> getBeginAttrs() {
|
|
||||||
return beginAttrs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the end attrs.
|
|
||||||
*
|
|
||||||
* @return the end attrs
|
|
||||||
*/
|
|
||||||
public List<TxAttributeType> getEndAttrs() {
|
|
||||||
return endAttrs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the kind.
|
|
||||||
*
|
|
||||||
* @return the kind
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getKind() {
|
|
||||||
return stream.getKind();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the full hierarchical name.
|
|
||||||
*
|
|
||||||
* @return the full name
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getFullName() {
|
|
||||||
return ((AbstractTxStream)parent).getFullName()+"."+name;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.RelationType;
|
|
||||||
import com.minres.scviewer.database.tx.ITx;
|
|
||||||
import com.minres.scviewer.database.tx.ITxRelation;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class TxRelation.
|
|
||||||
*/
|
|
||||||
class TxRelation implements ITxRelation {
|
|
||||||
|
|
||||||
/** The loader. */
|
|
||||||
final FtrDbLoader loader;
|
|
||||||
|
|
||||||
/** The scv relation. */
|
|
||||||
final FtrRelation scvRelation;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new tx relation.
|
|
||||||
*
|
|
||||||
* @param loader the loader
|
|
||||||
* @param scvRelation the scv relation
|
|
||||||
*/
|
|
||||||
public TxRelation(FtrDbLoader loader, FtrRelation scvRelation) {
|
|
||||||
this.loader = loader;
|
|
||||||
this.scvRelation = scvRelation;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the relation type.
|
|
||||||
*
|
|
||||||
* @return the relation type
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public RelationType getRelationType() {
|
|
||||||
return scvRelation.relationType;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the source.
|
|
||||||
*
|
|
||||||
* @return the source
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public ITx getSource() {
|
|
||||||
return loader.getTransaction(scvRelation.source);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the target.
|
|
||||||
*
|
|
||||||
* @return the target
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public ITx getTarget() {
|
|
||||||
return loader.getTransaction(scvRelation.target);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2023 MINRES Technologies GmbH
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IT Just working - initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package com.minres.scviewer.database.ftr;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.minres.scviewer.database.IWaveform;
|
|
||||||
import com.minres.scviewer.database.InputFormatException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class TxStream.
|
|
||||||
*/
|
|
||||||
class TxStream extends AbstractTxStream {
|
|
||||||
|
|
||||||
/** The kind. */
|
|
||||||
final String kind;
|
|
||||||
|
|
||||||
final ArrayList<Long> fileOffsets = new ArrayList<>();
|
|
||||||
|
|
||||||
final ArrayList<byte[]> chunks = new ArrayList<>();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new tx stream.
|
|
||||||
*
|
|
||||||
* @param loader the loader
|
|
||||||
* @param id the id
|
|
||||||
* @param name the name
|
|
||||||
* @param kind the kind
|
|
||||||
*/
|
|
||||||
TxStream(FtrDbLoader loader, Long id, String name, String kind) {
|
|
||||||
super(loader, id, name);
|
|
||||||
this.kind = kind;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if is same.
|
|
||||||
*
|
|
||||||
* @param other the other
|
|
||||||
* @return true, if is same
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean isSame(IWaveform other) {
|
|
||||||
return (other instanceof TxStream && this.getId() == other.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the kind.
|
|
||||||
*
|
|
||||||
* @return the kind
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getKind() {
|
|
||||||
return kind;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<byte[]> getChunks() throws InputFormatException {
|
|
||||||
if(chunks.size()==0) {
|
|
||||||
chunks.addAll(loader.getChunksAtOffsets(fileOffsets));
|
|
||||||
}
|
|
||||||
return chunks;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
/*
|
|
||||||
* JACOB - CBOR implementation in Java.
|
|
||||||
*
|
|
||||||
* (C) Copyright - 2013 - J.W. Janssen <j.w.janssen@lxtreme.nl>
|
|
||||||
*
|
|
||||||
* Licensed under Apache License v2.0.
|
|
||||||
*/
|
|
||||||
package jacob;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constant values used by the CBOR format.
|
|
||||||
*/
|
|
||||||
public interface CborConstants {
|
|
||||||
/** Major type 0: unsigned integers. */
|
|
||||||
int TYPE_UNSIGNED_INTEGER = 0x00;
|
|
||||||
/** Major type 1: negative integers. */
|
|
||||||
int TYPE_NEGATIVE_INTEGER = 0x01;
|
|
||||||
/** Major type 2: byte string. */
|
|
||||||
int TYPE_BYTE_STRING = 0x02;
|
|
||||||
/** Major type 3: text/UTF8 string. */
|
|
||||||
int TYPE_TEXT_STRING = 0x03;
|
|
||||||
/** Major type 4: array of items. */
|
|
||||||
int TYPE_ARRAY = 0x04;
|
|
||||||
/** Major type 5: map of pairs. */
|
|
||||||
int TYPE_MAP = 0x05;
|
|
||||||
/** Major type 6: semantic tags. */
|
|
||||||
int TYPE_TAG = 0x06;
|
|
||||||
/** Major type 7: floating point, simple data types. */
|
|
||||||
int TYPE_FLOAT_SIMPLE = 0x07;
|
|
||||||
|
|
||||||
/** Denotes a one-byte value (uint8). */
|
|
||||||
int ONE_BYTE = 0x18;
|
|
||||||
/** Denotes a two-byte value (uint16). */
|
|
||||||
int TWO_BYTES = 0x19;
|
|
||||||
/** Denotes a four-byte value (uint32). */
|
|
||||||
int FOUR_BYTES = 0x1a;
|
|
||||||
/** Denotes a eight-byte value (uint64). */
|
|
||||||
int EIGHT_BYTES = 0x1b;
|
|
||||||
|
|
||||||
/** The CBOR-encoded boolean <code>false</code> value (encoded as "simple value": {@link #MT_SIMPLE}). */
|
|
||||||
int FALSE = 0x14;
|
|
||||||
/** The CBOR-encoded boolean <code>true</code> value (encoded as "simple value": {@link #MT_SIMPLE}). */
|
|
||||||
int TRUE = 0x15;
|
|
||||||
/** The CBOR-encoded <code>null</code> value (encoded as "simple value": {@link #MT_SIMPLE}). */
|
|
||||||
int NULL = 0x16;
|
|
||||||
/** The CBOR-encoded "undefined" value (encoded as "simple value": {@link #MT_SIMPLE}). */
|
|
||||||
int UNDEFINED = 0x17;
|
|
||||||
/** Denotes a half-precision float (two-byte IEEE 754, see {@link #MT_FLOAT}). */
|
|
||||||
int HALF_PRECISION_FLOAT = 0x19;
|
|
||||||
/** Denotes a single-precision float (four-byte IEEE 754, see {@link #MT_FLOAT}). */
|
|
||||||
int SINGLE_PRECISION_FLOAT = 0x1a;
|
|
||||||
/** Denotes a double-precision float (eight-byte IEEE 754, see {@link #MT_FLOAT}). */
|
|
||||||
int DOUBLE_PRECISION_FLOAT = 0x1b;
|
|
||||||
/** The CBOR-encoded "break" stop code for unlimited arrays/maps. */
|
|
||||||
int BREAK = 0x1f;
|
|
||||||
|
|
||||||
/** Semantic tag value describing date/time values in the standard format (UTF8 string, RFC3339). */
|
|
||||||
int TAG_STANDARD_DATE_TIME = 0;
|
|
||||||
/** Semantic tag value describing date/time values as Epoch timestamp (numeric, RFC3339). */
|
|
||||||
int TAG_EPOCH_DATE_TIME = 1;
|
|
||||||
/** Semantic tag value describing a positive big integer value (byte string). */
|
|
||||||
int TAG_POSITIVE_BIGINT = 2;
|
|
||||||
/** Semantic tag value describing a negative big integer value (byte string). */
|
|
||||||
int TAG_NEGATIVE_BIGINT = 3;
|
|
||||||
/** Semantic tag value describing a decimal fraction value (two-element array, base 10). */
|
|
||||||
int TAG_DECIMAL_FRACTION = 4;
|
|
||||||
/** Semantic tag value describing a big decimal value (two-element array, base 2). */
|
|
||||||
int TAG_BIGDECIMAL = 5;
|
|
||||||
/** Semantic tag value describing an expected conversion to base64url encoding. */
|
|
||||||
int TAG_EXPECTED_BASE64_URL_ENCODED = 21;
|
|
||||||
/** Semantic tag value describing an expected conversion to base64 encoding. */
|
|
||||||
int TAG_EXPECTED_BASE64_ENCODED = 22;
|
|
||||||
/** Semantic tag value describing an expected conversion to base16 encoding. */
|
|
||||||
int TAG_EXPECTED_BASE16_ENCODED = 23;
|
|
||||||
/** Semantic tag value describing an encoded CBOR data item (byte string). */
|
|
||||||
int TAG_CBOR_ENCODED = 24;
|
|
||||||
/** Semantic tag value describing an URL (UTF8 string). */
|
|
||||||
int TAG_URI = 32;
|
|
||||||
/** Semantic tag value describing a base64url encoded string (UTF8 string). */
|
|
||||||
int TAG_BASE64_URL_ENCODED = 33;
|
|
||||||
/** Semantic tag value describing a base64 encoded string (UTF8 string). */
|
|
||||||
int TAG_BASE64_ENCODED = 34;
|
|
||||||
/** Semantic tag value describing a regular expression string (UTF8 string, PCRE). */
|
|
||||||
int TAG_REGEXP = 35;
|
|
||||||
/** Semantic tag value describing a MIME message (UTF8 string, RFC2045). */
|
|
||||||
int TAG_MIME_MESSAGE = 36;
|
|
||||||
/** Semantic tag value describing CBOR content. */
|
|
||||||
int TAG_CBOR_MARKER = 55799;
|
|
||||||
}
|
|
||||||
@@ -1,515 +0,0 @@
|
|||||||
/*
|
|
||||||
* JACOB - CBOR implementation in Java.
|
|
||||||
*
|
|
||||||
* (C) Copyright - 2013 - J.W. Janssen <j.w.janssen@lxtreme.nl>
|
|
||||||
*/
|
|
||||||
package jacob;
|
|
||||||
|
|
||||||
import static jacob.CborConstants.*;
|
|
||||||
import static jacob.CborType.*;
|
|
||||||
|
|
||||||
import java.io.EOFException;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.PushbackInputStream;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides a decoder capable of handling CBOR encoded data from a {@link InputStream}.
|
|
||||||
*/
|
|
||||||
public class CborDecoder {
|
|
||||||
protected final PushbackInputStream m_is;
|
|
||||||
|
|
||||||
protected final int total_avail;
|
|
||||||
|
|
||||||
static int getAvailableBytes(PushbackInputStream is) {
|
|
||||||
try {
|
|
||||||
return is.available();
|
|
||||||
} catch (IOException e) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Creates a new {@link CborDecoder} instance.
|
|
||||||
*
|
|
||||||
* @param is the actual input stream to read the CBOR-encoded data from, cannot be <code>null</code>.
|
|
||||||
*/
|
|
||||||
public CborDecoder(InputStream is) {
|
|
||||||
if (is == null) {
|
|
||||||
throw new IllegalArgumentException("InputStream cannot be null!");
|
|
||||||
}
|
|
||||||
m_is = (is instanceof PushbackInputStream) ? (PushbackInputStream) is : new PushbackInputStream(is);
|
|
||||||
total_avail = getAvailableBytes(m_is);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void fail(String msg, Object... args) throws IOException {
|
|
||||||
throw new IOException(String.format(msg, args));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String lengthToString(int len) {
|
|
||||||
return (len < 0) ? "no payload" : (len == ONE_BYTE) ? "one byte" : (len == TWO_BYTES) ? "two bytes"
|
|
||||||
: (len == FOUR_BYTES) ? "four bytes" : (len == EIGHT_BYTES) ? "eight bytes" : "(unknown)";
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getPos() {
|
|
||||||
try {
|
|
||||||
return total_avail-m_is.available();
|
|
||||||
} catch (IOException e) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Peeks in the input stream for the upcoming type.
|
|
||||||
*
|
|
||||||
* @return the upcoming type in the stream, or <code>null</code> in case of an end-of-stream.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-type from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public CborType peekType() throws IOException {
|
|
||||||
int p = m_is.read();
|
|
||||||
if (p < 0) {
|
|
||||||
// EOF, nothing to peek at...
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
m_is.unread(p);
|
|
||||||
return valueOf(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prolog to reading an array value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the number of elements in the array to read, or <tt>-1</tt> in case of infinite-length arrays.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public long readArrayLength() throws IOException {
|
|
||||||
return readMajorTypeWithSize(TYPE_ARRAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a boolean value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the read boolean.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public boolean readBoolean() throws IOException {
|
|
||||||
int b = readMajorType(TYPE_FLOAT_SIMPLE);
|
|
||||||
if (b != FALSE && b != TRUE) {
|
|
||||||
fail("Unexpected boolean value: %d!", b);
|
|
||||||
}
|
|
||||||
return b == TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a "break"/stop value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return always <code>null</code>.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public Object readBreak() throws IOException {
|
|
||||||
readMajorTypeExact(TYPE_FLOAT_SIMPLE, BREAK);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a byte string value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the read byte string, never <code>null</code>. In case the encoded string has a length of <tt>0</tt>, an empty string is returned.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public byte[] readByteString() throws IOException {
|
|
||||||
long len = readMajorTypeWithSize(TYPE_BYTE_STRING);
|
|
||||||
if (len < 0) {
|
|
||||||
fail("Infinite-length byte strings not supported!");
|
|
||||||
}
|
|
||||||
if (len > Integer.MAX_VALUE) {
|
|
||||||
fail("String length too long!");
|
|
||||||
}
|
|
||||||
return readFully(new byte[(int) len]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prolog to reading a byte string value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the number of bytes in the string to read, or <tt>-1</tt> in case of infinite-length strings.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public long readByteStringLength() throws IOException {
|
|
||||||
return readMajorTypeWithSize(TYPE_BYTE_STRING);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a double-precision float value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the read double value, values from {@link Float#MIN_VALUE} to {@link Float#MAX_VALUE} are supported.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public double readDouble() throws IOException {
|
|
||||||
readMajorTypeExact(TYPE_FLOAT_SIMPLE, DOUBLE_PRECISION_FLOAT);
|
|
||||||
|
|
||||||
return Double.longBitsToDouble(readUInt64());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a single-precision float value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the read float value, values from {@link Float#MIN_VALUE} to {@link Float#MAX_VALUE} are supported.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public float readFloat() throws IOException {
|
|
||||||
readMajorTypeExact(TYPE_FLOAT_SIMPLE, SINGLE_PRECISION_FLOAT);
|
|
||||||
|
|
||||||
return Float.intBitsToFloat((int) readUInt32());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a half-precision float value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the read half-precision float value, values from {@link Float#MIN_VALUE} to {@link Float#MAX_VALUE} are supported.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public double readHalfPrecisionFloat() throws IOException {
|
|
||||||
readMajorTypeExact(TYPE_FLOAT_SIMPLE, HALF_PRECISION_FLOAT);
|
|
||||||
|
|
||||||
int half = readUInt16();
|
|
||||||
int exp = (half >> 10) & 0x1f;
|
|
||||||
int mant = half & 0x3ff;
|
|
||||||
|
|
||||||
double val;
|
|
||||||
if (exp == 0) {
|
|
||||||
val = mant * Math.pow(2, -24);
|
|
||||||
} else if (exp != 31) {
|
|
||||||
val = (mant + 1024) * Math.pow(2, exp - 25);
|
|
||||||
} else if (mant != 0) {
|
|
||||||
val = Double.NaN;
|
|
||||||
} else {
|
|
||||||
val = Double.POSITIVE_INFINITY;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ((half & 0x8000) == 0) ? val : -val;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a signed or unsigned integer value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the read integer value, values from {@link Long#MIN_VALUE} to {@link Long#MAX_VALUE} are supported.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public long readInt() throws IOException {
|
|
||||||
int ib = m_is.read();
|
|
||||||
|
|
||||||
// in case of negative integers, extends the sign to all bits; otherwise zero...
|
|
||||||
long ui = expectIntegerType(ib);
|
|
||||||
// in case of negative integers does a ones complement
|
|
||||||
return ui ^ readUInt(ib & 0x1f, false /* breakAllowed */);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a signed or unsigned 16-bit integer value in CBOR format.
|
|
||||||
*
|
|
||||||
* @read the small integer value, values from <tt>[-65536..65535]</tt> are supported.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying output stream.
|
|
||||||
*/
|
|
||||||
public int readInt16() throws IOException {
|
|
||||||
int ib = m_is.read();
|
|
||||||
|
|
||||||
// in case of negative integers, extends the sign to all bits; otherwise zero...
|
|
||||||
long ui = expectIntegerType(ib);
|
|
||||||
// in case of negative integers does a ones complement
|
|
||||||
return (int) (ui ^ readUIntExact(TWO_BYTES, ib & 0x1f));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a signed or unsigned 32-bit integer value in CBOR format.
|
|
||||||
*
|
|
||||||
* @read the small integer value, values in the range <tt>[-4294967296..4294967295]</tt> are supported.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying output stream.
|
|
||||||
*/
|
|
||||||
public long readInt32() throws IOException {
|
|
||||||
int ib = m_is.read();
|
|
||||||
|
|
||||||
// in case of negative integers, extends the sign to all bits; otherwise zero...
|
|
||||||
long ui = expectIntegerType(ib);
|
|
||||||
// in case of negative integers does a ones complement
|
|
||||||
return ui ^ readUIntExact(FOUR_BYTES, ib & 0x1f);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a signed or unsigned 64-bit integer value in CBOR format.
|
|
||||||
*
|
|
||||||
* @read the small integer value, values from {@link Long#MIN_VALUE} to {@link Long#MAX_VALUE} are supported.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying output stream.
|
|
||||||
*/
|
|
||||||
public long readInt64() throws IOException {
|
|
||||||
int ib = m_is.read();
|
|
||||||
|
|
||||||
// in case of negative integers, extends the sign to all bits; otherwise zero...
|
|
||||||
long ui = expectIntegerType(ib);
|
|
||||||
// in case of negative integers does a ones complement
|
|
||||||
return ui ^ readUIntExact(EIGHT_BYTES, ib & 0x1f);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a signed or unsigned 8-bit integer value in CBOR format.
|
|
||||||
*
|
|
||||||
* @read the small integer value, values in the range <tt>[-256..255]</tt> are supported.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying output stream.
|
|
||||||
*/
|
|
||||||
public int readInt8() throws IOException {
|
|
||||||
int ib = m_is.read();
|
|
||||||
|
|
||||||
// in case of negative integers, extends the sign to all bits; otherwise zero...
|
|
||||||
long ui = expectIntegerType(ib);
|
|
||||||
// in case of negative integers does a ones complement
|
|
||||||
return (int) (ui ^ readUIntExact(ONE_BYTE, ib & 0x1f));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prolog to reading a map of key-value pairs in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the number of entries in the map, >= 0.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public long readMapLength() throws IOException {
|
|
||||||
return readMajorTypeWithSize(TYPE_MAP);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a <code>null</code>-value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return always <code>null</code>.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public Object readNull() throws IOException {
|
|
||||||
readMajorTypeExact(TYPE_FLOAT_SIMPLE, NULL);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a single byte value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the read byte value.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public byte readSimpleValue() throws IOException {
|
|
||||||
readMajorTypeExact(TYPE_FLOAT_SIMPLE, ONE_BYTE);
|
|
||||||
return (byte) readUInt8();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a signed or unsigned small (<= 23) integer value in CBOR format.
|
|
||||||
*
|
|
||||||
* @read the small integer value, values in the range <tt>[-24..23]</tt> are supported.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying output stream.
|
|
||||||
*/
|
|
||||||
public int readSmallInt() throws IOException {
|
|
||||||
int ib = m_is.read();
|
|
||||||
|
|
||||||
// in case of negative integers, extends the sign to all bits; otherwise zero...
|
|
||||||
long ui = expectIntegerType(ib);
|
|
||||||
// in case of negative integers does a ones complement
|
|
||||||
return (int) (ui ^ readUIntExact(-1, ib & 0x1f));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a semantic tag value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the read tag value.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public long readTag() throws IOException {
|
|
||||||
return readUInt(readMajorType(TYPE_TAG), false /* breakAllowed */);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads an UTF-8 encoded string value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the read UTF-8 encoded string, never <code>null</code>. In case the encoded string has a length of <tt>0</tt>, an empty string is returned.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public String readTextString() throws IOException {
|
|
||||||
long len = readMajorTypeWithSize(TYPE_TEXT_STRING);
|
|
||||||
if (len < 0) {
|
|
||||||
fail("Infinite-length text strings not supported!");
|
|
||||||
}
|
|
||||||
if (len > Integer.MAX_VALUE) {
|
|
||||||
fail("String length too long!");
|
|
||||||
}
|
|
||||||
return new String(readFully(new byte[(int) len]), "UTF-8");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prolog to reading an UTF-8 encoded string value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return the length of the string to read, or <tt>-1</tt> in case of infinite-length strings.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public long readTextStringLength() throws IOException {
|
|
||||||
return readMajorTypeWithSize(TYPE_TEXT_STRING);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads an undefined value in CBOR format.
|
|
||||||
*
|
|
||||||
* @return always <code>null</code>.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
public Object readUndefined() throws IOException {
|
|
||||||
readMajorTypeExact(TYPE_FLOAT_SIMPLE, UNDEFINED);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads the next major type from the underlying input stream, and verifies whether it matches the given expectation.
|
|
||||||
*
|
|
||||||
* @param majorType the expected major type, cannot be <code>null</code> (unchecked).
|
|
||||||
* @return either <tt>-1</tt> if the major type was an signed integer, or <tt>0</tt> otherwise.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
protected long expectIntegerType(int ib) throws IOException {
|
|
||||||
int majorType = ((ib & 0xFF) >>> 5);
|
|
||||||
if ((majorType != TYPE_UNSIGNED_INTEGER) && (majorType != TYPE_NEGATIVE_INTEGER)) {
|
|
||||||
fail("Unexpected type: %s, expected type %s or %s!", getName(majorType), getName(TYPE_UNSIGNED_INTEGER),
|
|
||||||
getName(TYPE_NEGATIVE_INTEGER));
|
|
||||||
}
|
|
||||||
return -majorType;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads the next major type from the underlying input stream, and verifies whether it matches the given expectation.
|
|
||||||
*
|
|
||||||
* @param majorType the expected major type, cannot be <code>null</code> (unchecked).
|
|
||||||
* @return the read subtype, or payload, of the read major type.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
protected int readMajorType(int majorType) throws IOException {
|
|
||||||
int ib = m_is.read();
|
|
||||||
if (majorType != ((ib >>> 5) & 0x07)) {
|
|
||||||
fail("Unexpected type: %s, expected: %s!", getName(ib), getName(majorType));
|
|
||||||
}
|
|
||||||
return ib & 0x1F;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads the next major type from the underlying input stream, and verifies whether it matches the given expectations.
|
|
||||||
*
|
|
||||||
* @param majorType the expected major type, cannot be <code>null</code> (unchecked);
|
|
||||||
* @param subtype the expected subtype.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
protected void readMajorTypeExact(int majorType, int subtype) throws IOException {
|
|
||||||
int st = readMajorType(majorType);
|
|
||||||
if ((st ^ subtype) != 0) {
|
|
||||||
fail("Unexpected subtype: %d, expected: %d!", st, subtype);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads the next major type from the underlying input stream, verifies whether it matches the given expectation, and decodes the payload into a size.
|
|
||||||
*
|
|
||||||
* @param majorType the expected major type, cannot be <code>null</code> (unchecked).
|
|
||||||
* @return the number of succeeding bytes, >= 0, or <tt>-1</tt> if an infinite-length type is read.
|
|
||||||
* @throws IOException in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
|
|
||||||
*/
|
|
||||||
protected long readMajorTypeWithSize(int majorType) throws IOException {
|
|
||||||
return readUInt(readMajorType(majorType), true /* breakAllowed */);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads an unsigned integer with a given length-indicator.
|
|
||||||
*
|
|
||||||
* @param length the length indicator to use;
|
|
||||||
* @return the read unsigned integer, as long value.
|
|
||||||
* @throws IOException in case of I/O problems reading the unsigned integer from the underlying input stream.
|
|
||||||
*/
|
|
||||||
protected long readUInt(int length, boolean breakAllowed) throws IOException {
|
|
||||||
long result = -1;
|
|
||||||
if (length < ONE_BYTE) {
|
|
||||||
result = length;
|
|
||||||
} else if (length == ONE_BYTE) {
|
|
||||||
result = readUInt8();
|
|
||||||
} else if (length == TWO_BYTES) {
|
|
||||||
result = readUInt16();
|
|
||||||
} else if (length == FOUR_BYTES) {
|
|
||||||
result = readUInt32();
|
|
||||||
} else if (length == EIGHT_BYTES) {
|
|
||||||
result = readUInt64();
|
|
||||||
} else if (breakAllowed && length == BREAK) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (result < 0) {
|
|
||||||
fail("Not well-formed CBOR integer found, invalid length: %d!", result);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads an unsigned 16-bit integer value
|
|
||||||
*
|
|
||||||
* @return value the read value, values from {@link Long#MIN_VALUE} to {@link Long#MAX_VALUE} are supported.
|
|
||||||
* @throws IOException in case of I/O problems writing the CBOR-encoded value to the underlying output stream.
|
|
||||||
*/
|
|
||||||
protected int readUInt16() throws IOException {
|
|
||||||
byte[] buf = readFully(new byte[2]);
|
|
||||||
return (buf[0] & 0xFF) << 8 | (buf[1] & 0xFF);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads an unsigned 32-bit integer value
|
|
||||||
*
|
|
||||||
* @return value the read value, values from {@link Long#MIN_VALUE} to {@link Long#MAX_VALUE} are supported.
|
|
||||||
* @throws IOException in case of I/O problems writing the CBOR-encoded value to the underlying output stream.
|
|
||||||
*/
|
|
||||||
protected long readUInt32() throws IOException {
|
|
||||||
byte[] buf = readFully(new byte[4]);
|
|
||||||
return ((buf[0] & 0xFF) << 24 | (buf[1] & 0xFF) << 16 | (buf[2] & 0xFF) << 8 | (buf[3] & 0xFF)) & 0xffffffffL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads an unsigned 64-bit integer value
|
|
||||||
*
|
|
||||||
* @return value the read value, values from {@link Long#MIN_VALUE} to {@link Long#MAX_VALUE} are supported.
|
|
||||||
* @throws IOException in case of I/O problems writing the CBOR-encoded value to the underlying output stream.
|
|
||||||
*/
|
|
||||||
protected long readUInt64() throws IOException {
|
|
||||||
byte[] buf = readFully(new byte[8]);
|
|
||||||
return (buf[0] & 0xFFL) << 56 | (buf[1] & 0xFFL) << 48 | (buf[2] & 0xFFL) << 40 | (buf[3] & 0xFFL) << 32 | //
|
|
||||||
(buf[4] & 0xFFL) << 24 | (buf[5] & 0xFFL) << 16 | (buf[6] & 0xFFL) << 8 | (buf[7] & 0xFFL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads an unsigned 8-bit integer value
|
|
||||||
*
|
|
||||||
* @return value the read value, values from {@link Long#MIN_VALUE} to {@link Long#MAX_VALUE} are supported.
|
|
||||||
* @throws IOException in case of I/O problems writing the CBOR-encoded value to the underlying output stream.
|
|
||||||
*/
|
|
||||||
protected int readUInt8() throws IOException {
|
|
||||||
return m_is.read() & 0xff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads an unsigned integer with a given length-indicator.
|
|
||||||
*
|
|
||||||
* @param length the length indicator to use;
|
|
||||||
* @return the read unsigned integer, as long value.
|
|
||||||
* @throws IOException in case of I/O problems reading the unsigned integer from the underlying input stream.
|
|
||||||
*/
|
|
||||||
protected long readUIntExact(int expectedLength, int length) throws IOException {
|
|
||||||
if (((expectedLength == -1) && (length >= ONE_BYTE)) || ((expectedLength >= 0) && (length != expectedLength))) {
|
|
||||||
fail("Unexpected payload/length! Expected %s, but got %s.", lengthToString(expectedLength),
|
|
||||||
lengthToString(length));
|
|
||||||
}
|
|
||||||
return readUInt(length, false /* breakAllowed */);
|
|
||||||
}
|
|
||||||
|
|
||||||
private byte[] readFully(byte[] buf) throws IOException {
|
|
||||||
int len = buf.length;
|
|
||||||
int n = 0, off = 0;
|
|
||||||
while (n < len) {
|
|
||||||
int count = m_is.read(buf, off + n, len - n);
|
|
||||||
if (count < 0) {
|
|
||||||
throw new EOFException();
|
|
||||||
}
|
|
||||||
n += count;
|
|
||||||
}
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||