Formatting Solidity Elements

.. sol:contract:: Name is Parent1, Parent2, ...
.. sol:interface:: Name is Parent1, Parent2, ...
.. sol:library:: Name

These directives describe top-level Solidity objects. The following:

.. sol:library:: SafeMath

    Provides arithemetic operations guarded against overflow

renders as

library SafeMath

Provides arithemetic operations guarded against overflow

Likewise, the following:

.. sol:contract:: MintableBurnableToken is MintableToken, StandardBurnableToken

    A token which can both be minted and burnt.

renders as

contract MintableBurnableToken is MintableToken, StandardBurnableToken

A token which can both be minted and burnt.

.. sol:statevar:: type visibility name

State variables in Solidity:

.. sol:statevar:: int128 public widgetSocket

    A socket for a widget.

yields

int128 public widgetSocket

A socket for a widget.

Visibility modifiers are optional and include the following:

  • public
  • private
  • internal
.. sol:constructor:: (type mod arg1, type mod arg2, ...) mod1 mod2 ...

Constructors for contracts. May be used in the context of a sol:contract directive. For example,

.. sol:contract:: FooFactory

    Produces instances of Foo.

    .. sol:constructor:: (uint a, int b, bytes32 c) public restrictedTo(a)

        Creates a FooFactory, initializing with supplied parameters.

yields

contract FooFactory

Produces instances of Foo.

constructor(uint a, int b, bytes32 c)
public
 restrictedTo(a)

Creates a FooFactory, initializing the new instance with supplied parameters.

.. sol:function:: name(type mod arg1, ...) mod1 ... returns (type r1, ...)

Solidity functions. May be used in the context of a sol:contract, sol:library, or sol:interface directive. For example,

.. sol:interface:: ERC20

    .. sol:function:: balanceOf(address tokenOwner) \
        public constant returns (uint balance)

    Get the token balance for account ``tokenOwner``.

yields

interface ERC20
function balanceOf(address tokenOwner)
public
 constant
returns (uint balance)

Get the token balance for account tokenOwner.

.. sol:modifier:: name(type mod arg1, ...)

Solidity function modifiers. For example:

.. sol:contract:: Ownable

    .. sol:modifier:: onlyOwner()

        Throws if called by any account other than the owner.

yields

contract Ownable
modifier onlyOwner()

Throws if called by any account other than the owner.

.. sol:event:: name(type mod arg1, ...)

Solidity events. For example:

.. sol:contract:: RefundVault is Ownable

    .. sol:event:: Refunded(address indexed beneficiary, uint256 weiAmount)

        Emitted when ``weiAmount`` gets refunded to a ``beneficiary``.

yields

contract RefundVault is Ownable
event Refunded(address indexed beneficiary, uint256 weiAmount)

Emitted when weiAmount gets refunded to a beneficiary.

.. sol:struct:: Name

Solidity structs. Members of the struct are represented by a member field. For example:

.. sol:struct:: DreamMachine

    Some archetypical madness.

    :member uint widget: Funky lil' widget.
    :member FunkUtils.Orientation orientation: Which way the machine is pointing.
    :member typelessThing: Type information is optional.

yields

struct DreamMachine

Some archetypical madness.

Members:
  • widget (uint) – Funky lil’ widget.
  • orientation (FunkUtils.Orientation) – Which way the machine is pointing.
  • typelessThing – Type information is optional.
.. sol:enum:: Name

Solidity enum definitions. Like struct, members are represented by a member field, but for enums, this field is typeless. For example:

.. sol:enum:: Direction

    Which way to go.

    :member North: Where Santa's at.
    :member South: Where penguins're at.
    :member East: Get tricky.
    :member West: Get funky.

yields

enum Direction

Which way to go.

Members:
  • North – Where Santa’s at.
  • South – Where penguins’re at.
  • East – Get tricky.
  • West – Get funky.