summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNico Vertriest <nico.vertriest@digia.com>2015-01-16 11:54:36 +0100
committerNico Vertriest <nico.vertriest@digia.com>2015-01-19 15:07:16 +0100
commit0445e84888cd0d2f9a8c90f3a88317ab05c690d7 (patch)
tree62af79114ff19f641b605994a3be56467bbc924d
parentb459510d57fe78c09adbe3148655e0e3de7776c9 (diff)
downloadqtscript-0445e84888cd0d2f9a8c90f3a88317ab05c690d7.tar.gz
Doc: Moved the example documentation to correct locations
And fix the \snippet commands to use the correct paths. Also edited dependencies qdocconf files Task-number: QTBUG-43810 Change-Id: I3c2fb6d2a48900a9b5651225381707c9ec25065a Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Topi Reiniƶ <topi.reinio@digia.com>
-rw-r--r--examples/script/context2d/doc/images/context2d-example-smileysmile.png (renamed from doc/src/images/context2d-example-smileysmile.png)bin3457 -> 3457 bytes
-rw-r--r--examples/script/context2d/doc/images/context2d-example.png (renamed from doc/src/images/context2d-example.png)bin14160 -> 14160 bytes
-rw-r--r--examples/script/context2d/doc/src/context2d.qdoc (renamed from doc/src/examples/context2d.qdoc)54
-rw-r--r--examples/script/defaultprototypes/doc/images/defaultprototypes-example.png (renamed from doc/src/images/defaultprototypes-example.png)bin5840 -> 5840 bytes
-rw-r--r--examples/script/defaultprototypes/doc/src/defaultprototypes.qdoc (renamed from doc/src/examples/defaultprototypes.qdoc)18
-rw-r--r--examples/script/helloscript/doc/src/helloscript.qdoc (renamed from doc/src/examples/helloscript.qdoc)20
-rw-r--r--src/script/api/qscriptclass.cpp2
-rw-r--r--src/script/doc/qtscript.qdocconf2
-rw-r--r--src/script/doc/snippets/code/doc_src_examples_hellotr.qdoc71
-rw-r--r--src/script/doc/src/qtscript-index.qdoc2
-rw-r--r--src/script/doc/src/qtscript-module.qdoc2
-rw-r--r--src/scripttools/doc/qtscripttools.qdocconf11
-rw-r--r--src/scripttools/doc/src/qtscripttools-index.qdoc2
-rw-r--r--src/scripttools/doc/src/qtscripttools-module.qdoc2
14 files changed, 125 insertions, 61 deletions
diff --git a/doc/src/images/context2d-example-smileysmile.png b/examples/script/context2d/doc/images/context2d-example-smileysmile.png
index 369f32e..369f32e 100644
--- a/doc/src/images/context2d-example-smileysmile.png
+++ b/examples/script/context2d/doc/images/context2d-example-smileysmile.png
Binary files differ
diff --git a/doc/src/images/context2d-example.png b/examples/script/context2d/doc/images/context2d-example.png
index 0c12754..0c12754 100644
--- a/doc/src/images/context2d-example.png
+++ b/examples/script/context2d/doc/images/context2d-example.png
Binary files differ
diff --git a/doc/src/examples/context2d.qdoc b/examples/script/context2d/doc/src/context2d.qdoc
index 0bc364f..55c441a 100644
--- a/doc/src/examples/context2d.qdoc
+++ b/examples/script/context2d/doc/src/context2d.qdoc
@@ -108,16 +108,16 @@
and slots. Note that this class isn't tied to Qt Script in any
way.
- \snippet examples/script/context2d/context2d.h 0
+ \snippet script/context2d/context2d.h 0
The properties define various aspects of the Context2D
configuration.
- \snippet examples/script/context2d/context2d.h 1
+ \snippet script/context2d/context2d.h 1
The slots define the operations that can be performed.
- \snippet examples/script/context2d/context2d.h 2
+ \snippet script/context2d/context2d.h 2
The changed() signal is emitted when the contents of the drawing
area has changed, so that clients associated with the Context2D
@@ -132,7 +132,7 @@
QPainter::strokePath() to do the painting. Painting is done on a
QImage.
- \snippet examples/script/context2d/context2d.cpp 0
+ \snippet script/context2d/context2d.cpp 0
The property accessors and most of the slots manipulate the
internal Context2D state in some way. For the \c{lineCap}
@@ -143,7 +143,7 @@
decide which aspects of the QPainter that need to be updated
before doing the next painting operation.
- \snippet examples/script/context2d/context2d.cpp 3
+ \snippet script/context2d/context2d.cpp 3
The implementation of the \c{fillStyle} property is interesting,
since the value can be either a string or a \c{CanvasGradient}.
@@ -151,7 +151,7 @@
and check the actual type of the value to see how to handle the
write.
- \snippet examples/script/context2d/context2d.cpp 1
+ \snippet script/context2d/context2d.cpp 1
Context2D does not have a concept of a paint event; painting
operations can happen at any time. We would like to be efficient,
@@ -163,7 +163,7 @@
the state of the QPainter (brush, pen, etc.) so that it reflects
the current Context2D state.
- \snippet examples/script/context2d/context2d.cpp 2
+ \snippet script/context2d/context2d.cpp 2
The implementation of each painting operation ends by calling
scheduleChange(), which will post a zero-timer event if one is
@@ -177,13 +177,13 @@
\section1 The Canvas Widget
- \snippet examples/script/context2d/qcontext2dcanvas.h 0
+ \snippet script/context2d/qcontext2dcanvas.h 0
The QContext2DCanvas class provides a widget that renders
the contents of a Context2D object. It also provides a
minimal scripting API, most notably the getContext() function.
- \snippet examples/script/context2d/qcontext2dcanvas.cpp 3
+ \snippet script/context2d/qcontext2dcanvas.cpp 3
The constructor connects to the changed() signal of the
Context2D object, so that the widget can update itself
@@ -191,18 +191,18 @@
mouse move events will be received even when no mouse
buttons are depressed.
- \snippet examples/script/context2d/qcontext2dcanvas.cpp 0
+ \snippet script/context2d/qcontext2dcanvas.cpp 0
The getContext() function asks the environment to wrap the
Context2D object; the resulting proxy object makes the
Context2D API available to scripts.
- \snippet examples/script/context2d/qcontext2dcanvas.cpp 1
+ \snippet script/context2d/qcontext2dcanvas.cpp 1
The paintEvent() function simply paints the contents that
was last received from the Context2D object.
- \snippet examples/script/context2d/qcontext2dcanvas.cpp 2
+ \snippet script/context2d/qcontext2dcanvas.cpp 2
The canvas widget reimplements mouse and key event handlers, and
forwards these events to the scripting environment. The
@@ -211,7 +211,7 @@
\section1 The Environment
- \snippet examples/script/context2d/environment.h 0
+ \snippet script/context2d/environment.h 0
The Environment class provides a scripting environment where a
Canvas C++ object can be registered, looked up by ID (name),
@@ -220,20 +220,20 @@
web browser, so that scripts can call
\c{document.getElementById()} to obtain a reference to a canvas.
- \snippet examples/script/context2d/environment.h 1
+ \snippet script/context2d/environment.h 1
The Environment class provides the timer attributes of the DOM
Window Object interface. This enables us to support scripts that
do animation, for example.
- \snippet examples/script/context2d/environment.h 2
+ \snippet script/context2d/environment.h 2
The scriptError() signal is emitted when evaluation of a script
causes a script exception. For example, if a mouse press handler
or timeout handler causes an exception, the environment's client(s)
will be notified of this and can report the error.
- \snippet examples/script/context2d/environment.cpp 0
+ \snippet script/context2d/environment.cpp 0
The constructor initializes the environment. First it creates
the QScriptEngine that will be used to evaluate scripts. It
@@ -248,14 +248,14 @@
object; again, this is to provide a minimal level of compabilitity
with the scripting environment that web browsers provide.
- \snippet examples/script/context2d/environment.cpp 5
+ \snippet script/context2d/environment.cpp 5
The addCanvas() function adds the given canvas to the list of
registered canvas objects. The canvasByName() function looks up
a canvas by QObject::objectName(). This function is used to
implement the \c{document.getElementById()} script function.
- \snippet examples/script/context2d/environment.cpp 1
+ \snippet script/context2d/environment.cpp 1
The setInterval() and clearInterval() implementations use a QHash
to map from timer ID to the QScriptValue that holds the expression
@@ -264,7 +264,7 @@
it will emit the scriptError() signal if the script engine has an
uncaught exception.
- \snippet examples/script/context2d/environment.cpp 2
+ \snippet script/context2d/environment.cpp 2
The toWrapper() functions creates a QScriptValue that wraps the
given QObject. Note that the QScriptEngine::PreferExistingWrapperObject
@@ -274,7 +274,7 @@
a script can set new properties on the resulting wrapper object (e.g.
event handlers like \c{onmousedown}), and we want these to persist.
- \snippet examples/script/context2d/environment.cpp 3
+ \snippet script/context2d/environment.cpp 3
The handleEvent() function determines if there exists a handler
for the given event in the environment, and if so, invokes that
@@ -284,14 +284,14 @@
we only implement a subset of the full DOM API; just enough to
get most scripts to work.
- \snippet examples/script/context2d/environment.cpp 4
+ \snippet script/context2d/environment.cpp 4
The newFakeDomEvent() function is a helper function that creates
a new script object and initializes it with default values for
the attributes defined in the DOM Event and DOM UIEvent
interfaces.
- \snippet examples/script/context2d/environment.h 3
+ \snippet script/context2d/environment.h 3
The Document class defines two slots that become available to
scripts: getElementById() and getElementsByTagName().
@@ -301,7 +301,7 @@
\section1 The Application Window
- \snippet examples/script/context2d/window.cpp 0
+ \snippet script/context2d/window.cpp 0
The Window constructor creates an Environment object and
connects to its scriptError() signal. It then creates a
@@ -310,17 +310,17 @@
environment; scripts can access the canvas by e.g.
\c{document.getElementById('tutorial')}.
- \snippet examples/script/context2d/window.cpp 1
+ \snippet script/context2d/window.cpp 1
The window contains a list widget that is populated with
available scripts (read from a \c{scripts/} folder).
- \snippet examples/script/context2d/window.cpp 2
+ \snippet script/context2d/window.cpp 2
When an item is selected, the corresponding script is
evaluated in the environment.
- \snippet examples/script/context2d/window.cpp 3
+ \snippet script/context2d/window.cpp 3
When the "Run in Debugger" button is clicked, the Qt Script debugger will
automatically be invoked when the first statement of the script is
@@ -330,7 +330,7 @@
statements in the debugger's console widget, e.g. to perform custom
Context2D drawing operations, interactively.
- \snippet examples/script/context2d/window.cpp 4
+ \snippet script/context2d/window.cpp 4
If the evaluation of a script causes an uncaught exception, the Qt Script
debugger will automatically be invoked; this enables the user to get an
diff --git a/doc/src/images/defaultprototypes-example.png b/examples/script/defaultprototypes/doc/images/defaultprototypes-example.png
index 72fe3c4..72fe3c4 100644
--- a/doc/src/images/defaultprototypes-example.png
+++ b/examples/script/defaultprototypes/doc/images/defaultprototypes-example.png
Binary files differ
diff --git a/doc/src/examples/defaultprototypes.qdoc b/examples/script/defaultprototypes/doc/src/defaultprototypes.qdoc
index 4e63b5c..31de75d 100644
--- a/doc/src/examples/defaultprototypes.qdoc
+++ b/examples/script/defaultprototypes/doc/src/defaultprototypes.qdoc
@@ -45,12 +45,12 @@
To define a scripting API for QListWidgetItem in terms of
Qt properties and slots, we subclass QObject and QScriptable.
- \snippet examples/script/defaultprototypes/prototypes.h 0
+ \snippet script/defaultprototypes/prototypes.h 0
A single property, \c{text}, is defined, along with a slot,
\c{toString}.
- \snippet examples/script/defaultprototypes/prototypes.cpp 0
+ \snippet script/defaultprototypes/prototypes.cpp 0
The implementation of the property accessors use
the qscriptvalue_cast() function to cast the script object
@@ -70,13 +70,13 @@
found in the QListWidget object itself, the prototype will be used
as a fallback.
- \snippet examples/script/defaultprototypes/prototypes.h 1
+ \snippet script/defaultprototypes/prototypes.h 1
The additional slots will make it possible to add items to
a QListWidget from script code, and to set the background
color of the widget from a string.
- \snippet examples/script/defaultprototypes/prototypes.cpp 1
+ \snippet script/defaultprototypes/prototypes.cpp 1
Again, we use qscriptvalue_cast() to cast the script object
to the relevant C++ type, in this case a QListWidget pointer.
@@ -86,12 +86,12 @@
a QColor from the given string argument and changes the palette
accordingly.
- \snippet examples/script/defaultprototypes/main.cpp 0
+ \snippet script/defaultprototypes/main.cpp 0
The relevant C++ types must be made known to Qt's meta type
system.
- \snippet examples/script/defaultprototypes/main.cpp 1
+ \snippet script/defaultprototypes/main.cpp 1
For each type that we want to associate a prototype object with,
we create an instance of the prototype class, pass it to
@@ -99,19 +99,19 @@
the C++ type and the resulting script object by calling
QScriptEngine::setDefaultPrototype().
- \snippet examples/script/defaultprototypes/main.cpp 2
+ \snippet script/defaultprototypes/main.cpp 2
In this example, a single QListWidget object is added as
a global script variable, called \c{listWidget}. Script code
can add items to this widget by calling addItem() or addItems().
- \snippet examples/script/defaultprototypes/code.js 0
+ \snippet script/defaultprototypes/code.js 0
Script code can connect to signals of the QListWidget object;
signal handlers can use the interface defined in
the QListWidgetItem prototype to manipulate item arguments.
- \snippet examples/script/defaultprototypes/code.js 1
+ \snippet script/defaultprototypes/code.js 1
Not shown in this example is how to make QListWidgetItem
constructible from Qt Script code, i.e. to be able to
diff --git a/doc/src/examples/helloscript.qdoc b/examples/script/helloscript/doc/src/helloscript.qdoc
index dde244c..aa6563b 100644
--- a/doc/src/examples/helloscript.qdoc
+++ b/examples/script/helloscript/doc/src/helloscript.qdoc
@@ -34,34 +34,34 @@
to process the result of the evaluation. The example also shows how to
apply internationalization to scripts.
- \snippet examples/script/helloscript/main.cpp 0
+ \snippet script/helloscript/main.cpp 0
The application will load the script file to evaluate from a resource, so
we first make sure that the resource is initialized.
- \snippet examples/script/helloscript/main.cpp 1
+ \snippet script/helloscript/main.cpp 1
We attempt to load a translation, and install translation functions in the
script engine. How to produce a translation is explained later.
- \snippet examples/script/helloscript/main.cpp 2
+ \snippet script/helloscript/main.cpp 2
A push button is created and exported to the script environment as a
global variable, \c button. Scripts will be able to access properties,
signals and slots of the button as properties of the \c button script
object; the script object acts as a proxy to the C++ button object.
- \snippet examples/script/helloscript/main.cpp 3
+ \snippet script/helloscript/main.cpp 3
The contents of the script file are read.
- \snippet examples/script/helloscript/helloscript.js 0
+ \snippet script/helloscript/helloscript.js 0
The script sets the \c text (note that the qTr() function is used to allow
for translation) and \c styleSheet properties of the button, and calls the
button's \c show() slot.
- \snippet examples/script/helloscript/main.cpp 4
+ \snippet script/helloscript/main.cpp 4
The script is evaluated. Note that the file name is passed as the
(optional) second parameter; this makes it possible for the script engine
@@ -69,14 +69,14 @@
qTr() function be able to resolve the translations that are associated
with this script.
- \snippet examples/script/helloscript/main.cpp 5
+ \snippet script/helloscript/main.cpp 5
If the result is an Error object (e.g. the script contained a syntax
error, or tried to call a function that doesn't exist), we obtain
the line number and string representation of the error and display
it in a message box.
- \snippet examples/script/helloscript/main.cpp 6
+ \snippet script/helloscript/main.cpp 6
If the evaluation went well, the application event loop is entered.
@@ -109,11 +109,11 @@
Click the \gui Done checkbox and choose \gui File|Save from the
menu bar. The TS file will no longer contain
- \snippet doc/src/snippets/code/doc_src_examples_hellotr.qdoc 3
+ \snippet code/doc_src_examples_hellotr.qdoc 3
but instead will have
- \snippet doc/src/snippets/code/doc_src_examples_hellotr.qdoc 4
+ \snippet code/doc_src_examples_hellotr.qdoc 4
To see the application running in Latin, we have to generate a QM
file from the TS file. Generating a QM file can be achieved
diff --git a/src/script/api/qscriptclass.cpp b/src/script/api/qscriptclass.cpp
index de08e4f..b6c654f 100644
--- a/src/script/api/qscriptclass.cpp
+++ b/src/script/api/qscriptclass.cpp
@@ -84,7 +84,7 @@
script class supports one or more of the extensions specified by the
Extension enum.
- \sa QScriptClassPropertyIterator, QScriptEngine::newObject(), {Custom Script Class Example}
+ \sa QScriptClassPropertyIterator, QScriptEngine::newObject(), {Defining Custom Script Classes with QScriptClass}
*/
/*!
diff --git a/src/script/doc/qtscript.qdocconf b/src/script/doc/qtscript.qdocconf
index a58e1e7..f657bd5 100644
--- a/src/script/doc/qtscript.qdocconf
+++ b/src/script/doc/qtscript.qdocconf
@@ -16,7 +16,7 @@ headerdirs += ..
imagedirs += images
sourcedirs += ..
-depends += qtcore qtlinguist qtscripttools qtdoc
+depends += qtcore qtlinguist qtscripttools qtdoc qtqml qtwidgets qmake
# The following parameters are for creating a qhp file, the qhelpgenerator
# program can convert the qhp file into a qch file which can be opened in
diff --git a/src/script/doc/snippets/code/doc_src_examples_hellotr.qdoc b/src/script/doc/snippets/code/doc_src_examples_hellotr.qdoc
new file mode 100644
index 0000000..54464b6
--- /dev/null
+++ b/src/script/doc/snippets/code/doc_src_examples_hellotr.qdoc
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//! [0]
+lupdate -verbose hellotr.pro
+//! [0]
+
+
+//! [1]
+<!DOCTYPE TS><TS>
+<context>
+ <name>QPushButton</name>
+ <message>
+ <source>Hello world!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
+//! [1]
+
+
+//! [2]
+linguist hellotr_la.ts
+//! [2]
+
+
+//! [3]
+<translation type='unfinished'></translation>
+//! [3]
+
+
+//! [4]
+<translation>Orbis, te saluto!</translation>
+//! [4]
diff --git a/src/script/doc/src/qtscript-index.qdoc b/src/script/doc/src/qtscript-index.qdoc
index 663b1e6..242083a 100644
--- a/src/script/doc/src/qtscript-index.qdoc
+++ b/src/script/doc/src/qtscript-index.qdoc
@@ -1315,7 +1315,7 @@
When experimenting with Qt Script objects and inheritance, it can be
helpful to use the interactive interpreter included with the
- \l{Qt Script Examples}, located in \c{examples/script/qscript}.
+ Qt Script examples, located in \c{examples/script}.
\section2 Prototype Objects and Shared Properties
diff --git a/src/script/doc/src/qtscript-module.qdoc b/src/script/doc/src/qtscript-module.qdoc
index f355431..35a2830 100644
--- a/src/script/doc/src/qtscript-module.qdoc
+++ b/src/script/doc/src/qtscript-module.qdoc
@@ -48,7 +48,7 @@
\snippet code/doc_src_qtscript.cpp 0
- To link against the module, add this line to your \l qmake \c .pro file:
+ To link against the module, add this line to your \l {qmake Manual}{qmake} \c .pro file:
\snippet code/doc_src_qtscript.pro 1
diff --git a/src/scripttools/doc/qtscripttools.qdocconf b/src/scripttools/doc/qtscripttools.qdocconf
index 95ebf8a..4eae186 100644
--- a/src/scripttools/doc/qtscripttools.qdocconf
+++ b/src/scripttools/doc/qtscripttools.qdocconf
@@ -3,20 +3,13 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
# Name of the project which must match the outputdir. Determines the .index file
project = QtScriptTools
-# Directories in which to search for files to document and images.
-# By default set to the root directory of the project for sources
-# and headers and qdoc will therefore generate output for each file.
-# Images should be placed in <rootdir>/dic/images and examples in
-# <rootdir>/examples.
-# Paths are relative to the location of this file.
-exampledirs += ../../../examples \
- snippets
+exampledirs += snippets
headerdirs += ..
imagedirs += images
sourcedirs += ..
-depends += qtcore qtlinguist qtscript qtdoc
+depends += qtcore qtlinguist qtscript qtdoc qtwidgets qtqml qmake
# The following parameters are for creating a qhp file, the qhelpgenerator
# program can convert the qhp file into a qch file which can be opened in
diff --git a/src/scripttools/doc/src/qtscripttools-index.qdoc b/src/scripttools/doc/src/qtscripttools-index.qdoc
index 1817753..435ad6b 100644
--- a/src/scripttools/doc/src/qtscripttools-index.qdoc
+++ b/src/scripttools/doc/src/qtscripttools-index.qdoc
@@ -42,7 +42,7 @@
\snippet doc_src_qtscripttools.cpp 0
- To link against the module, add this line to your \l qmake \c .pro file:
+ To link against the module, add this line to your \l {qmake Manual}{qmake} \c .pro file:
\snippet doc_src_qtscripttools.pro 1
diff --git a/src/scripttools/doc/src/qtscripttools-module.qdoc b/src/scripttools/doc/src/qtscripttools-module.qdoc
index fea9a99..f5e3b17 100644
--- a/src/scripttools/doc/src/qtscripttools-module.qdoc
+++ b/src/scripttools/doc/src/qtscripttools-module.qdoc
@@ -44,7 +44,7 @@
\snippet doc_src_qtscripttools.cpp 0
- To link against the module, add this line to your \l qmake \c .pro file:
+ To link against the module, add this line to your \l {qmake Manual}{qmake} \c .pro file:
\snippet doc_src_qtscripttools.pro 1
*/