Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1086)

Unified Diff: sky/specs/idl.md

Issue 912653003: Specs: Dartification or various odds and ends (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/specs/dom.md ('k') | sky/specs/markup.md » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/specs/idl.md
diff --git a/sky/specs/idl.md b/sky/specs/idl.md
deleted file mode 100644
index 2c558680ad2e92f18a0973e297ef4a1f53680da1..0000000000000000000000000000000000000000
--- a/sky/specs/idl.md
+++ /dev/null
@@ -1,158 +0,0 @@
-Sky IDL
-=======
-
-The Sky IDL language is used to describe JS APIs found in Sky, in
-particular, the JS APIs exposed by the four magical imports defined in
-this document.
-
-Sky IDL definitions are typically compiled to C++ that exposes the C++
-implementations of the APIs to JavaScript.
-
-Sky IDL works more or less the same as Web IDL but the syntax is a bit
-different.
-
-```javascript
-module 'sky:modulename' {
-
- // this is a comment
-
- typedef NewType OldType; // useful when OldType is a commonly-used union
-
- callback CallbackName ReturnType (ArgumentType argumentName);
-
- class ClassName {
- // a class corresponds to a JavaScript prototype
- // corresponds to a WebIDL 'interface'
- }
-
- abstract class Superclass {
- // an abstract class can't have a non-abstract constructor
- // an abstract class may have abstract constructors and methods
- // an abstract class may have everything else a class can have
-
- abstract constructor ();
- // this indicates that non-abstract subclasses must have a constructor with the given arguments
-
- abstract ReturnType methodCallback();
- // this method does nothing, but is included to describe the interface that subclasses will implement
- // a non-abstract class must have an explicit implementation of all inherited abstract methods
-
- }
-
- class Subclass : Superclass {
- // properties
- readonly attribute ReturnType attributeName; // getter
- attribute ReturnType attributeName; // getter and setter
-
- // methods and constructors
- constructor ();
- ReturnType method();
- // When the platform calls this method, it always invokes the "real" method, even if it's been
- // deleted from the prototypes (as if it took a reference to the method at startup, and stored
- // state using Symbols)
- // Calling a method with fewer arguments than defined will throw.
- // Calling a method with more arguments ignores the extra arguments.
- virtual ReturnType methodCallback();
- // when the platform calls this, it actually calls it the way JS would, so author overrides do
- // affect what gets called. Make sure if you override it that you call the superclass implementation!
- // The default implementations of 'virtual' methods all end by calling the identically named method
- // on the superclass, if there is such a method.
-
- // non-abstract classes cannot have abstract constructors or methods, and in particular, must
- // have explicit non-abstract versions of any inherited abstract constructors or methods
-
- // properties on the constructor
- constructor readonly attribute ReturnType staticName;
-
- // private APIs - see below
- private void method();
-
- // arguments and overloading are done as follows
- // note that the argument names are only for documentation purposes
- ReturnType method(ArgumentType argumentName1, ArgumentType argumentName2);
- // the last argument's type can have "..." appended to it to indicate a varargs-like situation
- ReturnType method(ArgumentType argumentName1, ArgumentType... allSubsequentArguments);
- // trailing arguments can have a default value, which must be a literal of the given type
- ReturnType method(ArgumentType argumentName1, ArgumentType argumentName2 = defaultValue);
- }
-
- dictionary Options {
- String foo; // if there's no default, the property must be specified or it's a TypeError
- Integer bar = 4; // properties can have default values
- }
-
- // the module can have properties and methods also
- attribute String Foo;
- void method();
-
- interface InterfaceName {
- // describes a template of a prototype, in the same syntax as a class
- // not actually exposed in the runtime
- }
-
-}
-```
-
-### Private APIs ###
-
-Private APIs are only accessible via Symbol objects, which are then
-exposed on the sky:debug module's exports object as the name of the
-member given in the IDL.
-
-For example, consider:
-
-```javascript
-class Foo {
- private void Bar();
-}
-```
-
-In a script with a ``foo`` object of type ``Foo``, ``foo.Bar`` is
-undefined. However, it can be obtained as follows:
-
-```html
-<import src="sky:debug" as="debug"/>
-<!-- ... import whatever defines 'foo' ... -->
-<script>
- foo[debug.Bar]
-</script>
-```
-
-### Types ###
-
-The following types are available:
-
-* ``Integer`` - WebIDL ``long long``
-* ``Float`` - WebIDL ``double``
-* ``Infinity`` - singleton type with value ``Infinity``
-* ``String`` - WebIDL ``USVString``
-* ``Boolean`` - WebIDL ``boolean``
-* ``Object`` - WebIDL ``object`` (``ClassName`` can be used as a literal for this type)
-* ``ClassName`` - an instance of the class ClassName
-* ``Class<ClassName>`` - a class ClassName or one of its subclasses (not an instance)
-* ``DictionaryName`` - an instance of the dictionary DictionaryName
-* ``Promise<Type>`` - WebIDL ``Promise<T>``
-* ``Generator<Type>`` - An ECMAScript generator function that returns data of the given type
-* ``Array<Type>`` - WebIDL ``sequence<T>``
-* ``Dictionary<Type>`` - unordered set of name-value String-Type pairs with no duplicate names
-* ``Type?`` - union of Type and the singleton type with value ``null`` (WebIDL nullable)
-* ``(Type1 or Type2)`` - union of Type1 and Type2 (WebIDL union)
-* ``any`` - union of all types (WebIDL ``any``)
-
-Methods that return nothing (undefined, in JS) use the keyword "void"
-instead of a type.
-
-
-TODO(ianh): Define in detail how this actually works
-
-
-Mojom IDL
----------
-
-The Mojom IDL language is used to describe the APIs exposed over Mojo
-pipes.
-
-Mojom IDL definitions are typically compiled to wrappers in each
-language, which are then used as imports.
-
-TODO(ianh): Define in detail how this actually works
« no previous file with comments | « sky/specs/dom.md ('k') | sky/specs/markup.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698