mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #581 from Denton-L/docs-corrections
Minor Corrections to Documentation Content
This commit is contained in:
		
						commit
						cb865fb2b1
					
				| @ -185,7 +185,7 @@ return parameter list for functions. | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     contract c { | ||||
|     contract C { | ||||
|         function f(uint a) private returns (uint b) { return a + 1; } | ||||
|         function setData(uint a) internal { data = a; } | ||||
|         uint public data; | ||||
| @ -214,7 +214,7 @@ it is a state variable and if it is accessed externally | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     contract test { | ||||
|     contract Test { | ||||
|         uint public data = 42; | ||||
|     } | ||||
| 
 | ||||
| @ -222,7 +222,7 @@ The next example is a bit more complex: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     contract complex { | ||||
|     contract Complex { | ||||
|         struct Data { | ||||
|             uint a; | ||||
|             bytes3 b; | ||||
| @ -266,7 +266,7 @@ inheritable properties of contracts and may be overridden by derived contracts. | ||||
|         // This means that if the owner calls this function, the | ||||
|         // function is executed and otherwise, an exception is | ||||
|         // thrown. | ||||
|         modifier onlyowner { | ||||
|         modifier onlyOwner { | ||||
|             if (msg.sender != owner) | ||||
|                 throw; | ||||
|             _ | ||||
| @ -275,11 +275,11 @@ inheritable properties of contracts and may be overridden by derived contracts. | ||||
| 
 | ||||
| 
 | ||||
|     contract mortal is owned { | ||||
|         // This contract inherits the "onlyowner"-modifier from | ||||
|         // This contract inherits the "onlyOwner"-modifier from | ||||
|         // "owned" and applies it to the "close"-function, which | ||||
|         // causes that calls to "close" only have an effect if | ||||
|         // they are made by the stored owner. | ||||
|         function close() onlyowner { | ||||
|         function close() onlyOwner { | ||||
|             selfdestruct(owner); | ||||
|         } | ||||
|     } | ||||
| @ -305,7 +305,7 @@ inheritable properties of contracts and may be overridden by derived contracts. | ||||
|             registeredAddresses[msg.sender] = true; | ||||
|         } | ||||
| 
 | ||||
|         function changePrice(uint _price) onlyowner { | ||||
|         function changePrice(uint _price) onlyOwner { | ||||
|             price = _price; | ||||
|         } | ||||
|     } | ||||
| @ -717,13 +717,13 @@ Abstract Contracts | ||||
| 
 | ||||
| Contract functions can lack an implementation as in the following example (note that the function declaration header is terminated by `;`):: | ||||
| 
 | ||||
|     contract feline { | ||||
|     contract Feline { | ||||
|         function utterance() returns (bytes32); | ||||
|     } | ||||
| 
 | ||||
| Such contracts cannot be compiled (even if they contain implemented functions alongside non-implemented functions), but they can be used as base contracts:: | ||||
| 
 | ||||
|     contract Cat is feline { | ||||
|     contract Cat is Feline { | ||||
|         function utterance() returns (bytes32) { return "miaow"; } | ||||
|     } | ||||
| 
 | ||||
| @ -837,7 +837,7 @@ custom types without the overhead of external function calls: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     library bigint { | ||||
|     library BigInt { | ||||
|         struct bigint { | ||||
|             uint[] limbs; | ||||
|         } | ||||
| @ -880,7 +880,8 @@ custom types without the overhead of external function calls: | ||||
| 
 | ||||
| 
 | ||||
|     contract C { | ||||
|         using bigint for bigint.bigint; | ||||
|         using BigInt for BigInt.bigint; | ||||
| 
 | ||||
|         function f() { | ||||
|             var x = bigint.fromUint(7); | ||||
|             var y = bigint.fromUint(uint(-1)); | ||||
| @ -890,8 +891,8 @@ custom types without the overhead of external function calls: | ||||
| 
 | ||||
| As the compiler cannot know where the library will be | ||||
| deployed at, these addresses have to be filled into the | ||||
| final bytecode by a linker (see [Using the Commandline | ||||
| Compiler](#using-the-commandline-compiler) on how to use the | ||||
| final bytecode by a linker | ||||
| (see :ref:`commandline-compiler`) on how to use the | ||||
| commandline compiler for linking). If the addresses are not | ||||
| given as arguments to the compiler, the compiled hex code | ||||
| will contain placeholders of the form `__Set______` (where | ||||
|  | ||||
| @ -31,7 +31,7 @@ Internal Function Calls | ||||
| Functions of the current contract can be called directly ("internally"), also recursively, as seen in | ||||
| this nonsensical example:: | ||||
| 
 | ||||
|     contract c { | ||||
|     contract C { | ||||
|         function g(uint a) returns (uint ret) { return f(); } | ||||
|         function f() returns (uint ret) { return g(7) + f(); } | ||||
|     } | ||||
| @ -77,7 +77,7 @@ of unused parameters (especially return parameters) can be omitted. | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     contract c { | ||||
|     contract C { | ||||
|         function f(uint key, uint value) { ... } | ||||
| 
 | ||||
|         function g() { | ||||
| @ -541,7 +541,7 @@ It is planned that the stack height changes can be specified in inline assembly. | ||||
| 
 | ||||
| .. code:: | ||||
| 
 | ||||
|     contract c { | ||||
|     contract C { | ||||
|         uint b; | ||||
|         function f(uint x) returns (uint r) { | ||||
|             assembly { | ||||
| @ -615,7 +615,7 @@ be just `0`, but it can also be a complex functional-style expression. | ||||
| 
 | ||||
| .. code:: | ||||
| 
 | ||||
|     contract c { | ||||
|     contract C { | ||||
|         function f(uint x) returns (uint b) { | ||||
|             assembly { | ||||
|                 let v := add(x, 1) | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
| Frequently Asked Questions | ||||
| ########################### | ||||
| 
 | ||||
| This list was originally compiled by [fivedogit](mailto:fivedogit@gmail.com). | ||||
| This list was originally compiled by `fivedogit <mailto:fivedogit@gmail.com>`_. | ||||
| 
 | ||||
| 
 | ||||
| *************** | ||||
| @ -179,7 +179,7 @@ Mappings are already syntactically similar to arrays as they are, therefore it d | ||||
| 
 | ||||
| An example of this would be:: | ||||
| 
 | ||||
|     contract c { | ||||
|     contract C { | ||||
|         struct myStruct { | ||||
|             uint someNumber; | ||||
|             string someString; | ||||
| @ -218,7 +218,7 @@ Example:: | ||||
| 
 | ||||
|     contract C { | ||||
|         function f() returns (uint8[5]) { | ||||
|             string[4] memory AdaArr = ["This", "is", "an", "array"]; | ||||
|             string[4] memory adaArr = ["This", "is", "an", "array"]; | ||||
|             return ([1, 2, 3, 4, 5]); | ||||
|         } | ||||
|     } | ||||
| @ -360,7 +360,7 @@ Examples:: | ||||
| 
 | ||||
|         S public x = S(1, 2); | ||||
|         string name = "Ada"; | ||||
|         string[4] memory AdaArr = ["This", "is", "an", "array"]; | ||||
|         string[4] memory adaArr = ["This", "is", "an", "array"]; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -31,10 +31,10 @@ non-elementary type, the positions are found by adding an offset of `sha3(k . p) | ||||
| 
 | ||||
| So for the following contract snippet:: | ||||
| 
 | ||||
|     contract c { | ||||
|       struct S { uint a; uint b; } | ||||
|     contract C { | ||||
|       struct s { uint a; uint b; } | ||||
|       uint x; | ||||
|       mapping(uint => mapping(uint => S)) data; | ||||
|       mapping(uint => mapping(uint => s)) data; | ||||
|     } | ||||
| 
 | ||||
| The position of `data[4][9].b` is at `sha3(uint256(9) . sha3(uint256(4) . uint256(1))) + 1`. | ||||
| @ -97,6 +97,8 @@ even though the instructions contained a jump in the beginning. | ||||
| 
 | ||||
| .. index:: ! commandline compiler, compiler;commandline, ! solc, ! linker | ||||
| 
 | ||||
| .. _commandline-compiler: | ||||
| 
 | ||||
| ****************************** | ||||
| Using the Commandline Compiler | ||||
| ****************************** | ||||
| @ -119,7 +121,7 @@ files reside, so things like `import "/etc/passwd";` only work if you add `=/` a | ||||
| 
 | ||||
| If there are multiple matches due to remappings, the one with the longest common prefix is selected. | ||||
| 
 | ||||
| If your contracts use [libraries](#libraries), you will notice that the bytecode contains substrings of the form `__LibraryName______`. You can use `solc` as a linker meaning that it will insert the library addresses for you at those points: | ||||
| If your contracts use :ref:`libraries <libraries>`, you will notice that the bytecode contains substrings of the form `__LibraryName______`. You can use `solc` as a linker meaning that it will insert the library addresses for you at those points: | ||||
| 
 | ||||
| Either add `--libraries "Math:0x12345678901234567890 Heap:0xabcdef0123456"` to your command to provide an address for each library or store the string in a file (one library per line) and run `solc` using `--libraries fileName`. | ||||
| 
 | ||||
| @ -170,7 +172,7 @@ Global Variables | ||||
| - `sha3(...) returns (bytes32)`: compute the Ethereum-SHA3 hash of the (tightly packed) arguments | ||||
| - `sha256(...) returns (bytes32)`: compute the SHA256 hash of the (tightly packed) arguments | ||||
| - `ripemd160(...) returns (bytes20)`: compute RIPEMD of 256 the (tightly packed) arguments | ||||
| - `ecrecover(bytes32, uint8, bytes32, bytes32) returns (address)`: recover public key from elliptic curve signature | ||||
| - `ecrecover(bytes32, uint8, bytes32, bytes32) returns (address)`: recover address associated with the public key from elliptic curve signature | ||||
| - `addmod(uint x, uint y, uint k) returns (uint)`: compute `(x + y) % k` where the addition is performed with arbitrary precision and does not wrap around at `2**256`. | ||||
| - `mulmod(uint x, uint y, uint k) returns (uint)`: compute `(x * y) % k` where the multiplication is performed with arbitrary precision and does not wrap around at `2**256`. | ||||
| - `this` (current contract's type): the current contract, explicitly convertible to `address` | ||||
|  | ||||
| @ -252,7 +252,7 @@ No:: | ||||
|     for (...) { | ||||
|         ...;} | ||||
| 
 | ||||
| For control structures who's body contains a single statement, omitting the | ||||
| For control structures whose body contains a single statement, omitting the | ||||
| braces is ok *if* the statement is contained on a single line. | ||||
| 
 | ||||
| Yes:: | ||||
| @ -365,14 +365,14 @@ Yes:: | ||||
|         address e, | ||||
|         address f | ||||
|     ) { | ||||
|         do_something; | ||||
|         doSomething(); | ||||
|     } | ||||
| 
 | ||||
| No:: | ||||
| 
 | ||||
|     function thisFunctionHasLotsOfArguments(address a, address b, address c, | ||||
|         address d, address e, address f) { | ||||
|         do_something; | ||||
|         doSomething(); | ||||
|     } | ||||
| 
 | ||||
|     function thisFunctionHasLotsOfArguments(address a, | ||||
| @ -381,7 +381,7 @@ No:: | ||||
|                                             address d, | ||||
|                                             address e, | ||||
|                                             address f) { | ||||
|         do_something; | ||||
|         doSomething(); | ||||
|     } | ||||
| 
 | ||||
|     function thisFunctionHasLotsOfArguments( | ||||
| @ -391,7 +391,7 @@ No:: | ||||
|         address d, | ||||
|         address e, | ||||
|         address f) { | ||||
|         do_something; | ||||
|         doSomething(); | ||||
|     } | ||||
| 
 | ||||
| If a long function declaration has modifiers, then each modifier should be | ||||
| @ -405,7 +405,7 @@ Yes:: | ||||
|         priced | ||||
|         returns (address) | ||||
|     { | ||||
|         do_something; | ||||
|         doSomething(); | ||||
|     } | ||||
| 
 | ||||
|     function thisFunctionNameIsReallyLong( | ||||
| @ -418,7 +418,7 @@ Yes:: | ||||
|         priced | ||||
|         returns (address) | ||||
|     { | ||||
|         do_something; | ||||
|         doSomething(); | ||||
|     } | ||||
| 
 | ||||
| No:: | ||||
| @ -428,13 +428,13 @@ No:: | ||||
|                                           onlyowner | ||||
|                                           priced | ||||
|                                           returns (address) { | ||||
|         do_something; | ||||
|         doSomething(); | ||||
|     } | ||||
| 
 | ||||
|     function thisFunctionNameIsReallyLong(address x, address y, address z) | ||||
|         public onlyowner priced returns (address) | ||||
|     { | ||||
|         do_something; | ||||
|         doSomething(); | ||||
|     } | ||||
| 
 | ||||
|     function thisFunctionNameIsReallyLong(address x, address y, address z) | ||||
| @ -442,10 +442,10 @@ No:: | ||||
|         onlyowner | ||||
|         priced | ||||
|         returns (address) { | ||||
|         do_something; | ||||
|         doSomething(); | ||||
|     } | ||||
| 
 | ||||
| For constructor functions on inherited contracts who's bases require arguments, | ||||
| For constructor functions on inherited contracts whose bases require arguments, | ||||
| it is recommended to drop the base constructors onto new lines in the same | ||||
| manner as modifiers if the function declaration is long or hard to read. | ||||
| 
 | ||||
|  | ||||
| @ -94,8 +94,8 @@ Mathematical and Cryptographic Functions | ||||
|     compute the SHA-256 hash of the (tightly packed) arguments | ||||
| `ripemd160(...) returns (bytes20)`: | ||||
|     compute RIPEMD-160 hash of the (tightly packed) arguments | ||||
| `ecrecover(bytes32, uint8, bytes32, bytes32) returns (address)`: | ||||
|     recover public key from elliptic curve signature - arguments are (data, v, r, s) | ||||
| `ecrecover(bytes32 data, uint8 v, bytes32 r, bytes32 s) returns (address)`: | ||||
|     recover the address associated with the public key from elliptic curve signature | ||||
| 
 | ||||
| In the above, "tightly packed" means that the arguments are concatenated without padding. | ||||
| This means that the following are all identical:: | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user