136 lines · 4.8 KB · C
RawDownload
////  ScriptUUID.h//  libraries/script-engine/src/////  Created by Andrew Meadows on 2014-04-07//  Copyright (c) 2014 High Fidelity, Inc. All rights reserved.//  Copyright 2023 Overte e.V.////  Scriptable interface for a UUID helper class object. Used exclusively in the JavaScript API////  Distributed under the Apache License, Version 2.0.//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html//  SPDX-License-Identifier: Apache-2.0// /// @addtogroup ScriptEngine/// @{ #ifndef hifi_ScriptUUID_h#define hifi_ScriptUUID_h #include <QUuid>#include <QObject> #include "Scriptable.h" /*@jsdoc * The <code>Uuid</code> API provides facilities for working with UUIDs. * * @namespace Uuid * @variation 0 * * @hifi-interface * @hifi-client-entity * @hifi-avatar * @hifi-server-entity * @hifi-assignment-client * * @property {Uuid} NONE - The null UUID, <code>"{00000000-0000-0000-0000-000000000000}"</code>. *//// Provides the <code><a href="https://apidocs.overte.org/Uuid.html">Uuid</a></code> scripting interfaceclass ScriptUUID : public QObject, protected Scriptable {    Q_OBJECT    Q_PROPERTY(QString NONE READ getNullUuid CONSTANT) // String for use in scripts. public slots:    /*@jsdoc     * Generates a UUID from a string representation of the UUID.     * @function Uuid(0).fromString     * @param {string} string - A string representation of a UUID. The curly braces are optional.     * @returns {Uuid} A UUID if the given <code>string</code> is valid, <code>null</code> otherwise.     * @example <caption>Valid and invalid parameters.</caption>     * var uuid = Uuid.fromString("{527c27ea-6d7b-4b47-9ae2-b3051d50d2cd}");     * print(uuid); // {527c27ea-6d7b-4b47-9ae2-b3051d50d2cd}     *     * uuid = Uuid.fromString("527c27ea-6d7b-4b47-9ae2-b3051d50d2cd");     * print(uuid); // {527c27ea-6d7b-4b47-9ae2-b3051d50d2cd}     *     * uuid = Uuid.fromString("527c27ea");     * print(uuid); // null     */    QUuid fromString(const QString& string);     /*@jsdoc     * Generates a string representation of a UUID. However, because UUIDs are represented in JavaScript as strings, this is in     * effect a no-op.     * @function Uuid(0).toString     * @param {Uuid} id - The UUID to generate a string from.     * @returns {string} - A string representation of the UUID.     */    QString toString(const QUuid& id);        /*@jsdoc     * Generates a new UUID.     * @function Uuid(0).generate     * @returns {Uuid} A new UUID.     * @example <caption>Generate a new UUID and reports its JavaScript type.</caption>     * var uuid = Uuid.generate();     * print(uuid);        // {nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}     * print(typeof uuid); // string     */    QUuid generate();     /*@jsdoc     * Tests whether two UUIDs are equal.     * @function Uuid(0).isEqual     * @param {Uuid} idA - The first UUID to compare.     * @param {Uuid} idB - The second UUID to compare.     * @returns {boolean} <code>true</code> if the two UUIDs are equal, otherwise <code>false</code>.     * @example <caption>Demonstrate <code>true</code> and <code>false</code> cases.</caption>     * var uuidA = Uuid.generate();     * var uuidB = Uuid.generate();     * print(Uuid.isEqual(uuidA, uuidB)); // false     * uuidB = uuidA;     * print(Uuid.isEqual(uuidA, uuidB)); // true     */    bool isEqual(const QUuid& idA, const QUuid& idB);     /*@jsdoc     * Tests whether a UUID is null.     * @function Uuid(0).isNull     * @param {Uuid} id - The UUID to test.     * @returns {boolean} <code>true</code> if the UUID equals <code>Uuid.NONE</code> or is <code>null</code>, otherwise     *     <code>false</code>.     * @example <caption>Demonstrate <code>true</code> and <code>false</code> cases.</caption>     * var uuid; // undefined     * print(Uuid.isNull(uuid)); // false     * uuid = Uuid.generate();     * print(Uuid.isNull(uuid)); // false     * uuid = Uuid.NONE;     * print(Uuid.isNull(uuid)); // true     * uuid = null;     * print(Uuid.isNull(uuid)); // true     */    bool isNull(const QUuid& id);     /*@jsdoc     * Prints a UUID to the program log, as a text label followed by the UUID value.     * @function Uuid(0).print     * @param {string} label - The label to print.     * @param {Uuid} id - The UUID to print.     * @example <caption>Two ways of printing a label plus UUID.</caption>     * var uuid = Uuid.generate();     * Uuid.print("Generated UUID:", uuid); // Generated UUID: {nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}     * print("Generated UUID: " + uuid);    // Generated UUID: {nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}     */    void print(const QString& label, const QUuid& id);    QString getNullUuid() const { return NULL_ID; } private:    const QString NULL_ID { "{00000000-0000-0000-0000-000000000000}" };}; #endif // hifi_ScriptUUID_h /// @}