123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- //-----------------------------------------------------------------------------
- // Copyright (c) 2013 GarageGames, LLC
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to
- // deal in the Software without restriction, including without limitation the
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- // sell copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- // IN THE SOFTWARE.
- //-----------------------------------------------------------------------------
- // Warning! This file is not real C++ code!
- // It is designed to provide types, operators, and more that are needed by Doxygen
- // to create a TorqueScript reference.
- // As long as this file ends in .dox, compilers should ignore it, but Doxygen won't.
- // This means the psuedo-code in here will not be seen by your compiler but it will
- // be seen by the Doxygen code parser.
- // Add any constructs here that you want to use to "fake-out" Doxygen while creating
- // the Torquescript doc.
- //-----------------------------------------------------
- // TorqueScript Functions
- //-----------------------------------------------
- // Most functions will be defined in _ScriptBinding.h files.
- // Here we are only defining a doxygen group, called TorqueScriptFunctions,
- // for all functions to live within. This is necessary as Doxygen ignores global
- // functions unless they in a group. But it also helps organize the "modules" page of
- // the Doxygen output.
- // Clusters of functions -- such as vector functions or event scheduling functions --
- // should be kept within a subgroup of the TorqueScriptFunction umbrella group.
- // As groups are created, in various _ScriptBinding.h files, they should be marked as
- // @ingroup TorqueScriptFunctions like so:
- //
- // /*! @defgroup VectorMathFunctions Vector Math
- // @ingroup TorqueScriptFunctions
- // @{
- // */
- //
- // <functions, functions, functions!>
- //
- // /*! @} */ // group VectorMathFunctions
- /*!
- @defgroup TorqueScriptFunctions Function Categories
- */
- //-----------------------------------------------
- // TorqueScript Data Types
- //-----------------------------------------------
- // "Define" and document generic data types here. Doxygen does not really understand
- // how to define a language, so we need to fake it out with some C++ concept. We will
- // use "typedef" as it seems the most innocuous. Of course, typedef requires two arguments
- // so use "typedef type" then your data type.
- // Wrap all data types in a group. This will help organize Doxygen's output "module" page.
- /*!
- @defgroup TorqueScriptTypes Data Types
- @{
- */
- /*! Integers are whole numbers.
- ~~~
- 123
- 0xc001 // you can use 0x followed by hexadecimal digits
- ~~~
- */
- typedef type Integer;
- /*! Float, is a floating point number which can hold decimal values.
- ~~~
- 1.234
- 1234e-3 // you can use scientific notion
- ~~~
- */
- typedef type Float;
- /*! Text, such as names or phrases, are supported as strings.
- Numbers can also be stored in ::String format. Standard strings are stored in double-quotes.
- @par Example
- ~~~
- "abcd"
- ~~~
- @par Example
- ~~~
- $UserName = "Heather";
- ~~~
-
- Tagged strings are special in that they contain string data, but also have a special numeric tag associated with them. Tagged strings are used for sending string data across a network. The value of a tagged string is only sent once, regardless of how many times you actually do the sending.
- On subsequent sends, only the tag value is sent. Tagged values must be de-tagged when printing. You will not need to use a tagged string often unless you are in need of sending strings across a network often, like a chat system.
- @par Example
- ~~~
- $a = 'This is a tagged string';
- echo(" Tagged string: ", $a);
- echo("Detagged string: ", detag('$a'));
- ~~~
- The output will be similar to this:
- ~~~
- 24
- ____
- ~~~
- The second echo will be blank unless the string has been passed to you over a network.
- */
- typedef type String;
- /*! Boolean "numbers" have only two values - true or false.
- true (1)
- false (0)
- The constant `true` evaluates to the number 1 in TorqueScript, and the constant `false` evaluates to the number 0. However, non-zero values are also considered true. Think of booleans as "on/off" switches, often used in conditional statements.
- @par Example
- ~~~
- $lightsOn = true;
-
- if($lightsOn)
- echo("Lights are turned on");
- ~~~
- */
- typedef type Boolean;
- /*! Arrays are data structures used to store consecutive values of the same data type.
- + $TestArray[n] (Single-dimension)
- + $TestArray[m,n] (Multidimensional)
- + $TestArray[m_n] (Multidimensional)
- @par Example
- ~~~
- $userNames[0] = "Heather";
- $userNames[1] = "Nikki";
- $userNames[2] = "Mich";
- echo($userNames[0]);
- echo($userNames[1]);
- echo($userNames[2]);
- ~~~
- */
- typedef type Array;
- /*! Vector2 is a ::String of two numbers (::Float or ::Integer) separated by a space.
- It is a special case of a Vector. Note that TorqueScript does not check that you have exactly
- two elements. The type Vector2 is used here to remind you what is expected by a function, for instance.
- */
- typedef type Vector2;
- /*! Vector is a ::String of any number of values separated by spaces between each.
- ~~~
- %position = "25 32";
- %color = %red SPC %blue SPC %green SPC %alpha;
- ~~~
- */
- typedef type Vector;
- /*! Void is actually not a real type. It simply represents the absense of a type.
- */
- typedef type Void;
- /*! @} */ // data types
- //-----------------------------------------------
- // End TorqueScript Data Types
- //-----------------------------------------------
- //-----------------------------------------------
- // TorqueScript Operators
- //-----------------------------------------------
- // "Define" and document TorqueScript operators here. Doxygen does not really understand
- // how to define a language, so we need to fake it out with some C++ concept. As with
- // data types (above), we will use "typedef" as it seems the most innocuous. Of course,
- // typedef requires two arguments so use "typedef type" then your operator.
- // Wrap all operators in a group. This will help organize Doxygen's output "module" page.
- /*!
- @defgroup Operators Operators
- @{
- */
- /*! @defgroup StringOperators String Operators
- @{
- */
- /*! Concatenates two Strings into a single ::String separated by a space.
- Note: such a ::String can be decomposed with getWord()
- @par example
- ~~~
- %newString = "Hello" SPC "World";
- echo(%newString);
- OUTPUT:
- Hello World
- ~~~
- */
- typedef type SPC;
- /*! Concatenates two strings into a single ::String separated by a tab.
- Note: such a ::String can be decomposed with getField()
- @par example
- ~~~
- %newString = "Hello" TAB "World";
- echo(%newString);
- OUTPUT:
- Hello World
- ~~~
- */
- typedef type TAB;
- /*! Concatenates two strings into a single ::String with no separation.
- @par example
- ~~~
- %newString = "Hello" @ "World";
- echo(%newString);
- OUTPUT:
- HelloWorld
- ~~~
- */
- typedef type operator @;
- /*! Concatenates two strings into a single ::String separated by a new-line.
- @par example
- ~~~
- %newString = "Hello" NL "World";
- echo(%newString);
- OUTPUT:
- Hello
- World
- ~~~
- */
- typedef type NL;
- /*! @} */ // string operators
- /*! @defgroup mathOperators Arithmetic Operators
- @{
- */
- /*! @} */ // arithmetic operators
- /*! @defgroup constructionOperators Construction Operators
- @{
- */
- /*! create a new object
- @par Format
- @code
- %myID = new class([name])
- {
- [field = value;]
- ...
- };
- @endcode
- @par Where
- + *myID* is the return ID that can be used to access the object in the form `%%myID.myFunction`.\n
- + `new` is the keyword telling the engine to create an instance of the following *class*.\n
- + *class* is any class declared in the engine or in script that has been derived from SimObject.\n
- + *name* (optional) is the object's name for referencing in the form `name.myFunction` (without % or $ before it).\n
- + *field* - You may initialize static or dynamic class fields here, one at a time.\n
- @par Example
- @code
- // An SceneObject named 'Truck'
- // with two static fields and one dynamic field to define
- new SceneObject(Truck)
- {
- position = "0 0";
- size = "5 5";
- myField = 100;
- };
-
- // A nameless object (tracked by a variable), with no fields to set
- %myObject = new SimSet();
- @endcode
- */
- typedef type new;
- /*! @} */ // constructionOperators operators
- /*! @} */ // all operators
- //-----------------------------------------------
- // End TorqueScript Operators
- //-----------------------------------------------
|